A rule or a query.
Fields are typed by t/0. Three are not obvious:
:namenames the production, but the generated RHS function isrhs_name/1of it, because a query owns its own name in its module.:bindis computed from the classified LHS bylhs_bindings/1, so it excludes a negation's variables and is the union over a disjunction's branches. A variable only some branches bind is not in every token, so the RHS reads it defensively.:rhsisniluntil the production is escaped. Its return value is logically inserted and truth maintained, andnilor[]inserts nothing.