Repository navigation
feat(PolyTime/BooleanAnalysis): add heavy-branched sparse F2 polynomial-system zero counter - #1324
Conversation
…al-system zero counter (#1226)
|
Coordinator |
There was a problem hiding this comment.
coordinator-codex-01a16ab8 — FINAL APPROVED at 1e1fc67e900d400eda81e23495b9ce921df35def. Separate nonauthor mathematics review plus coordinator resource review found no blocker: canonical restriction/cancellation, neutral incidence b₀ + 1, declared-variable counts, uniform certificates, independent workspace, and bounded-size fallback absorption are sound under the displayed callback premises. The pinned §5.5 mapping was checked. No duplicate Lean build.
This is a conditional supplier: feasible-branch evaluator correctness/time and the family’s fast-regime bound still need the concrete Proposition 5.3 assembly. Small concrete tests exercise exhaustive fallback and meaningful heavy-branch outcomes; they do not demonstrate a correct fast evaluator. Independent truth-table checks reproduced their counts.
Exact hosted CI passes all six gates, ratchet and changed-file checks; title passes. Fresh head matches, main target, non-draft and MERGEABLE/CLEAN. Shared handoff already carries readiness; no duplicate queue request.
Nonblocking wording follow-ups remain: qualify “unconditional exactness” by the supplied evaluator assumption, and call the generic E ≥ 0 absorption theorem “real-exponent” rather than “subexponential.”
| change T_ok + (T_to + (T_st + (2 ^ S_len + 1) * (T_st + _))) ≤ (2 ^ S_len + 1) * (P + R_branch) | ||
| nlinarith | ||
|
|
||
| /-- **Subexponential real-exponent constant absorption across families (§5.5, p. 39)**: absorbs |
There was a problem hiding this comment.
Nonblocking wording: this is real-exponent constant absorption; E is only nonnegative, with no sublinear-growth premise. The eventual client can specialize it to the subexponential exponent. Dropping “Subexponential” here would match the theorem’s general scope.
|
coordinator-reviewer-codex-20261023 (not Samuel): exact-head validation is complete at |
Change
Part of #1226 (building on #1305, #1306, and #1311). Formalizes the uniform native heavy-branched sparse$\mathbb{F}_2$ polynomial-system common-zero counter of §5.5 (Proof of Theorem 2.2, printed pp. 38–39) and its context-carrying §6.3 parity-system wrapper (printed p. 43) from [OpenAI, The Exponential Time Hypothesis is False][OpenAI2026ETH] (pinned revision $2^n$ exhaustive fallbacks (
7ef5c0cc) inComplexity/Computability/PolyTime/BooleanAnalysis/SparsePolyCounter.lean, parameterized cleanly over a supplied Proposition 5.3 bounded-incidence branch evaluator (BranchEvalInput → ℕwith itsCslib.GenericRAM.NativeCertificatetime and polynomial-space contract) and guarded by exact integer parameter checks (Cslib.Complexity.SubexponentialSAT.ParameterCheck) and streamingCslib.GenericRAM.ExhaustiveCountFallback) so that the combined counter is unconditionally exact on all inputs while preserving independent polynomial working space.Source statements ([OpenAI, The Exponential Time Hypothesis is False][OpenAI2026ETH], printed pp. 20–21, 38–39)
(Mathematical-transcription note: Plain-text extraction from the source PDF flattens rendered blackboard/bold field symbols, superscripts, subscripts, primes, ceiling and floor brackets, square roots, and summation signs—including $\mathbb{F}2$, $m{\mathrm{test}}$, $2^{O_{k,c}(n(\log \log n)^2 / \sqrt{\log n})}$, $M = \sum_{f \in F} |I_f|$, $b_0 = \lceil M / n \rceil \lceil \sqrt{\lambda} \rceil$, $2^{n / \sqrt{\lambda}}$, $I'_f$, $M' = \sum_f |I'_f|$, $r = \lfloor \sqrt{\lambda'} / (\nu')^2 \rfloor$, $Q = \lfloor \lambda' / (128 \nu') \rfloor$, and $R = (\beta + 3)\lceil \sqrt{\lambda'} \rceil$; in the separate contiguous source passages below, all mathematical symbols, brackets, superscripts, subscripts, and displayed equations are restored to match rendered printed pages 20–21 and 38–39.)
§2.9, Theorem 2.2, printed pp. 20–21:
§5.5, Constructing the forms and completing the proof (Proof of Theorem 2.2, heavy-variable branching and restricted scopes), printed p. 38:
§5.5, Proof of Theorem 2.2 (per-branch schedule parameters, integer feasibility checks, exhaustive fallback, and streaming space), printed pp. 38–39:
Source-to-Lean mapping (
Complexity/Computability/PolyTime/BooleanAnalysis/SparsePolyCounter.lean)ReplacementDesignbridge:checkVarsLt,checkCanonicalMonomial,checkCanonicalEquation,checkCanonicalSystem,scopeWidthOn,sysMaxDegree,branchMaxFactorIncidence,branchMaxFactorWidth,branchAugmentedIncidence), all certified under plainTuring.MultiTapeTM.ComputableInPolyTime(@[fun_prop]).branchNeutralScopeviasum_card_branchNeutralScope,varIncidence_branchNeutralScope_le,card_branchNeutralScope_le, andbranchAugmentedIncidence_le_mul.BranchEvalInput,encBranchEvalInput,prepareBranchEvalInput,checkBranchFeasible, andguardedBranchSolver, proving schedule soundness (feasible_of_checkBranchFeasible), concrete Section 4Cslib.LinearAlgebra.ReplacementDesignexistence (exists_replacementDesign_of_checkBranchFeasible), the cleared parity-polynomial specialization bridge (emod_ediv_design_eq_rootCount_of_checkBranchFeasible), and uniform eventual passage acrossexists_threshold_checkBranchFeasible_eq_true).SparseSystemInput,encSparseSystemInput,mkPaperSparseInput(instantiatingParameterCheck.heavyIncidenceCutoff),checkTopFeasible,toBranchInput, andcountSparsePolySystem(dispatchingHeavyBranchFold.countByBranchingoverguardedBranchSolverwhencheckTopFeasibleholds andExhaustiveCountFallback.countSystemExhaustiveotherwise).ExhaustiveCountFallback.countSystemExhaustiveandHeavyBranchFold.rootCount(countSystemExhaustive_eq_rootCount), unconditional pointwise exactness (guardedBranchSolver_eq_rootCount,countSparsePolySystem_eq_rootCount,countSparsePolySystem_le_two_pow), and the canonical bridge toCslib.BitString.commonZeroCountonFin n(countSparsePolySystem_eq_commonZeroCount), alongside Markov heavy-variable bound discharge (length_heavyVarList_le_div_of_incidence), automatic feasibility ofmkPaperSparseInputforcheckTopFeasible_mkPaperSparseInput_of_le), reduced-branch invariants (reduced_branch_invariants), and polylogarithmic degree transfer (clog_pow_le_clog_pow_two_mul).guardedBranchCertificate,maxReducedCost,guardedBranchingCertificate, andsparsePolyCounterCertificate, proving independent polynomial workspace preservation (polyBounded_guardedBranchCertificate_space,polyBounded_sparsePolyCounterCertificate_space), per-branch finite-threshold fallback absorption (exists_guardedBranchCertificate_time_le), the feasible-regimesparsePolyCounterCertificate_time_le_of_feasible), and real-exponentexists_real_exp_bound_countSparsePolySystem).compileContextParityInput,countContextParity, andcontextParityCertificateoverencPair encC (encList encBits)viaCslib.Complexity.compileParitySystemBounded, proving polynomial workspace preservation (polyBounded_contextParityCertificate_space), compositional compatibility withCslib.Logic.PL.CNF.GreedyContext.greedyCertificate, and unconditional agreement withCslib.BitString.numPassing(countContextParity_eq_numPassing).Deviations / Non-claims
Scope covers the §5.5 heavy-branched sparse$\mathbb{F}_2$ polynomial-system zero counter and its §6.3 context-carrying parity-system wrapper, parameterized over a supplied Proposition 5.3 bounded-incidence branch evaluator (
branchEval : BranchEvalInput → ℕ); the internal Proposition 5.3 / §5.4 truncated-parity Taylor-interpolation branch evaluator itself and the final §6.3–6.4#k-SATassembly belong to sibling and downstream slices of Port OpenAI's ETH refutation (subexponential #k-SAT) natively into complexitylib #1226.In §5.5 (p. 38), neutral singleton factors${v}$ increase each free variable's restricted factor incidence by $1$ , so $b = \max_{v < n'} \operatorname{varDegree}(v, \mathrm{eqs}') + 1 \le b_0 + 1$ (matching $n'$ -variable reduced system (absorbed identically into polynomial overhead once $n' < N_1$ , while top-level guard failures fall back directly to $2^n$ exhaustive search on the original $n$ -variable system).
branchMaxFactorIncidencecomputesReplacementParams.varIncidence_branchAugmentedScope_le). On reduced branches wherecheckBranchFeasiblefails,guardedBranchSolverfalls back per branch toExhaustiveCountFallback.countSystemExhaustiveon theemod_ediv_design_eq_rootCount_of_checkBranchFeasibleparameterizes the modular precision by an arbitraryExisting notions considered:
Cslib.BitString.commonZeroCount,Cslib.BitString.withNeutralFactors,Cslib.BitString.withNeutralScope,Cslib.BitString.withNeutralFactors_univ,Cslib.BitString.card_withNeutralScope_le,Cslib.BitString.totalIncidence_withNeutralFactors_le,Cslib.BitString.emod_ediv_eval_zero_clearedParityTruncatedSum_design_eq_commonZeroCount(Complexity/Foundations/BooleanAnalysis/SparseReplacementDesign.lean), andCslib.Complexity.SubexponentialSAT.ReplacementParams.branchAugmentedScope(Complexity/Computability/Complexity/FineGrained/SparseBranchSchedule.lean): provide the noncomputableFinset-based neutral scope augmentation, neutral incidence bounds, and cleared parity-polynomial zero-counting theorems;branchNeutralScopespecializeswithNeutralScopedirectly toFin eqs'.length ⊕ Fin n'overHeavyBranchFold.toFinsetEquation, while the executable list metrics (scopeWidthOn,sysMaxDegree,branchMaxFactorIncidence,branchMaxFactorWidth,branchAugmentedIncidence) and checkers (checkVarsLt,checkCanonicalMonomial,checkCanonicalEquation,checkCanonicalSystem) compute the corresponding quantities and well-formedness guards on encodedList (List (List ℕ))inputs inComputableInPolyTime.Cslib.Complexity.SubexponentialSAT.ParameterCheck.heavyIncidenceCutoff,Cslib.Complexity.SubexponentialSAT.ParameterCheck.chooseBeta,Cslib.Complexity.SubexponentialSAT.ParameterCheck.computeScheduleParams, andCslib.Complexity.SubexponentialSAT.ParameterCheck.checkScheduleFeasible(Complexity/Computability/PolyTime/FineGrained/ParameterCheck.lean, feat(PolyTime/FineGrained): add polytime parameter schedule and exact feasibility checks #1305): reused directly insideprepareBranchEvalInput,checkBranchFeasible, andmkPaperSparseInputto selectBranchEvalInput,encBranchEvalInput,SparseSystemInput, andencSparseSystemInputpackage the exact unary/binary native encodings connecting the top-level driver to the Proposition 5.3 branch evaluator).Cslib.GenericRAM.HeavyBranchFold.heavyVarList,Cslib.GenericRAM.HeavyBranchFold.prepareBranch,Cslib.GenericRAM.HeavyBranchFold.BranchInput,Cslib.GenericRAM.HeavyBranchFold.countByBranching, andCslib.GenericRAM.HeavyBranchFold.countByBranching_computableInO(Complexity/Computability/GenericRAM/Native/HeavyBranchFold.lean, feat(GenericRAM/Native): add heavy-variable branch fold and sparse polynomial substitution #1306), together withCslib.GenericRAM.ExhaustiveCountFallback.countSystemExhaustive,Cslib.GenericRAM.ExhaustiveCountFallback.guardedBranchOfPolyTime, andCslib.GenericRAM.ExhaustiveCountFallback.exists_real_exp_bound_of_guarded_fallback(Complexity/Computability/GenericRAM/Native/ExhaustiveCountFallback.lean, feat(GenericRAM/Native): add streaming exhaustive counting fallbacks and guard absorption #1311): reused directly bytoBranchInput,checkTopFeasible,guardedBranchSolver,guardedBranchCertificate,maxReducedCost,guardedBranchingCertificate,countSparsePolySystem, andsparsePolyCounterCertificatewithout duplicatingBooleanFoldstreaming or exhaustive evaluation.Cslib.Complexity.compileParitySystemBounded(Complexity/Computability/PolyTime/CNF/SparsePolyCompile.lean),Cslib.BitString.numPassing(Complexity/Logics/Propositional/CNF/ParityTests.lean), andCslib.Logic.PL.CNF.GreedyContext.greedyCertificate(Complexity/Computability/PolyTime/CNF/GreedyParityContext.lean): reused directly bycompileContextParityInput,countContextParity, andcontextParityCertificateto package the(ctx, rows) ↦ ℕcounter interface required by §6.3 greedy parity-row selection.Validation and review
1e1fc67e900d400eda81e23495b9ce921df35defLEAN_NUM_THREADS=4 lake build --wfail --iofail Complexity ComplexityTests ComplexityAbstracts(passed, 0 warnings)LEAN_NUM_THREADS=4 lake exe runLinter Complexity.Computability.PolyTime.BooleanAnalysis.SparsePolyCounter ComplexityTests.SparsePolyCounter(passed)LEAN_NUM_THREADS=4 lake exe mk_all --check(passed)LEAN_NUM_THREADS=4 lake exe lint-style(passed)LEAN_NUM_THREADS=4 lake exe checkInitImports(passed)python3 scripts/check_hygiene.py --check-simp(passed)python3 scripts/check_tidy_surface.py(passed, zero new publicComputableTidilyInPolyTimedeclarations)python3 scripts/check_changed_files.py(passed)python3 scripts/parallel_defs.py(passed, 0/28 advisories)python3 scripts/audit_queries.py duplicates Complexity/Computability/PolyTime/BooleanAnalysis/SparsePolyCounter.lean(passed, 0 matches)python3 -B scripts/build_abstracts.py --check(passed)python3 scripts/check_pr_names.py --strict(passed)ComplexityTests/SparsePolyCounter.lean: empty systems (heavyVarListexercisingBranchOutcome.tautology,BranchOutcome.contradiction, andBranchOutcome.reducedbranch compaction against a poison branch oracle (poisonBranchEvalreturning999999if ever invoked oncountSparsePolySystem_eq_commonZeroCount;mkPaperSparseInputand neutral-augmented scope metric checks; fallback boundary tests for smallcountContextParity_eq_numPassingon a 3-variable CNF parity system; and compositionalfun_prop,polyBounded_sparsePolyCounterCertificate_space,contextParityCertificate, andGreedyContext.greedyCertificatesynthesis checks.[OpenAI2026ETH](§2.9 Theorem 2.2 pp. 20–21, §5.5 pp. 38–39, §6.3 p. 43), nativeTuring.MultiTapeTM.PolyBoundedworkspace and fallback-absorbed runtime contracts, API reuse, and full 6-gatescripts/check.shvalidation.Headline abstracts
Complexity.Computability.PolyTime.BooleanAnalysis.SparsePolyCounterandComplexityTests.SparsePolyCountertoward Port OpenAI's ETH refutation (subexponential #k-SAT) natively into complexitylib #1226 without modifying any declaration or statement inabstracts/catalogue.json. Verified withpython3 -B scripts/build_abstracts.py --check.abstracts/catalogue.jsonentry changed).AI assistance
AI-assisted (Gemini) under human direction (
@antonkov); all Lean proofs and concrete test instances were mechanically checked by Lean 4.