docs← Back to article

Markdown for LLMs

LDC-E1339 — Instance without a label

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

Download this articlePlain text ↗
# LDC-E1339 — Instance without a label

## What it means

Every instance carries a human-readable label: generated norms descend
from the instance, and readers must be able to tell whose they are. An
instance with no label would emit anonymous norms, so the compiler
stops at the instance and asks for the label.

The repair is one line: add the label. Labeled instances expand
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 eligible(p: Person, choice: Choice) kind empirical;
relation applicable(p: Person, choice: Choice) kind institutional;
expansion fixed {
    params { subject: binder; choice: value; 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 {
    bind subject = person: Person;
    choice = Selected;
    ground = eligible;
    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 eligible(p: Person, choice: Choice) kind empirical;
relation applicable(p: Person, choice: Choice) kind institutional;
expansion fixed {
    params { subject: binder; choice: value; 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;
    result = applicable;
    effective [@2026-01-01, @2027-01-01);
}
```

## Engine message

The engine reports this in its own wording:

```text
example.law:22:14: error LDC-E1339: expand Result: the instance has no label
```

## Related

- [LDC-E1337](/diagnostics/LDC-E1337/) — the instance must honor the definition contract.
- [LDC-E1338](/diagnostics/LDC-E1338/) — the instance name must be fresh.