docs← Back to article

Markdown for LLMs

LDC-E4701 — An acceptance rule reading outside the policy

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

Download this articlePlain text ↗
# LDC-E4701 — An acceptance rule reading outside the policy

## What it means

The acceptance phase settles which support counts, so its rules must not
lean on the very reasoning they are meant to admit. A rule on the phase
list may only read projection slots and the heads of its own list: any
other predicate keeps the acceptance verdict dependent on outside
inference. The compiler refuses the rule at the policy.

Move the predicate into the policy projections, or take the read out of
the rule.

## Example

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

entity Thing;
relation paid(t: Thing) kind empirical;
relation settled(t: Thing) kind institutional;
relation ev_edge(edge: Text, doc: Text, link: Text) kind empirical;
relation accepted_support(edge: Text) kind institutional;
rule Settle strict { for t: Thing; when paid(t); then settled(t); }
rule Judge strict { for edge: Text; for doc: Text; for t: Thing; when ev_edge(edge, doc, "supports") and settled(t); then accepted_support(edge); }
evidence policy EvpV1 {
profile "law.core.evidence-policy/0.1";
accepts accepted_support;
protects paid;
input edge ev_edge;
rule Judge;
}
```

## Fix

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

entity Thing;
relation paid(t: Thing) kind empirical;
relation settled(t: Thing) kind institutional;
relation ev_edge(edge: Text, doc: Text, link: Text) kind empirical;
relation accepted_support(edge: Text) kind institutional;
rule Settle strict { for t: Thing; when paid(t); then settled(t); }
rule Judge strict { for edge: Text; for doc: Text; when ev_edge(edge, doc, "supports"); then accepted_support(edge); }
evidence policy EvpV1 {
profile "law.core.evidence-policy/0.1";
accepts accepted_support;
protects paid;
input edge ev_edge;
rule Judge;
}
```

## Engine message

The engine reports this in its own wording:

```text
example.law:12:1: error LDC-E4701: evidence policy urn:law:demo:diagnostics#EvpV1: rule urn:law:demo:diagnostics#Judge reads urn:law:demo:diagnostics#settled — the predicate is neither a policy projection slot nor a head of its list's rule. Acceptance may not depend on the normative inference whose initial admissibility it determines (EPISTEMIC_ACCEPTANCE_CYCLE, §78.1/§78.2.5)
```

## Related

- [Facts and evidence](/constructs/facts-and-evidence/) — what an assertion carries.