Skip to content
docs
Arxo ↗

Presumptions and fictions

For LLMs7 sections

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.

In one sentence: a presumption is a default holding until rebutted (desugaring: a defeasible rule + an exception defeater/contrary rule + priority), a fiction is an order to count one thing as another, inferring an institutional fact (deem). The author takes a presumption when the norm needs “counts as, unless proven otherwise” and an explicit place for the burden of rebuttal; a fiction when “counts as delivered/received” with no “if” at all.

The language specification treats a presumption as a default with a named burden of rebuttal — it expands into a defeasible rule, an exception, and priority — and a fiction as an order to count one thing as another, inferring an institutional fact.

InsteadSelection rule
presumption vs definitionA definition is what a concept is (sufficient/necessary/exact); a presumption is what counts given a ground, until rebutted. A definition has no burden of rebuttal and no exception priority; a presumption has both. “Is” is a definition; “counts as, if” is a presumption
presumption vs defeasible rule + unlessA presumption expands into exactly that, but with named nodes <name>/R1, /R2, … and a duty to show the expansion. A one-off exception is a bare rule with unless; a repeatable proof scheme (“burden on the carrier”) is a presumption
presumption vs classification … defeasibleA classification supports a class or stays silent; a presumption carries an exception with priority. defeater as a classification strength is inadmissible: the class is either supported, or the exception is a separate rule
fiction … deem vs rule … thenA fiction infers an institutional fact; the compiler warns if the fiction head is empirical. A fact about the world is a rule with an empirical head; a legal equation (“counts as received”) is a fiction. Strength (strict/defeasible) after the name is mandatory — the core does not pick it
unless C vs unless C then not AThe bare form is a defeater against A (application beaten, Not established, not refuted); the contrary form is a defeasible not A rule with direct priority (victory, Refuted). Verified by runs: this section’s presumption with a bare unless answers Not established, not refuted, not Refuted

Package research.presumption.innocence: an accused counts as innocent until a final conviction enters force.

Arxo Law
presumption Innocence(p: Person) {
when accused(p);
presume innocent(p);
unless final_conviction(p);
}

Case 01 facts: accused(ivan). Query: evaluate truth(innocent(ivan)).

Actual engine answer:

Output
law test research.presumption.innocence: мир research.presumption.innocence
ok [research.presumption.innocence#authored] tests/01-accused-presumed.lawtest / urn:query:research-presumption-01
ok [research.presumption.innocence#authored] tests/02-conviction-rebuts.lawtest / urn:query:research-presumption-02
итого: 2 проверено, 2 прошли, 0 не прошли, 0 не исполнены; код 0

law engine check — check OK, no warnings: the exception final_conviction(p) binds p by a positive conjunct of the exception condition itself (a variable bound only in the general rule’s when does not count as bound).

Sensitivity: adding the final_conviction(ivan) fact changes the answer from Established to Not established, not refuted (the conviction-rebuts test) — the Innocence/R2 defeater beat the Innocence/R1 application. Exactly Not established, not refuted, not Refuted: a bare unless C clause generates a defeater, not a contrary rule; only unless … then not innocent(p) would give the opposite conclusion (compare the EU261 corpus form below, where the contrary clause is present).

Second package research.fiction.deemed_receipt — a service fiction: a document delivered to the registration address counts as legally received on the delivery date (deem legally_received(d, date)). Case 01 answers Established, the case without the delivery fact — Not established, not refuted: a fiction fires only from its premise, silence equates nothing. Runs — 2/2, check OK.

  • Law (EU): package eu.transport.air_passenger_rights (EU air passenger rights, Regulation 261/2004) — presumption PassengerUninformedUnlessCarrierProves (see the corpus forms): the burden of proving notification is on the carrier, the exception is contrary (unless … then not passenger_treated_as_uninformed). An exemplary pair to the teaching example: it shows what distinguishes a bare clause from a contrary one.
  • Law (Germany): package de.bgb.besitz_eigentum (German Civil Code, possession and ownership) — presumption VermutungDesEigentumsFuerDenBesitzer: possession as the ground of the ownership assumption.
  • Religion/custom: possession and causation presumptions in Islamic tort — package sa.civil_transactions.tort_enrichment (Saudi civil transactions, tort) presumption DirectActorCausedDamage.
  • Science (teaching doctrine): package chem.rules (doctrine chemistry rules) — presumption ChloridePresumedSoluble: “counts as soluble until…” works outside law too.
  • Legal history: package gb.corpus.calendar_act_1750 (Calendar Act 1750, Great Britain) — fiction FairOrMartPreservesNaturalDay strict: a fair holds to the natural day — equation without “if”, a pure fiction.

Table — actual runs of this section’s teaching packages:

FactsQuestionAnswerWhy
accusedinnocentEstablishedthe generated presume-rule Innocence/R1 fired
accused, final_convictioninnocentNot established, not refutedthe Innocence/R2 defeater beat the application; no contrary inference
delivered(doc, date)legally_received(doc, date)Establishedthe fiction inferred the institutional fact
no factslegally_received(doc, date)Not established, not refutedthe fiction premise not established; equation from silence is not taken
  • Presumption desugaring: the defeasible accused(p) => innocent(p) rule (/R1), the exception defeater/contrary rule (/R2, …), exception priority over the presumption. The compiler must show the expansion (in this research the expansion was not captured separately — the behaviour is stated from the language description).
  • Defeat: an application beaten by a defeater publishes no status literals; later strata do not see it.
  • A fiction with an empirical head is a compiler warning; strength after the name is mandatory.

An exception from an exception adds another unless clause to the ordered rule chain. The chain edge works by closure, not by pair: the “next link over previous” priority is generated unconditionally and carries order to the transitive closure — without the edge the later link would lose victory over the general rule, and the case would answer Contradiction instead of Refuted. Surface syntax is allowed only if the generated priority graph is acyclic.

Definition modes: necessary gives a necessary constraint; exact adds a strict deriving rule. A definition does not apply contraposition: the reverse direction becomes an inference only when the author writes a separate rule. Generated nodes carry the was_derived_from provenance edge to the qualification symbol.

  1. The exception binds its variable only through the general rule’s when — LDC-E4101 on the generated node’s name: repeat the binding conjunct as the clause’s first premise (pitfalls, item 1).
  2. Expecting Refuted from a bare unless: a defeater gives Not established, not refuted (pitfalls, item 2).
  3. unless on a strict rule is a static error: either defeasible, or the exact applicability condition in the body (pitfalls, item 3).
  4. A fiction with an empirical head is a warning; a fiction infers the institutional (pitfalls, item 4).
  5. scope/effective/source-anchor/metadata in a presumption body is LDC-E0201 in 0.1: the expansion is undefined, the rejection loud (pitfalls, item 5).

Documentation for Arxo. Writings — blog.arxo.io.

Anonymous visit counts on stats.arxo.io, no cookies.