Markdown for LLMs
Presumptions and fictions: pitfalls
The source Markdown for this article. Copy it into your assistant or download it as a text file.
# Presumptions and fictions: pitfalls > Updated 3 October 2026: `concept`, `except_when`, `claim`, `definition … sufficient`, and `default` strength have been removed, together with their special deprecation diagnostic. References below to the former behavior and corpus sources are historical. New source uses `relation`, `unless`, `duty`, a strict rule, and `defeasible`. Wrong forms, silent outcomes, `LDC-E` diagnostics, typical mistakes of formalizers and AI agents, and how to detect them. ## 1. The exception does not bind its variables The range-restriction requirement applies to the generated rule wholly and separately: every variable of its head must be bound by a positive established-conjunct of the exception condition itself; bound only in the general rule’s `when` is not bound. The diagnostic is `LDC-E4101` on the generated node’s name (`<presumption>/R2`, …). The practical fix is repeating the binding conjunct as the clause’s first premise: logically an identity (when the general rule fires the premise is already true), while the variable moves into bound inside the node with its own body. ## 2. A bare `unless` does not give Refuted A bare clause generates a defeater: the application is beaten, there are no inferences, the answer is Not established, not refuted. Proven by the section’s run: case 02 of the `innocence` teaching package answers Not established, not refuted, not Refuted. Whoever expected established absence of innocence writes `unless … then not innocent(p)` (contrary form: a defeasible rule with direct priority). The mistake is silent: `law test` is green, the meaning is wrong. ## 3. `unless` on a strict rule is a static error The author either makes the rule `defeasible` or moves the exact applicability condition into the strict body so no defeat is needed. For a genuinely strict contrary inference — a separate explicit `strict` rule; the linter demands a rationale. The AI agent appending `unless` to a strict rule “for completeness” gets a rejection, not a warning. ## 4. A fiction with an empirical head A fiction infers an institutional fact; the compiler warns if the head relation has `empirical` kind. A fact about the world (“delivered”) is a rule; a legal equation (“counts as received”) is a fiction. A mixed-up kind is a silent level confusion: the inference looks like a world fact but proves as an institution. ## 5. Foreign clauses in a presumption body — a loud rejection `scope`, `effective`, source anchors, and expansion metadata have no expansion in presumption semantics: in 0.1 the implementation must reject them statically (`LDC-E0201`), not lower the presumption without them. Same for fiction, classification, and definition: source anchors and metadata in their bodies are `LDC-E0201`. The rejection is loud by design: a presumption applied wider than written is worse than a rejection. ## 6. Rules and exception chains Write exceptions with the `unless` clause; the order of multiple clauses defines the priority chain ([§150](https://github.com/arxohq/law/blob/master/spec/SPEC.ru/20-part-xix-definitions-presumptions-fictions-exceptions.ru.md#150-exception-from-exception)). Choose a defeasible rule when its conclusion may be defeated. ## 7. A chain without an edge gives Contradiction Two contrary clauses with one conclusion (`unless C1 then not A; unless C2 then not A`) share an identical head literal — that pair is not opposite to each other, and defeat gives it no victory. The chain edge carries order to the transitive closure, not to itself: without it, a case where only the later link fires answers Contradiction instead of Refuted. Detection: run a case with one late link; Contradiction where Refuted was expected is a lost edge.