Skip to content
docs
Arxo ↗

Ask about truth and the reason for silence

For LLMs7 sections

I want to ask about truth and the reason for silence.

An unknown condition is not false. A refuted conjunct closes a request to the judge, although the judgment conjunct itself remains unknown.

Incorrect form
external judgment relation suitable(p: Person) { }
Arxo Law
language "law.core" version "0.2";
package recipe.m01 version "1.0.0";
namespace "urn:recipe:m-queries:01";
entity Person;
relation seen(p: Person);
relation eligible(p: Person);
external judgment relation suitable(p: Person) { authority Court; }
relation allowed(p: Person);
rule Allow strict { for p: Person; when eligible(p) and suitable(p); then allowed(p); }
Input / variantQuestionExpectation
1. live branchtruth(allowed(entity_ref("urn:recipe:m-queries:p")))truth_status == NEITHER; evaluation_status == REQUIRES_JUDGMENT; judgment_request(suitable, Court);
2. dead branchtruth(allowed(entity_ref("urn:recipe:m-queries:p")))truth_status == NEITHER; evaluation_status == COMPUTED; judgment_requests(0);
3. explain a dead branchwhy_not(allowed(entity_ref("urn:recipe:m-queries:p")))evaluation_status == COMPUTED; blocked_by(Allow); judgment_requests(0);
4. explain the unknownwhy_not(allowed(entity_ref("urn:recipe:m-queries:p")))evaluation_status == REQUIRES_JUDGMENT; blocked_by(Allow); judgment_request(suitable, Court);
live branch awaits judge
Arxo Law
test "live branch awaits judge" {
given {
context { legal_time @2026-09-13; decision_time @2026-09-13T09:00:00Z; knowledge_time @2026-09-13T09:00:00Z; timezone "UTC"; }
assert eligible(entity_ref("urn:recipe:m-queries:p"));
}
evaluate truth(allowed(entity_ref("urn:recipe:m-queries:p")));
expect truth_status == NEITHER; expect evaluation_status == REQUIRES_JUDGMENT; expect judgment_request(suitable, Court);
}
dead branch computes without judge
Arxo Law
test "dead branch computes without judge" {
given {
context { legal_time @2026-09-13; decision_time @2026-09-13T09:00:00Z; knowledge_time @2026-09-13T09:00:00Z; timezone "UTC"; }
assert not eligible(entity_ref("urn:recipe:m-queries:p"));
}
evaluate truth(allowed(entity_ref("urn:recipe:m-queries:p")));
expect truth_status == NEITHER; expect evaluation_status == COMPUTED; expect judgment_requests(0);
}
dead branch explains without judge
Arxo Law
test "dead branch explains without judge" {
given {
context { legal_time @2026-09-13; decision_time @2026-09-13T09:00:00Z; knowledge_time @2026-09-13T09:00:00Z; timezone "UTC"; }
assert not eligible(entity_ref("urn:recipe:m-queries:p"));
}
evaluate why_not(allowed(entity_ref("urn:recipe:m-queries:p")));
expect evaluation_status == COMPUTED; expect blocked_by(Allow); expect judgment_requests(0);
}
unknown branch requests judge
Arxo Law
test "unknown branch requests judge" {
given {
context { legal_time @2026-09-13; decision_time @2026-09-13T09:00:00Z; knowledge_time @2026-09-13T09:00:00Z; timezone "UTC"; }
assert seen(entity_ref("urn:recipe:m-queries:p"));
}
evaluate why_not(allowed(entity_ref("urn:recipe:m-queries:p")));
expect evaluation_status == REQUIRES_JUDGMENT; expect blocked_by(Allow); expect judgment_request(suitable, Court);
}

Check of result fields and extra inputs:

Python
>>> import runpy
>>> checks = runpy.run_path("docs/recipes/m-queries/resources/check.py")
>>> checks["why"](https://github.com/arxohq/law/blob/master/docs/recipes/m-queries/1)
True

The sidecar mutation reproduces LDC-E0201. Counterfactual table variants are executed separately; input errors are not passed off as NEITHER.

In scene 3 the Allow blocker has trigger NOT_SATISFIED: eligible is refuted, suitable remains UNDETERMINED, with no requests. In scene 4 both conjuncts are UNDETERMINED; the why_not root classifies the goal like truth: status REQUIRES_JUDGMENT and the judge request for suitable. That is not a refutation: the request appears even where eligible is not established.

Why-not reads ready supports and does not recompute the law. Absence of a request to the judge does not turn its condition into FALSE_ONLY.

A judge on a dead branch does not change the outcome — see A judgment on a live branch. Structural LawQL is a different interface.

Documentation for Arxo. Writings — blog.arxo.io.

Anonymous visit counts on stats.arxo.io, no cookies.