This directory contains configuration files for verifying the proofs in Cryptids/
and BusyBeaver/ against the self-contained challenge specifications in
Challenge.lean and BusyBeaverChallenge.lean
using leanprover/comparator.
Challenge.leanimports only Mathlib and Lean core (Lean.Elab.Term), defines all conjecture-checking baseline and candidate machines (referenceandcandidate), states the target mathematical propositions (GoldbachConjecture,MatiyasevichRiemannCounterexample,ZFProvable,WadeZFProvable, etc.), and states all 22 target state-reduction, equivalence, and semantics theorems withsorry.BusyBeaverChallenge.leanimports only Mathlib and Lean core (Lean.Elab.Term), defines the sharedBusyBeaverPost-Turing execution model, acceleratedTapePatternSet,StackPatternSet, and Collatz-like acceleration semantics (IsClosedPatternSet,HasCollatzReduction,IsClosedStackPatternSet,HasStackedCollatzReduction,IsValidAcceleration,CollatzHalts,IsHalt,IsNotHalt), andload_rle_machine%once, and states all 299BB(6)andBB(3, 3)holdout theorems (is_closed_pattern_set/is_closed_stack_pattern_set,has_collatz_reduction/has_stacked_collatz_reduction,is_valid_acceleration,isHalt_iff_acceleration,is_valid_highLevel_acceleration,isHalt_iff_highLevel_acceleration, andacceleration_iff_highLevel_accelerationacross the 59 machines) withsorry.
Comparator exports both the challenge module (Challenge or BusyBeaverChallenge) and the
solution module (Cryptids or BusyBeaver) via leanexport, verifying in a Bubblewrap sandbox
that:
- Every target theorem and all of its transitive definition dependencies match identically between the challenge module and the solution module.
- Only the permitted axioms for that configuration are used:
["propext", "Quot.sound"](strictly constructive — noClassical.choice): enforced onconstructive.json,goldbach_21.json,zf_380.json, andriemann_104.json, covering all three ZF machine-to-proof-search equivalences (halts_zf393_iff_zfInconsistent,Zf380.Semantics.halts_candidate_iff_zfInconsistent,halts_zf432_iff_wadeZFInconsistent), the direct simulation reductions (Goldbach21,Zf380,Riemann104), and all fourcandidate_fewer_statestheorems (10 theorems total). DisallowingClassical.choiceblocks classicalCon(ZF)shortcuts (not_zfInconsistentinZFSet.{0}orClassical.em+digama0/ConZF) forHalts M ↔ ZFInconsistent, though Lean's constructive type theory remains stronger thanPA/ZFand does not by itself internalize the reduction insidePA/ZF(seeCryptids/Semantics/README.md).["propext", "Quot.sound", "Classical.choice"]: allowed inall.json,busy_beaver.json, and the classical model-theoretic / arithmetic-stage / analytic configs (zf_393.json,zf_semantics.json,goldbach_semantics.json,riemann_95.json,riemann_120.json,riemann_semantics.json).
- The exported proof terms are accepted by the Lean default kernel.
| Config File | Challenge Module | Solution Module | Permitted Axioms | Verified Theorems |
|---|---|---|---|---|
constructive.json |
Challenge |
Cryptids |
propext, Quot.sound |
All 10 constructive theorems: all 3 ZF proof-search equivalences (zf_393, zf_380, zf_432), direct state reductions (Goldbach21, Zf380, Riemann104), and Riemann95.candidate_fewer_states |
all.json |
Challenge |
Cryptids |
propext, Quot.sound, Classical.choice |
All 22 conjecture-checking state-reduction, equivalence, and semantics theorems |
busy_beaver.json |
BusyBeaverChallenge |
BusyBeaver |
propext, Quot.sound, Classical.choice |
All 299 BB(6) and BB(3, 3) holdout Level A and Level B theorems (is_closed_pattern_set, has_collatz_reduction, is_closed_stack_pattern_set, has_stacked_collatz_reduction, is_valid_acceleration, isHalt_iff_acceleration, is_valid_highLevel_acceleration, isHalt_iff_highLevel_acceleration, acceleration_iff_highLevel_acceleration) |
goldbach_21.json |
Challenge |
Cryptids.Goldbach21 |
propext, Quot.sound |
candidate_fewer_states, candidate_equivalent |
goldbach_semantics.json |
Challenge |
Cryptids.Semantics.Goldbach |
propext, Quot.sound, Classical.choice |
halts_reference_iff_not_goldbach, halts_candidate_iff_not_goldbach |
zf_380.json |
Challenge |
Cryptids.Zf380 |
propext, Quot.sound |
candidate_fewer_states, candidate_equivalent |
zf_393.json |
Challenge |
Cryptids.Semantics.Zf393 |
propext, Quot.sound, Classical.choice |
halts_zf393_iff_zfInconsistent, not_halts_zf393, halts_candidate_iff_zfInconsistent, not_halts_candidate |
zf_semantics.json |
Challenge |
Cryptids.Semantics.Zf |
propext, Quot.sound, Classical.choice |
zfProvable_sound_zfSet, not_zfInconsistent, halts_zf432_iff_wadeZFInconsistent |
riemann_104.json |
Challenge |
Cryptids.Riemann104 |
propext, Quot.sound |
candidate_fewer_states, candidate_equivalent |
riemann_95.json |
Challenge |
Cryptids.Semantics.Riemann95 |
propext, Quot.sound, Classical.choice |
candidate_fewer_states, candidate_equivalent, halts_candidate_iff_not_riemannHypothesis |
riemann_120.json |
Challenge |
Cryptids.Semantics.Riemann120 |
propext, Quot.sound, Classical.choice |
halts_riemann120_iff_not_riemannHypothesis, halts_candidate_iff_not_riemannHypothesis |
riemann_semantics.json |
Challenge |
Cryptids.Semantics.Riemann |
propext, Quot.sound, Classical.choice |
halts_riemann744_iff_exists_counterexample, halts_riemann744_iff_not_riemannHypothesis |
From the repository root (with bwrap installed):
lake exe cache get
lake comparator --config comparator/constructive.json
lake comparator --config comparator/all.json
lake comparator --config comparator/busy_beaver.json