docs← Back to article

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.

Download this articlePlain text ↗
# 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.