Skip to content
docs
Arxo ↗

Prohibition pitfalls

For LLMs7 sections

Wrong forms, silent outcomes, LDC-E diagnostics, typical formalizer mistakes, and how to detect them.

1. Duplicating a prohibition with a paired duty

Section titled “1. Duplicating a prohibition with a paired duty”

An established action fact inside the window gives VIOLATED of the prohibition itself — a paired duty next to it gives a second VIOLATED for the same breach, and positions carries two breaches instead of one. New packages do not introduce pairs.

A norm in force since March 1 is written effective [@2026-03-01, infinity); on the rule; the goal window is the performance deadline. At legal_time outside effective there is no position at all; at legal_time outside window there is one — PENDING before and UNDETERMINED/EXPIRED after. Different answers: “no norm yet” and “the deadline has not started”. Putting the enactment date into window gets PENDING where there should be no position.

After the window with no monitoring certificate, no closure policy over the whole window, and no adjudication — UNDETERMINED, not SATISFIED. Absence of proof of performance is not compliance — mirroring the achievement rule (absence of proof of non-performance is not a breach). A quiet error: a test with expect position(X, SATISFIED) after the window fails, and the failure reads as an engine defect.

A condition repeating the rule premise (condition contract_signed(s, c) with when contract_signed(s, c)) is established when the position is created — always SATISFIED, the duty requires nothing. The form is not silent: LDC-E1371 (warning) names the goal, the condition, and the rule. A composite condition is checked leaf by leaf; forbearance is not part of the form — a prohibition’s subject is an action, not a condition.

5. Liberty with no priority is conflict, not victory

Section titled “5. Liberty with no priority is conflict, not victory”

Forbearance and liberty over the same action for one subject with overlapping windows and no priority give UNRESOLVED_NORMATIVE_CONFLICT, and both positions stand. Expecting “permission defeats prohibition” by itself mistakes the direction: priority wins (DEFEATED for the loser), not modality. The weak-permission query and the conflict rule read the same prohibition (see the liberty page).

6. A window boundary is a value, not a name

Section titled “6. A window boundary is a value, not a name”

A bare name as a boundary (window [moment, infinity)) is rejection LDC-E2115; a term-built window with no deadline policy is MISSING_POLICY. Boundaries are literals, rule variables, infinity/-infinity, or terms with a policy.

A prohibition without an addressee, without an action, or without a window is rejection LDC-E1305 for each missing field. Detection: law engine check lists every missing field — read the whole list, not the first item.

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

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