docs← Back to article

Markdown for LLMs

LDC-E1350 — Two binders for one activation

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

Download this articlePlain text ↗
# LDC-E1350 — Two binders for one activation

## What it means

A norm activates on one event: the activation formula binds at most
one event variable, because a position has one bearer and one target window
start. Two event variables occurring only in the activation would leave
the engine choosing between them for the author, so the compiler stops
at the rule.

The repair is to activate on one event and condition on the other: keep
a single binder in the activation formula and read the second event
through an ordinary premise. One bearer and one window, chosen by the text.

## Example

```law
language "law.core" version "0.2";
package demo.diagnostics version "0.1.0";
namespace "urn:law:demo:diagnostics";

entity Tenant;
event Signed {
    tenant: Tenant;
}
event Delivered {
    tenant: Tenant;
}
relation trig(t: Tenant) kind empirical;
relation signed(t: Tenant, e: Signed) kind empirical;
relation delivered(t: Tenant, e: Delivered) kind empirical;
relation filed(t: Tenant) kind institutional;
rule R defeasible {
    for t: Tenant;
    for e1: Signed;
    for e2: Delivered;
    when trig(t);
    then duty D {
        bearer t;
        beneficiary t;
        activation signed(t, e1) and delivered(t, e2);
        achieve filed(t) during [@2026-01-01, infinity);
    };
}
```

## Fix

```law
language "law.core" version "0.2";
package demo.diagnostics version "0.1.0";
namespace "urn:law:demo:diagnostics";

entity Tenant;
event Signed {
    tenant: Tenant;
}
relation trig(t: Tenant) kind empirical;
relation signed(t: Tenant, e: Signed) kind empirical;
relation filed(t: Tenant) kind institutional;
rule R defeasible {
    for t: Tenant;
    for e1: Signed;
    when trig(t);
    then duty D {
        bearer t;
        beneficiary t;
        activation signed(t, e1);
        achieve filed(t) during [@2026-01-01, infinity);
    };
}
```

## Engine message

The engine reports this in its own wording:

```text
example.law:16:6: error LDC-E1350: R: norm activation formula "D" binds 2 variables of event [e1, e2] — at most one activation binder (§135.1, §133): a position has one bearer, and the target window start would be chosen by the engine for the author. A two-event norm is written with one bearer and a condition on the second
```

## Related

- [Duties](/constructs/duty/) — bearers, goals, and what activates them.
- [Procedures](/constructs/procedure/) — events and the histories they order.