Two incompatible duties
Intention
Section titled “Intention”I want to name the incompatibility of the goals of two duties of one person.
Incorrect form and why it stays silent
Section titled “Incorrect form and why it stays silent”// Разные имена целей first и second доказывают несовместимость.A difference of text is not a proof. A scene with explicit incompatible on the templates yields a conflict; without it both duties exist without established incompatibility.
Correct form
Section titled “Correct form”language "law.core" version "0.2";package recipes.a.r15 version "0.1.0";namespace "urn:recipe:a-positions:15";
entity Person;relation registered(p: Person);relation done(p: Person);relation first(p: Person);relation second(p: Person);rule A strict { for p: Person; when registered(p); then duty First { bearer p; achieve first(p) during [@2026-09-01, @2026-09-10]; }; }rule B strict { for p: Person; when registered(p); then duty Second { bearer p; achieve second(p) during [@2026-09-01, @2026-09-10]; }; }Frozen execution scene
Section titled “Frozen execution scene”| Facts and snapshot | Question | Answer |
|---|---|---|
| different goals without a proof; 2026-09-05 | positions() | position(First, ACTIVE); expect position(Second, ACTIVE); / COMPUTED |
| explicit incompatibility; 2026-09-05 | positions() | position(First, ACTIVE); expect position(Second, ACTIVE); / UNRESOLVED_NORMATIVE_CONFLICT |
different goals coexist without proof
test "different goals coexist without proof" { 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 registered(entity_ref("urn:recipe:a-positions:15:p")); } evaluate positions(); expect position(First, ACTIVE); expect position(Second, ACTIVE); expect evaluation_status == COMPUTED;
}explicit incompatibility conflicts
test "explicit incompatibility conflicts" { 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 registered(entity_ref("urn:recipe:a-positions:15:p")); } evaluate positions(); expect position(First, ACTIVE); expect position(Second, ACTIVE); expect evaluation_status == UNRESOLVED_NORMATIVE_CONFLICT; expect issue(UNRESOLVED_NORMATIVE_CONFLICT);}The case of the second scene is passed in full through caseJson; the standard incompatibility relation is given by its full StableId, not by a same-named local predicate.
{ "assertions": [ { "evidence": [], "id": "urn:recipe:a-positions:15#assert-h14a3223b85ac0852ce472da8ca121bb261291552e0839ad764dff592b0631586", "kind": "assertion", "literal": { "args": [ { "id": "urn:recipe:a-positions:15:p", "kind": "entity_ref" } ], "kind": "literal", "polarity": "positive", "predicate": "urn:recipe:a-positions:15#registered" }, "origin": "source_asserted", "package": "urn:recipe:a-positions:15" }, { "evidence": [], "id": "urn:recipe:a-positions:15#assert-h29a06e0bbdfbbe1f4a5d94530230aec295c75efb75b5e9963f1cbada2325261a", "kind": "assertion", "literal": { "args": [ { "id": "urn:recipe:a-positions:15#First", "kind": "const_ref" }, { "id": "urn:recipe:a-positions:15#Second", "kind": "const_ref" } ], "kind": "literal", "polarity": "positive", "predicate": "urn:law:std#incompatible" }, "origin": "source_asserted", "package": "urn:recipe:a-positions:15" } ], "context": { "decisionTime": "2026-09-05T09:00:00+05:00", "knowledgeTime": "2026-09-30T09:00:00+05:00", "legalTime": "2026-09-05", "timezone": "Asia/Almaty" }, "options": {}}Counterfactual
Section titled “Counterfactual”Mutation: bearer p; → “; rejection LDC-E1305. Additional counterfactuals are shown as separate scenes.
Boundary
Section titled “Boundary”Incompatibility applies only with one bearer and overlapping windows. A solver needs a pinned profile and a checkable certificate; here an explicit relation is used.
Documentation for Arxo. Writings — blog.arxo.io.
Anonymous visit counts on stats.arxo.io, no cookies.