# LDC-E1338 — Instance name already declared ## What it means An instance introduces its reference name into the package namespace: generated identifiers derive from it, and references resolve through it. A name that a declaration already owns cannot be taken again — the two owners would answer under one name. The compiler stops at the instance. The repair is a rename: give the instance a name nothing else declares. Generated identifiers then derive without collision. ## 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 Selected { label en official "Fixed option"; 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-E1338: expand Selected: instance name is already declared in the package (§279.1.4) ``` ## Related - [LDC-E1201](/diagnostics/LDC-E1201/) — the companion collision for ordinary declarations. - [LDC-E1337](/diagnostics/LDC-E1337/) — the instance must honor the definition contract.