Shift the burden after a presumption
Intent
Section titled “Intent”I want to change the party to whom the rule assigns proof.
Wrong form and why it stays silent
Section titled “Wrong form and why it stays silent”priority Shift { prefer Release over Default; reason explicit_exception; } // само по себе не создаёт must_prove(b)Priority resolves a clash of two conclusions about one party. The other party is assigned the burden by a standalone Transfer rule; the duty window and goal are added as in Require an issue to be established within a deadline.
Correct form
Section titled “Correct form”language "law.core" version "0.2";package recipes.d.r02 version "0.1.0";namespace "urn:recipe:d-evidence:02";
entity Party;relation dispute(a: Party, b: Party);relation presumed(a: Party);relation must_prove(p: Party);rule Default defeasible { for a: Party; for b: Party; when dispute(a,b); then must_prove(a); }rule Release defeasible { for a: Party; for b: Party; when dispute(a,b) and presumed(a); then not must_prove(a); }rule Transfer defeasible { for a: Party; for b: Party; when dispute(a,b) and presumed(a); then must_prove(b); }priority Shift { prefer Release over Default; reason explicit_exception; }Frozen execution scene
Section titled “Frozen execution scene”In the table P and Q are different entities of the page, C is a case; full identifiers are pinned in the scenes.
| Input on 13.09.2026 (a different date is named in the scene) | Question | Answer |
|---|---|---|
| ordinary allocation | truth(must_prove(P)) | TRUE_ONLY / COMPUTED |
| party released | truth(must_prove(P)) | FALSE_ONLY / COMPUTED |
| other party assigned | truth(must_prove(Q)) | TRUE_ONLY / COMPUTED |
| without the transfer rule | truth(must_prove(Q)) | NEITHER / COMPUTED |
default burden on first party
test "default burden on first party" { given { context { legal_time @2026-09-13; decision_time @2026-09-13T09:00:00Z; knowledge_time @2026-09-13T09:00:00Z; timezone "UTC"; } assert dispute(entity_ref("urn:recipe:d-evidence:02:p"),entity_ref("urn:recipe:d-evidence:02:q")); } evaluate truth(must_prove(entity_ref("urn:recipe:d-evidence:02:p"))); expect truth_status == TRUE_ONLY; expect evaluation_status == COMPUTED;
}presumed party released from burden
test "presumed party released from burden" { given { context { legal_time @2026-09-13; decision_time @2026-09-13T09:00:00Z; knowledge_time @2026-09-13T09:00:00Z; timezone "UTC"; } assert dispute(entity_ref("urn:recipe:d-evidence:02:p"),entity_ref("urn:recipe:d-evidence:02:q")); assert presumed(entity_ref("urn:recipe:d-evidence:02:p")); } evaluate truth(must_prove(entity_ref("urn:recipe:d-evidence:02:p"))); expect truth_status == FALSE_ONLY; expect evaluation_status == COMPUTED;
}burden assigned to other party
test "burden assigned to other party" { given { context { legal_time @2026-09-13; decision_time @2026-09-13T09:00:00Z; knowledge_time @2026-09-13T09:00:00Z; timezone "UTC"; } assert dispute(entity_ref("urn:recipe:d-evidence:02:p"),entity_ref("urn:recipe:d-evidence:02:q")); assert presumed(entity_ref("urn:recipe:d-evidence:02:p")); } evaluate truth(must_prove(entity_ref("urn:recipe:d-evidence:02:q"))); expect truth_status == TRUE_ONLY; expect evaluation_status == COMPUTED;
}no transfer rule leaves neither
test "no transfer rule leaves neither" { given { context { legal_time @2026-09-13; decision_time @2026-09-13T09:00:00Z; knowledge_time @2026-09-13T09:00:00Z; timezone "UTC"; } assert dispute(entity_ref("urn:recipe:d-evidence:02:p"),entity_ref("urn:recipe:d-evidence:02:q")); assert presumed(entity_ref("urn:recipe:d-evidence:02:p")); } evaluate truth(must_prove(entity_ref("urn:recipe:d-evidence:02:q"))); expect truth_status == NEITHER; expect evaluation_status == COMPUTED;
}The counterfactual program differs only by the mutation named below; its scene:
missing priority keeps both conclusions
test "missing priority keeps both conclusions" { given { context { legal_time @2026-09-13; decision_time @2026-09-13T09:00:00Z; knowledge_time @2026-09-13T09:00:00Z; timezone "UTC"; } assert dispute(entity_ref("urn:recipe:d-evidence:02:p"),entity_ref("urn:recipe:d-evidence:02:q")); assert presumed(entity_ref("urn:recipe:d-evidence:02:p")); } evaluate truth(must_prove(entity_ref("urn:recipe:d-evidence:02:p"))); expect truth_status == BOTH; expect evaluation_status == COMPUTED;
}>>> import runpy>>> check = runpy.run_path("docs/recipes/d-evidence/resources/check.py")>>> check["check_variant"](https://github.com/arxohq/law/blob/master/docs/recipes/d-evidence/2)'Д2: контрфактуал подтверждён; lawc = lawref'Counterfactual
Section titled “Counterfactual”Diagnostic mutation (check) — LDC-E4108.
Original fragment:
priority Shift { prefer Release over Default; reason explicit_exception; }Replacement:
priority Shift { prefer Missing over Default; reason explicit_exception; }The paired scenes above pin the change of outcome.
Boundary
Section titled “Boundary”must_prove is a local allocation, not a created duty position. Priority of two compatible duties with different bearers does not by itself extinguish one of them. The normative position is Require an issue to be established within a deadline.
The counterfactual mutation removes priority Shift { prefer Release over Default; reason explicit_exception; }: under the same facts, must_prove of the first party becomes BOTH.
Pitfall
Section titled “Pitfall”Priority alone does not move the burden: the other party is assigned by a standalone Transfer rule.
Documentation for Arxo. Writings — blog.arxo.io.
Anonymous visit counts on stats.arxo.io, no cookies.