Finite recursive block condensation and splitting #
The initial map may already depend on an earlier seed. Each further level adds one fresh seed, uses it on every current block, and splits the resulting pairs in order. The seed type retains the earlier seed and every fresh seed exactly once. Alphabets and fresh-seed types may vary between levels.
These are deterministic finite maps and an explicit error sum. They model the recursion in Chattopadhyay--Goodman--Liao, Theorem 5.6 of Affine Extractors for Almost Logarithmic Entropy, https://eccc.weizmann.ac.il/report/2021/075/. An encoded uniform evaluator and a concrete parameter schedule are separate.
Retain the initial seed and one fresh seed for every completed level.
Equations
- Algebraic.Cutwidth.Extractor.RecursiveSeeds Earlier Fresh 0 = Earlier
- Algebraic.Cutwidth.Extractor.RecursiveSeeds Earlier Fresh n.succ = (Algebraic.Cutwidth.Extractor.RecursiveSeeds Earlier Fresh n × Fresh n)
Instances For
Every level splits each current block into two successive blocks.
Equations
Instances For
Run the initial map, then one shared-seed condenser and split per level.
Equations
- One or more equations did not get rendered due to their size.
- Algebraic.Cutwidth.Extractor.recursiveBlockMap initial C 0 x✝ y = initial x✝ y
Instances For
Sum the condenser and splitting errors over all blocks entering each level.
Equations
- Algebraic.Cutwidth.Extractor.recursiveBlockError t ε e n = ∑ i ∈ Finset.range n, ↑(Algebraic.Cutwidth.Extractor.recursiveBlockCount t i) * (ε i + (2 ^ e i)⁻¹)