Repository navigation
Description
An independent review of the 68 commits merged to main on 2026-11-06 (through 242879e) found no unsound definitions, vacuous headline results, misattributed sources, or sorry/axiom/native_decide. The medium findings were stale documentation, status errors and duplicated proofs; they were fixed in #2831, #2832, #2833, #2834, #2835, #2836 and #2840.
This issue tracks the follow-ups that were too broad for those PRs, plus small deduplications noticed along the way. Items marked (in progress) are being picked up now; the rest are open for anyone.
Duplicate proofs and certificates (in progress)
-
Cslib.intBin_pow_polytime(PolyTime/ParityFactorEval.lean) restates the publicTuring.MultiTapeTM.ComputableInPolyTime.intBin_pow'. Private copies of the integer add/natCast/pow certificates also remain inExchangeReplacement.lean,BoundedIncidenceStepCert.leanandIntervalCount/PolyTime.lean. -
computableInPolyTime_{insertSorted,sortDedup,equationVars}inPolyTime/CNF/SparsePolyCompile.leanare duplicated as privatebi_*lemmas inBooleanAnalysis/BoundedIncidenceCounter.lean. -
length_frame_appendis duplicated inKernelTakeDropUnary.leanandKernelZipTransducer.lean.producerBank_injectiveis duplicated inRecordProduct/Entry.leanandRecordBoxProduct/Entry.lean. -
PRG/NextBit.leanhas a private copy ofPMF.bind_uniformOfFintype_update.CollisionResistantToOneWay.leankeeps a privatetsum_uniformList_mul_lethat belongs besideCslib.BitString.uniformList_apply_le.
API completion (in progress)
- State the
zipFoldcertificates on(l.zipWithLeft (f p) r).reduceOptionand removeTuring.MultiTapeTM.zipFold(refactor(Computability): finish recent frame, option-map and TM2 migrations #2840 addedzipFold_eq_zipWithLeft). - Move
FixedPrime.window_monotoSchonhage/Callable/Bounds.leanas aCallableProduct.windowSizemonotonicity lemma, and retireFixedPrime/Window.lean. - Move
Paillier.totient_sqand the generalZMod (N ^ 2)lemmas out of the crypto namespace into small Foundations modules.
Placement and design (open)
- The
liftNet/liftAdversarysimp API lives inUC/DummyAdversary.lean. It would sit better besideUC/Execution.lean, andMachine.closeProgrambelongs in the probabilistic-oracle layer. -
factoringGame/FactoringHard(RabinFactoring.lean) accept only Blum-modulus generators. A generic factoring assumption would also serveRSADesc/ModulusDesc. - Extract the set-partition block-count API and the
Finite (Setoid α)instance fromSetPartition/JoinMatrix.leanintoSetPartition/Basic.lean. - Add a public
IsAddFundamentalDomain↔AddSubgroup.opconversion for lattices. It is currently private inLattice/QuotientMeasure.leanand copied in a test. - The private degree-calculus
encList/encDPilemmas inTM2/Degree.leandeserve public homes beside their polynomial-time counterparts.natAbs_workTapePos_runFrom_le_of_runsInSpace(WordRAMOfTuring/Space.lean) is a general multi-tape lemma, restricted toBoolwithout need. - Arithmetic and Boolean circuit evaluation repeat the same step/evaluation poly-time plumbing (
Circuit/Arithmetic/EvaluationTime.leanvsCircuit/Boolean/EvaluationTime.lean). -
FiatShamirNIZKstill hides its failure output behindClassical.arbitrary Xand[Nonempty X], which refactor(crypto): make Fiat-Shamir reduction failure output explicit #2791 removed from the signature reduction. - The OT-commitment ideal receipt in
CompleteSender.leanis computed by the same expression in both laws. An independent functionality-side receipt would make the coupling meaningful (see doc(crypto): correct Module-LWE, UC and sampling status notes #2831). - About 270
simp only [... length_encPair ...]; omegasites could useenc_len(refactor(Encodings): close encoded length bounds with enc_len #2224 migrated only some). This overlaps plan(automation): apply the #2184 proof simplifications across the library #2209.
Full per-commit review reports are not public. Each item above names the declarations and files involved.
AI assistance: Jetski coordinator session 83ab9013 (review by independent agents; fixes by Gemini 4 Carbon workers, reviewed by separate agents).
Activity
SamuelSchlesinger commentedon Nov 7, 2026
Claiming two of the open placement items for the Claude lane (
coordinator-claude-f9636ab4), one small PR each:Finite (Setoid α)instance, moved out ofSetPartition/JoinMatrix.leanintoSetPartition/Basic.lean;IsAddFundamentalDomain↔L.toAddSubgroup.opconversion, replacing the privatefundamentalDomain_of_opinLattice/QuotientMeasure.leanand its copy inComplexityTests/DiscreteGaussianShiftBounds.lean.The other items are untouched.
SamuelSchlesinger commentedon Nov 7, 2026
Two of the open placement items have landed:
Finite (Setoid α)instance intoSetPartition/Basic.lean. Mathlib has neither, so both stay. Mathlib'sSetoid.map_of_lereplaced the privatefactor_surjective.MeasureTheory.isAddFundamentalDomain_op_ifffor subgroups of any commutative group. Only commutativity is needed, not the lattice or Haar assumptions. It replaces the privatefundamentalDomain_of_opand the test copy.A possible further move, not claimed:
mu_top,sum_descFactorial_blocksandsum_derivCoeff_blocksinJoinMatrix.leanare also general partition-lattice facts and could live in aSetPartition/Mobius.lean. —coordinator-claude-f9636ab4refactor(Foundations): move set-partition block counts to SetPartitio…
refactor(Foundations): public fundamental-domain conversion for oppos…