# nb-09 solutions — From permit to duties and powers *Checkable against `law test packs/examples/language-demo/permits` (28 checked, 28 passed). Identifiers and code as written.* ## 1. Flipping `duty violated` to SATISFIED and to UNDETERMINED **Answer: replace the explicit denial with the positive fact for SATISFIED; drop the denial (assert neither) for UNDETERMINED.** The violated test asserts `not decision_notified(ann)` past the closed window, so the achievement condition provably never held — VIOLATED. Asserting `decision_notified(ann)` instead (as `duty satisfied` does) meets the condition inside the window — SATISFIED. Asserting neither (as `outcome unknown — no violation` does) leaves the engine with no witness either way — UNDETERMINED. This is the trio the article's changed condition describes: same window, same parties, three fact patterns, three states. ## 2. Why maintenance violation, not "unknown" **Answer: the recorded fines are a counterexample, and a counterexample is the witness maintenance needs.** A maintenance goal claims the condition holds at *every* point of the window. One moment where `permit_eligible(ann)` provably fails (here via `outstanding_fines`, which defeats eligibility through `FinesRefusal`) — refutes the universal claim, so VIOLATED. Contrast `without a certificate the post-window outcome is unknown`: judged 2027-01-05 with no counterexample on record, hence UNDETERMINED. Silence never violates; a counterexample always does. ## 3. Standing, exercise, grounds in the groundless power **Answer: standing present, exercise present, grounds absent.** Standing: `permit_office(city-hall)` and `permit_eligible(ann)` are both asserted, so the rule's `when` holds and the power exists. Exercise: `revocation_notice(city-hall, ann)` is asserted, so the exercise act occurred. Grounds: `resells_permit(ann)` is nowhere asserted, so `valid_when` is false and the exercise operates nothing — `permit_revoked` stays NEITHER. Add the resale fact and nothing else, and the twin test `power exercised lawfully` goes TRUE_ONLY. ## 4. Why `MayObject` applies in March but not mid-April **Answer: the liberty's window is 1–31 March 2026; a 15 April refusal falls outside it, so the position does not apply at all.** `ObjectionRight` fires only when `permit_refused(a, o)` holds, and the resulting `MayObject` carries `window [@2026-03-01, @2026-03-31]`. On 10 March a refusal is inside the window — ACTIVE. A refusal dated 15 April is outside the window the rule declares, so there is no `MayObject` for it: not VIOLATED, not UNDETERMINED — absent. Windows bound applicability first, outcomes second (see Limits). ## How to verify ```sh law test packs/examples/language-demo/permits ``` Expected: `итого: 28 проверено, 28 прошли, 0 не прошли, 0 не исполнены`. The deciding tests are `duty satisfied`, `duty violated`, `outcome unknown — no violation`, `maintenance violated by counterexample`, `without a certificate the post-window outcome is unknown`, `power exercised lawfully`, `power without grounds does not operate`, and `liberty and immunity`.