# LDC-E4105 — A priority over a strict rule ## What it means Priorities run between defeasible rules only: strict rules state logical consequences, not preferences, and no ordering can prefer one consequence over another. Naming a strict rule on either side of a priority edge asks the ordering to do what the category forbids. The compiler refuses the edge at the priority. The fix takes the strict rule out of the edge — restate the choice between defeasible rules, or drop the edge if the strict conclusion was meant to stand unconditionally. Edges between two defeasible rules stay silent. ## Example ```law language "law.core" version "0.2"; package demo.diagnostics version "0.1.0"; namespace "urn:law:demo:diagnostics"; relation p(x: Text) kind institutional; relation q(x: Text) kind institutional; relation r(x: Text) kind institutional; rule D1 defeasible { for x: Text; when q(x); then p(x); } rule S1 strict { for x: Text; when q(x); then r(x); } priority P1 { prefer S1 over D1; } ``` ## Fix ```law language "law.core" version "0.2"; package demo.diagnostics version "0.1.0"; namespace "urn:law:demo:diagnostics"; relation p(x: Text) kind institutional; relation q(x: Text) kind institutional; relation r(x: Text) kind institutional; rule D1 defeasible { for x: Text; when q(x); then p(x); } rule S1 strict { for x: Text; when q(x); then r(x); } ``` ## Engine message The engine reports this in its own wording: ```text example.law:10:10: error LDC-E4105: priority over strict rule "S1" — error (§192/§114: strict is a logical category, priorities run between defeasible) ``` ## Related - [Priority](/constructs/priority/) — how conflicts between rules are settled. - [Strict rules](/constructs/rule-strict/) — how a strict rule reads its body.