A defeater blocks every ground of the head
Intention
Section titled “Intention”I want to keep an independent ground by shielding it from a general defeater.
An independent ground survives a general defeater only with an established priority.
Incorrect form and why it stays silent
Section titled “Incorrect form and why it stays silent”rule Block defeater { for p: Person; when special(p); defeat allowed(p); }// Без приоритета он блокирует и Independent.A defeater addresses the conclusion, not the name of one rule. Priority of Independent over it preserves the independent ground.
Correct form
Section titled “Correct form”language "law.core" version "0.2";package recipes.b.r04 version "0.1.0";namespace "urn:recipe:b-rules:04";
entity Person;relation eligible(p: Person);relation special(p: Person);relation allowed(p: Person);relation independent(p: Person);rule General defeasible { for p: Person; when eligible(p); then allowed(p); }rule Independent defeasible { for p: Person; when independent(p); then allowed(p); }rule Block defeater { for p: Person; when special(p); defeat allowed(p); }priority KeepIndependent { prefer Independent over Block; reason explicit_exception; }Frozen execution scene
Section titled “Frozen execution scene”| Facts and choice | Question | Answer |
|---|---|---|
| general ground lifted | truth(allowed(entity_ref("urn:recipe:b-rules:04:p"))) | NEITHER / COMPUTED |
| independent ground shielded | truth(allowed(entity_ref("urn:recipe:b-rules:04:p"))) | TRUE_ONLY / COMPUTED |
| shield removed | truth(allowed(entity_ref("urn:recipe:b-rules:04:p"))) | NEITHER / COMPUTED |
general ground defeated
test "general ground defeated" { given { context { legal_time @2026-09-13; decision_time @2026-09-13T09:00:00+05:00; knowledge_time @2026-09-13T09:00:00+05:00; timezone "Asia/Almaty"; } assert eligible(entity_ref("urn:recipe:b-rules:04:p")); assert special(entity_ref("urn:recipe:b-rules:04:p")); } evaluate truth(allowed(entity_ref("urn:recipe:b-rules:04:p"))); expect truth_status == NEITHER; expect evaluation_status == COMPUTED;}independent ground protected
test "independent ground protected" { given { context { legal_time @2026-09-13; decision_time @2026-09-13T09:00:00+05:00; knowledge_time @2026-09-13T09:00:00+05:00; timezone "Asia/Almaty"; } assert eligible(entity_ref("urn:recipe:b-rules:04:p")); assert special(entity_ref("urn:recipe:b-rules:04:p")); assert independent(entity_ref("urn:recipe:b-rules:04:p")); } evaluate truth(allowed(entity_ref("urn:recipe:b-rules:04:p"))); expect truth_status == TRUE_ONLY; expect evaluation_status == COMPUTED;}protection removed
test "protection removed" { given { context { legal_time @2026-09-13; decision_time @2026-09-13T09:00:00+05:00; knowledge_time @2026-09-13T09:00:00+05:00; timezone "Asia/Almaty"; } assert eligible(entity_ref("urn:recipe:b-rules:04:p")); assert special(entity_ref("urn:recipe:b-rules:04:p")); assert independent(entity_ref("urn:recipe:b-rules:04:p")); } evaluate truth(allowed(entity_ref("urn:recipe:b-rules:04:p"))); expect truth_status == NEITHER; expect evaluation_status == COMPUTED;}Counterfactual
Section titled “Counterfactual”Mutation: defeat allowed(p); → defeat eligible(p);; rejection LDC-E4112. Scenes that delete a fragment are marked explicitly in the table.
Boundary
Section titled “Boundary”If the exception concerns only one ground, the grounds can be split across predicates. Priority must follow the rule, not the desired answer.
Pitfall
Section titled “Pitfall”A defeater blocks every ground of its head: without an established priority, the independent ground does not survive.
Documentation for Arxo. Writings — blog.arxo.io.
Anonymous visit counts on stats.arxo.io, no cookies.