Rule 0 — Every signal is an explicit token
Every piece of semantic content is carried by a discrete, inspectable, displaceable token — never by mode, position-by-convention, or a non-symbolic property of another token. Variables are distinguished from atoms by AST node type, not by identifier case. Negation-as-failure (not) is distinct from predicate complement (!) and must not be used interchangeably. Integer atoms and float atoms are type-distinct; they never silently coerce.
A program's meaning is the least fixed point of its rule applications over its asserted facts. Answers are sets of variable bindings, never ordered. Rule order is semantically irrelevant. On a finite fact base every Core program terminates — this guarantee is load-bearing and must not be traded away outside an opt-in extension.
Composes with