Prohibition: prohibition as forbearance sugar
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.
1. When to take it and when not to
Section titled “1. When to take it and when not to”| Instead | Selection rule |
|---|---|
prohibition vs constraint | A 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 condition | Do 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 action | Bare 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 liberty | Structurally 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:
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”):
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.
2. Minimal example
Section titled “2. Minimal example”Package examples/no-subcontract/: a contractor under a signed agreement brings in
no subcontractors in March 2026.
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:
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 не исполнены; код 0law 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.
3. Example across domains
Section titled “3. Example across domains”- Law (constitution): package
tr.constitution— Constitution of Türkiye,then prohibition RefrainFromAbuseOfRightsunder art. 14 (seecorpus-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 windowwindow [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.
4. How the engine answers
Section titled “4. How the engine answers”Table — actual runs of this directory’s examples (query
evaluate positions(), observation position(Template, STATUS)):
| Facts over the ground | Moment | Observation | Why |
|---|---|---|---|
action subcontracts | inside the window | position(NoSubcontracting, VIOLATED) | an established action fact in the window breaches the prohibition |
| none | inside the window | position(NoSubcontracting, ACTIVE), not VIOLATED | no counterexample; the deadline has not passed |
action uses_banned | inside the window | position(NoDoping, VIOLATED) | the same semantics in a sports regulation |
| none | inside the window | position(NoDoping, ACTIVE), not VIOLATED | the prohibition is active, no breach |
| none | after the window | position(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, notSATISFIED. normative_statusis an aggregate over all case positions: with several norms it answersUNDETERMINEDeven when the addressed observation is exact; in this directory’s cases there is one norm.- The “as of” moment is the case’s
decision_timewhen named, otherwiselegal_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.
5. Common mistakes
Section titled “5. Common mistakes”- Duplicating a prohibition with a paired
maintenanceduty with an absence condition: twoVIOLATEDfor one breach (seepitfalls.md). - A dated boundary in
windowinstead of the rule’seffective: “no norm yet” vs “the deadline has not started” — different answers (seepitfalls.md). - Expecting
SATISFIEDafter a quiet window: without a completeness certificate —UNDETERMINED(seepitfalls.md). - A
conditionreading the rule premise: a tautological goal is alwaysSATISFIED— warningLDC-E1371(seepitfalls.md). - Liberty over the same action with no priority:
UNRESOLVED_NORMATIVE_CONFLICTinstead of a win (seepitfalls.md).
6. References
Section titled “6. References”- 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.