Skip to content
docs
Arxo ↗

Prohibition: prohibition as forbearance sugar

For LLMs8 sections

In one sentence: prohibition is a duty with a forbearance goal: “not to do action A in a window” reads as “maintain the absence of A”, and an established fact A inside the window gives the prohibition itself VIOLATED. The author takes it when the act’s vocabulary says “is prohibited” / “is not allowed”: the form matches the source’s vocabulary, and the semantics match maintaining the absence of the action.

InsteadSelection rule
prohibition vs constraintA prohibition has an addressee, a window, and a PENDING/ACTIVE/VIOLATED/EXPIRED lifecycle; a constraint has a verdict with no addressee and no window. Someone to refrain, and a time to do it in — prohibition; a composition check — constraint
prohibition vs duty … goal maintenance with an absence conditionDo not duplicate: a prohibition already reads as maintaining the absence of the action. A paired duty next to it gives a second VIOLATED for the same breach — the positions answer carries two breaches instead of one
prohibition vs then not actionBare negation gives support f with no addressee, window, or cycle; a prohibition gives a position with a lifecycle. “Do not do” with an addressee and a deadline — prohibition; stating “not complied with” — negation (see the negation page)
prohibition vs the other party’s libertyStructurally only forbearance and liberty over the same action conflict: the pair is considered for one subject and overlapping windows; priority gives the loser DEFEATED, without it — UNRESOLVED_NORMATIVE_CONFLICT

Grammar: prohibition and forbearance (EBNF verbatim from the language grammar)

Section titled “Grammar: prohibition and forbearance (EBNF verbatim from the language grammar)”
Show syntax reference

The prohibition form — the addressee, the beneficiary, the action, and the window:

Grammar
prohibition_conclusion = "prohibition", [ identifier ], "{",
{ prohibition_item },
"}" ;
prohibition_item = "bearer", expression, ";"
| "beneficiary", expression, ";"
| "action", expression, ";"
| "window", interval_expression, ";"
| "violation_policy", reference, ";"
| metadata_item ;

The semantic base of the form — the forbearance goal (“to maintain the absence of the action”):

Grammar
forbearance_goal = "forbearance", "{",
"action", expression, ";",
"window", interval_expression, ";",
{ goal_item },
"}" ;

Position statuses and lifecycle live on the lifecycle page; windows as intervals and their computation — on the deadline-calendar page; window syntax is not duplicated here.

Package examples/no-subcontract/: a contractor under a signed agreement brings in no subcontractors in March 2026.

Arxo Law
rule SubcontractingRule strict {
for s: Supplier;
for c: Customer;
when contract_signed(s, c);
then prohibition NoSubcontracting {
bearer s;
beneficiary c;
action subcontracts(s);
window [@2026-03-01, @2026-03-31];
};
}

Case facts 01: contract_signed(alpha, omega) + subcontracts(alpha). Query: evaluate positions() at legal_time @2026-03-15.

The engine’s actual answer:

Output
law test research.prohibition.no_subcontract: мир research.prohibition.no_subcontract
ok [research.prohibition.no_subcontract#authored] tests/01-action-violates.lawtest / urn:query:research-prohibition-01
ok [research.prohibition.no_subcontract#authored] tests/02-quiet-complies.lawtest / urn:query:research-prohibition-02
итого: 2 проверено, 2 прошли, 0 не прошли, 0 не исполнены; код 0

law engine check — check OK, no warnings. Case 01 gives position(NoSubcontracting, VIOLATED) — an established action fact inside the window breaches the prohibition directly.

Sensitivity: deleting the subcontracts fact changes the observation from VIOLATED to ACTIVE with the same not VIOLATED (file tests/02-quiet-complies.lawtest) — inside the window with no established action the prohibition is active, not breached (a breach needs an established counterexample). The nearest wrong model is “silence is compliance”: after the window without completeness the answer would be UNDETERMINED, not SATISFIED (SATISFIED requires a monitoring certificate, a closure policy over the whole window, or adjudication).

Second package examples/no-doping/ — the same device in a sports regulation: a registered athlete, a banned substance, a 01.07–15.08.2026 competition window. A case with a use fact — VIOLATED, without — ACTIVE. Run — 2/2, check OK.

  • Law (constitution): package tr.constitution — Constitution of Türkiye, then prohibition RefrainFromAbuseOfRights under art. 14 (see corpus-forms.md): window [1982-11-09, infinity) — the breach is observed by the prohibition itself.
  • Law (labour): package kz.corpus.labour_code — Labour Code of Kazakhstan — a prohibition with an open window window [since, infinity) for a premise-bound date: the typical “prohibited while…” form.
  • Sport (teaching case): examples/no-doping/ — a doping ban with a competition window.
  • Religion/standard: no prohibitions in this form met in the inspected fragments; the Warlpiri kinship taboos are written as constraints, not prohibitions (see the constraint page) — precisely because a taboo has no addressee with a window. The selection rule holds by addressee and window, not by domain.

Table — actual runs of this directory’s examples (query evaluate positions(), observation position(Template, STATUS)):

Facts over the groundMomentObservationWhy
action subcontractsinside the windowposition(NoSubcontracting, VIOLATED)an established action fact in the window breaches the prohibition
noneinside the windowposition(NoSubcontracting, ACTIVE), not VIOLATEDno counterexample; the deadline has not passed
action uses_bannedinside the windowposition(NoDoping, VIOLATED)the same semantics in a sports regulation
noneinside the windowposition(NoDoping, ACTIVE), not VIOLATEDthe prohibition is active, no breach
noneafter the windowposition(NoSubcontracting, UNDETERMINED)no completeness — silence is not compliance
  • Forbearance is maintaining the absence of the action: before the window — PENDING, after the window without completeness — UNDETERMINED, not SATISFIED.
  • normative_status is an aggregate over all case positions: with several norms it answers UNDETERMINED even when the addressed observation is exact; in this directory’s cases there is one norm.
  • The “as of” moment is the case’s decision_time when named, otherwise legal_time; in this directory’s tests both dates coincide.

Prohibition windows: forms and the price of a boundary

Section titled “Prohibition windows: forms and the price of a boundary”

The most common corpus form is the open window window [since, infinity) for a premise-bound date since (sample — the labour code above). Window boundaries are literals, rule variables, infinity/-infinity, or terms: a term-built window (e.g. add_calendar_period(appointed, 60 calendar_day) from the Vienna Convention) requires a deadline policy, otherwise MISSING_POLICY. A bare name as a boundary (window [moment, infinity)) is rejection LDC-E2115: a boundary is a value, not a domain constant.

In the record a prohibition is a modality: "duty" node with goal.kind: "forbearance": form visible in the record, not in the theory. An explicit @id before the modality sets the template StableId <namespace>#<name>; any other annotation there is LDC-E0201, an id colliding with another node is LDC-E1338.

  1. Duplicating a prohibition with a paired maintenance duty with an absence condition: two VIOLATED for one breach (see pitfalls.md).
  2. A dated boundary in window instead of the rule’s effective: “no norm yet” vs “the deadline has not started” — different answers (see pitfalls.md).
  3. Expecting SATISFIED after a quiet window: without a completeness certificate — UNDETERMINED (see pitfalls.md).
  4. A condition reading the rule premise: a tautological goal is always SATISFIED — warning LDC-E1371 (see pitfalls.md).
  5. Liberty over the same action with no priority: UNRESOLVED_NORMATIVE_CONFLICT instead of a win (see pitfalls.md).
  • The language specification defines modalities, forbearance, claim and prohibition forms, the lifecycle, conflict, and defeat; this page states how to use them.
  • Tutorials: /tutorials/writing-tests/ (test observations).
  • Details: corpus-forms.md, pitfalls.md, boundaries.md.

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

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