# Shift the burden after a presumption ## Intent I want to change the party to whom the rule assigns proof. ## Wrong form and why it stays silent ```law title="Incorrect form" 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](/recipes/d-evidence/burden-duty/). ## Correct form ```law 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 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` | ```law 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; } ``` ```law 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; } ``` ```law 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; } ``` ```law 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: ```law 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; } ``` ```python >>> 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 Diagnostic mutation (check) — LDC-E4108. Original fragment: ```law priority Shift { prefer Release over Default; reason explicit_exception; } ``` Replacement: ```law priority Shift { prefer Missing over Default; reason explicit_exception; } ``` The paired scenes above pin the change of outcome. ## 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](/recipes/d-evidence/burden-duty/). 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 Priority alone does not move the burden: the other party is assigned by a standalone Transfer rule.