Skip to content
docs
Arxo ↗

Constraints: pitfalls

For LLMs7 sections

Wrong forms, silent outcomes, LDC-E diagnostics, typical mistakes of formalizers and AI agents, and how to detect them.

require Y with true when X does not establish Y: the Y query answers Not established, not refuted, the constraint verdict is undetermined. Proven by the section’s run: case 02 of the enrolled-needs-consent teaching package (enrolled without consent) answers Not established, not refuted on the has_consent query. The AI agent reading a constraint as “a rule backwards” gets a vacuous example. Detection: mentally delete require — if the meaning is lost, it was a rule.

A constraint’s violated verdict is issue CONSTRAINT_VIOLATED, not a legal violation: a sanction is encoded by a separate ordinary rule on established facts/position statuses. Whoever equates the finding with a violation builds a hidden evaluator side effect — directly forbidden by the language.

3. A constraint as a producer of its strata

Section titled “3. A constraint as a producer of its strata”

A constraint evaluates after the producer strata it depends on and cannot be a producer for them. An attempt at “the constraint establishes a fact for the rule that feeds it” is a cycle; in 0.1 — a stratification rejection. Rules infer, constraints check; one direction only.

4. Body composition: repeats and silent skips

Section titled “4. Body composition: repeats and silent skips”

scope and effective — at most one clause per block, a repeat is LDC-E1329 (as for a rule). Every written element is either parsed or rejected statically (LDC-E0201); silent skipping is forbidden — a constraint lowered without a written clause applies wider than written. Forms without a defined expansion (source_anchor_item, interpretation, metadata_item) are rejected, not ignored.

5. effective outside the law date — silent non-application

Section titled “5. effective outside the law date — silent non-application”

A constraint with effective outside the law date does not apply: no finding, no issue, no verdict. Silence is the norm here, but an author forgetting the source rule’s window reads it as “composition coherent”. Detection: check the case’s law date against the constraint’s effective before rejoicing at empty results.

6. An unexecutable body — the constraint is not evaluated

Section titled “6. An unexecutable body — the constraint is not evaluated”

Formulas outside the executable subset or a range-restriction breach — issue NON_EXECUTABLE_CONSTRAINT (warning, related nodes are the constraint itself), the constraint declares it and is not evaluated. Detection: an issue in the document instead of the expected findings.

7. Header parameters and binders are mutually exclusive

Section titled “7. Header parameters and binders are mutually exclusive”

constraint C(x: T) { … } instead of for x: T; in the body: both forms at once is a rejection. Constraint semantics and binder order are preserved — the form choice is readability, not meaning.

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

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