# 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.