docs← Back to article

Markdown for LLMs

LDC-E1331 — Duplicate anonymous assert

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

Download this articlePlain text ↗
# LDC-E1331 — Duplicate anonymous assert

## What it means

An assertion without an explicit identifier is keyed by its own
content: the same normalized fact with the same provenance stated twice
collapses onto one identity, and the second statement cannot be told
apart from the first. The compiler stops at the repetition and asks
for an explicit identifier that separates the two.

The repair is to state the fact once, or to give each statement its own
identifier. Distinct facts keep distinct identities.

## Example

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

entity Tenant;
relation tall(t: Tenant) kind institutional;
const Joe: Tenant = entity_ref("urn:law:demo:diagnostics#Joe");
assert tall(Joe);
assert tall(Joe);
```

## Fix

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

entity Tenant;
relation tall(t: Tenant) kind institutional;
const Joe: Tenant = entity_ref("urn:law:demo:diagnostics#Joe");
assert tall(Joe);
```

## Engine message

The engine reports this in its own wording:

```text
example.law:9:1: error LDC-E1331: exact duplicate of an anonymous assert (the same normalized fact and provenance) or digest ambiguity: give an explicit `id` (§207)
```

## Related

- [Facts and evidence](/constructs/facts-and-evidence/) — facts and the identifiers that separate them.