OAI/Combinatorics/LowSpaceSubsetSum/Counting/SamplerAttempts.lean
25 declarations, 0 contain sorry, 0 declared as axioms
Counted bounded rejection and deterministic divisor tests
The accumulator counts precisely the candidates actually read, including rejections. It is carried through tail calls and never revisits a candidate.
- def
OAI.LowSpaceSubsetSum.SamplerAttempts.runAccline 18 - def
OAI.LowSpaceSubsetSum.SamplerAttempts.runline 24 - theorem
OAI.LowSpaceSubsetSum.SamplerAttempts.runAcc_valueline 27 - theorem
OAI.LowSpaceSubsetSum.SamplerAttempts.run_valueline 38 - theorem
OAI.LowSpaceSubsetSum.SamplerAttempts.runAcc_readsline 41 - theorem
OAI.LowSpaceSubsetSum.SamplerAttempts.run_readsline 53 - theorem
OAI.LowSpaceSubsetSum.SamplerAttempts.runAcc_exhaustedline 57 - theorem
OAI.LowSpaceSubsetSum.SamplerAttempts.range_readsline 69 - theorem
OAI.LowSpaceSubsetSum.SamplerAttempts.prime_readsline 72 - def
OAI.LowSpaceSubsetSum.SamplerAttempts.divisorsline 77Source documentation
Search each possible small divisor once, stopping at the first divisor. The numeric square-root bound is a parameter to this counted inner loop.
def divisors (p : ℕ) : Option ℕ × ℕ := …
- def
OAI.LowSpaceSubsetSum.SamplerAttempts.isPrimeline 80 - theorem
OAI.LowSpaceSubsetSum.SamplerAttempts.isPrime_correctline 82 - theorem
OAI.LowSpaceSubsetSum.SamplerAttempts.divisor_tests_leline 101 - theorem
OAI.LowSpaceSubsetSum.SamplerAttempts.divisor_tests_lt_powline 104 - def
OAI.LowSpaceSubsetSum.SamplerAttempts.runCostAccline 114Source documentation
The candidate evaluator returns its Boolean answer and its actual work. Both work counters are accumulator fields, including on exhaustion.
def runCostAcc (test : Ω → Bool × ℕ) : (N : ℕ) → (Fin N → Ω) → ℕ → ℕ → Option Ω × ℕ × ℕ | 0, _, reads, work => (none, reads, work) | N + 1, f, reads, work => let result := test (f 0) … - theorem
OAI.LowSpaceSubsetSum.SamplerAttempts.runCostAcc_valueline 122 - theorem
OAI.LowSpaceSubsetSum.SamplerAttempts.runCostAcc_boundsline 133 - def
OAI.LowSpaceSubsetSum.SamplerAttempts.divisorsBitsline 161Source documentation
A bit-bounded trial-division implementation. The loop bound is a power of two determined by the candidate width, so no square-root oracle is used. Squares beyond the candidate are discarded by an ordinary multiplication and comparison before divisibility is tested.
def divisorsBits (ell : ℕ) (p : Fin (2 ^ ell)) : Option ℕ × ℕ := …
- theorem
OAI.LowSpaceSubsetSum.SamplerAttempts.divisorsBits_noneline 165 - theorem
OAI.LowSpaceSubsetSum.SamplerAttempts.divisorsBits_testsline 187 - def
OAI.LowSpaceSubsetSum.SamplerAttempts.primeTestline 191 - theorem
OAI.LowSpaceSubsetSum.SamplerAttempts.primeTest_correctline 196 - def
OAI.LowSpaceSubsetSum.SamplerAttempts.primeRunline 204 - theorem
OAI.LowSpaceSubsetSum.SamplerAttempts.primeRun_valueline 207 - theorem
OAI.LowSpaceSubsetSum.SamplerAttempts.primeRun_boundsline 214