OAI/Combinatorics/LowSpaceSubsetSum/Counting/BoundedSampling.lean
33 declarations, 0 contain sorry, 0 declared as axioms
Bounded rejection sampling
The executable sampler reads at most the supplied number of candidates. All probability statements use the uniform law on the finite candidate tuples, which is exactly independent sampling with replacement.
- theorem
OAI.LowSpaceSubsetSum.finiteUniformProbability_eq_cardRatioline 21 - def
OAI.LowSpaceSubsetSum.firstAcceptline 27Source documentation
Read candidates in their given order and return the first eligible value.
def firstAccept (A : Ω → Prop) [DecidablePred A] : (N : ℕ) → (Fin N → Ω) → Option Ω | 0, _ => none | N + 1, f => if A (f 0) then some (f 0) else firstAccept A N (fun i => f i.succ) - theorem
OAI.LowSpaceSubsetSum.firstAccept_eq_none_iffline 33 - theorem
OAI.LowSpaceSubsetSum.firstAccept_some_eligibleline 43 - theorem
OAI.LowSpaceSubsetSum.firstAccept_failureline 53 - def
OAI.LowSpaceSubsetSum.firstAcceptCountline 63 - def
OAI.LowSpaceSubsetSum.firstAcceptFiberSuccEquivline 68 - theorem
OAI.LowSpaceSubsetSum.firstAcceptCount_succline 104 - theorem
OAI.LowSpaceSubsetSum.firstAcceptCount_conservationline 113 - theorem
OAI.LowSpaceSubsetSum.firstAccept_value_probabilityline 134Source documentation
The exact subprobability of every eligible return value.
theorem firstAccept_value_probability [Fintype Ω] [Nonempty Ω] (A : Ω → Prop) [DecidablePred A] (N : ℕ) (a : Ω) (ha : A a) : finiteUniformProbability (fun f : Fin N → Ω => firstAccept A N f = some a) = (1 - (1 - finiteUniformProbability A) ^ N) / Fintype.card {b : Ω // A b} := by …Mentions: OAI.LowSpaceSubsetSum.finiteUniformProbability, OAI.LowSpaceSubsetSum.firstAccept
- theorem
OAI.LowSpaceSubsetSum.firstAccept_acceptanceline 156 - theorem
OAI.LowSpaceSubsetSum.firstAccept_conditional_uniformline 163Source documentation
Conditioning only this call on acceptance gives the uniform eligible law.
theorem firstAccept_conditional_uniform [Fintype Ω] [Nonempty Ω] (A : Ω → Prop) [DecidablePred A] (N : ℕ) (hN : 0 < N) (a : Ω) (ha : A a) : finiteUniformProbability (fun f : Fin N → Ω => firstAccept A N f = some a) / finiteUniformProbability (fun f : Fin N → Ω => firstAccept A N f ≠ none) = 1 / Fintype.card {b : Ω // A b} := by …Mentions: OAI.LowSpaceSubsetSum.finiteUniformProbability, OAI.LowSpaceSubsetSum.firstAccept
- theorem
OAI.LowSpaceSubsetSum.firstAccept_failure_le_expline 180 - theorem
OAI.LowSpaceSubsetSum.card_fin_ltline 195 - def
OAI.LowSpaceSubsetSum.rangeEligibleline 205Source documentation
Rejection predicate for the
clog₂ Dfresh low bits.def rangeEligible (D : ℕ) (x : Fin (2 ^ Nat.clog 2 D)) : Prop := x.val < D
- instance
OAI.LowSpaceSubsetSum.(instance at line 207)line 207 - theorem
OAI.LowSpaceSubsetSum.rangeEligible_probabilityline 209 - theorem
OAI.LowSpaceSubsetSum.rangeEligible_probability_lowerline 223 - theorem
OAI.LowSpaceSubsetSum.rangeSampler_failureline 236 - def
OAI.LowSpaceSubsetSum.primeEligibleline 247Source documentation
Exactly the prime test performed on an
ell-bit candidate.def primeEligible (ell : ℕ) (x : Fin (2 ^ ell)) : Prop := x.val ∈ primeRange ell
Mentions: OAI.LowSpaceSubsetSum.primeRange
- instance
OAI.LowSpaceSubsetSum.(instance at line 249)line 249 - theorem
OAI.LowSpaceSubsetSum.primeEligible_probabilityline 251 - theorem
OAI.LowSpaceSubsetSum.primeEligible_probability_lowerline 263 - theorem
OAI.LowSpaceSubsetSum.primeSampler_failureline 272 - def
OAI.LowSpaceSubsetSum.completedFirstAcceptline 288Source documentation
Complete an exhausted bounded call with an independent eligible backup. This is the ideal marginal in the explicit one-call coupling.
def completedFirstAccept (A : Ω → Prop) [DecidablePred A] (N : ℕ) (f : Fin N → Ω) (backup : {a : Ω // A a}) : Ω := … - theorem
OAI.LowSpaceSubsetSum.completedFirstAccept_eligibleline 292 - theorem
OAI.LowSpaceSubsetSum.completedFirstAccept_mismatch_iffline 298 - def
OAI.LowSpaceSubsetSum.firstAcceptNoneEquivline 304 - theorem
OAI.LowSpaceSubsetSum.firstAccept_none_cardline 312 - def
OAI.LowSpaceSubsetSum.completedFirstAcceptFiberEquivline 319 - theorem
OAI.LowSpaceSubsetSum.completedFirstAccept_uniformline 360Source documentation
The ideal marginal is exactly uniform; the backup introduces no bias.
theorem completedFirstAccept_uniform [Fintype Ω] [Nonempty Ω] (A : Ω → Prop) [DecidablePred A] (N : ℕ) (a : Ω) (ha : A a) : finiteUniformProbability (fun z : (Fin N → Ω) × {b : Ω // A b} => completedFirstAccept A N z.1 z.2 = a) = 1 / Fintype.card {b : Ω // A b} := by …Mentions: OAI.LowSpaceSubsetSum.finiteUniformProbability, OAI.LowSpaceSubsetSum.completedFirstAccept
- theorem
OAI.LowSpaceSubsetSum.finiteUniformProbability_fstline 386 - theorem
OAI.LowSpaceSubsetSum.firstAccept_coupling_mismatchline 407Source documentation
In the explicit finite coupling, disagreement is exactly exhaustion of the bounded call. The first marginal is the original independent candidate tuple.
theorem firstAccept_coupling_mismatch [Fintype Ω] [Nonempty Ω] (A : Ω → Prop) [DecidablePred A] [Nonempty {a : Ω // A a}] (N : ℕ) : finiteUniformProbability (fun z : (Fin N → Ω) × {a : Ω // A a} => some (completedFirstAccept A N z.1 z.2) ≠ firstAccept A N z.1) = (1 - finiteUniformProbability A) ^ N := by …Mentions: OAI.LowSpaceSubsetSum.finiteUniformProbability, OAI.LowSpaceSubsetSum.completedFirstAccept, OAI.LowSpaceSubsetSum.firstAccept