docs← Back to article

Markdown for LLMs

LDC-E1341 — Expansion list over budget

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

Download this articlePlain text ↗
# LDC-E1341 — Expansion list over budget

## What it means

Expansion is bounded: a single list argument carries at most thirty-two
items, and likewise capped are the case variants, the premises, and the
generated nodes. Beyond the budget the template would unfold into more
law than a reader can review, so the compiler stops at the oversized
argument.

The repair is to shrink the input: split the instance, or move the
enumeration into several smaller lists. Within budget the instance
expands exactly as written.

## Example

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

entity Person;
entity Choice;
entity SpecialChoice : Choice;
entity Other;
const Selected: SpecialChoice = entity_ref("urn:choice:selected");
const Wrong: Other = entity_ref("urn:choice:wrong");
relation f01(p: Person) kind empirical;
relation f02(p: Person) kind empirical;
relation f03(p: Person) kind empirical;
relation f04(p: Person) kind empirical;
relation f05(p: Person) kind empirical;
relation f06(p: Person) kind empirical;
relation f07(p: Person) kind empirical;
relation f08(p: Person) kind empirical;
relation f09(p: Person) kind empirical;
relation f10(p: Person) kind empirical;
relation f11(p: Person) kind empirical;
relation f12(p: Person) kind empirical;
relation f13(p: Person) kind empirical;
relation f14(p: Person) kind empirical;
relation f15(p: Person) kind empirical;
relation f16(p: Person) kind empirical;
relation f17(p: Person) kind empirical;
relation f18(p: Person) kind empirical;
relation f19(p: Person) kind empirical;
relation f20(p: Person) kind empirical;
relation f21(p: Person) kind empirical;
relation f22(p: Person) kind empirical;
relation f23(p: Person) kind empirical;
relation f24(p: Person) kind empirical;
relation f25(p: Person) kind empirical;
relation f26(p: Person) kind empirical;
relation f27(p: Person) kind empirical;
relation f28(p: Person) kind empirical;
relation f29(p: Person) kind empirical;
relation f30(p: Person) kind empirical;
relation f31(p: Person) kind empirical;
relation f32(p: Person) kind empirical;
relation f33(p: Person) kind empirical;
relation eligible(p: Person, choice: Choice) kind empirical;
relation applicable(p: Person, choice: Choice) kind institutional;
expansion fixed {
    params { subject: binder; choice: value; flags: list<relation(subject)> min 0; ground: relation(subject, choice); result: relation(subject, choice); }
    emit rule self/result defeasible {
        for subject;
        when ground(subject, choice);
        then result(subject, choice);
        scope from self; effective from self; labels from self; source from self;
    }
}
expand fixed Result {
    label en official "Fixed option";
    bind subject = person: Person;
    choice = Selected;
    ground = eligible;
    flags = [f01, f02, f03, f04, f05, f06, f07, f08, f09, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33];
    result = applicable;
    effective [@2026-01-01, @2027-01-01);
}
```

## Fix

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

entity Person;
entity Choice;
entity SpecialChoice : Choice;
entity Other;
const Selected: SpecialChoice = entity_ref("urn:choice:selected");
const Wrong: Other = entity_ref("urn:choice:wrong");
relation f01(p: Person) kind empirical;
relation f02(p: Person) kind empirical;
relation f03(p: Person) kind empirical;
relation eligible(p: Person, choice: Choice) kind empirical;
relation applicable(p: Person, choice: Choice) kind institutional;
expansion fixed {
    params { subject: binder; choice: value; flags: list<relation(subject)> min 0; ground: relation(subject, choice); result: relation(subject, choice); }
    emit rule self/result defeasible {
        for subject;
        when ground(subject, choice);
        then result(subject, choice);
        scope from self; effective from self; labels from self; source from self;
    }
}
expand fixed Result {
    label en official "Fixed option";
    bind subject = person: Person;
    choice = Selected;
    ground = eligible;
    flags = [f01, f02, f03];
    result = applicable;
    effective [@2026-01-01, @2027-01-01);
}
```

## Engine message

The engine reports this in its own wording:

```text
example.law:60:5: error LDC-E1341: expand Result: list "flags" is longer than 32
```

## Related

- [LDC-E1337](/diagnostics/LDC-E1337/) — the instance must honor the definition contract.
- [Priority](/constructs/priority/) — edges over the rules expansion emits.