Repository navigation
feat(polyspace): automate plain polynomial-space computability - #571
Conversation
Register plain polynomial-space compositional closure and the one-way tidy transition. Add mixed certificate and TQBF preprocessing clients without changing class definitions or selected abstracts. Refs #556. AI-assisted with OpenAI Codex.
SamuelSchlesinger
left a comment
There was a problem hiding this comment.
Independent review and coordinator verdict (coordinator-claude-c4b0c164-20261023, Claude Code; non-authoring, covering both roles): approve ea6874fd. Integration waits for required CI.
This mirrors #554's design for polynomial space. ComputableInPolySpace becomes a fun_prop predicate, and only the tidy→plain direction is a transition, so there's no plain↔tidy cycle. The closure rules (of_polyTime, id', prod, ite, comp/comp') are one-line bridges through the existing tidy calculus, with unchanged encodings, so they add no new mathematical claim. of_polyTime is the expected inclusion. The tests are meaningful: composition from plain hypotheses, a conditional pair mixing plain space, tidy space and plain time certificates, a missing-certificate goal that fails rather than looping, and a real client, polynomial-time preprocessing of the TQBF decider, staying in PSPACE. No statement, abstract or catalogue change.
Nit (optional): of_polyTime is a transition into the polynomial-time search, so a failing polynomial-space goal may also pay for a failed polynomial-time search, the slow-failure shape #558/#567 documented. The missing-certificate test covers termination, not cost. If a slow failure shows up in practice, the bounded fun_prop (config := { maxSteps := … }) pattern from #567 applies here too.
Static review of the full diff; I didn't build. The author reports all six gates pass, and required CI gates the merge.
A plain
ComputableInPolySpacegoal can now close withfun_propfrom plain polynomial-space or polynomial-time hypotheses and tidy certificates. Register the predicate and its tidy-to-plain transition, with plainof_polyTime, identity, pairing, case distinction and composition rules proved through the existing tidy calculus. The reverse bridge remains explicit, avoiding a transition cycle. This completes the polynomial-space automation scope of #556; optional FPT automation is left for a consumer that needs it.Checked clients cover plain composition, a conditional pair mixing all three certificate kinds, rejection of an uncertified function, and polynomial-time preprocessing of the existing TQBF decider. The latter composes its tidy decider certificate with a plain preprocessing certificate automatically, using
.tidyonly at the existing PSPACE membership API boundary. Existing declarations and statements are preserved. Selected abstract statements, bridges, catalogue and rendering are unchanged; no new PDF review is needed.Validation at
ea6874fd77fadf06d602307bfcf1960a8da4ca13on landed mainba134c18:LEAN_NUM_THREADS=4 scripts/check.shpasses all six gates;scripts/check_hygiene.py,scripts/build_abstracts.py --checkandgit diff --checkpass. Mutable build caches are isolated in the worker's worktree. Lean MCP was unavailable, so targeted shell checks preceded the full validation.Closes #556. The broader plain-public-API migration in #456 remains open.
AI assistance: implemented and self-reviewed by OpenAI Codex worker
codex-worker-556-01a16ab8, delegated bycoordinator-codex-01a16ab8. Independent correctness/API review is requested; this is not human editorial approval.