docs← Back to article

Markdown for LLMs

Boundary (lawql/1)

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

Download this articlePlain text ↗
# Boundary (lawql/1)

The structural layer refuses on purpose. Each refusal below is a query that fails with the code named above it; removing any of these bans takes a separate decision, and this topic does not remove any.

## No arithmetic

```lawq
# expect LDC-Q0001
from n in nodes select 1 + 2
```

Numbers are atoms for equality, never operands. Whatever needs computation goes to an inference query.

## No ordering comparisons

```lawq
# expect LDC-Q0101
from n in nodes where n.kind > 1 select n.id
```

Rows match or miss; larger-than has no meaning over snapshot rows. Ordering lives in the core that answers inference queries.

## No recursion in the structural layer

```lawq
# expect LDC-Q4004
query q over "demo.lawqlbase" {
  for a: Applicant;
  case "verify/ci/gates/release/lawql_reference_fixtures/base/case.json";
  where q(a);
  select q(a);
}
```

A question over a package may only use predicates the target package declares. The query above refers to itself instead, and the unknown predicate is refused. Chains across packages are walked one recorded step at a time.

## No free negation

```lawq
# expect LDC-Q0002
from n in nodes where not n.kind == "rule" select n.id
```

After `not` only `exists` over an already bound variable is allowed. Unbounded denial would silently change meaning when the snapshot grows.

## No custom evaluation

```lawq
# expect LDC-Q2008
from n in nodes select count(n.id) as total
```

The structural layer has a closed function list, printed by the schema command. Aggregates and any other computation belong to the core behind an inference query.