Not prohibited as a query
Intention
Section titled “Intention”I want to ask about the absence of a prohibition in an explicitly chosen universe.
Incorrect form and why it stays silent
Section titled “Incorrect form and why it stays silent”evaluate weak_permission(p, act(p));expect value == true; // полнота не заданаOn the executable surface the query is named weak_permission. Without a completeness policy it yields MISSING_POLICY, not a true permission; the query.policy policy is passed as a JSON query below.
Correct form
Section titled “Correct form”language "law.core" version "0.2";package recipes.a.r12 version "0.1.0";namespace "urn:recipe:a-positions:12";
entity Person;relation registered(p: Person);relation done(p: Person);relation act(p: Person);rule R strict { for p: Person; when registered(p); then prohibition Ban { bearer p; action act(p); window [@2026-09-01, @2026-09-10]; };}Frozen execution scene
Section titled “Frozen execution scene”The test blocks are shown as text: this is a lower-test input, not a program. Putting weak_permission in a law block causes E2105/E2109 at program check; a separate lower-test recognises the query. The JSON policy is passed explicitly by the adapter, without its own permission computation.
| Facts and snapshot | Question | Answer |
|---|---|---|
| no prohibition, completeness not declared; 2026-09-05 | weak_permission(entity_ref("urn:recipe:a-positions:12:p"), act(entity_ref("urn:recipe:a-positions:12:p"))) | “ / MISSING_POLICY |
weak permission without universe stays missing
test "weak permission without universe stays missing" { 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"; }
} evaluate weak_permission(entity_ref("urn:recipe:a-positions:12:p"), act(entity_ref("urn:recipe:a-positions:12:p")));
expect evaluation_status == MISSING_POLICY; expect issue(MISSING_POLICY);}Pinned JSON query: the rules of the presented package are declared a complete universe of applicable prohibitions. Time and program composition are taken from each scene.
{ "action": { "args": [ { "id": "urn:recipe:a-positions:12:p", "kind": "entity_ref" } ], "function": "urn:recipe:a-positions:12#act", "kind": "call" }, "actor": { "id": "urn:recipe:a-positions:12:p", "kind": "entity_ref" }, "kind": "weak_permission", "queryId": "urn:recipe:a-positions:12#policy-query", "policy": { "ruleUniverse": true }}No prohibition → true. The policy is added by the JSON query shown.
full universe grants permission when no ban
test "full universe grants permission when no ban" { 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"; }
} evaluate weak_permission(entity_ref("urn:recipe:a-positions:12:p"), act(entity_ref("urn:recipe:a-positions:12:p")));
expect evaluation_status == COMPUTED; expect value == true;}The prohibition is active → false. The policy is added by the JSON query shown.
active ban denies permission under full universe
test "active ban denies permission under full universe" { 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:12:p")); } evaluate weak_permission(entity_ref("urn:recipe:a-positions:12:p"), act(entity_ref("urn:recipe:a-positions:12:p")));
expect evaluation_status == COMPUTED; expect value == false;}>>> import runpy>>> check = runpy.run_path("docs/recipes/a-positions/resources/check.py")>>> check["check_policy"]()'А12: без запрета true; с запретом false; lawc = lawref'Counterfactual test of a mistaken permission conclusion without a policy: expected FAIL; the correct MISSING_POLICY is pinned by the first scene.
permission without policy stays unproven
test "permission without policy stays unproven" { 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"; }
} evaluate weak_permission(entity_ref("urn:recipe:a-positions:12:p"), act(entity_ref("urn:recipe:a-positions:12:p")));
expect evaluation_status == COMPUTED; expect value == true;
}Counterfactual
Section titled “Counterfactual”Mutation: action act(p); → “; rejection LDC-E1305. Additional counterfactuals are shown as separate scenes.
Boundary
Section titled “Boundary”The query form in prose weakly_permitted and the surface name weak_permission differ. A positive answer requires an explicitly given ruleUniverse; an ordinary .lawtest does not add the policy for the author.
Documentation for Arxo. Writings — blog.arxo.io.
Anonymous visit counts on stats.arxo.io, no cookies.