Markdown for LLMs
LDC-E2103 — Wrong argument count for a predicate
The source Markdown for this article. Copy it into your assistant or download it as a text file.
# 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.