Prohibition pitfalls
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.
2. A norm boundary in the goal window
Section titled “2. A norm boundary in the goal window”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.
3. A quiet window is not compliance
Section titled “3. A quiet window is not compliance”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.
4. Tautological goal
Section titled “4. Tautological goal”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.
7. Incomplete prohibition — LDC-E1305
Section titled “7. Incomplete prohibition — LDC-E1305”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.