Generated control families: the runs, iterated #
The run theorems of the layer take their control evolution as abstract
families over the enumeration – fsOf a j, the pointer before the j-th
read of round a – tied together by per-cover equations. An instantiation
has to produce such a family, and its rounds are defined by iteration: the
next round's entry is a function of the previous round's exit. This file
builds the family once, for every instantiation:
DescriptiveComplexity.Draw.iterOrd– a state iterated along a finite linear order, by recursion onDescriptiveComplexity.orank(the bottom is the base, each cover one step);DescriptiveComplexity.Draw.chainSt– the within-round read chain, each read's stored bit chosen classically;DescriptiveComplexity.Draw.elem_run_iter– the element loop's run at the generated family: the caller supplies only the name guards at the generated states, the exhaustion conditions, and the geometry.
Iteration along a finite linear order #
The iterated state at a rank: the base at 0, one step per rank – the
element of that rank supplying the step's index.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.Draw.iterState init step 0 = init
Instances For
Dependency graph
A state iterated along the order: the base at the bottom, one step per cover.
Equations
- DescriptiveComplexity.Draw.iterOrd init step a = DescriptiveComplexity.Draw.iterState init step (DescriptiveComplexity.orank a)
Instances For
Dependency graph
The within-round read chain #
The read chain of one round: the j-th prefix of the reads applied
to the round's entry state, each stored bit the read's.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.Draw.chainSt bit upd base 0 = base
Instances For
Dependency graph
Dependency graph
The element loop's run, at the generated family #
The generated round-entry state: the loop's initEl at the bottom,
each cover the previous round's reads folded and advanced.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The generated within-round family: the read chain of round a
applied to its entry state.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The background is read at the working cell alone. Both generated
families mention rest only as rest v, so a background that moves
elsewhere – at a register cell, say, where the four register slots live –
generates the same control. This is what makes a loop blind to the two
scratch registers of the state it is run at.
Two backgrounds agreeing at the working cell give one within-round family.
Dependency graph
The element loop's run at the generated family, the budget forgotten.
Dependency graph
The tag-branched machinery's run, at the generated families #
The generated witness chain: the i-th prefix of the witness reads
applied to the entry control, each one-hot bit the read's.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The tuple loop's run, at the generated families #
The generated destination track: empty of the loop's bits at the bottom, each cover the round's copy applied.
Equations
- DescriptiveComplexity.Draw.tupleIterD mSrc xS xD mD₀ a = DescriptiveComplexity.Draw.iterOrd mD₀ (fun (a' : ι) (m : I → Prop) (y : I) => y = xD a' ∧ mSrc (xS a') ∨ y ≠ xD a' ∧ m y) a
Instances For
Dependency graph
The generated pre-store control: the loop's initLv at the bottom,
each cover the previous round folded and advanced, the round's symbol read
from the destination-dependent background.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The generated post-store control: the round's bit stored.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The tuple loop's run at the generated families, the budget forgotten.