The fold, in the control's slots #
DescriptiveComplexity.Problems.Wide.DrawAcc says what the machine must
carry across the inner loop – one contribution per level plus the last
leaf – and how a round rewrites it. This file puts that in the program's own
slots, which is what the dstSt parameters of
DescriptiveComplexity.Draw.Data.varRule are:
initStisDescriptiveComplexity.Draw.Data.initAcc– every accumulator the polarity's unit, which is what an empty register's fold is (accCVal_bot);postFoldisDescriptiveComplexity.Draw.Data.setLeafatpostLeaf– the matrix's Boolean value at the atoms' verdicts, in the leaf flag;storeCarry bisDescriptiveComplexity.Draw.Data.carryAcc– untouched below the carry, absorbing the chain at it, reset above (accCVal_step);accBitisDescriptiveComplexity.Draw.Data.accVerdict– the chain from level0, which is the whole prefix once the register is exhausted.
Every one of them is a function of the pointer alone, and each comes with
the equation the run needs: what the next pointer's slots read back. The
fold's own correctness is DrawAcc's; nothing here repeats it.
The accumulator vector #
A vector of control slots, read: one bit per index. Past the family
it is False; a fold never looks there.
Instances For
Dependency graph
A vector of control slots, written.
Equations
Instances For
Dependency graph
Dependency graph
A vector reads back, index by index.
Dependency graph
The inner fold's accumulator vector, one bit per level.
Instances For
Dependency graph
The inner fold's accumulator vector, written.
Instances For
Dependency graph
A sub-fold's accumulator vector: the element loops of the atom
subroutines keep theirs in the sac slots, one per level of the defining
sentence's own prefix.
Instances For
Dependency graph
A sub-fold's accumulator vector, written.
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
The inner fold's vector reads back, level by level.
Dependency graph
A sub-fold's vector reads back, level by level.
Dependency graph
The leaf flag #
The leaf flag: the value of the matrix at the valuation the loop has just evaluated – the bit every carry absorbs.
Instances For
Dependency graph
The matrix's Boolean value at the atoms' verdicts: what the machine knows once every atom subroutine has filed its bit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Storing the leaf.
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
The accumulators ride along a write of the leaf flag.
Dependency graph
The three updates #
The folds at the empty valuation: every accumulator the polarity's unit.
Instances For
Dependency graph
The verdict the accumulators spell: the chain from level 0, closed
by the leaf flag – the value of the whole prefix once the register is
exhausted.
Equations
- dt.accVerdict one pol f = DescriptiveComplexity.Draw.chainFrom pol (dt.readAcc one f) (dt.ctlBit one f dt.leafC) dt.ki 0
Instances For
Dependency graph
The folds at an increment's carry block: the levels before the carry keep their bit, the carry level absorbs the chain below it, the levels after it reset.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
What the initialized vector reads: the polarity's unit at every
level, which is DescriptiveComplexity.Draw.accCVal_bot's value.
Dependency graph
What the vector reads after a carry: exactly the shape
DescriptiveComplexity.Draw.accCVal_step asks for.
Dependency graph
The same for a sub-fold #
An element loop of an atom subroutine folds its own prefix – the defining
sentence's – over the sac slots, with its own leaf flag. The three updates
are the same three; only the family and the width change.
The sub-fold's leaf flag: the value of a defining sentence's matrix at the tuple the element loop has just read.
Instances For
Dependency graph
Storing a sub-fold's leaf.
Equations
- dt.setSubLeaf zero one b f = dt.setCtl zero one dt.subLeafC b f
Instances For
Dependency graph
A sub-fold at its first tuple.
Instances For
Dependency graph
What a sub-fold concludes: the chain from level 0, closed by its
leaf flag.
Equations
- dt.sacVerdict one pol f = DescriptiveComplexity.Draw.chainFrom pol (dt.readSac one f) (dt.ctlBit one f dt.subLeafC) dt.eDim 0
Instances For
Dependency graph
A sub-fold at a tuple successor, the carry coordinate given.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
A sub-fold's accumulators ride along a write of its leaf flag.
Dependency graph
The loop's wide tuple rides along a write of a sub-fold's accumulators.
Dependency graph
Dependency graph
A sub-fold's verdict is its fold, by the same chain.
Dependency graph
What the two readings are worth #
The verdict is the fold: if the accumulators hold the contributions
and the leaf flag the matrix at the current valuation, the chain from level
0 is the fold's value there – so the exit checkpoint's guard reads the
sweep's answer off the control.
Dependency graph
The leaf flag's value is the matrix: once every atom subroutine has
filed its verdict, the Boolean function the control computes is the matrix at
the atoms' readings – DescriptiveComplexity.Draw.realize_iff_qfValue_holds's
right-hand side, which is what the machine's leaf must be.