LDC-E2109 — A proposition where a value is required
For LLMs5 sections
What it means
Section titled “What it means”A relation call is an assertion, not a value: it says something holds, but it yields nothing a computation can carry. Positions that need a value — a conditional guard, a match subject, an argument — cannot take a bare assertion. The compiler stops at the spot and asks for a real value expression.
Wrapping the assertion in an explicit status test, or moving it into the rule body and matching over a value, fixes it. There is no silent reading of an assertion as true.
Example
Section titled “Example”language "law.core" version "0.2";package demo.diagnostics version "0.1.0";namespace "urn:law:demo:diagnostics";
relation p(x: Text) kind evaluative;relation m(x: Text, a: Money) kind empirical;relation out(x: Text, a: Money) kind institutional;rule R strict { for x: Text; for a: Money; for b: Money; when m(x, a) and m(x, b); then out(x, if p(x) then a else b); }language "law.core" version "0.2";package demo.diagnostics version "0.1.0";namespace "urn:law:demo:diagnostics";
relation p(x: Text) kind evaluative;relation m(x: Text, a: Money) kind empirical;relation out(x: Text, a: Money) kind institutional;rule R strict { for x: Text; for a: Money; for b: Money; when m(x, a) and m(x, b); then out(x, if established(p(x)) then a else b); }Documentation for Arxo. Writings — blog.arxo.io.
Anonymous visit counts on stats.arxo.io, no cookies.