financial_validation.iml
IML example from the CodeLogician agent skill.
(*
--------------------------------------------------------------------------
title: Financial Transaction Validation
name: financial-validation
description: Transaction validation with risk assessment
--------------------------------------------------------------------------
Real-world example: Financial Transaction Validation
Use case: Validate financial transactions based on amount, account balance,
and risk assessment.
Practical implications:
- Ensures all transaction scenarios are covered
- Identifies edge cases in fraud detection logic
- Provides test cases for transaction processing
- Helps verify compliance with financial regulations
*)
type transaction_status = Approved | ManualReview | Rejected
(* Transaction risk score based on amount *)
let risk_score amount =
if amount <= 100 then
"low"
else if amount <= 1000 then
"medium"
else
"high"
(* Validate a transaction *)
let validate_transaction amount balance is_verified_account =
if amount <= 0 then
Rejected
else if amount > balance then
Rejected
else if amount > 10000 then
(* Large transactions always need review *)
ManualReview
else if amount > 5000 && not is_verified_account then
(* Unverified accounts need review for medium-large amounts *)
ManualReview
else if is_verified_account then
Approved
else if amount <= 1000 then
(* Small transactions from unverified accounts are OK *)
Approved
else
ManualReview
[@@decomp top ~basis:[[%id risk_score]] ~prune:true ()]
(* Variation: With contextual simplification *)
let validate_transaction_valid amount balance is_verified_account =
if amount > 10000 then
ManualReview
else if amount > 5000 && not is_verified_account then
ManualReview
else if is_verified_account then
Approved
else if amount <= 1000 then
Approved
else
ManualReview
[@@decomp top ~ctx_simp:true ()]