# nb-19 solutions — Unknown, presumed and deemed ## Exercise (article section 9) Setup: `demo.northbridge.unknown` (`packs/examples/language-demo/unknown/`), suite 17/17 green. Command for every check below: ```sh law test packs/examples/language-demo/unknown ``` ## Answers 1. `truth(resident(carl))` is `FALSE_ONLY`: Carl is on file and the closure `FileComplete` turns the missing record into an explicit denial inside its domain. `truth(permit_ok(carl))` is `NEITHER`: the closure covers `resident` only, so `Grant` has no established premise and `DenyListed` has none either. The declaration that explains the difference is the closure's `predicate resident` line — completeness is per predicate, never file-wide. 2. With application and unknown residence, `truth(needs_review(ann))` is `TRUE_ONLY` (`not_known` holds on silence) while `truth(cleared(ann))` is `NEITHER` (no denial, so `ClearWhenDenied` does not fire). After asserting `not resident(ann)`, only the second flips — `cleared` becomes `TRUE_ONLY`; `needs_review` stays `NEITHER` because residence is now decided (denied counts as established-against, so `not_known` no longer holds). 3. `truth(standing(ann))` is `NEITHER`: the presumption `Standing` fires on her application but the unpaid record rebuts it via `unless`, withdrawing the conclusion without denying it. `truth(received(ann))` is `NEITHER` too, but answered by the fiction `DeemedReceipt`: nothing was posted, and fiction needs its trigger — it is not a default. The fine touches only standing because `unless unpaid(a)` belongs to the presumption alone; the fiction has no `unless` and no rebuttal path. 4. With the fee record wholly absent, the constraint reports nothing and `late_fee` is not derived. Both mechanisms need the explicit denial: the constraint's `require fee_ok(a)` fires only against established-against support, and `LateFee`'s `not fee_ok(a)` condition likewise needs the denial, not mere silence. Difference from the suite case: `assert not fee_ok` supplies support-against (finding plus consequence), while total absence supplies nothing (neither). 5. `truth(resident(ann))` is `BOTH` — contradiction is preserved, neither record cancels the other. `Grant` does not fire for her: a rule that needs `resident(a)` established does not run on a disputed premise, so `truth(permit_ok(ann))` is `NEITHER`. ## Checkable tests Questions 1–3 and 5 replay suite tests verbatim (`closure: on file without a record is denied`, `closure does not leak to other predicates`, `unknown triggers review`, `silence does not clear`, `denial clears`, `presumption holds by default`, `rebuttal withdraws the presumption`, `fiction needs its trigger`, `contradiction is both`). Question 4 was verified 2026-10-02 with a scratch probe (`/tmp/nb19-probe/probe.law`, copy of the package; `law engine test /tmp/nb19-probe/probe.lawtest --program /tmp/nb19-probe/probe.law`): ```text test FAIL: probe: issued, fee record wholly absent truth_status == TRUE_ONLY: в документе NEITHER test FAIL: probe: issued absent-fee, issue present issue(CONSTRAINT_VIOLATED): в документе нет test FAIL: probe: disputed premise and grant truth_status == TRUE_ONLY: в документе NEITHER ``` (All three probes fail as designed: `late_fee` is `NEITHER`, no issue is present, and `Grant` does not fire on a disputed premise.)