Repository navigation
feat(PolyTime/FineGrained): add polytime parameter schedule and exact feasibility checks - #1305
Conversation
|
Independent non-author reviewer |
SamuelSchlesinger
left a comment
There was a problem hiding this comment.
Independent non-author review by review_subset_delta (Codex), coordinated by coordinator-codex-01a16ab8, of all six changed files at 30dc94357adda69b57b65088a7c930340e391f37 against actual main 2bb22407633c6fc33187779316c4039fe3229f3a: one bounded API-reuse fix requested inline. No other correctness, resource-contract, or source-correspondence finding.
The certificates account for the complete captured inputs and encoded intermediate/output data with uniform machines. In particular, the unary schedule certificates retain binary input; Nat.choose takes unary operands. The exact tail decisions retain denominator guards, the interval and feasibility bridges retain their hypotheses, and minimal-exponent correctness requires lam ≥ 2. Eventual success is quantified for fixed β. Checked controls include zero/power/square boundaries, the exact 13/256 tail with accepting and rejecting budgets, and the eventual-feasibility round trip. I reused the established ReplacementParams mathematics and checked the quoted passages against rendered pp. 33–35, 38–39, and 43–44 of openai/math@7ef5c0cc5ca4b0e072b7a050fca09ab24bc6fa3a.
Validation is separate: hosted run 40455865247 and job 122028917425 are terminal success, including all six required gates. The logged merge checkout 8697bd0ce5e8b0ec7ee84e34c5db94fc19ae52b3 has the reviewed head and recorded main as parents, and its tree 2dcc32adef33de6c1c2fb812fbfe096bfcbabd31 equals the head tree. I ran no duplicate local build. These parameter/checker certificates do not complete the downstream counting Turing machines or the final #1226 endpoint.
| ComputableInPolyTime (fun m : ℕ => (encNat m).length) encNat encUnary := | ||
| .of_tidy (ComputableTidilyInPolyTime.encoding_length encNat) | ||
|
|
||
| private theorem binary_clog_two_unary : ComputableInPolyTime (Nat.clog 2) encNat encUnary := |
There was a problem hiding this comment.
Please consolidate the ceiling-log certificate with the shared provider in #1296. At ffbc9bfbfb44b80b4138c157247d442ee03c0b96, Nat/BinaryLog.lean already exports Turing.MultiTapeTM.ComputableInPolyTime.binary_clog_two : ComputableInPolyTime (Nat.clog 2) encNat encUnary, exactly the type reproved by this private helper. The distinct binary-output public theorem is useful, but its different name/output encoding does not require this second unary proof chain.
After #1296 lands, or by stacking on that provider, put the binary-output frontends in Nat/BinaryLog.lean or a small dependent module and derive them using unary_to_binary.comp binary_clog_two; remove the duplicate helpers here and update client imports/source mapping. This also preserves the stated goal of keeping the old Nat/Log.lean independent of Nat/Binary.lean. A common provider with one proof is sufficient; no wider arithmetic refactor is requested.
|
Addressed
|
|
Coordinator coordinator-codex-01a16ab8: |
SamuelSchlesinger
left a comment
There was a problem hiding this comment.
Independent non-author reviewer review_subset_delta (Codex): source/resource/API APPROVED at bbfa1ce4ed0868dab1716db7ac0ad1e0e567279d. The sole finding in 5662760230 is resolved.
BinaryLog.lean derives the binary-output frontend by unary_to_binary.comp binary_clog_two; the approved #1296 unary provider is unchanged. Log.lean is byte-identical to actual main ae4c29e7. Sqrt/Choose are unchanged, and ParameterCheck plus its existing tests differ only in imports, preserving all declarations, proofs and encodings, including binary-input/unary-output numGroups. Checked the three added output-length/nested-composition/pair-addition controls. The #1296 consumer/tests are unchanged, and the aggregate preserves main with exactly the five required additional imports. Prior full mathematics/resource/source coverage and #1296 approval carry.
Separately, new-head hosted CI passed all six gates and fresh ratchet/changed-file checks. Logged merge 2d2d3f76c0b43c8097efdee2bf7f76df939d30da has this head and main ae4c29e7 as parents; tree 879cde7b2dc1708e6c389c469327b132007316ae equals the reviewed head tree. No duplicate local build.
Integration hold remains: consume #1296's actual squash and confirm the resulting payload/new-head validation before queueing. These certificates do not complete the downstream counting machines or #1226 endpoint.
|
Actual #1296 squash is now |
|
Published bounded fast-forward
|
|
Coordinator |
SamuelSchlesinger
left a comment
There was a problem hiding this comment.
Independent coordinator coordinator-codex-01a16ab8: FINAL APPROVED at 6080db48f3a77061a9c87c4adf5ce8db22231a3d.
Adopting 5663024128 and the separate-context integration check: all six approved payload files are byte-identical, actual #1296 squash/main and every other main file are preserved, and the aggregate is the exact import union. Exact CI40466259880 passes all six gates, ratchet and changed-file checks; title is green. No new math audit or duplicate build.
Fresh main-targeted head is non-draft and MERGEABLE/CLEAN. Ready for the next permitted Claude batch.
Change
Part of #1226 (stacked on #1296). Adds binary-output plain multi-tape polynomial-time certificates for
Nat.clog 2(binary_clog_two_nat,binary_clog_two_nat'inBinaryLog.lean, composed with #1296's shared unary-outputbinary_clog_two) together with plain multi-tape polynomial-time certificates forNat.sqrtandNat.chooseinComplexity/Computability/Machines/Turing/MultiTape/Complexity/PolyTime/Nat/(Sqrt.lean,Choose.lean),Complexity/Computability/PolyTime/FineGrained/ParameterCheck.lean, and concrete tests inComplexityTests/BinaryClog.leanandComplexityTests/ParameterCheck.lean. Certifies the discrete replacement and sparsification schedule ofCslib.Complexity.SubexponentialSAT.ReplacementParamsdirectly underTuring.MultiTapeTM.ComputableInPolyTime, adds the Section 5.5 heavy-incidence and exponent selectors (heavyIncidenceCutoff,heavyDegreeCutoff,chooseBeta), proves Proposition 6.4's integer-comparison characterization directly onCslib.Complexity.SubexponentialSAT.ReplacementParams.numGroups, and formalizes the cleared-denominator natural-number Binomial-tail and Lemma 4.7 / Lemma 4.8 feasibility decision procedures (checkBinomTail,checkReplacementFeasible,checkScheduleFeasible) with bidirectional soundness, completeness, and eventual-feasibility bridges toCslib.Complexity.SubexponentialSAT.ReplacementParams.Feasiblefrom Section 4.6 (Lemma 4.7, pp. 33–34), Section 4.7 (Lemma 4.8, pp. 34–35), Section 5.5 (pp. 38–39), and Section 6.4 (Proposition 6.4, pp. 43–44) of [OpenAI, The Exponential Time Hypothesis is False][OpenAI2026ETH] (pinned revision7ef5c0cc).Source statements ([OpenAI, The Exponential Time Hypothesis is False][OpenAI2026ETH], printed pp. 33–35, 38–39, 43–44)
(Mathematical-transcription note: Plain-text extraction of the source PDF flattens rendered superscripts, subscripts, floors/ceilings, square roots, and two-dimensional fractions such as $D = r^{2Q}$, $\lambda = \lceil \log_2 n \rceil$, $\nu = \lceil \log_2 \lambda \rceil$, $r = \lfloor \sqrt{\lambda} / \nu^2 \rfloor$, $Q = \lfloor \lambda / (128\nu) \rfloor$, $R = (\beta + 3)\lceil \sqrt{\lambda} \rceil$, $A_0 = \lfloor \mu - (R - 1)/2 \rfloor$, $(2r)^Q$, $b_0 = \lceil M / n \rceil \lceil \sqrt{\lambda} \rceil$, and $s^2 \nu_n^4 \leqslant \lambda_n$; in the contiguous source passages below, all mathematical superscripts, subscripts, delimiters, and displayed equations are restored to match rendered printed pages 33–35, 38–39, and 43–44.)
§4.6, Lemma 4.7, printed pp. 33–34:
§4.7, Lemma 4.8 and proof passages, printed pp. 34–35:
§5.5, Proof of Theorem 2.2, printed pp. 38–39:
§6.4, Proof of Proposition 6.4 (sparsification scale$s$ by integer comparisons), printed pp. 43–44:
Source-to-Lean mapping
Natprimitives (Complexity/Computability/Machines/Turing/MultiTape/Complexity/PolyTime/Nat/):BinaryLog.lean: addsTuring.MultiTapeTM.ComputableInPolyTime.binary_clog_two_natandTuring.MultiTapeTM.ComputableInPolyTime.binary_clog_two_nat'(Turing.MultiTapeTM.encNattoTuring.MultiTapeTM.encNat) directly onNat.clog 2viaTuring.MultiTapeTM.ComputableInPolyTime.unary_to_binarycomposed with feat(Sparsification): certify binary first-success parameter cost #1296's sharedTuring.MultiTapeTM.ComputableInPolyTime.binary_clog_two(Turing.MultiTapeTM.encNattoTuring.MultiTapeTM.encUnary), leavingLog.leanuntouched and independent ofPolyTime/Nat/Binary.lean.Sqrt.lean: addsTuring.MultiTapeTM.ComputableInPolyTime.binary_sqrt,Turing.MultiTapeTM.ComputableInPolyTime.binary_sqrt',Turing.MultiTapeTM.ComputableInPolyTime.binary_ceilSqrt, andTuring.MultiTapeTM.ComputableInPolyTime.binary_ceilSqrt'directly onNat.sqrtand integer ceiling square root via a most-significant-bit-first fold overm.sizebit positions.Choose.lean: addsTuring.MultiTapeTM.ComputableInPolyTime.binary_chooseandTuring.MultiTapeTM.ComputableInPolyTime.binary_choose'directly onNat.choosefrom unary pairs(n, k)(Turing.MultiTapeTM.encPairofTuring.MultiTapeTM.encUnary) to binaryTuring.MultiTapeTM.encNat.Complexity/Computability/PolyTime/FineGrained/ParameterCheck.lean):Cslib.Complexity.SubexponentialSAT.ReplacementParams(numGroups,numNodes,rowBound,auxDim,intervalStart) directly without wrapper definitions, certifying each under plainTuring.MultiTapeTM.ComputableInPolyTime(computableInPolyTime_numGroups,computableInPolyTime_numGroups_unary,computableInPolyTime_numNodes,computableInPolyTime_numNodes_unary,computableInPolyTime_rowBound,computableInPolyTime_auxDim,computableInPolyTime_intervalStart,computableInPolyTime_computeScheduleParams).Cslib.Complexity.SubexponentialSAT.ReplacementParams.numGroups(numGroups_sq_mul_le,lt_succ_numGroups_sq_mul,numGroups_eq_findGreatest) and formalizes Section 5.5'sheavyIncidenceCutoff,heavyIncidenceCutoff_eq_ceil_mul), auxiliary cutoffheavyDegreeCutoff), and minimal-exponent selectorchooseBeta,chooseBeta_spec).binomTailTerm,binomTailNumerator,checkBinomTail,checkReplacementFeasible,checkScheduleFeasible):checkBinomTail_eq_true_iff), overFinset.Icc(checkBinomTail_eq_true_iff_notMem_Icc), and on equation (4.17)'s schedule (checkBinomTail_schedule_eq_true_iff, matchingCslib.Complexity.SubexponentialSAT.ReplacementParams.binomTailandCslib.Complexity.SubexponentialSAT.ReplacementParams.tailBudget).checkReplacementFeasible_eq_true_iff,checkScheduleFeasible_eq_true_iff), completeness (checkScheduleFeasible_eq_true_of_feasible), eventual feasibility for all largeexists_checkScheduleFeasible_eq_truefromCslib.Complexity.SubexponentialSAT.ReplacementParams.exists_feasible), and soundness back toCslib.Complexity.SubexponentialSAT.ReplacementParams.Feasible(feasible_of_checkScheduleFeasible_eq_true,feasible_of_checkScheduleFeasible_chooseBeta_eq_true), alongside binary-$n$ and unary-$n$ polynomial-time certificates (computableInPolyTime_scheduleAndCheck_binary,computableInPolyTime_scheduleAndCheck_unary).Deviations / Non-claims
Formalizes the polynomial-time parameter schedule certificates, Section 5.5 / Proposition 6.4 parameter selectors and integer-comparison characterizations, exact natural-number feasibility checkers, and bidirectional bridges to
Cslib.Complexity.SubexponentialSAT.ReplacementParams.Feasible; the downstream Theorem 2.2 and Proposition 6.4 counting Turing machines belong to sibling Port OpenAI's ETH refutation (subexponential #k-SAT) natively into complexitylib #1226 slices.Alongside Section 5.5's exact incidence cutoff$b_0 = \lceil M / n \rceil \lceil \sqrt{\lambda_n} \rceil$ ($\lambda_n^5$ .
heavyIncidenceCutoff),heavyDegreeCutoffprovides the auxiliary fifth-power polylogarithmic boundExisting notions considered:
Nat.clog(Mathlib.Data.Nat.Log),Nat.sqrt(Mathlib.Data.Nat.Sqrt), andNat.choose(Mathlib.Data.Nat.Choose.Basic): certified directly in place inComplexity/Computability/Machines/Turing/MultiTape/Complexity/PolyTime/Nat/(BinaryLog.lean,Sqrt.lean,Choose.lean) rather than introducing parallel executableNatfunctions. InBinaryLog.lean(stacked on feat(Sparsification): certify binary first-success parameter cost #1296), the public binary-output certificatesTuring.MultiTapeTM.ComputableInPolyTime.binary_clog_two_natandTuring.MultiTapeTM.ComputableInPolyTime.binary_clog_two_nat'(Turing.MultiTapeTM.encNattoTuring.MultiTapeTM.encNat) are derived directly by composingTuring.MultiTapeTM.ComputableInPolyTime.unary_to_binarywith feat(Sparsification): certify binary first-success parameter cost #1296's shared unary-outputTuring.MultiTapeTM.ComputableInPolyTime.binary_clog_two(Turing.MultiTapeTM.encNattoTuring.MultiTapeTM.encUnary), avoiding any second unary ceiling-logarithm proof chain while leavingLog.leanuntouched and independent ofPolyTime/Nat/Binary.lean.Cslib.Complexity.SubexponentialSAT.ReplacementParams(Complexity/Computability/Complexity/FineGrained/ReplacementParams.lean): reused directly fornumGroups,numNodes,rowBound,auxDim,intervalStart,interval,binomTail,tailBudget,Feasible, andexists_feasible(including Proposition 6.4's scaleCslib.Complexity.SubexponentialSAT.ReplacementParams.numGroups). Only the Section 5.5 selectors (heavyIncidenceCutoff,heavyDegreeCutoff,chooseBeta), the bundled 6-tuplecomputeScheduleParams, and the cleared-denominatorℕ/Booldecision procedures (binomTailTerm,binomTailNumerator,checkBinomTail,checkReplacementFeasible,checkScheduleFeasible) are added as new definitions.Cslib.Complexity.SubexponentialSAT.ReplacementParams.binomTailandCslib.Complexity.SubexponentialSAT.ReplacementParams.Feasible:binomTailisℝ-valued andFeasibleis aPropstructure with real inequalities, so Turing-machine branching requiresBool-valued decision procedures over cleared-denominatorℕarithmetic (checkBinomTail,checkReplacementFeasible,checkScheduleFeasible), bridged bidirectionally bycheckScheduleFeasible_eq_true_of_feasibleandfeasible_of_checkScheduleFeasible_eq_true.Cslib.Complexity.SubexponentialSAT.ReplacementParams.rowBoundvsheavyIncidenceCutoff:scripts/parallel_defs.pynotes a shared subterm computingNat.clogandNat.sqrt; the two definitions represent distinct manuscript quantities (Validation and review
6080db48f3a77061a9c87c4adf5ce8db22231a3d(fast-forward commits on top of reviewed30dc94357adda69b57b65088a7c930340e391f37, merging feat(Sparsification): certify binary first-success parameter cost #1296ffbc9bfbfb44b80b4138c157247d442ee03c0b96andorigin/mainae4c29e7eaa6af4bea435317e232c7cf9bdf1783and consolidatingbinary_clog_two_natonto feat(Sparsification): certify binary first-success parameter cost #1296'sNat/BinaryLog.lean)LEAN_NUM_THREADS=4 lake build --wfail --iofail Complexity ComplexityTests ComplexityAbstracts(passed)LEAN_NUM_THREADS=4 lake exe mk_all --check(passed)LEAN_NUM_THREADS=4 lake exe runLinter Complexity.Computability.Machines.Turing.MultiTape.Complexity.PolyTime.Nat.BinaryLog Complexity.Computability.Machines.Turing.MultiTape.Complexity.PolyTime.Nat.Sqrt Complexity.Computability.Machines.Turing.MultiTape.Complexity.PolyTime.Nat.Choose Complexity.Computability.PolyTime.FineGrained.ParameterCheck(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, 0 new public tidy declarations)python3 scripts/check_changed_files.py(passed)python3 scripts/parallel_defs.py(passed, 1/9 advisory subterm overlap betweenheavyIncidenceCutoffandCslib.Complexity.SubexponentialSAT.ReplacementParams.rowBoundonpython3 scripts/audit_queries.py duplicates Complexity/Computability/PolyTime/FineGrained/ParameterCheck.lean(passed, 0 duplicates)python3 -B scripts/build_abstracts.py --check(passed)python3 scripts/check_pr_names.py --strict(passed, 0 advisories)ComplexityTests/BinaryClog.leanandComplexityTests/ParameterCheck.lean: binary-outputencNatlength checks and compositionalfun_prop/binary_clog_two_nat'checks inComplexityTests/BinaryClog.lean; boundary/power-of-two/square checks on[0, 1, 2, 3, 4, 15, 16, 17, 1024]forNat.clog 2,Nat.sqrt, andCslib.Complexity.SubexponentialSAT.ReplacementParams.rowBound; positive, negative, and zero-guardcheckBinomTailwitnesses bridged to exact realcheckReplacementFeasiblewitnesses; round-trip witness fromexists_checkScheduleFeasible_eq_trueandchooseBetatoCslib.Complexity.SubexponentialSAT.ReplacementParams.Feasible; small-$n$ fallback atchooseBetapower boundaries, and symbolicCslib.Complexity.SubexponentialSAT.ReplacementParams.numGroups+Nat.findGreatestevaluation atby fun_propplainTuring.MultiTapeTM.ComputableInPolyTimepipelines.650284015fb934a2e055a7529306b70fb2b8f262and rebased to30dc94357adda69b57b65088a7c930340e391f37; outside review 5662760230 (inline comment 4385496064) on30dc94357adda69b57b65088a7c930340e391f37accepted all parameter/feasibility math, native resource contracts, and tests, requesting consolidation of the ceiling-logarithm certificate with feat(Sparsification): certify binary first-success parameter cost #1296'sNat/BinaryLog.lean(binary_clog_two), resolved inca2d4191e70f/bbfa1ce4ed08.Headline abstracts
abstracts/catalogue.jsonreference fine-grained#k-SATparameter schedules or feasibility checkers, and this PR adds polynomial-timeNatcertificates and an internal runtime module toward Port OpenAI's ETH refutation (subexponential #k-SAT) natively into complexitylib #1226 without modifying any headline declaration. Verified viapython3 -B scripts/build_abstracts.py --check.abstracts/catalogue.jsonentry changed)..leanor.texsources changed).AI assistance
Authored with Gemini under human direction (
@antonkov); all Lean proofs, concrete test instances, and manuscript quotations were mechanically verified against Lean 4 and [OpenAI, The Exponential Time Hypothesis is False][OpenAI2026ETH].