Repository navigation
refactor(Circuit): generalize FanIn input support bounds to weighted gate costs (#884) - #929
Conversation
|
Review claimed by reviewer-claude-c4b0c164-02 (agent review) at 03f823f. |
|
reviewer-claude-c4b0c164-02 — CHANGES REQUESTED at 03f823f (agent review) The generalization is faithful. Blocking
Nonblocking
|
…gate costs (#884) Generalize Program.card_reachableInputs_le in Complexity.Computability.Circuit.FanIn to arbitrary per-operation weights w satisfying ∀ op, σ.Arity op ≤ 1 + w op, exposing Program.card_reachableInputs_le_cost and Program.card_biUnion_wireSupport_le_cost. Deduce Program.card_biUnion_wireSupport_le_cost_binaryCost in Complexity.Computability.Circuit.Boolean.BinaryCost as a one-line specialization, eliminating 90 lines of duplicate induction and helper theorems. Refs #884 (Item 7, F4)
03f823f to
5008448
Compare
|
Thanks @reviewer-claude-c4b0c164-02 for the precise review and suggestions. Updated in 5008448:
Rebased on latest |
|
reviewer-claude-c4b0c164-02 — APPROVED at 5008448 (agent review, not human approval) Delta review of 5008448. The generalization commit is unchanged by
Hosted |
…cslib-community#886) (cslib-community#942) * feat(FineGrained): the satisfiability coding lemma and PPZ for unique k-SAT (cslib-community#894) (cslib-community#928) * feat(FineGrained): the satisfiability coding lemma and PPZ for unique k-SAT (cslib-community#894) Define the PPZ algorithm (random variable order, unit-clause forcing, random bits otherwise), prove that a run in a fixed order produces the unique solution with probability 2^{-u}, construct critical clauses, show a variable is last among m variables in a 1/m fraction of orders, and conclude by AM-GM that one round succeeds with probability at least 2^{-(1-1/k)n}. AI-assisted: Jetski (worker-jetski-17d3679e). * chore(bib): keep references.bib sorted by key (cslib-community#953) * doc(MCSP,PH,FineGrained): clean up process references and missing docstrings (cslib-community#884) (cslib-community#941) * doc(MCSP,PH,FineGrained): clean up process references and missing docstrings (cslib-community#884) Address finding F16 on issue cslib-community#884: - In Partial.lean and PartialNP.lean: remove temporary development process references ('Decision D5', 'Risk R3', 'Issue cslib-community#798 comment 3'), retaining canonical literature citations to Ilango and Hirahara. - In Kannan.lean: cite Arora-Barak Theorem 6.22 explicitly in the module header and theorem docstring. - In FineGrained/PermutationIndependentSet.lean: add docstring to BipartitePermutationIndependentSet.mem_iff_exists_satisfiesUndirected. - In Promise/Reduction.lean: add docstrings to ofSet_mem_PromiseBPP, ofSet_mem_PromiseRP, and ofSet_mem_PromiseCoRP. AI-assisted: Jetski (worker-jetski-b5844be2). * doc(MCSP,PH,FineGrained): address reviewer feedback on citations and process references * refactor(Circuit): generalize FanIn input support bounds to weighted gate costs (cslib-community#884) (cslib-community#929) * refactor(Circuit): generalize FanIn input support bounds to weighted gate costs (cslib-community#884) Generalize Program.card_reachableInputs_le in Complexity.Computability.Circuit.FanIn to arbitrary per-operation weights w satisfying ∀ op, σ.Arity op ≤ 1 + w op, exposing Program.card_reachableInputs_le_cost and Program.card_biUnion_wireSupport_le_cost. Deduce Program.card_biUnion_wireSupport_le_cost_binaryCost in Complexity.Computability.Circuit.Boolean.BinaryCost as a one-line specialization, eliminating 90 lines of duplicate induction and helper theorems. Refs cslib-community#884 (Item 7, F4) * refactor(Circuit): privatize reachableInputs helpers, dedup wire_castSucc_injective'' * refactor(Communication): privatize module-local proof helpers in Disjointness and Functions (cslib-community#899) (cslib-community#922) Privatize 8 module-local proof helpers in Communication per the cslib-community#926 privatize-by-intent rule: - Disjointness.lean: 7 proof-construction helpers for parts and hardDist (mem_parts, compl_insert_eq_of_mem_parts, sum_parts, sum_parts_swap, card_parts_pos, hardWeight_nonneg, hardDist_apply_toReal). - Functions.lean: card_lt_two_pow_of_run_eq_greaterThan. Keeping public, per cslib-community#922 coordinator review, characterization, bound, monotonicity and closure theorems across Discrepancy, Distributional, Protocol, Randomized, Rank, and RoundProtocol. Refs cslib-community#899 (Item 9) * refactor(Foundations,Circuit,MCSP): consolidate pow_self_le_three_pow_mul_factorial (cslib-community#939) (cslib-community#945) Move the elementary factorial-power comparison bound `Nat.pow_self_le_three_pow_mul_factorial` (n ^ n ≤ 3 ^ n * n!) to `Complexity.Foundations.Data.Nat.Factorial`. Eliminate the duplicate private copies in: - `Complexity/Computability/Circuit/Boolean/ShallowSymmetric/Covering.lean` - `Complexity/Computability/MCSP/Shannon.lean` and drop their now-unused ExponentialBounds imports. Refs cslib-community#939 (Item A.1) AI-assisted: Jetski (worker-jetski-b5844be2). * refactor(Foundations,Circuit,AffineDisperser): consolidate sum_map_range (cslib-community#939) (cslib-community#947) Move `List.sum_map_range` (`((List.range n).map f).sum = ∑ i : Fin n, f i`) to `Complexity.Foundations.Data.List.OfFn`. Eliminate the duplicate private copies: - `sum_range_eq_sum_fin` in `Complexity/Computability/Circuit/Rational/Runtime/Lift/Defs.lean` - `sum_map_range` in `Complexity/Computability/Complexity/AffineDisperser/Coordinates.lean` Refs cslib-community#939 (Item A.2) AI-assisted: Jetski (worker-jetski-b5844be2). * feat(Probability): Holenstein's correlated sampling and local embedding lemma (cslib-community#886) (cslib-community#940) * feat(Probability): Holenstein's correlated sampling (cslib-community#886) Shared randomness is a weighted order of finitely many cells under the graphs of a finite family of distributions. Each party outputs the first cell under its own graph: its marginal is exact (map_sample) and two parties agree with probability at least (1 - δ)/(1 + δ) (agree_ge), disagreeing with probability at most 2δ (disagree_le). Co-authored-by: Jetski (worker-jetski-17d3679e) <noreply@google.com> * feat(Probability): Holenstein's local embedding lemma and the coupling inequality (cslib-community#886) Alice and Bob sample from their own kernels with correlated sampling; the result is within 2ε₁ + 2ε₂ of a common sample from the target kernel (dist_embed_le, Holenstein's Lemma 8). Add the coupling inequality dist (p.map f) (p.map g) ≤ Pr[f ≠ g] (dist_map_map_le). Co-authored-by: Jetski (worker-jetski-17d3679e) <noreply@google.com> * fix(Probability): use simp only for non-terminal simp calls (cslib-community#886) * style(Probability): wrap a long line (cslib-community#886) * chore(bib): keep references.bib sorted by key (cslib-community#953) * fix(bib): remove entries duplicated by a faulty restack; keep only this PR's additions, sorted Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Dvi6MU29zU9t8zYfeU51sB --------- Co-authored-by: Jetski (worker-jetski-17d3679e) <noreply@google.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * feat(FineGrained): PPZ for satisfiable k-SAT via the isolation inequality (cslib-community#894) (cslib-community#930) Generalize the PPZ analysis from uniquely satisfiable to arbitrary satisfiable k-CNF formulas. Add Cslib.BitString.isolation with the isolation inequality 2^n ≤ ∑_{σ∈S} 2^{isolation S σ}, a critical clause for every variable whose flip falsifies the formula, the per-assignment bound round_apply_ge, and round_success_of_satisfiable. Co-authored-by: Jetski (worker-jetski-17d3679e) <noreply@google.com> * feat(Interactive): layered arithmetic circuits and the GKR identity (cslib-community#892) (cslib-community#944) * feat(Interactive): layered arithmetic circuits and the GKR identity (cslib-community#892) Add Cslib.Interactive.GKR.LayeredCircuit with layer-by-layer evaluation, the wiring predicates add_i and mult_i, closed forms of their multilinear extensions, and the GKR identity (Thaler, Lemma 4.7) expressing the multilinear extension of a layer through the layer below. Co-authored-by: Jetski (worker-jetski-17d3679e) <noreply@google.com> * refactor(Interactive): reuse indicatorPoly; move bitPoint and eval_multilinearExtension_eq_sum to MultilinearExtension (cslib-community#892) * chore(bib): keep references.bib sorted by key (cslib-community#953) * fix(bib): remove entries duplicated by a faulty restack; keep only this PR's additions, sorted Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Dvi6MU29zU9t8zYfeU51sB * docs(GKR): name the existing wiring-predicate lemma in the module doc The Main results list named eval_multilinearExtension_addPred and eval_multilinearExtension_multPred, which do not exist; the closed form is eval_multilinearExtension_wiringPred, of which addPred and multPred are instances. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Dvi6MU29zU9t8zYfeU51sB --------- Co-authored-by: Jetski (worker-jetski-17d3679e) <noreply@google.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): Raz's conditioning lemma for product distributions (cslib-community#886) Conditioning independent coordinates on an event W moves their marginals by ∑ⱼ ‖P_{Uⱼ|W} − P_{Uⱼ}‖² ≤ ln(1/Pr[W])/2, with Holenstein's forms Pr[W] ≤ 2^(−∑ⱼ‖·‖²) and ∑ⱼ‖·‖ ≤ √(k ln(1/Pr[W])). The proof uses the divergence of conditioning, superadditivity of divergence from a product, and Pinsker. Co-authored-by: Jetski (worker-jetski-17d3679e) <noreply@google.com> * chore(bib): keep references.bib sorted by key (cslib-community#953) --------- Co-authored-by: Jetski (worker-jetski-17d3679e) <noreply@google.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Generalizes the circuit fan-in input support bound in$w$ satisfying $\forall op, \sigma.\text{Arity } op \le 1 + w(op)$ , eliminating 90 lines of duplicate induction and helper theorems in
Complexity/Computability/Circuit/FanIn.leanto arbitrary per-operation weightsComplexity/Computability/Circuit/Boolean/BinaryCost.lean.Covers Item 7 (F4) of #884.
Summary of changes
Complexity/Computability/Circuit/FanIn.lean:Wire.castSucc_injective,Program.reachableInputs, andProgram.support_subset_reachableInputspublic with docstrings.Program.card_reachableInputs_letoProgram.card_reachableInputs_le_costfor any weight functionProgram.card_biUnion_wireSupport_le_costbounding wire support by frontier size plus program cost underProgram.card_reachableInputs_lein 5 lines via the cost bound forFanInAtMost r.Cslib.Computability.Circuit.Simulation.Complexity/Computability/Circuit/Boolean/BinaryCost.lean:Complexity.Computability.Circuit.FanIn.private theorem wire_castSucc_injective'.Program.card_biUnion_wireSupport_le_cost_binaryCostto a single line invokingProgram.card_biUnion_wireSupport_le_costwithBoolean.binaryCostandBoolean.arity_le_one_add_binaryCost.Program.card_biUnion_wireSupport_le_cost_binaryCostunchanged for downstream consumers (e.g. feat(Circuit,MCSP): prove Ilango FOCS 2020 Theorem 3 ETH lower bound for PartialMCSP (#798) #875).Verification
All checks passed on commit
03f823f9(rebased onorigin/mainat36f94d8d):scripts/check.sh(all 6 gates: build, mk_all, test, lint, lint-style, checkInitImports)python3 scripts/check_hygiene.pypython3 scripts/check_tidy_surface.py(1301 statements in 225 modules, matching baseline)python3 scripts/check_docs.py --config-onlyAI disclosure
Assisted by Jetski (Google internal pair programming agent). All changes verified with Lean compiler, test suite, and repo linters.
Refs #884 (Item 7, F4)