Markdown for LLMs
Power: exercise, validity, effect, immunity counterweight
The source Markdown for this article. Copy it into your assistant or download it as a text file.
# Power: exercise, validity, effect, immunity counterweight
## 1. What it is in one sentence
`power` is a constitutive power: the holder performs an
exercise, and when the validity condition (valid_when) holds
a legal effect (effect) arises. The author takes it when the source
grants competence: "may terminate", "appoints", "the court quashes".
A power is a two-step device: the rule creates the position, and the legal effect
follows only when the holder exercises it on valid grounds with no blocking immunity.
## 2. When to take it and when not to
| Instead | Take when | Selection rule |
|---|---|---|
| `liberty` | the source gives "may" with no constitutive effect | liberty permits the action but creates nothing; power creates/terminates/changes. "May exit the contract by notice" with a termination effect — `power`; "may withdraw consent" with no effect — `liberty` |
| `duty` | conduct must be required, not empowered | a duty requires behaviour of the addressee; a power awaits the holder's exercise. Do not write a duty "to exercise the power" — these are different positions |
| `rule strict` with an institutional head | the effect follows automatically by fact | if termination follows by the mere fact of delay, with no party notice — an ordinary rule, not `power` (no `exercise`) |
| `immunity` | protection against someone else's effect is needed | immunity is the counterweight: `protected_effect` locks the power's effect. Written as a separate norm, not as a flag on `power` |
All four fields (`holder`, `exercise`, `valid_when`, `effect`) and the immunity window
are mandatory; a missing one is `LDC-E1305`.
## Grammar: power (EBNF verbatim from the language grammar)
The `power` form — the holder, the subject, the exercise, the validity condition, the effect, and the window (the holder and all four substantive fields are required; a missing one is `LDC-E1305`):
```ebnf
power_conclusion = "power", [ identifier ], "{",
{ power_item },
"}" ;
power_item = "holder", expression, ";"
| "over", expression, ";"
| "exercise", expression, ";"
| "effect", legal_effect, ";"
| "valid_when", formula, ";"
| "window", interval_expression, ";"
| source_anchor_item
| metadata_item ;
```
Position statuses and lifecycle live on the [lifecycle page](/constructs/lifecycle-statuses/); windows as intervals and their computation — on the [deadline-calendar page](/constructs/deadline-calendar/); window syntax is not duplicated here.
## 3. Minimal example
Package `examples/power-exercise/`: a customer may terminate a contract
by notice when delivery is overdue. Full code —
`examples/power-exercise/package.law`; cases and expectations —
`examples/power-exercise/tests/01-effect-materialized.lawtest` (effect
materialized) and `tests/02-no-effect.lawtest` (no effect).
```law
rule TerminationRule strict {
for s: Supplier;
for c: Customer;
when contract_signed(s, c);
then power Terminate {
holder c;
over s;
exercise termination_notice(c, s);
valid_when (delivery_overdue(s, c));
effect create(contract_terminated(s, c));
};
}
```
The engine's actual answer (see [How the engine answers](#5-how-the-engine-answers)):
- `termination_notice` + `delivery_overdue` → `contract_terminated`
`TRUE_ONLY` (effect materialized);
- `termination_notice` alone → `NEITHER` + issue
`POWER_INVALID_EXERCISE` (exercise without `valid_when`, no effect);
- `delivery_overdue` without `termination_notice` → `NEITHER` (no
exercise — the power awaits the holder's act).
Sensitivity check: remove `delivery_overdue` from the first
scenario — the answer changes from `TRUE_ONLY` to `NEITHER`; remove
`termination_notice` — the same transition. Both facts load-bearing.
## 4. Example across domains
- **Law:** limiting a fundamental right only by statute —
package `tr.constitution` — Constitution of Türkiye
(`RestrictFundamentalRight`: holder — the legislature, effect —
the legal act of limitation; `valid_when` — constitutional
admissibility).
- **Law:** terminating an employment contract on a failed
probation — package `uz.labor_code` — Labour Code of Uzbekistan
(`RastorgnutPriNeudIspytanii`).
- **Law:** quashing decisions of union organs —
package `su.union_treaty_1922` — 1922 Union Treaty
(`CECCancelUnionCouncilDecision` and neighbours: a series of five quashing
powers — a model of an organ's competence).
- **Religion/custom:** immunity from termination under force majeure —
`examples/power-immunity/` (`NoTerminationUnderForceMajeure`,
`protected_effect contract_terminated(s, c)`; a pair with no priority gives
`UNRESOLVED_NORMATIVE_CONFLICT`).
Full analysis — `corpus-forms.md`.
## 5. How the engine answers
Run output (verbatim):
```text
check OK: docs/research/constructs/12-power/examples/power-exercise
law test research.constructs.power_exercise: мир research.constructs.power_exercise
ok [research.constructs.power_exercise#authored] tests/01-effect-materialized.lawtest / exercise with valid ground materializes the effect
ok [research.constructs.power_exercise#authored] tests/02-no-effect.lawtest / exercise without valid ground gives NEITHER
ok [research.constructs.power_exercise#authored] tests/02-no-effect.lawtest / no exercise means no effect even on valid ground
итого: 3 проверено, 3 прошли, 0 не прошли, 0 не исполнены; код 0
```
```text
check OK: docs/research/constructs/12-power/examples/power-immunity
law test research.constructs.power_immunity: мир research.constructs.power_immunity
ok [research.constructs.power_immunity#authored] tests/01-effect-open.lawtest / without force majeure the effect materializes
ok [research.constructs.power_immunity#authored] tests/02-effect-blocked.lawtest / immunity blocks the effect under force majeure
итого: 2 проверено, 2 прошли, 0 не прошли, 0 не исполнены; код 0
```
Outcome status with a locked effect: `truth_status NEITHER`,
`evaluation_status UNRESOLVED_NORMATIVE_CONFLICT`.
The rule creates an `ACTIVE` position; the effect materializes only with established
`exercise`, `valid_when`, window, and no applicable
immunity. Exercise without `valid_when` is issue
`POWER_INVALID_EXERCISE`. An undefeated power/immunity pair is
conservative effect materialization: an effect without support.
Distinguish the two answer statuses: `truth_status` speaks of the effect predicate
(`TRUE_ONLY` vs `NEITHER`), `evaluation_status` — of the document as a whole
(`COMPUTED` vs `UNRESOLVED_NORMATIVE_CONFLICT`). In the tests above the immunity package's
first row gives `TRUE_ONLY` + `COMPUTED`, the second —
`NEITHER` + `UNRESOLVED_NORMATIVE_CONFLICT`: the effect is not established, and
the document records this with a status, not with silence. Check both statuses,
not only `truth_status` (see `pitfalls.md`).
The judgment channel and effect locking:
| Facts | Question | Answer | Why |
|---|---|---|---|
| `penalty_notice` | `penalty_imposed` | `NEITHER`, `REQUIRES_JUDGMENT` | judge in `valid_when`; no `POWER_INVALID_EXERCISE` issued |
| same + adjudicated `breach_material` | `penalty_imposed` | `TRUE_ONLY` | the court closed the condition |
| same + `force_majeure` | `penalty_imposed` | `NEITHER`, `UNRESOLVED_NORMATIVE_CONFLICT` | power and immunity both undefeated, effect locked |
| `penalty_notice` + `force_majeure` without adjudication | `penalty_imposed` | `NEITHER`, `COMPUTED` | effect already locked — the judge is not asked |
Counterfactual: without the `TerminationRule` rule the same facts (`contract_signed`, `termination_notice`, `delivery_overdue`) give `NEITHER` — nothing derives the effect.
## 6. Common mistakes
1. No `exercise` in the case — no effect, and this is not a defect: the power
awaits the holder's act. Check the exercise facts first.
2. `valid_when` without parentheses around a conjunction — `LDC-E0201` + `LDC-E1305`;
write `valid_when (a and b);`.
3. `_` in `valid_when` — `check` stays silent, the effect never materializes
(a known open gap; see `pitfalls.md`).
4. A judge in `valid_when` — `REQUIRES_JUDGMENT`, not "the power is
invalid"; check `evaluation_status`.
5. Immunity "did not fire": an undefeated pair gives
`UNRESOLVED_NORMATIVE_CONFLICT`, not `COMPUTED` — distinguish result statuses
from `truth_status`.
6. The power's `subject` only affects the delegation subject check,
not the position status.
Each analysed — `pitfalls.md`.
## 7. References
- The language specification defines power, immunity, conflict,
defeat, the judgment channel, delegation, and positions as conclusions;
this page states how to use them.
- Tutorials: `/tutorials/writing-tests/` (test observations).
- Details: `corpus-forms.md`, `pitfalls.md`, `boundaries.md`.