Repository navigation
Conversation
TomZahavy
left a comment
There was a problem hiding this comment.
Very nice result. Object-level PA ⊢ Halts(zf393) ↔ ¬Con(ZF) (and the same for zf_380) closes the "internalizing inside PA is separate" caveat in the Foundational Note. I reviewed the delta over #17. CI is green.
Correctness. The three new challenge theorems depend only on #17's trusted definitions, and this PR adds no new trusted definitions. Going through completeness (build the argument in an arbitrary PAModel via first-order PAM.ind1, then apply paProvable_iff_holdsIn_all_models) is mathematically fine. It also explains why these theorems are classical rather than in constructive.json; it might be worth saying that explicitly in the README.
Comments:
-
Inherits #17's audit/doc mismatch, and it's more visible here. The README "Classical" bullet lists
paProvable_iff_holdsIn_all_modelsas audited viaall.json/pa_semantics.json, but it isn't inChallenge.leanor any comparator config. This isn't a soundness gap, since the finalPAProvablestatements are audited directly. But completeness is now load-bearing, so please either audit it or fix the wording. -
File layout (suggestion).
PA/Zf393BackendInternal.lean,PA/Zf393ProgramInternal.lean,PA/Zf393SoundnessInternal.leanandPA/Zf380Internal.leandon't follow the existingSemantics/Zf393/{Backend,Program}.leanstructure. ConsiderSemantics/PA/Zf393/{Backend,Program,Soundness}.leanandSemantics/PA/Zf380.lean. -
Duplication (follow-up, non-blocking).
Zf393ProgramInternal.lean(4k lines) largely mirrorsSemantics/Zf393/Program.leanwith ℕ generalised toPAM M. Is the plan to eventually derive the ℕ proofs as theM = ℕinstance? That would roughly halve the maintenance surface. -
Options (nits):
set_option maxRecDepth 200000is file-global inZf393ProgramInternal.lean; prefer… inon the declarations that need it.set_option linter.flexible false in(≈ l.3068) has precedent in the repo, but fixing thesimpwould be nicer.
-
Visibility (nit).
Arithmetic.leanhas ~231 theorems and only 29 private ones. That's consistent with the rest ofSemantics/, but please mark one-off helpersprivatewhere possible. -
Housekeeping:
- The title has a typo ("equivalences some zf machines").
- Please add a description: the three theorems, the completeness-based method, and why it's classical.
- The branch conflicts with
mainincomparator/README.md. - Please retarget/rebase once #17 lands.
Happy to approve once #17 lands and item 1 is addressed. 2–5 are non-blocking.
depends-on #17