nb-24 solutions — Neighbor constructs, nine mistakes and three decision tasks
Checkable against law test packs/examples/language-demo/permits
(28 checked, 28 passed, 0 failed). Tool law 0.1.0, language
0.2, semantics law.core/0.2, std 0.2.0. Identifiers and
code as written.
Exercise: Bob’s four values
Section titled “Exercise: Bob’s four values”Bob is badge-holding and fined, lives in the outer zone, and pays the fee three times at 10 EUR.
Answer:
permit_eligible(Bob)isFALSE_ONLY. Badge firesBadgeEligibility, fines fireFinesRefusal(then not permit_eligible), andRefusalOverEligibilityprefers the refusal (reason lex_specialis). Same shape as the suite testdenial wins by priority(badge + fines →FALSE_ONLY).central_senior(Bob)isNEITHER. The classification needscentral_resident(resident in the central zone); Bob lives in the outer zone, so no case matches. Same shape asclassification: not from the centre — no match. (Three household members would not help either:large_householdneeds four,LARGE_HOUSEHOLD = 4.)fee_total_set(Bob, 10 EUR)isTRUE_ONLYandfee_total_all(Bob, 30 EUR)isTRUE_ONLY. Three payments of the same 10 EUR collapse to one set element but count three times as a list — the same ledger asset ignores duplicates: three times 10 — total 10againstlist counts duplicates: three times 10 — total 30.
Run law test packs/examples/language-demo/permits:
итого: 28 проверено, 28 прошли, 0 не прошли, 0 не исполнены; код 0 — all four predictions confirmed, suite green.
Decision exercise 1: the hold nobody wrote
Section titled “Decision exercise 1: the hold nobody wrote”Checkable on a scratch copy: 14 shipped probes plus the new probe, 15 checked, 15 passed, 0 failed. The shipped suite itself stays at 14/14.
Answer: def_senior(cora) is TRUE_ONLY and
cls_senior(cora) is TRUE_ONLY. The hold changes nothing:
no rule names audit_hold, so the defined head still
abbreviates its satisfied condition and the classified head
still matches with no defeater firing. Same shape as the
suite test probe: qualifying senior without fraud, both models, plus one inert fact.
The hold fits the defeasible classification, not the
definition: a hold is temporary by nature, and only the
classification can lose support without denying the label —
NEITHER says “not sorted”, never “not a senior”. Putting
the hold on the definition would demand rewriting the
condition itself, and the fraud repair already showed that
a defeater cannot attach to a defined head (LDC-E4112).
For Cora to read NEITHER on cls_senior, the file needs a
defeater that names the hold — for example when audit_hold(a); defeat cls_senior(a); — or the qualifying
facts must go: dropping any one of resident, central, big
family unmatches the case. The hold alone, unmentioned, is
inert under both models.
Decision exercise 2: the window opening
Section titled “Decision exercise 2: the window opening”Checkable on a scratch copy: 14 shipped probes plus the new probe, 15 checked, 15 passed, 0 failed. Tool and profile as above.
Answer: the duty is ACTIVE at the window opening — the
same status as the March 10 read. The goal is unmet
(not duty_fee asserted) and the window has just opened, so
the lifecycle has no verdict yet in either reading; the
opening read adds no new information over March 10, and only
the April 10 read differs (VIOLATED). Same shape as the
suite test probe: fee duty active inside window, moved to
decision_time @2026-03-01T09:00:00Z.
If the office abolished the window and demanded same-day payment, keep the constraint and drop the duty: with no grace period there is no lifecycle to carry, and the timeless “issued implies paid” report — one construct, one issue, no window arithmetic — says everything the rule requires. The duty’s window machinery would be dead weight; its only remaining job, distinguishing reads over time, would have no reads left to distinguish.
Decision exercise 3: the half-filed station
Section titled “Decision exercise 3: the half-filed station”Checkable on a scratch copy: 14 shipped probes plus the new probe, 15 checked, 15 passed, 0 failed. Tool and profile as above.
Answer: Filed is TRUE_ONLY, Draft is NEITHER,
and Approved is NEITHER. The EvFiled event moves the
case: the vacated Draft reads silence here — the procedure
stops holding the state it left rather than denying it — and
Approved stays silent because the Decide transition is
still gated on the missing EvDecided. The case rests in
Filed: filed, unchecked by any official act, waiting.
A round-3 extension of MiniAllotment could never express
this waiting: stages have no events, so there is no “filed
but undecided” for a round to index — admission would derive
from points the moment the facts close, with or without an
official. The procedure’s answer to “where does the case
rest” is a state reached by an act; the stage has no such
question in its vocabulary.
Documentation for Arxo. Writings — blog.arxo.io.
Anonymous visit counts on stats.arxo.io, no cookies.