Markdown for LLMs
Shift the burden after a presumption
The source Markdown for this article. Copy it into your assistant or download it as a text file.
# 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.