docs← Back to article

Markdown for LLMs

nb-13 solutions — Repeatable norms without copying

The source Markdown for this article. Copy it into your assistant or download it as a text file.

Download this articlePlain text ↗
# nb-13 solutions — Repeatable norms without copying

*Checkable against `law test packs/examples/language-demo/templates`
(8 checked, 8 passed). Identifiers and code as written.*

## 1. The some/none trio for Ann

**Answer: with `files_late` only, `late_fined` is NEITHER and
`late_noticed` is TRUE_ONLY; adding `repeat_late` flips only
`late_fined` to TRUE_ONLY. The change belongs to
`WithRecord/applicable`.**

The `some-premise without a record does not fire` test asserts only
`files_late(ann)`: the `WithRecord/applicable` rule waits on the extra
`when repeat_late(subject)` premise the `some` option added, so nothing
concludes `late_fined` — NEITHER, with `evaluation_status == COMPUTED`
(the engine ran and found no support, it did not crash). The twin test
`some-premise with a record fires` adds `repeat_late(ann)` and nothing
else — TRUE_ONLY. `late_noticed` is TRUE_ONLY in both setups because
`FirstNotice/applicable` was generated with `cause = none`: no optional
premise exists to wait on, so the ground alone suffices. This is the
trio the article's changed condition describes: same ground, one added
fact, three statuses across the two rules.

## 2. Flipping the sanction to FALSE_ONLY

**Answer: assert `exempt_case(ann, city-hall)`; the flip is produced by
`ResaleFine/excluded/Amnesty/excludes` together with
`ResaleFine/excluded/Amnesty/priority`.**

Standing, ground and condition are identical in both tests
(`trades_at`, `office_open`, June 2026 inside the instance window), so
`ResaleFine/applicable` supports `fined_for(ann, city-hall, Fine)` in
both. The added exemption fact fires the generated defeater, whose head
is `not fined_for(...)`, and the generated priority prefers that
defeater over the applicator with `reason explicit_exception` — hence
FALSE_ONLY rather than a conflict. Remove the exemption fact and the
twin test `sanction applies` is TRUE_ONLY again. Note the full stable
paths: quoting "the exception rule" is ambiguous, quoting
`ResaleFine/excluded/Amnesty/excludes` points at exactly one generated
node (see Limits).

## 3. Who inherits the 2026 window

**Answer: both generated rules inherit it
(`ResaleFine/applicable` and `ResaleFine/excluded/Amnesty/excludes`,
each via `effective from self`); the priority node carries only labels
and source. A December 2027 trade reports NEITHER.**

The instance declares `effective [@2026-01-01, @2027-01-01)`, and each
emit rule in the template contains `effective from self`, so the window
lands on the applicator and on every per-case defeater. The `emit
priority` block has no `effective` line — priorities order rules, they
do not apply to facts, so there is no window to inherit. In December
2027 the applicator is out of window (no support) and the amnesty
defeater is equally out of window (no counter-support): nothing
concludes either way, hence NEITHER — not FALSE_ONLY, which would need
an operating defeater inside its window. Windows bound applicability
first, outcomes second.

## 4. Why one visit is NEITHER, not FALSE_ONLY

**Answer: a failed count premise removes support; it never concludes
the negation. No rule in the family has a negative head.**

`threshold not met` asserts one visit against a `threshold = 2` count
premise, so `FrequentFiler/count` does not fire — and nothing else in
the package concludes `not frequent_filer(bob)` either. FALSE_ONLY
requires a rule whose head is the negation, like the sanction's
`.../excludes` defeater, which the threshold template never emits: its
only emit block concludes the positive head. To report FALSE_ONLY for
Bob the family would need a new generated node with a negative head —
for example an excluded-case mechanism like `sanction`'s, or an
explicit "closed register, checked and absent" defeater — plus the
priority that lets it win. Silence (one visit, no rule) stays NEITHER;
only an operating negative rule makes FALSE_ONLY.

## How to verify

```sh
law test packs/examples/language-demo/templates
```

Expected: `итого: 8 проверено, 8 прошли, 0 не прошли, 0 не исполнены`.
The deciding tests are `some-premise without a record does not fire`,
`some-premise with a record fires`, `none-premise always fires`,
`sanction applies`, `exception lifts the sanction`, `threshold: two
visits` and `threshold not met`.