Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Cross-module defeat: each provision in its own file

Area: Defeasible reasoning Teaches: the defeat plane across files (RFD 0082) — one provision per file: the exemption defeats the duty clause it names in another module over an ordinary use import, and an emergency tariff defeats the exemption from a third file, reinstating the duty for exactly the listed goods. Prerequisites: lex specialis in one file. Run: ox build examples/cross_module_defeat_v0 && ox run-scenario examples/cross_module_defeat_v0

The lex-specialis customs story (legal_priority_v0) laid out the way a statute corpus wants it — one file per provision, every #[defeats] edge crossing a module boundary (RFD 0082):

  • duty.ar — the general norm: imported goods owe duty (#[default], labeled general).
  • exemption.ar — medical imports are exempt; carries #[defeats(must_pay_duty.general(g))], naming the clause it overrides in another file, resolved over an ordinary use import. Itself #[default].
  • emergency.ar — an emergency tariff suspends the exemption for listed goods; carries #[defeats(exempt.medical(g))] from a third file. Where it fires, the exemption stops blocking and the general duty reinstates — the defeated-defeater property over the merged, cross-module graph.

Over the three goods in demo.toml: steel (imported) owes duty by the unattacked default; insulin (medical) is exempt by the cross-file defeat; serum (medical, emergency-listed) owes duty again by the cross-file reinstatement. must_pay_duty = { steel, serum }, exempt = { insulin }, emergency_tariff = { serum }.