docs← Back to article

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.

Download this articlePlain text ↗
# 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`.