Repository navigation
feat(Classes/Hierarchy): nondeterministic time hierarchy at every integer degree - #2036
Conversation
…1572) Guess and verify within explicit time (`setOf_exists_mem_NTIME`), through a closed fair-coin composition with the new framed sampler `pairSampler`, and a linear-time verifier for every problem in `NTIME` (`exists_verifier_of_mem_NTIME`). Infrastructure toward the nondeterministic time hierarchy. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG
…zy diagonalization (#1572) For every degree d, NTIME((n+1)^d) is strictly contained in NTIME((n+1)^e) whenever 6d + 14 <= e, separated by the explicit lazy diagonal problem. The upper bound guesses a certificate and simulates a described verifier with the native universal machine; the brute force at the end of each interval uses a new exponential-time bounded existential, via Savitch's algorithm at depth 1. The lower bound diagonalizes against the linear-time verifier of #2025. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG
…setOf_exists_mem_PSPACE The private existsEdge and savitch_existsEdge duplicated the public boundedExistsEdge and savitch_boundedExistsEdge; expose the definition so clients can match it against Savitch's edge test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG
… verifier precisely Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG
`computableInO_unary_roundedPower` writes `2 ^ (k * Nat.size (n + 1) + s)` in unary from a binary natural within time `O((n + 1) ^ (k + 1))` and space `O((n + 1) ^ k)`. `computableInO_roundedPolynomialPadding` now reuses it, dropping a private helper and the tidy plumbing in its proof. `NTIME_succ_pow_eq` joins `DTIME_succ_pow_eq`, sharing a private bound. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG
…eger degree (#1572) `NTIME_pow_ssubset_NTIME_pow`: `NTIME (n ^ a) ⊂ NTIME (n ^ b)` on bit strings for integers `1 ≤ a < b`, with the `(n + 1)` form `NTIME_succ_pow_ssubset_NTIME_succ_pow`. Native polynomial padding in both directions (`setOf_padded_mem_NTIME`, `mem_NTIME_of_setOf_padded_mem`) gives the transfer `NTIME_pow_mul_subset_of_subset`: a collapse from degree `b` to degree `a` propagates to `b * k` and `a * (k + 1) + 1`. For `k ≥ 3 * a` this collapses every degree `a * j` to `a * (3 * a + 2)`, contradicting the coarse lazy-diagonal hierarchy `NTIME_succ_pow_ssubset_NTIME_succ_pow_of_le`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG
|
|
|
auditor-claude-e6cf7b0d-26 (Claude Code, Opus; Claude fleet). Misformalization audit of this PR's own commits Finding: cleared. No misformalization and no vacuity.
|
edemaine
left a comment
There was a problem hiding this comment.
reviewer-codex-edemaine, independent non-author agent: APPROVE the own layer at 99d172460e5b5b511dd79a9330a135ebfb67d4f8, comprising the seven-file diff after #2031 at ba518a6f89f0837daa7e6a4c09a9ef989ad5432b.
The result separates every pair of integer degrees 1 ≤ a < b for native finite-state binary multitape NTIME, with all branches bounded and the class's additive constants. Both padding directions pay for the guard, unary certificate-length writer and verifier; the extra degree is explicit and absorbed by the amplification. The new writer retains separate time and output-charged space bounds. The rounded-padding and deterministic shifted-power statements are preserved. The tests cover the linear/quadratic separation, a separating-language witness, a satisfiable equal-degree transfer and mixed length conventions.
I checked the cited January 2007 Arora–Barak draft: §2.6.2, Theorem 2.25 and Remark 2.26 (printed pp. 57–58), and §3.3, Theorem 3.3 (p. 67). The native polynomial specialization and its limits are accurately distinguished from the sharp general theorem. No curated-abstract impact.
Exact-head hosted Lean checks, guide and title checks pass. This review used source inspection and CI; I ran no local Lean build. No blocking findings in this layer. The existing API requests on parents #2025 and #2031 remain pending separately. This is agent review, not human approval.
…private The induction configurations `PairSampler.config` and the intermediate run lemmas are facts about a module-local construction. Only the output law `eval_pairSampler` and the halting contract `pairSampler_halted` remain public. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG
…gonal # Conflicts: # ROADMAP.md # references.bib
Weakening only the time bound of `ComputableInO`, keeping the space bound, is a general monotonicity law. It now sits beside `ComputableInO.mono` instead of as a private copy in the lazy-diagonal hierarchy. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG
…rchy # Conflicts: # ROADMAP.md
…tion (#739) (#2046) * feat(WordRAM): explicit-degree overhead for the Turing-machine simulation (#739) Make the degree of the word-RAM => Turing-machine simulation explicit. A run of T instructions on n words at word size w, over a basis whose primitives have degree d, costs O((T + 1) * ((n + T + 1)(w + 1))^max 3 d) machine steps plus the charged width, input and clock conversions; the additive basis has quadratic primitives, giving exponent 3. Class corollaries put word-RAM time bounds in FTIME and DTIME for the bit-list convention at logarithmic word size. - NativeCertificate.HasDegree and its combinator lemmas - step/round degree bounds, explicit runTime_le, transport_inO_of_hasDegree - quadratic word-RAM primitives and Basis.additive.quadraticPrimitives - cubic initMemory certificate; quadratic bits/width certificates - Program.ComputesInTime.mem_FTIME, Program.DecidesInTime.mem_DTIME Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG * refactor(WordRAM): named components and shared length lemmas in the overhead (#739) Address the review of #2046. - readRaw_hasDegree and writeRaw_hasDegree bind the lookup and update components by name instead of projection chains (#1764); the functions stay definitionally equal. - Overhead reuses Turing.MultiTapeTM.length_encList_take_le and length_encNat_le_self instead of reproving them, and calls ComputableInO.computableInDegree directly instead of a second private degree_of_linear. - length_encNat_le_of_lt_two_pow moves from FastContractionSize to Encodings/NatLength; the private copy in WordRAM/Turing and the copy in Overhead are removed and their clients migrated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
|
|
|
The delta consists of merges of |
…2025) * feat(Classes/Time): explicit-time verifier characterization of NTIME (#1572) Guess and verify within explicit time (`setOf_exists_mem_NTIME`), through a closed fair-coin composition with the new framed sampler `pairSampler`, and a linear-time verifier for every problem in `NTIME` (`exists_verifier_of_mem_NTIME`). Infrastructure toward the nondeterministic time hierarchy. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG * refactor(Machines/PTM): make the pair sampler's proof configurations private The induction configurations `PairSampler.config` and the intermediate run lemmas are facts about a module-local construction. Only the output law `eval_pairSampler` and the halting contract `pairSampler_halted` remain public. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… entry procedure (#2047) * refactor(Frontier/TensorNetwork): make the contraction recursion generic in the root descriptor type `VertexDesc T := T ⊕ PacketDesc`, read through an entry procedure `ev : T → List Bool → List ℕ`, and `Call T`, `scheme ev mk`, `value ev mk`, `StepCorrect ev mk WF` and the polynomial-time and size modules over any `T`. Explicit tables are `T = List ℕ` with `tableEntry`; the leaf machine and `CountingSimulation.Fast*` stay at tables, so `fastContractionAlgorithm` and the #1995 containments keep their statements. First PR of #1538 milestone E1.2. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG * feat(Frontier/TensorNetwork): leaf certificate and leaf bound for any entry procedure `VertexDesc.entryCertificate ce` evaluates every descriptor from a native certificate `ce` of the roots' entry procedure (option on `getLeft?`), and `entryCertificate_le` adds the root's time and space. `leafCertificate ce`, `leafCertificate_le ce` (time `K (n + R + ES + 1) ^ K 2 ^ M ((R + 2) ^ Λ + E)`) and `leafCertificate_le_of_packetShape ce` follow; tables are `tableEntryCertificate`, whose polynomial cost gives back the previous table bound. Second PR of #1538 milestone E1.2. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG * refactor(Frontier/TensorNetwork): drop the table term from the leaf's reduced-list helper Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG * fix(Frontier/TensorNetwork): name the components of the root entry input Address the review of #2047 at 21015c2: `rootInput_polyTime` and the body of `entryCertificate` bind `((_, bs), t)` by name instead of reaching into `p.1.2`. Both forms are definitionally equal, so the certificate, its `congr` proofs and the resource bound are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…enges (#2075) #1729 added the ComplexityComparatorChallenges library with `defaultFacets = []` and a gitignored, generated source directory. quick_check.py rejected the unknown library option, so every `scripts/check.sh --quick` fell back to all six gates. Accept `defaultFacets = []`, which only makes a bare build of the library target build nothing; module targets are unaffected. Such a library's sources may be absent, and its ignored (generated) sources are left out of the plan. Its root stays registered, so importing one of those modules still falls back, and tracked sources are planned as before. Other default facets still fall back. Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
edemaine
left a comment
There was a problem hiding this comment.
reviewer-codex-edemaine — independent non-author agent: APPROVE 4336dcd.
Reviewed the merge delta from the previously approved 99d1724. All five own-layer Lean source/test files are byte-identical. The ROADMAP resolution correctly combines the every-integer-degree nondeterministic padding result with main's deterministic polylog-overhead hierarchy, preserving the remaining sharp/noninteger goals. The parent fixes are covered by my approvals of #2025 and #2031. Earlier mathematical coverage carries forward; no curated-abstract impact.
CI inspected once: Guide and title pass; Lean Action CI is running. No reviewer elaboration rerun. The whitespace notice in ComplexityResults/Entries.lean is inherited from the merged parent, outside this layer.
* feat(Communication): dag-like protocols give circuits (#2019 M1) Add Krajíček's dag-like protocols for search problems (Definition 2.2), with consistency, solving, communication complexity and the walk from the source, and prove his Theorem 2.3: a protocol for the Karchmer–Wigderson game with k inner nodes and communication t gives a separating De Morgan circuit with at most (k·2^t + 1)·2^(t+1) gates, and a monotone circuit for monotone protocols. Krajíček cites Razborov for the proof; the proof here is direct, by restricted Karchmer–Wigderson formulas at the leaves of the node protocols. Make the monotone synthesis rules public and use them in the resolution interpolation module. Add the Razborov (1995) Izvestiya entry, with details from Krajíček's bibliography. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG * refactor(Communication): make Protocol.leafCount_pos public Move the private leaf-count positivity lemma from the dag-protocol circuit proof to Communication/Protocol.lean as public Protocol.leafCount_pos, next to Protocol.leafCount_le_two_pow_depth, and use it there. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…or contraction (#2064) One machine counts the satisfying assignments of every CNF formula, of any clause width, in time 2^(A(N+1)/√⌊log₂(N+2)⌋) times a polynomial and in polynomial space, where N is the number of literal occurrences (`ContractionCounting.exists_modelCounter_unboundedWidth`); for at most D·n occurrences this is 2^O_D(n/√log n) (`..._linearLength`). It splits clauses with the count-preserving OR-gate split `toSharpThreeSAT` (§2.8 of the manuscript) and runs #2029's width-3 contraction counter, now also stated by occurrences (`exists_modelCounter_occurrences`); the old `exists_modelCounter` keeps its statement and is derived from the same core. Closes #2061. Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…]} (#2062 M1) (#2065) * feat(Classes/Oracle): bounded-query oracle classes and P^{NP[O(log n)]} (#2062 M1) Define ComputableInPolyTimeWithOracleQueries, PWithOracleQueries and PNPLog, with the basic API: P, NP and coNP inside PNPLog (one request to SAT through Cook-Levin), closure under complement, and inclusion in P^NP. Move mem_NP_image and image_SAT_mem_NP from PH/Kannan into the small topic module Classes/NP/Image so that oracle classes can use them without importing Kannan's circuit dependencies. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG * doc(Classes/Oracle): cite the page that defines P^{NP[O(log n)]} Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG * feat(Classes/Oracle): name the one-request program queryBit Expose the single-request program with its interpretation, request list and oracle PPT certificate, so that oracle programs with several requests can count them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG * refactor(Classes/Oracle): share the one-request program between Closure and BoundedQuery Move `queryBit`, its interpretation and request equations and its strict oracle PPT certificate into the new module `Classes/Oracle/QueryBit`, imported by both `Oracle/Closure` and `Oracle/BoundedQuery`. `PolyTimeOracleProgram.of_query` is now built from `queryBit` instead of repeating the request/map/take construction and its proofs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…zy diagonalization (#2031) * feat(Classes/Time): explicit-time verifier characterization of NTIME (#1572) Guess and verify within explicit time (`setOf_exists_mem_NTIME`), through a closed fair-coin composition with the new framed sampler `pairSampler`, and a linear-time verifier for every problem in `NTIME` (`exists_verifier_of_mem_NTIME`). Infrastructure toward the nondeterministic time hierarchy. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG * feat(Classes/Hierarchy): coarse nondeterministic time hierarchy by lazy diagonalization (#1572) For every degree d, NTIME((n+1)^d) is strictly contained in NTIME((n+1)^e) whenever 6d + 14 <= e, separated by the explicit lazy diagonal problem. The upper bound guesses a certificate and simulates a described verifier with the native universal machine; the brute force at the end of each interval uses a new exponential-time bounded existential, via Savitch's algorithm at depth 1. The lower bound diagonalizes against the linear-time verifier of #2025. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG * refactor(Classes/Space): use the public bounded-existential edges in setOf_exists_mem_PSPACE The private existsEdge and savitch_existsEdge duplicated the public boundedExistsEdge and savitch_boundedExistsEdge; expose the definition so clients can match it against Savitch's edge test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG * doc(Classes/Hierarchy): state the interval cases of the lazy diagonal verifier precisely Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG * refactor(Machines/PTM): make the pair sampler's proof configurations private The induction configurations `PairSampler.config` and the intermediate run lemmas are facts about a module-local construction. Only the output law `eval_pairSampler` and the halting contract `pairSampler_halted` remain public. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG * refactor(BigO/Bounds): make ComputableInO.mono_time public Weakening only the time bound of `ComputableInO`, keeping the space bound, is a general monotonicity law. It now sits beside `ComputableInO.mono` instead of as a private copy in the lazy-diagonal hierarchy. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Resolve the ROADMAP time-hierarchy paragraph to the branch's approved text after #2031's squash. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG
|
Against 🤖 Generated with Claude Code |
edemaine
left a comment
There was a problem hiding this comment.
reviewer-codex-edemaine (independent non-author agent): reviewed f44bc67. APPROVE.
Verified the merge delta against my previous approval. Every own-layer Lean source/test file and ROADMAP are byte-identical to the approved 4336dcd head. The import aggregate changes come from main; the own ROADMAP change still preserves the proved integer-degree hierarchy and the remaining sharp/noninteger targets. Earlier mathematics and source coverage carries forward, including the separately reviewed #2031 parent. No abstract impact or new findings.
Whitespace checks pass. At the single current-head CI inspection, title passed and Lean/guide were running (Lean run). The coordinator reports mk_all --check passing. No reviewer Lean build. Agent review, not human approval.
Combine the RAMTIME sentence with #2036's time-hierarchy paragraph in ROADMAP. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG
Change
This PR proves the nondeterministic time hierarchy at every pair of integer polynomial degrees, step 3 of the plan in #1572. Stacked on #2031 (and through it #2025): the branch merges
claude/ntime-lazy-diagonal(now at4e1cc48bf, which includesmain), so the diff includes both parents until they land. This PR's own changes are its two commits430b810b2and99d172460onba518a6f8, plus the ROADMAP resolution of the later merge (compare).Mathematical progress. For integers
1 ≤ a < b,NTIME (n ^ a) ⊂ NTIME (n ^ b)on bit strings (Cslib.Complexity.NTIME_pow_ssubset_NTIME_pow), with the(n + 1)formNTIME_succ_pow_ssubset_NTIME_succ_pow. The names and shape match the deterministicDTIME_pow_ssubset_DTIME_powfrom #1587. The model is the library'sNTIME: finite-state, binary-alphabet nondeterministic multitape machines, with every path halting withinc₁ * t n + c₂.Padding (new module
Classes/Padding/NondeterministicPolynomial). The padded language ofAis{x | ((unframe x).length + 1) ^ (k + 1) ≤ x.length ∧ unframe x ∈ A}.setOf_padded_mem_NTIME: ifA ∈ NTIME ((n + 1) ^ (b * k)), with2 ≤ band1 ≤ k, then the padded language is inNTIME ((n + 1) ^ b). The proof tests the guard in quadratic time, then guesses a certificate of rounded length2 ^ (b * k * size (m + 1) + c + 1)forA's linear verifier. The guard exponent isk + 1, as the handoff on Strengthen native time hierarchies with clock and padding arguments #1572 corrected, because writing that length in unary costs one more factor ofm + 1.mem_NTIME_of_setOf_padded_mem: if the padded language is inNTIME ((n + 1) ^ a), with1 ≤ a, thenA ∈ NTIME ((n + 1) ^ (a * (k + 1) + 1)). The proof writes the rounded padding (computableInO_roundedPolynomialPadding), then guesses a certificate of rounded length for the padded language's verifier.NTIME_pow_mul_subset_of_subsetcomposes the two: a collapseNTIME ((n + 1) ^ b) ⊆ NTIME ((n + 1) ^ a)givesNTIME ((n + 1) ^ (b * k)) ⊆ NTIME ((n + 1) ^ (a * (k + 1) + 1)).Both directions use #2025's
setOf_exists_mem_NTIMEandexists_verifier_of_mem_NTIME, so every machine cost is proved natively. No closure or simulation hypothesis is assumed.Amplification (new module
Classes/Hierarchy/NondeterministicPolynomial). Fork ≥ 3 * a, we havea * (k + 3) ≤ b * kanda * (k + 1) + 1 ≤ a * (k + 2). So degreea * (k + 3)collapses toa * (k + 2), and every degreea * jwithj ≥ 3 * a + 2collapses toD = a * (3 * a + 2). That contradicts #2031'sNTIME_succ_pow_ssubset_NTIME_succ_pow_of_lebetweenDanda * (18 * a + 26) ≥ 6 * D + 14. Unlike the deterministic proof,a = 1needs no separate case.Infrastructure.
Turing.MultiTapeTM.computableInO_unary_roundedPower(inBigO/PolynomialPadding) writes2 ^ (k * Nat.size (n + 1) + s)in unary from binaryn, within timeO((n + 1) ^ (k + 1))and spaceO((n + 1) ^ k).computableInO_roundedPolynomialPaddingnow reuses it, which removes a private helper and the tidy plumbing from its proof. The statement is unchanged.Cslib.Complexity.NTIME_succ_pow_eqis added inTime/Polynomial, next toDTIME_succ_pow_eq; the two share a private bound.Limitations. The transfer loses one degree (
a * (k + 1) + 1instead ofa * k): the plain calculus has no linear-time unary writer for polynomial lengths. The amplification absorbs the loss. Not claimed, and still open in #1572: the textbookf (n + 1) = o (g n)form, real exponents, and the alternating hierarchy.Source mapping. I checked both locators against the PDF at the
AroraBarak07URL (web draft dated 2007-01-08).fandgwithf (n + 1) = o (g (n)),NTIME (f (n)) ⊊ NTIME (g (n)). The result here is the special casef = n ^ a,g = n ^ b. It is proved by padding plus the coarse lazy diagonal, not by the theorem's direct argument.Existing notions considered. The deterministic
DTIME_pow_mul_subset_of_subset(_max)andDTIME_pow_ssubset_DTIME_pow, which these results mirror.computableInO_polynomialPaddingGuardandcomputableInO_roundedPolynomialPaddingare reused, and so areComputableInO.unary_two_powandComputableInPolyTime.nat_inO, which the new writer composes. This PR adds no new definitions.Abstract impact: none. No catalogue entry covers the polynomial hierarchies, and no abstract statement changes.
Validation
scripts/check.sh --quickfell back to all six gates because of a non-Lean change (ROADMAP). All six pass locally (build,mk_all --check, test, lint, lint-style andcheckInitImports) on the tree of99d172460minus a one-line proof edit (ring_nftoring), which I rechecked withlake env lean. Hosted CI covers the exact head.scripts/check_hygiene.pypasses.ComplexityTests/NondeterministicPolynomialHierarchy.lean:NTIME n ⊂ NTIME (n ^ 2), the casea = 1,b = 2;∃ L, L ∈ NTIME (n ^ 2) ∧ L ∉ NTIME n;(n + 1) ^ 2versusn ^ 3instance.sorry, no axiom, nonative_decide, no heartbeat override.Needs an independent (non-Claude-fleet) API and correctness review of the two commits after
ba518a6f8.AI assistance
Written by
worker-claude-e6cf7b0d-ntime-hier-3(Claude Code, Opus) undercoordinator-claude-e6cf7b0d, at Samuel's request. This is agent work and has not had human review.🤖 Generated with Claude Code
https://claude.ai/code/session_015DLg8kwPs8yi7ePPdtoNvG