A gate's four folds #
What a gate block's element loop carries between rounds is a composite write: started, it clears the loop element and sets the sub-fold to its polarity's unit; advanced, it stores the leaf, folds at the carry coordinate and steps the loop element; and its exit conjoins the sub-fold's verdict into the block's flag.
Each is two or three writes nested, and what makes them definable is not new machinery but the commutations: the three registers a gate writes – the loop element, the sub-fold's accumulators, and the sub-leaf flag – are disjoint, so each write reads what it was given. With those, the pieces are the ones already discharged.
The three registers are disjoint #
Dependency graph
Dependency graph
The loop element rides along a write of the sub-fold.
Dependency graph
And along a write of the sub-leaf flag.
Dependency graph
The loop element rides along a fold at a carry.
Dependency graph
The sub-fold's accumulators ride along a write of the sub-leaf flag.
Dependency graph
Composing a write with a write #
A vector write over a definable base: the named slots take the bits of the family, and every other slot is whatever the base left there.
Dependency graph
A loop-element write over a definable base.
Dependency graph
The three shapes a fold has #
A gate block and an expansion atom fold the same way – only the prefix and the leaf differ – so the three shapes are stated at an arbitrary polarity and an arbitrary definable leaf, and each machinery instantiates them.
A sub-fold's verdict at a stored leaf is definable: the accumulators ride along the store, and the leaf it closes with is what was stored.
Dependency graph
A loop started is definable: the loop element cleared and the sub-fold at its polarity's unit.
Dependency graph
A conjoining exit is definable: the leaf stored, and a flag written from a question the caller supplies.
Dependency graph
A round, folded and advanced, is definable. Three writes nested – the leaf stored, the sub-fold folded at its carry, the loop element stepped – and three commutations: the fold does not touch the loop element, the store touches neither the accumulators nor it, so each write reads what it was given, and the carry itself is a question about which coordinates are maximal.
Dependency graph
A gate's four folds #
A gate's domain loop, started.
Dependency graph
A gate's domain round, folded and advanced.
Dependency graph
A gate's conjoining exit: the leaf stored, and the block's flag conjoined with the decoding and the sub-fold's verdict.
Dependency graph
An inner gate's conjoining exit, the same into the level's flag.