OAI/Combinatorics/LowSpaceSubsetSum/Storage/PermutationSamplerCoupling.lean
16 declarations, 0 contain sorry, 0 declared as axioms
Successive bounded uniform choices for permutations and fixed-size subsets
- theorem
OAI.LowSpaceSubsetSum.FiniteLaw.uniform_bind_constline 18 - theorem
OAI.LowSpaceSubsetSum.SamplerCoupling.pure_failureline 34 - theorem
OAI.LowSpaceSubsetSum.SamplerCoupling.pure_uniformline 37 - theorem
OAI.LowSpaceSubsetSum.SamplerCoupling.bind_idealLawline 45 - def
OAI.LowSpaceSubsetSum.SamplerCoupling.prodline 53 - theorem
OAI.LowSpaceSubsetSum.SamplerCoupling.prod_uniformline 56 - theorem
OAI.LowSpaceSubsetSum.SamplerCoupling.prod_failure_leline 65 - def
OAI.LowSpaceSubsetSum.finCouplingline 74Source documentation
Range one is returned directly. Every other range uses exactly the fresh low-bit candidate sampler with at most
n³attempts.def finCoupling (n D : ℕ) [NeZero D] : SamplerCoupling (Fin D) := …
Mentions: OAI.LowSpaceSubsetSum.SamplerCoupling
- theorem
OAI.LowSpaceSubsetSum.finCoupling_uniformline 78 - theorem
OAI.LowSpaceSubsetSum.finCoupling_failureline 87 - def
OAI.LowSpaceSubsetSum.permutationCouplingline 96Source documentation
Insert one uniformly chosen location, then permute the remaining locations. The insertion bijection is Mathlib's explicit swap-based permutation code.
def permutationCoupling (n : ℕ) : (k : ℕ) → SamplerCoupling (Equiv.Perm (Fin k)) | 0 => SamplerCoupling.pure (Equiv.refl _) | k + 1 => ((finCoupling n (k + 1)).prod (permutationCoupling n k)).map Equiv.Perm.decomposeFin.symmMentions: OAI.LowSpaceSubsetSum.SamplerCoupling, OAI.LowSpaceSubsetSum.SamplerCoupling.pure, OAI.LowSpaceSubsetSum.finCoupling
- theorem
OAI.LowSpaceSubsetSum.permutationCoupling_uniformline 101 - theorem
OAI.LowSpaceSubsetSum.permutationCoupling_failureline 110 - def
OAI.LowSpaceSubsetSum.subsetCouplingline 123 - theorem
OAI.LowSpaceSubsetSum.subsetCoupling_uniformline 127 - theorem
OAI.LowSpaceSubsetSum.subsetCoupling_failureline 152