A claim against the obliged person
For LLMs6 sections
Intention
Section titled “Intention”I want to name the obliged party and the claim holder in one position.
Incorrect form and why it stays silent
Section titled “Incorrect form and why it stays silent”then claim Pay { holder creditor; against debtor; goal achievement { condition paid(debtor, creditor); window [@2026-09-01, @2026-09-10]; } };claim is deprecated sugar, not a separate modality. On a duty the bearer is the debtor and the beneficiary is the creditor; there is one canonical position.
Correct form
Section titled “Correct form”language "law.core" version "0.2";package recipes.a.r04 version "0.1.0";namespace "urn:recipe:a-positions:04";
entity Person;relation registered(p: Person);relation done(p: Person);relation contract(debtor: Person, creditor: Person);relation paid(debtor: Person, creditor: Person);rule R strict { for debtor: Person; for creditor: Person; when contract(debtor, creditor); then duty Pay { bearer debtor; beneficiary creditor; goal achievement { condition paid(debtor, creditor); window [@2026-09-01, @2026-09-10]; } };}Frozen execution scene
Section titled “Frozen execution scene”| Facts and snapshot | Question | Answer |
|---|---|---|
| debtor and creditor; 2026-09-05 | positions() | position_count(Pay, ACTIVE, 1); / COMPUTED |
| payment; 2026-09-05 | positions() | position(Pay, SATISFIED); / COMPUTED |
debtor and creditor bound by one duty
test "debtor and creditor bound by one duty" { given { context { legal_time @2026-09-05; decision_time @2026-09-05T09:00:00+05:00; knowledge_time @2026-09-30T09:00:00+05:00; timezone "Asia/Almaty"; } assert contract(entity_ref("urn:recipe:a-positions:04:p"), entity_ref("urn:recipe:a-positions:04:q")); } evaluate positions(); expect position_count(Pay, ACTIVE, 1); expect evaluation_status == COMPUTED;
}payment satisfies claim-duty
test "payment satisfies claim-duty" { given { context { legal_time @2026-09-05; decision_time @2026-09-05T09:00:00+05:00; knowledge_time @2026-09-30T09:00:00+05:00; timezone "Asia/Almaty"; } assert contract(entity_ref("urn:recipe:a-positions:04:p"), entity_ref("urn:recipe:a-positions:04:q")); assert paid(entity_ref("urn:recipe:a-positions:04:p"), entity_ref("urn:recipe:a-positions:04:q")); } evaluate positions(); expect position(Pay, SATISFIED); expect evaluation_status == COMPUTED;
}>>> import runpy>>> check = runpy.run_path("docs/recipes/a-positions/resources/check.py")>>> check["check_boundary"](https://github.com/arxohq/law/blob/master/docs/recipes/a-positions/4)'А4: граница проверена'Counterfactual
Section titled “Counterfactual”Mutation: then duty Pay { bearer debtor; beneficiary creditor; → then claim Pay { against debtor; holder creditor;; rejection LDC-E1328. Additional counterfactuals are shown as separate scenes.
Boundary
Section titled “Boundary”The claim_right kind does not create a second duty. The parties are also checked against the document payload, not only against the presence of a position.
Documentation for Arxo. Writings — blog.arxo.io.
Anonymous visit counts on stats.arxo.io, no cookies.