Skip to content

The instrument catalogue

Deducible began with four instruments. It now covers roughly twenty-seven contract classes that reach across the fiqh of transactions: sale, partnership, lease and service, the contracts of security and credit, capital markets, the social economy of giving, the charge of zakat, and a regime-neutral common-law engine for universality. Each class refuses its own riba or gharar form by construction. The forbidden shape does not compile.

This catalogue is the map. Every family has its own page. Each entry names the class identifier you write after the colon in instrument Name : <class>, the principle the engine holds it to, and the diagnostic codes it can raise.

Family Classes Page
Sale (buyūʿ) murabahah, salam, istisna, sarf, tawarruq Sale
Partnership (shirkah) musharakah, musharakah_mutanaqisah, mudarabah, mudarabah_pool Partnership
Lease & service (ijārah, wakāla) ijarah, ijarah_imbt, juala, ariyah, wakala Lease & service
Security & credit (tawthīqāt) qard_hasan, rahn, kafala, hawala, wadia Security & credit
Capital markets (ṣukūk, takāful) sukuk, takaful Capital markets
Social economy (tabarruʿāt) waqf, hibah, wasiyya Social economy
Charge (zakāt) the zakat { … } section (all genera, the eight aṣnāf) Five C’s → Charge
Common law commercial_escrow, the regime-neutral judiciary engine Rule modules

Every instrument follows the same shape. A class identifier picks the rule-base. The family-specific sections (returns, capital, risk, pool, zakat) carry the economics. Named invariants assert machine-checkable facts over that structure, and a lifecycle orders the on-chain steps.

instrument <Name> : <class> { // the class selects the rule-base
meta { basis: "…"; } // the standard or daleel a spec claims consistency with
parties { … } // who, in what capacity
… // returns, capital, risk, pool, zakat …
invariant <name> { <expr> } // machine-checkable assertions over the shape
lifecycle { … } // the ordered on-chain steps
}

A spec that satisfies its class lowers to a Solidity contract, a Hardhat property test, a deploy descriptor, and a portable invariant manifest. A spec that offends it raises a cited diagnostic and emits nothing.

The multilateral pool. The classical ʿaqd binds two parties. But ṣukūk holders and takāful participants are many. The pool primitive lifts the compiler past the two-party contract: a set of participants whose shares must total the whole, distributed pro-rata, on the same arithmetic the farāʾiḍ engine uses for inheritance.

Riba as topology. Some arrangements are sound leg by leg yet forbidden as a whole, such as bayʿ al-ʿīnah and organised tawarruq. The engine reads a bundle of legs as a directed asset-flow graph and forbids the cycle that closes back to the financier, not the markup on any one leg. See Composition.

What “compliant” means is not baked into the engine. A rule module supplies it: plain JSON that a scholar or standards body authors and ratifies. Deducible ships modules for AAOIFI, DSN-MUI, and the four madhāhib (ḥanafī, mālikī, shāfiʿī, ḥanbalī). The same spec can be consistent under one school and refused under another, a live khilāf. The diagnostic codes referenced throughout this catalogue are listed in full in the Diagnostics reference.