docs← Back to article

Markdown for LLMs

LDC-E1349 — Completed names no instance

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

Download this articlePlain text ↗
# LDC-E1349 — Completed names no instance

## What it means

The `completed` predicate asks about a finished production, and a
production belongs to someone: the two-place shape names the procedure
and the instance whose completion is meant. The one-place shape names
no instance, and a silent "any instance" would turn true after the
fact — so the compiler stops at the call.

The repair is to name both: the procedure and the instance. A complete
question answers exactly as asked.

## Example

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

entity Tenant;
relation done(t: Tenant) kind institutional;
procedure Review(t: Tenant) {
    state Open initial;
    state Closed terminal;
    transition Decide {
        from Open;
        to Closed;
    }
}
rule Flag defeasible {
    for t: Tenant;
    when completed(t);
    then done(t);
}
```

## Fix

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

entity Tenant;
relation done(t: Tenant) kind institutional;
procedure Review(t: Tenant) {
    state Open initial;
    state Closed terminal;
    transition Decide {
        from Open;
        to Closed;
    }
}
rule Flag defeasible {
    for t: Tenant;
    when completed(Review, t);
    then done(t);
}
```

## Engine message

The engine reports this in its own wording:

```text
example.law:17:10: error LDC-E1349: `completed(P)` §163 does not name a procedure instance: an arity-one predicate does not say WHOSE production is complete (§163, §161.2, §163.1)
```

## Related

- [Procedures](/constructs/procedure/) — productions and the instances they belong to.