An expansion atom's pack #
An expansion atom runs the same machinery a gate does, one exponent along: it
reads the tags of its argument points, branches on the tuple they decode,
and folds the defining sentence of that branch. So every piece it needs is one
already discharged for the gates, at the branch's prefix rather than the
domain's – the naming guards through DescriptiveComplexity.Draw.Data.encCoord,
the leaf from the control, and the three shapes of a fold.
With them, DescriptiveComplexity.Draw.UTagArgsDef of
DescriptiveComplexity.Draw.Data.expArgs is a field-by-field check.
What a branch reads #
A witness read's name is definable: the tag's encoded tuple in the block of the level the position reads.
Dependency graph
A branch's decoding is definable: one-hotness of the witness flags, at every argument position.
Dependency graph
A read leaf's name is definable: the member tuple of the copy's point, its payload the loop element at the levels the leaf's atom reads.
Dependency graph
The value of a branch's matrix from the control is definable, exactly as a domain sentence's is.
Dependency graph
A branch's three folds #
A branch's loop, started.
Dependency graph
A branch's round, folded and advanced.
Dependency graph
A branch's last round: the final leaf filed and the sub-fold's verdict into the atom's slot.
Dependency graph
The pack #
An expansion atom's pack meets its obligation, field by field.
Dependency graph
A comparison's pack #
The equality and order atoms of a matrix compare two points, and the machine does it by walking their two registers in step. What it keeps between rounds is three scratch flags – agreement so far, a difference seen, and its direction – so its folds are nested single-slot writes over the narrow loop element.
A narrow loop-element write over a definable base.
Dependency graph
A comparison's bookkeeping, folded: three scratch flags, each written from a question about the round's two reads.
Dependency graph
A comparison's bookkeeping, started.
Dependency graph
A comparison's verdict, read off the folded flags.
Dependency graph
A comparison's pack meets its obligation.
Dependency graph
A stage atom's pack #
A stage atom's pack meets its obligation: everything it names is static, and the two bits it writes are flags.
Dependency graph
A gate block's pack #
A gate block's pack meets its obligation: the witness reads are named by the tags' encoded tuples, the leaf reads by the members of the gated point, and the three folds are the gate's. The one thing that needs an environment is the default branch of the dispatch, which names a tag.
Dependency graph
An inner gate block's pack, the same with the reads on VAL and the verdict into the level's flag.
Dependency graph
An atom's pack, by kind #
Every atom kind's pack meets its obligation, one constructor at a time.
Dependency graph
The pack of the a-th atom of a variable's matrix.
Dependency graph
The whole pack of a variable #
The semantic pack of one variable's machinery meets its obligation.
This is the last thing the program's rules owe the interpretation: with it,
DescriptiveComplexity.Draw.Data.uRulesDefinable_progAsm applies to the
reduction's own machine.
Dependency graph
The EXPSPACE program's whole rule set is definable. Every rule of the
reduction's own machine – its guard, the pointer it leaves and the tracks it
writes – is written down by one formula for every instance, so the eleven
relations of FirstOrder.Language.wide can be emitted by an interpretation.
The one environment it asks for is what names the dispatch's default tag.