thefinalboss commited on
Commit
5edded2
·
verified ·
1 Parent(s): 5dd75c2

Add AICL example: 05_banking.aicl

Browse files
Files changed (1) hide show
  1. data/aicl/examples/05_banking.aicl +663 -0
data/aicl/examples/05_banking.aicl ADDED
@@ -0,0 +1,663 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # AICL Example: Complete Banking System
2
+ # A full-featured banking platform with accounts, transactions, loans,
3
+ # fraud detection, multi-currency support, and regulatory compliance
4
+ # Demonstrates ALL 10 AICL language levels
5
+
6
+ # =============================================================================
7
+ # LEVEL 1 — Architecture (Mandatory)
8
+ # =============================================================================
9
+
10
+ Goal:
11
+ Create a complete banking system with account management, fund transfers, loan processing, fraud detection, multi-currency support, and regulatory compliance
12
+
13
+ Constraint:
14
+ Must comply with PCI-DSS security standards
15
+
16
+ Constraint:
17
+ All financial transactions must be ACID-compliant
18
+
19
+ Constraint:
20
+ Maximum API response time 200 ms for standard operations
21
+
22
+ Constraint:
23
+ System must support at least 10000 concurrent users
24
+
25
+ Constraint:
26
+ All data must be encrypted at rest and in transit
27
+
28
+ Constraint:
29
+ Audit trail must be immutable and retained for 7 years
30
+
31
+ Risk:
32
+ Database corruption or data loss
33
+
34
+ Recovery:
35
+ Failover to replica with automatic data reconciliation
36
+
37
+ Risk:
38
+ Unauthorized access to customer accounts
39
+
40
+ Recovery:
41
+ Lock account immediately and notify customer and security team
42
+
43
+ Risk:
44
+ Fraudulent transaction pattern detected
45
+
46
+ Recovery:
47
+ Suspend transaction and escalate to fraud review queue
48
+
49
+ Risk:
50
+ Payment network gateway unavailable
51
+
52
+ Recovery:
53
+ Queue transactions for retry and switch to backup gateway
54
+
55
+ Risk:
56
+ Insufficient liquidity for settlement
57
+
58
+ Recovery:
59
+ Borrow from interbank lending facility and alert treasury
60
+
61
+ Risk:
62
+ System-wide outage during business hours
63
+
64
+ Recovery:
65
+ Activate disaster recovery site within 15 minutes RTO
66
+
67
+ Risk:
68
+ Denial of service attack
69
+
70
+ Recovery:
71
+ Enable rate limiting and geographic filtering
72
+
73
+ Risk:
74
+ Regulatory compliance violation
75
+
76
+ Recovery:
77
+ Halt affected operations and engage compliance team immediately
78
+
79
+ Layer:
80
+ Presentation
81
+ Sublayer:
82
+ Web banking portal
83
+ Sublayer:
84
+ Mobile application
85
+ Sublayer:
86
+ ATM interface
87
+ Sublayer:
88
+ Branch teller terminal
89
+ Sublayer:
90
+ Admin dashboard
91
+
92
+ Layer:
93
+ API Gateway
94
+ Sublayer:
95
+ Authentication service
96
+ Sublayer:
97
+ Rate limiter
98
+ Sublayer:
99
+ Request router
100
+ Sublayer:
101
+ API versioning
102
+ Sublayer:
103
+ Load balancer
104
+
105
+ Layer:
106
+ Core Banking
107
+ Sublayer:
108
+ Account management
109
+ Sublayer:
110
+ Transaction engine
111
+ Sublayer:
112
+ Transfer processor
113
+ Sublayer:
114
+ Balance calculator
115
+ Sublayer:
116
+ Statement generator
117
+
118
+ Layer:
119
+ Lending
120
+ Sublayer:
121
+ Loan origination
122
+ Sublayer:
123
+ Credit scoring
124
+ Sublayer:
125
+ Payment scheduling
126
+ Sublayer:
127
+ Collateral management
128
+
129
+ Layer:
130
+ Fraud Detection
131
+ Sublayer:
132
+ Real-time monitoring
133
+ Sublayer:
134
+ Pattern analysis
135
+ Sublayer:
136
+ Alert management
137
+ Sublayer:
138
+ Case investigation
139
+
140
+ Layer:
141
+ Integration
142
+ Sublayer:
143
+ Payment network SWIFT
144
+ Sublayer:
145
+ Card network Visa Mastercard
146
+ Sublayer:
147
+ Credit bureau API
148
+ Sublayer:
149
+ Regulatory reporting
150
+ Sublayer:
151
+ Interbank settlement
152
+
153
+ Layer:
154
+ Reporting
155
+ Sublayer:
156
+ Regulatory reports
157
+ Sublayer:
158
+ Financial statements
159
+ Sublayer:
160
+ Customer statements
161
+ Sublayer:
162
+ Audit trail
163
+
164
+ Layer:
165
+ Data
166
+ Sublayer:
167
+ Account database
168
+ Sublayer:
169
+ Transaction ledger
170
+ Sublayer:
171
+ Customer registry
172
+ Sublayer:
173
+ Document storage
174
+
175
+ # =============================================================================
176
+ # LEVEL 2 — Entities
177
+ # =============================================================================
178
+
179
+ Entity Customer
180
+ customer_id: string
181
+ first_name: string
182
+ last_name: string
183
+ email: string
184
+ phone: string
185
+ date_of_birth: datetime
186
+ nationality: string
187
+ kyc_status: string
188
+ risk_rating: string
189
+ created_at: datetime
190
+
191
+ Entity Account
192
+ account_id: string
193
+ customer_id: string
194
+ account_type: string
195
+ currency: string
196
+ balance: float
197
+ available_balance: float
198
+ status: string
199
+ daily_limit: float
200
+ opened_at: datetime
201
+ last_activity: datetime
202
+
203
+ Entity Transaction
204
+ transaction_id: string
205
+ account_id: string
206
+ transaction_type: string
207
+ amount: float
208
+ currency: string
209
+ description: string
210
+ reference: string
211
+ status: string
212
+ timestamp: datetime
213
+ counterparty_account: string
214
+ counterparty_bank: string
215
+
216
+ Entity Card
217
+ card_id: string
218
+ account_id: string
219
+ card_type: string
220
+ card_number_masked: string
221
+ expiry_date: datetime
222
+ cvv_hash: string
223
+ pin_hash: string
224
+ daily_withdrawal_limit: float
225
+ status: string
226
+
227
+ Entity Loan
228
+ loan_id: string
229
+ customer_id: string
230
+ account_id: string
231
+ loan_type: string
232
+ principal: float
233
+ interest_rate: float
234
+ term_months: integer
235
+ remaining_balance: float
236
+ monthly_payment: float
237
+ next_payment_date: datetime
238
+ status: string
239
+ collateral: string
240
+
241
+ Entity Branch
242
+ branch_id: string
243
+ name: string
244
+ address: string
245
+ city: string
246
+ country: string
247
+ manager: string
248
+ operating_hours: string
249
+
250
+ Entity CurrencyRate
251
+ base_currency: string
252
+ target_currency: string
253
+ rate: float
254
+ timestamp: datetime
255
+
256
+ Entity FraudAlert
257
+ alert_id: string
258
+ transaction_id: string
259
+ alert_type: string
260
+ severity: string
261
+ description: string
262
+ status: string
263
+ assigned_to: string
264
+ created_at: datetime
265
+ resolved_at: datetime
266
+
267
+ Entity AuditEntry
268
+ entry_id: string
269
+ actor: string
270
+ action: string
271
+ resource_type: string
272
+ resource_id: string
273
+ details: string
274
+ ip_address: string
275
+ timestamp: datetime
276
+
277
+ # =============================================================================
278
+ # LEVEL 3 — Behaviors
279
+ # =============================================================================
280
+
281
+ Behavior OpenAccount
282
+
283
+ Input:
284
+ Customer account_type currency
285
+
286
+ Output:
287
+ Account
288
+
289
+ Action:
290
+ verify customer identity and create new account with zero balance
291
+
292
+ Behavior CloseAccount
293
+
294
+ Input:
295
+ Account
296
+
297
+ Output:
298
+ boolean
299
+
300
+ Action:
301
+ verify zero balance and deactivate account
302
+
303
+ Behavior Deposit
304
+
305
+ Input:
306
+ Account amount currency
307
+
308
+ Output:
309
+ Transaction
310
+
311
+ Action:
312
+ credit account with deposited amount and record transaction
313
+
314
+ Behavior Withdraw
315
+
316
+ Input:
317
+ Account amount currency
318
+
319
+ Output:
320
+ Transaction
321
+
322
+ Action:
323
+ debit account with withdrawn amount and record transaction
324
+
325
+ Behavior Transfer
326
+
327
+ Input:
328
+ Account source Account target amount currency
329
+
330
+ Output:
331
+ Transaction
332
+
333
+ Action:
334
+ debit source account and credit target account atomically
335
+
336
+ Behavior CurrencyExchange
337
+
338
+ Input:
339
+ Account amount target_currency
340
+
341
+ Output:
342
+ Transaction
343
+
344
+ Action:
345
+ convert amount using current exchange rate and credit in target currency
346
+
347
+ Behavior ProcessLoanApplication
348
+
349
+ Input:
350
+ Customer Loan loan_type principal term_months
351
+
352
+ Output:
353
+ Loan
354
+
355
+ Action:
356
+ run credit check and calculate terms and approve or reject loan
357
+
358
+ Behavior MakeLoanPayment
359
+
360
+ Input:
361
+ Loan amount
362
+
363
+ Output:
364
+ Transaction
365
+
366
+ Action:
367
+ apply payment to loan balance and update remaining term
368
+
369
+ Behavior FreezeAccount
370
+
371
+ Input:
372
+ Account reason
373
+
374
+ Action:
375
+ set account status to frozen and log security event
376
+
377
+ Behavior GenerateStatement
378
+
379
+ Input:
380
+ Account start_date end_date
381
+
382
+ Output:
383
+ list
384
+
385
+ Action:
386
+ compile all transactions for account in date range
387
+
388
+ # =============================================================================
389
+ # LEVEL 4 — Conditions
390
+ # =============================================================================
391
+
392
+ Condition:
393
+
394
+ When account balance below minimum threshold
395
+
396
+ Then apply minimum balance fee and notify customer
397
+
398
+ Condition:
399
+
400
+ When transaction amount exceeds daily limit
401
+
402
+ Then reject transaction and alert customer
403
+
404
+ Condition:
405
+
406
+ When transfer destination account is frozen
407
+
408
+ Then reject transfer and notify source account holder
409
+
410
+ Condition:
411
+
412
+ When loan payment is overdue by 30 days
413
+
414
+ Then mark loan as delinquent and report to credit bureau
415
+
416
+ Condition:
417
+
418
+ When card is reported stolen
419
+
420
+ Then block all transactions and issue replacement card
421
+
422
+ Condition:
423
+
424
+ When customer KYC status is expired
425
+
426
+ Then restrict account to view-only and request document renewal
427
+
428
+ Condition:
429
+
430
+ When login attempt fails 3 times consecutively
431
+
432
+ Then lock account and send verification code to registered phone
433
+
434
+ Condition:
435
+
436
+ When currency exchange rate fluctuates more than 5 percent
437
+
438
+ Then pause automated exchanges and alert treasury team
439
+
440
+ # =============================================================================
441
+ # LEVEL 5 — Events
442
+ # =============================================================================
443
+
444
+ Event:
445
+
446
+ On transaction completed
447
+
448
+ Action:
449
+ update account balance and send notification and record audit entry
450
+
451
+ Event:
452
+
453
+ On large transaction detected
454
+
455
+ Action:
456
+ flag for fraud review and send confirmation request to customer
457
+
458
+ Event:
459
+
460
+ On account balance change
461
+
462
+ Action:
463
+ recalculate available balance and update interest accrual
464
+
465
+ Event:
466
+
467
+ On loan payment due
468
+
469
+ Action:
470
+ send reminder notification and attempt auto-debit if authorized
471
+
472
+ Event:
473
+
474
+ On fraud alert triggered
475
+
476
+ Action:
477
+ suspend affected account and create investigation case and notify security
478
+
479
+ Event:
480
+
481
+ On customer login
482
+
483
+ Action:
484
+ validate session token and load customer profile and log access
485
+
486
+ Event:
487
+
488
+ On regulatory report required
489
+
490
+ Action:
491
+ compile required data and format according to regulation and submit
492
+
493
+ Event:
494
+
495
+ On interbank settlement
496
+
497
+ Action:
498
+ reconcile transaction batches and update correspondent accounts
499
+
500
+ # =============================================================================
501
+ # LEVEL 6 — Concurrency
502
+ # =============================================================================
503
+
504
+ Parallel:
505
+
506
+ Transaction Processing
507
+ Fraud Detection Engine
508
+ Notification Service
509
+ Audit Logger
510
+
511
+ Parallel:
512
+
513
+ Core Banking
514
+ Lending Service
515
+ Integration Gateway
516
+ Reporting Engine
517
+
518
+ # =============================================================================
519
+ # LEVEL 7 — Optimization
520
+ # =============================================================================
521
+
522
+ Optimize:
523
+ Transaction throughput
524
+
525
+ Optimize:
526
+ Database query performance
527
+
528
+ Optimize:
529
+ API response latency
530
+
531
+ Priority:
532
+ Real-time fraud detection over batch reporting
533
+
534
+ # =============================================================================
535
+ # LEVEL 8 — Learning
536
+ # =============================================================================
537
+
538
+ Learn:
539
+
540
+ Transaction fraud patterns
541
+
542
+ Goal:
543
+ detect anomalous behavior before transaction completes
544
+
545
+ Learn:
546
+
547
+ Customer spending habits
548
+
549
+ Goal:
550
+ personalize financial recommendations and detect account takeover
551
+
552
+ Adapt:
553
+
554
+ Fraud detection sensitivity
555
+
556
+ Based on:
557
+ customer risk profile and transaction history
558
+
559
+ # =============================================================================
560
+ # LEVEL 9 — Security
561
+ # =============================================================================
562
+
563
+ Security:
564
+
565
+ Encrypt:
566
+ account balances and transaction amounts
567
+
568
+ Encrypt:
569
+ customer personal information
570
+
571
+ Encrypt:
572
+ card numbers and CVV
573
+
574
+ Encrypt:
575
+ loan terms and financial data
576
+
577
+ Protect:
578
+ customer credentials and session tokens
579
+
580
+ Protect:
581
+ API keys and service authentication
582
+
583
+ Protect:
584
+ audit trail integrity
585
+
586
+ Protect:
587
+ interbank communication channels
588
+
589
+ # =============================================================================
590
+ # LEVEL 10 — Native Code
591
+ # =============================================================================
592
+
593
+ Native: python
594
+ {
595
+ import hashlib
596
+ import hmac
597
+ import time
598
+
599
+ def generate_transaction_id():
600
+ """Generate a unique transaction ID using timestamp and hash."""
601
+ timestamp = str(int(time.time() * 1000))
602
+ random_seed = str(hashlib.sha256(timestamp.encode()).hexdigest()[:8])
603
+ return f"TXN-{timestamp[-10:]}-{random_seed}"
604
+
605
+ def verify_pin(stored_hash: str, input_pin: str, salt: str) -> bool:
606
+ """Verify a PIN against its stored hash using HMAC-SHA256."""
607
+ computed = hmac.new(
608
+ salt.encode(), input_pin.encode(), hashlib.sha256
609
+ ).hexdigest()
610
+ return hmac.compare_digest(computed, stored_hash)
611
+
612
+ def calculate_compound_interest(principal: float, rate: float,
613
+ months: int) -> float:
614
+ """Calculate compound interest for a loan or deposit."""
615
+ monthly_rate = rate / 12 / 100
616
+ return principal * ((1 + monthly_rate) ** months - 1)
617
+ }
618
+
619
+ # =============================================================================
620
+ # Validations
621
+ # =============================================================================
622
+
623
+ Validation:
624
+ Customer can open and close accounts
625
+
626
+ Validation:
627
+ Deposits and withdrawals process correctly with proper balance updates
628
+
629
+ Validation:
630
+ Transfers between accounts execute atomically
631
+
632
+ Validation:
633
+ Currency exchange applies correct rates
634
+
635
+ Validation:
636
+ Loan origination and payment work end to end
637
+
638
+ Validation:
639
+ Fraud detection flags suspicious transactions
640
+
641
+ Validation:
642
+ Frozen accounts reject all debit transactions
643
+
644
+ Validation:
645
+ Daily limits are enforced
646
+
647
+ Validation:
648
+ All transactions produce immutable audit entries
649
+
650
+ Validation:
651
+ System handles 10000 concurrent users without degradation
652
+
653
+ Validation:
654
+ All encrypted data can only be read with proper authorization
655
+
656
+ Validation:
657
+ Regulatory reports generate correctly
658
+
659
+ Validation:
660
+ System recovers from database failure within 15 minutes
661
+
662
+ Validation:
663
+ Customer notifications are delivered within 5 seconds