The blocks of an address are the valuation the fold runs on #
The join between the two halves of the sweep. DescriptiveComplexity.Problems.Wide.Blocks
reads an address over a block-major universe as a family of blocks and says how
that family changes along one increment; DescriptiveComplexity.Problems.Wide.Fold
says how a quantifier prefix folds along one step of the lexicographic enumeration
of its valuations. They are the same step, and this file says so:
with the block index type taken to be
Fin n– which a reduction may simply choose, one index per variable of its kernel – the family of blocksDescriptiveComplexity.wmBlk sis a valuation, the value order isDescriptiveComplexity.WMSetLe, and every hypothesis the fold's three step rules ask for is read offDescriptiveComplexity.wmIncr_lexRel_iff.
So DescriptiveComplexity.foldFrom_carry_of_wmIncr is the fold rule at the carry
index, stated about an address increment and nothing else – the form a program's
step obligation will be discharged in. The blocks after the carry are full before
the step and empty after it, which is exactly the fold's “maximal” and “minimal”
hypotheses (DescriptiveComplexity.wmSetLe_of_full,
DescriptiveComplexity.wmSetLe_of_empty), and the successor hypothesis is
DescriptiveComplexity.wmSetLt_iff_of_wmIncr read through
DescriptiveComplexity.wmLt_wmSetLe_iff.
On an initial segment of ℕ the order the address layer writes is the
order.
Dependency graph
The address a family of blocks is. A program's configurations sit at
addresses it has to build from the blocks it means them to have, which is the
inverse of DescriptiveComplexity.wmBlk.
Equations
- DescriptiveComplexity.mkAddr p q = p q.1 q.2
Instances For
Dependency graph
Dependency graph
Dependency graph
The same, at the carry index itself: every strictly earlier block agrees.
Dependency graph
The blocks after the carry index are maximal before the step: they are full, and a full block is above every block.
Dependency graph
At the carry index the new block is the successor of the old one, which is the successor hypothesis the fold asks for.
Dependency graph
The fold rule of an address increment #
The fold rule at the carry index of an address increment. The accumulator at the carry index absorbs the subtree the sweep has just finished – every deeper block having been full – and takes in the accumulator one level down, which is the new leaf. This is the step obligation of a one-pass program, with the address layer and the fold joined.