feat(Stir): prove out_of_dom_smpl_1 (STIR Lemma 4.5.1, out-of-domain sampling)#637
Open
aryaethn wants to merge 2 commits into
Open
feat(Stir): prove out_of_dom_smpl_1 (STIR Lemma 4.5.1, out-of-domain sampling)#637aryaethn wants to merge 2 commits into
aryaethn wants to merge 2 commits into
Conversation
….d. power lemmas Three general-purpose probability lemmas over PMF sampling, proved from the existing `prob_tsum_form_*` / `prob_split_last_uniform_sampling_of_finFun` infrastructure in this file: - `Pr_exists_le_sum`: finite union bound, Pr[∃ b, P b] ≤ ∑ b, Pr[P b]. - `Pr_and_indep`: independence factorization, Pr[A x ∧ B y] = Pr[A x]·Pr[B y] for two independent samplings. - `Pr_forall_eq_pow`: Pr over s i.i.d. uniform samples that all satisfy Q equals (single-sample Pr)^s. All three are reusable across the proximity-gap / STIR soundness proofs, which repeatedly need union bounds and i.i.d. product bounds over uniform sampling.
Replaces the sorry in `out_of_dom_smpl_1` (out-of-domain sampling collision bound) with a full proof, making OutOfDomSmpl.lean sorry-free. Proof outline (union bound over 2-element subsets of the list × i.i.d. product × univariate root count): - `single_coord_bound`: for distinct codewords, one random out-of-domain point makes their decoded polynomials agree with probability ≤ (degree-1)/(|F|-|ι|), since the difference polynomial is nonzero of degree < degree. - `pair_agree_bound`: extend over s independent points via Pr_forall_eq_pow. - `out_of_dom_smpl_1`: union-bound (Pr_exists_le_sum) over the binom(k,2) two-element subsets of the delta-close list (k ≤ l by list-decodability), giving the l(l-1)/2 factor. Depends on the general probability lemmas Pr_exists_le_sum / Pr_and_indep / Pr_forall_eq_pow (added to Data/Probability/Instances.lean).
Contributor
🤖 PR Summary
Mathematical Formalization
Proof Completion (sorries removed)
Probability Library Extensions
Infrastructure / CI
Statistics
Lean Declarations ✏️ Added: 6 declaration(s)
✅ Removed: 1 `sorry`(s)
📋 **Additional Analysis**Style violations found (format/convention). One code correctness concern flagged (potential negative subtraction with 📄 **Per-File Summaries**
Last updated: 2026-07-11 04:41 UTC. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #634 — this PR builds on the general probability lemmas added there. Until #634 merges, this PR's diff shows two commits (the shared
Data/Probability/Instances.leanadditions from #634, plus the STIR proof here); once #634 lands, GitHub drops the shared commit and the diff collapses to justProofSystem/Stir/OutOfDomSmpl.lean. Please review/merge #634 first.What this does
Replaces the
sorryinout_of_dom_smpl_1(STIR [ACFY24stir] Lemma 4.5.1, the out-of-domain sampling collision bound) with a full proof, makingOutOfDomSmpl.leansorry-free (out_of_dom_smpl_2already consumed it as a black box).Proof structure
Standard union-bound × i.i.d.-product × root-count argument:
single_coord_bound— for two distinct codewordsu ≠ u', a single uniform out-of-domain pointx ∈ 𝔽 \ φ(ι)makes their decoded polynomials agree with probability≤ (degree-1)/(|𝔽|-|ι|): the differencetoPolynomial u - toPolynomial u'is nonzero (distinct codewords ⟹ distinct interpolants, viatoPolynomial_eval_at_domain) of degree< degree, so it has at mostdegree-1roots among the|𝔽|-|ι|out-of-domain points.pair_agree_bound— extends over thesindependent points viaPr_forall_eq_pow, giving((degree-1)/(|𝔽|-|ι|))^s.out_of_dom_smpl_1— union bound (Pr_exists_le_sum) over thebinom(k,2)two-element subsets of the δ-close list, wherek ≤ lby list-decodability. Indexing the union by unordered pairs (Finset.powersetCard 2) is what yields thel(l-1)/2factor (rather thanl(l-1)).Notes
agree_symm,single_coord_bound,pair_agree_boundlive alongside the theorem inOutOfDomSmpl.lean; the reusable probability building blocks are in feat(Data/Probability): finite union bound, independence, and i.i.d. power lemmas #634.lake buildgreen, no new lint warnings on the changed files.Data/Probability/Instances.lean.