OAI/Combinatorics/LowSpaceSubsetSum/Storage/PermutationArray.lean
11 declarations, 0 contain sorry, 0 declared as axioms
Materializing the finite permutation sampler's choices
The sampler's recursive finite-range choices are stored as integer digits.
The construction below executes the same decomposeFin permutation using
arrays, so applying the resulting permutation is a bounded array lookup.
- abbrev
OAI.LowSpaceSubsetSum.PermutationArray.Digitsline 14 - def
OAI.LowSpaceSubsetSum.PermutationArray.semanticline 18 - def
OAI.LowSpaceSubsetSum.PermutationArray.growline 22 - def
OAI.LowSpaceSubsetSum.PermutationArray.buildline 26 - theorem
OAI.LowSpaceSubsetSum.PermutationArray.grow_valueline 32 - theorem
OAI.LowSpaceSubsetSum.PermutationArray.build_valueline 41 - theorem
OAI.LowSpaceSubsetSum.PermutationArray.build_workline 49 - def
OAI.LowSpaceSubsetSum.PermutationArray.lookupline 59 - theorem
OAI.LowSpaceSubsetSum.PermutationArray.lookup_valueline 61 - def
OAI.LowSpaceSubsetSum.PermutationArray.peakCellsline 66Source documentation
The old and new arrays may coexist during one extension, together with the recursive digit stack. All are linear in the ambient input length.
def peakCells : ℕ → ℕ | 0 => 3 | k + 1 => max (peakCells k + 2) (3 * (k + 1) + 5)
- theorem
OAI.LowSpaceSubsetSum.PermutationArray.peakCells_boundline 70