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
useimport, 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], labeledgeneral).exemption.ar— medical imports are exempt; carries#[defeats(must_pay_duty.general(g))], naming the clause it overrides in another file, resolved over an ordinaryuseimport. 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 }.