# LDC-E2103 — Wrong argument count for a predicate ## What it means A call must carry exactly as many arguments as the relation declares parameters. One argument too few or too many is never silently padded or truncated: the compiler rejects the call and names both counts, the one written and the one declared. Adding the missing argument or dropping the extra one is the whole fix. When the call itself is right, the declaration is the place to look — a parameter may have been added or removed there. ## Example ```law language "law.core" version "0.2"; package demo.diagnostics version "0.1.0"; namespace "urn:law:demo:diagnostics"; entity P; relation known(a: P, b: P) kind institutional; relation noted(a: P) kind institutional; rule R strict { for x: P; when known(x); then noted(x); } ``` ## Fix ```law language "law.core" version "0.2"; package demo.diagnostics version "0.1.0"; namespace "urn:law:demo:diagnostics"; entity P; relation known(a: P, b: P) kind institutional; relation noted(a: P) kind institutional; rule R strict { for x: P; for y: P; when known(x, y); then noted(x); } ``` ## Engine message The engine reports this in its own wording: ```text example.law:8:32: error LDC-E2103: known: arity 1 does not match the declaration (2 parameters) ``` ## Related - [Vocabulary](/constructs/vocabulary/) — how relations declare their parameters.