Skip to content
docs
Arxo ↗

LDC-W2101 — A bare name the dependencies could supply

For LLMs5 sections

Inside a facts group, a bare relation name with no qualifier and no local declaration would once have failed as unknown. When exactly the dependencies presented alongside the package export a public relation of that name, the engine instead keeps the local meaning and warns: the assertion stays yours, but a reader could easily believe it calls the dependency’s relation.

The fix is one qualifier: spell the dependency explicitly. A local declaration of the same name does not clear the warning — the ambiguity is about which relation a reader sees, and only the qualifier settles it.

Arxo Law
language "law.core" version "0.2";
package p.consumer version "0.1.0";
namespace "urn:p:consumer";
import p.dep version "0.1.0";
facts Local { assert shared(); }
imports
[{"package": {"name": "p.dep", "version": "0.1.0", "namespace": "urn:p:dep", "semanticHash": "sha256:0"}, "contentHash": "sha256:0", "exports": ["shared"], "exportRelationParameterNames": {"shared": ["x"]}}]
Arxo Law
language "law.core" version "0.2";
package p.consumer version "0.1.0";
namespace "urn:p:consumer";
import p.dep version "0.1.0";
facts Local { assert p.dep::shared(); }

The engine reports this in its own wording:

Output
example.law:7:22: warning LDC-W2101: bare relation name "shared" matches a dependency public relation ; local semantics is preserved. Candidates for explicit qualification: p.dep::shared

Documentation for Arxo. Writings — blog.arxo.io.

Anonymous visit counts on stats.arxo.io, no cookies.