Coordination and integration decisions not already recorded in source.
The authoritative records are:
- lakefile.toml, lake-manifest.json and lean-toolchain for pinned versions;
- each module's
-- upstream:markers for candidate, submitted, vendored or local-only status, including PR numbers and copied revisions; markers can also identify blocks within a module; - Complexity.lean for the module inventory.
Use python3 scripts/upstream_sync.py --offline to list copied dependencies, and
python3 scripts/upstream_sync.py to compare recorded revisions and the base pin with upstream.
It checks head revisions, not source equality or unrecorded overlaps. Follow
AGENTS.md for synchronization and removal, and
CONTRIBUTING.md for preparing an upstream worktree.
Do not add a ledger row for an ordinary candidate or repeat its source marker here.
-
Machine calculus. Build on Christian Reitwiessner's
crei/tidy-universalbranch and its component PRs, including #1111, #1112 and #1138. Local-- vendored:comments identify required adaptations. The branch'sIterateWhilesupersedes the version from #1112. Coordinate the shared encodings and calculus through CSLib issue #611, including theTapeEncodableinterface proposed in #590. Check #767 and its split #768 before adding space-to-time inclusions or overlapping class definitions; reconcile the local encoded, plain-machine definitions ofP/NPwith itsDTIME-based language classes. The localDSPACE,L,DTIMEandEXP(Classes/Space/Basic,Classes/LogSpace,Classes/Time,Classes/EXP) use #767's shapes over encoded instances; once #767 lands, derive them from its language-indexed classes rather than keeping parallel definitions. The localPSPACEretains its instance-dependent polynomial space bound;mem_PSPACE_iff_exists_mem_DSPACEinClasses/Spaceproves its equivalence to the local union ofDSPACE (n ^ k). A bridge to #767's language-indexed classes is still separate. Time and space constructibility are inClasses/Constructible, independent of hierarchy theorems. Selected-tape specifications formerly inCombinators/StreamFoldandEncodings/MultiPassnow live beside the plumbing operations; preserve their exact space bounds when resynchronizing the copied files. The step-machine layer (StepMachine/*,Encodings/StepMachine*,Combinators/StepMachineand their helpers) and the blocks marked@9cce4cc7in older copies come from a later local rewrite of the branch that is not yet published;scripts/upstream_sync.pyreports them against the published head until it is. The rest of the branch is still copied at@7f7c0696. -
Universal simulation. The local universal interpreter preserves Christian Reitwiessner’s description format and execution semantics. Its resource certificates now separate transition-description size and binary input-head length from the copied configuration;
Universal/Inputuses the existing native streaming fold to emit a selected input symbol without repeatedly copying list tails. Retain these local improvements when synchronizingUniversal/Complexity,Boundand their resource consumers withcrei/tidy-universal. This is an extension of the existing interpreter, not a buffered Hennie–Stearns backend. -
Polynomial bounds. The tidy calculus's size-parameterized
PolyBoundedadapts CSLib'sPolynomiallyBoundedand shares its closure API. Coordinate this adaptation with the tidy branch; preserve it when resynchronizing the vendored files.Foundations/Data/Nat/PolynomialBound/Closure.leanis the proposed next submission following #1067. -
Mathlib TM2.
Computability/Machines/Turing/TM2/*certifies Mathlib's stack-machine statements directly through the tidy calculus; it does not depend on the TM0 simulator in Complexitylib PR #72. Its dependent finite-table helpers (Encodings/DPiandComplexity/PolyTime/DPiunderMachines/Turing/MultiTape) extend the existing table API. Coordinate these helpers with the machine-calculus work above before upstreaming. The forward bridges preserve polynomial time and transfer terminating polynomial-stack-space computations, using configuration counting and binary-clock iteration for space. The reverse compiler inTM2/Reverseconstructs a finite-alphabetFinTM2, including canonicalhaltListcleanup, with linear time overhead and total stack length at most input length plus native work space plus output length.Reverse/Transferproves polynomial-time and PSPACE equivalence under the original binary encodings;PolyTime/Listsupplies the word conversions andTM2/Recodingtransfers TM2 computations across them without decoding the typed embeddings. These comparisons do not preserve sublinear work-space conventions. -
Probabilistic programs. Coordinate the shared
PFunctor.FreeMAPI with #1086–#1089 and typed oracles with #1129. The copied PMF blocks have their own markers and removal instructions in Probability/PMF.lean; remove only the merged blocks. -
Security games. The #1068 negligible-bound base is now supplied by the cslib pin.
Crypto/Negligible.leanimports it and retains the #1069fun_propregistrations, with pointwise addition/multiplication wrappers needed by lambda-shaped automation clients; remove the submitted registrations when #1069 lands. The candidate public helpersNegligible.add_funandNegligible.mul_funremain until upstream declarations preserve those full names.Crypto/Game.leanretains the unmerged #1069 security-game API. Its two local pointwise/common-mixture advantage bounds (#802) must also be retained when syncing or removing that copy. The probability/game stack copies the October 23 upstream refresh (#1062, #1069, #1070, #1072 and #1129).Crypto.negligible_iffand the negligible closure lemmas now come from the base pin; local PMF additions and negligible automation remain alongside the copied portions. Exact revisions are recorded in their source markers. The following hybrid layer is tracked by its own marker inCrypto/Game/Hybrid.lean.Crypto/Game/Statistical.leancopies only the Boolean equality from #1072; its remaining declarations require the arbitrary-type metric replacement in #1065. Until that is in the base pin, extraction bounds quantify over every randomized test of the full encoded output, using the existing finite-PMF metric andGame.Indistinguishablewith all tests admissible. Coordinate the finite PRG API and its distribution-based refactor in #1071 before adaptingCrypto/Primitives/PRG/Game. -
Query complexity. Numerical measures and certificates use the merged
Computability/QueryComplexityAPI directly, onFin n/Bool. Generic decision trees, restrictions and Fourier analysis retain arbitrary coordinate/output types; sensitivity lower bounds there use explicit coordinate sets. The restriction representations agree definitionally, withQueryComplexity/Restrictionconnecting filling toForces. Align the remaining tree representation inComputability/DecisionTreewith #925 and coordinate its certificate follow-upD ≤ C₀ C₁; no second numerical measure API is retained. -
Word RAM.
Computability/WordRAM/*adapt the bounded-word RAM of the Lean formalization accompanying the tromino undecidability paper,edemaine/lean-trominoes@6d5b36c1 (Apache-2.0), which is not a CSLib branch. The adapted files retain the source's copyright notice (lean-trominoes contributors) and credit Erik Demaine alongside the adaptation author in theirAuthors:lines; coordinate follow-up submissions and attribution with him, alongside the CSLib algorithm-model work: Shreyas Srinivas's query-combinator programs (#685, and the register word-RAM models in his Algolean repository) and the merged query framework (#401), which count only lifted queries. A deeply embedded machine beneath such front ends answers, for the RAM, the objection that pure Lean computation is uncharged. The module docstrings record the deviations from the source. The operations form a basis (WordRAM/Basis) overCslib.Circuits.Signature, and translation between bases (WordRAM/MapOp) uses the localCircuit/SignatureHommaps of signatures, so these files depend on that candidate. The unbounded-registerComputability/RAM, inspired by Cook–Reckhow and supporting both unit and logarithmic costs, remains a separate candidate. -
Generic RAM values.
Computability/GenericRAM/*supplies a shared finite-register RAM interpreter with configurable value, address, configuration and literal types, operation/test signatures, and fault policies.WordRAM/Genericembeds every existing word-operation basis with exact step, fault, output and instruction-count preservation, including arbitrary initial states; no existing public WordRAM definition changes. The signed instance follows the lean-trominoes signed range and its address, move, halt and program-counter checks, retaining its source credit. The algebraic instances use tagged natural words and exact field values: only natural words can address memory. Real comparison is mathematical, noncomputable semantics; prime-field interpretation is executable. The real variant follows the separation of words and reals in Erickson–van der Hoog–Miltzow, but uses finite named registers, a tagged memory and checked word arithmetic. These are explicit model choices, not a proved equivalence with their two-array model. Coordinate this common core with the algorithm-model work above; the existing Cook–Reckhow-inspired RAM and its logarithmic cost remain separate.GenericRAM/Nativeseparately packages existing native TMComputableTidilyInOwitnesses for encoded scalar primitives, with caller-selected configuration encoding and unrestricted input-dependent bounds. Its forgetful bridge reusesIsComputable; polynomiality is a separate bound property.GenericRAM/Native/Natsupplies a checked bounded-natural addition model;WordRAM/Nativesupplies complete polynomial-timeNativePrimitivesbundles forBasis.standard,Basis.additive,Basis.arithmetic, andBasis.exact(plus restricted sub-bases and homomorphic preimages) with unary width and binary operands (#489). Both reuse Christian Reitwiessner's native arithmetic/encoding calculus.GenericRAM/Simulation/{Finite,Turing,Run}combine these per-symbol certificates with sparse memory and finite control to simulate single steps and clocked multi-step runs of any fixed generic-RAM program on native multitape Turing machines (Cslib.GenericRAM.FiniteState.transport_inO,Cslib.GenericRAM.FiniteState.transport_polyTimeandCslib.GenericRAM.FiniteState.transport_polyTime_of_le_const).transport_inOis parameterized by explicit time and space bounds;transport_polyTimeneeds a polynomial step bound (hStepsBound) and a polynomial bound on the encoded intermediate run results (hOutLen);transport_polyTime_of_le_constderives both from a constant step bound. Uniform arbitrary-program dispatch and charged configuration selection remain separate. -
Signed programs on unsigned words.
WordRAM/Signed/*reuseGenericRAM.Signed's range, arithmetic and interpreter. The sign-and-magnitude encoding needs one extra unsigned bit; the arithmetic blocks use two.State,Operations,CompileandInputextend them to complete programs over the full five-operation signed model (constants, copies, addition, subtraction, multiplication, Euclidean division/remainder with Lean's total zero-divisor conventions, memory, signed tests, jumps and halt). Successful source runs oftinstructions transfer to one fixed unsigned program at widthw + 2within32*t + 5instructions, including the five-instruction length header conversion and the final halt. Each source integer uses one target word, source memory addresses are unchanged, nine scratch registers precede the source register bank, and each source instruction occupies sixty-four target code slots. Code labels need not fit a data word in the target model. Run-prefix theorems preserve the complete source memory and register bank. This is forward correctness, not reflection of source faults; transfer from Anthropic's modular signed machine and its 3SUM/APSP algorithms remains separate. -
Direct 3SUM adaptation.
Algorithms/ThreeSum/Convolution.leanadapts the explicit Convolution-3SUM to Exact Triangle correctness reduction from Anthropic'sformal-math@16a5ce41304fcdaea4e0be7c132e1c361dc26da5,Sec3/Theorem21a/Convolution.lean. Its reduction uses the arbitrary-matrix predicate inAlgorithms/ExactTriangle/Defs.lean, shared with future Exact Triangle solvers. The three weight matrices use the original formulas; an explicit nonnegative magnitude bound also handles empty input. The native builder inAlgorithms/WordRAM/ThreeSum/{Cell,Fill,Memory}.leanextends the one-weight kernel with index/address calculations and the complete matrix loop. Given its arguments in registers, it writes one instance in at most131*t² + 5instructions at widthw + 2, excluding the halt; its theorem identifies the three encoded matrices and preserves the input. Layout, signed index/filler bounds and target address bounds are explicit. The existing signed and unsigned APIs were reused; no source machine or separate run semantics were copied.Algorithms/WordRAM/ThreeSum/Host/adds the complete charged native host: ordinary header initialization, polynomial magnitude computation, square root, consecutive matrix layout, all2tinstances and a finite solver program in a disjoint register bank. Its initialized run theorem connects the actual pre-halt state to the Convolution-3SUM answer and preserves the input. The host's source-width threshold is(20κ+125)clog₂(N+2); signed kernels use target widthw+2. This remains conditional on the supplied solver's native execution/correctness/frame theorem; it does not establish a fast solver. Native Chan–He preprocessing, fast Exact Triangle and full input/time/width/asymptotic composition remain in #1394, including the improved Section 4 route needed for the published exponent 1.9992. Anthropic's copyright and attribution are retained; the native proofs and representation choices are local.Algorithms/ThreeSum/ThreeSets.leanandArrayPacking.leanprovide the generic distinct-position frontend and three-array packing.Algorithms/ThreeSum/ChanHe/now adapts the core mathematical reduction: minimum-prime searches, collision/heavy-element bounds, light-element arrays, bounded ternary recursion and composition with the frontend. At polynomial magnitudes it gives explicit length, count and magnitude bounds;scanPairscounts candidate-prime/element pairs and is not a charged running time. Generic finite-average and prime-counting lemmas live in Foundations. See milestone #1435.Algorithms/ExactTriangle/Lopsided.leanadapts the finite unweighted lopsided query/counting interface from the same pin'sSec3/MatrixLanguage.lean: arbitrary-injection zero padding, common-neighbor counts as product entries, detection, the zero/one converse, and signed products from4 * β²count instances with the original queried edges. Its digit identities live inFoundations/Data/Matrix/IntegerBits.lean, reuse Mathlib's pointwise positive/negative parts, with descriptive lemmas inCslib.Matrix. The scalar magnitude-bit bound, including zero, lives inFoundations/Data/Int/LogBounds.lean. Count answers useSet.EqOn; detection consumes a direct iff on queried edges. No additional weighted-triangle predicate or source machine is introduced. This is the mathematical interface milestone #1438, with no sparsity assumption, preprocessing/time claim or solver.Algorithms/ExactTriangle/{Weights,Hashing}.leannow adapts the modular counting/coefficient identities, minimum-count prime and uniform false-positive bound fromSec3/Theorem17/Hashing.lean, using supplied matrices and the existing decision predicate. The application-independentNat.sqrtPrimeWindowAPI lives inFoundations/NumberTheory/SqrtPrimeWindow.lean; its integer-square characterization supports native enumeration, and splitting and witness recovery reuse it. The quotient/coefficient API lives inFoundations/RingTheory/CyclicIntRing.lean; the uniform all-window prime-count bound lives inFoundations/NumberTheory/PrimeWindow.lean, retaining the source credit to Mathlib, Patrick Stevens and Bolton Bailey. These are mathematical statements, not native instructions or an assumed solver. See #1442.Algorithms/ExactTriangle/{Splitting,Witnesses}.leanadapts the complete finite splitting and witness recovery component (#1447), using the existing matrices, lopsided graph andSet.EqOnanswer API. Computable integer parameters retain the source's exact real floor/ceiling specifications through checked bridges.Algorithms/MatrixMultiplication/Schonhage/adapts the tensor-recursion core from the same pin'sSec2/{Lemma6,Recursion,Lemma7_8,Lemma10}.lean: the ten-term polynomial identity with explicit error, full evaluation, shared encodings, pruned values, visited leaves and passed-set totals. Its pure finite recursion traces are not native machine semantics or charged instruction costs. The zero-depth empty-query root exception is explicit, with an unconditional root-or-leaf API. See #1459. The complete finite thin-product component (#1463) adaptsSec2/{Levels,Lemma9,Tiling,Orders,Lemma11,Theorem5}and needed finite magnitude bounds. Layouts contain only indexing choices, whose existence is proved; sparse bounds are derived from exact contributing-leaf counts. Generic function-position counts, ordered gluing, binomial and finite-sum bounds live in small Foundations modules. MathlibFinset.orderEmbOfFinindexes both a level set and its complement, andFinset.piecewiserestricts answers. No source machine, problem-statement universe or solver/time hypothesis is imported. The existing signed and unsigned APIs were reused; no source machine or separate run semantics were copied. Tensor/sparse query programs, the full reduction host, native Chan–He preprocessing, fast Exact Triangle and full input/time/width/asymptotic composition remain in #1394, including the improved Section 4 route needed for the published exponent 1.9992. Anthropic's copyright and attribution are retained; the native proofs and representation choices are local. -
Typed RAM upstream core. CSLib #1158 at
beea60a15eddc91d93e92fa5af9fb965c351d0d5proposesCslib/Computability/Machines/RAM/Basic.lean, in namespaceCslib.RAM.Typed. This redesigns the local WordRAM/GenericRAM core with a register and word-addressed memory bank per sort,Fin (2 ^ w)words, and absorbing halt/fault states. A halt retains the data without choosing an output register;RelSeriesrun paths permit terminal padding. Before migrating local clients, bridge their operation bases, input/output conventions and exact halting costs. Algorithms, interpretation transfer, native simulations and time-class APIs remain separate follow-ups. The existing local modules remain candidates, not copies of this submission. -
Encoded sparse memory.
Computability/GenericRAM/SparseMemory/*reuses Mathlib'sAListwith constant value type and the existing nativeComputableTidilyInOequality, find and filter routines. Its certificates expose actual native TM witnesses, parameterized time/space bounds, and polynomial-time corollaries, and feed the fixed-program step and whole-run simulators inGenericRAM/Simulation/{Turing,Run}(#298, #292). -
Stateful algorithms prototype.
Foundations/Semantics/Stateful/*reuses Quang Dao's mergedPFunctor.FreeMfor adaptive clients and substitution, adding persistent representation simulation, interface composition, semantic Hoare rules and separate native-resource certificates. Its queue and reset-and-replay constructions deliberately count backend calls; arbitrary pure continuations do not have machine-time certificates.CostHoareadds client operation-cost contracts and separate method-budget composition. ThestatefulAesop rules support these contracts.WordRAM/Controlleradds fixed-code client refinements with charged preparation, control flow and final halt; the adaptive stack example constructs its empty representation from the standard input.WordRAM/Functiongives separate nonuniform and uniform RAM function-time predicates, with named-certificate reuse bypolytime. Arbitrary continuation synthesis, iterative clients and a Turing-machine simulation remain open.Foundations/Data/OrderedSetandFoundations/Semantics/Stateful/OrderedSetprovide neutral optional-minimum contracts, a typed finite-set interface and adaptive clients, with no tree or cost dependency. Bounded-key implementations may specialize insertion admissibility.Algorithms/Lean/SearchTree/*reuses Mathlib'sBinaryTree, height and node count for an unbalanced ordered-set realization. Finite-set behavior, strict invariants and height-bounded node visits are proved, including for the pure deletion operationerase; allocation, comparison implementation and client computation are excluded from that cost model. It is not a balanced tree or machine-time certificate.WordRAM/Dynamicseparately connects fixed bounded-word operation programs and faithful memory transcripts to those contracts. The direct shared-heap queue uses the existing FIFO operation signature and native operation traces, with a hidden two-stack representation, a concrete-register potential, framed storage, and separately charged initialization. Its2 * capacityreservation is explicit; external client computation and argument delivery are not charged by the operation-history bound. Coordinate placement and overlap with Srinivas's #685 and the merged #401 (Algorithms/Lean/Query) before upstream submission; #685 is not copied here. This is a prototype of composition and refinement, not a replacement for their query models or a general cell-probe lower-bound semantics. -
Earlier review requests. The withdrawn #1099–#1101 requested abstract word encodings and textbook sources for FP/poly, P/poly and their machine simulation. The withdrawn #869 and #871–#875 requested composition above configuration level; use
TransformsTapes-style specs.
These are coordination references, not a second record of live PR status. Check the relevant upstream discussion before starting or submitting overlapping work.
Paths below omit Complexity/ and .lean. The default CSLib destination mirrors the source
path. A destination recorded in a source marker takes precedence; the alternatives below need
agreement during upstream review.
| Local module or declarations | Integration note |
|---|---|
Computability/Machines/Turing/MultiTape/Encodings/StreamFold |
The candidate streamFold_sum generalizes the vendored proof; streamFold is its compatibility corollary. When resynchronizing or removing the copy, preserve the summed contract and shared proof until upstream includes them. |
Computability/Machines/Turing/MultiTape/Encodings/Length |
Add to the tidy branch's Encodings/List. |
Computability/Machines/Turing/MultiTape/TapeLemmas |
exists_visitedByTapeHead_eq_Icc and workTapes_runFrom_eq_of_notMem_visitedByTapeHead were relocated from Plumbing/Shadow (#316); upstream with TapeLemmas. |
Computability/Machines/Turing/MultiTape/Configuration |
Turing.Action.instFinite was relocated from Machine/ChoiceTable (#354); place beside Action in upstream Configuration. |
Computability/Machines/Turing/MultiTape/Plumbing/ExtendTapesView |
Derive the old tapeEmb/noTapes lemmas from viewCfg; oneTapeCfg i = viewCfg (tapeEmb i) by rfl. |
Computability/Machines/Turing/MultiTape/Probabilistic/IterateWhile |
Its private tape helpers parallel the vendored deterministic Combinators/IterateWhile; share them once the tidy branch exposes them. |
Computability/Machines/Turing/MultiTape/Plumbing/TransformsTapes |
runFrom_nop_withState was relocated from Combinators/TidyNormalForm (#354); place beside runFrom_nop_one in upstream Plumbing/TransformsTapes. |
Computability/Machines/Turing/MultiTape/Encodings/Decoder |
Total decoders with tidy certificates; add to the tidy branch's Encodings beside Option/Pair/List. |
Computability/Machines/Turing/MultiTape/Encodings/NatPower |
Addition to the tidy branch's Encodings/Nat: encNat (2 ^ n) and its linear clock certificate. |
Computability/Circuit/{Unfolding,MapOp}, Computability/Circuit/Encoding/MapOp |
Consider integrating into Circuit/Formula, Circuit/Program, and Circuit/Encoding, respectively. |
Computability/Circuit/Boolean/FirstOrder |
Consider a descriptive-complexity directory. |
Foundations/Data/BitString/{Agree,Block} |
Add to CSLib's Foundations/Data/BitString. |
Foundations/Data/List/{Fold,Lookup,Counting,Append} |
Fold invariants, lookup and register-file bounds, predicate counts, and append identities including unary headers; Basic reexports these topics. Consider Mathlib's Data/List/GetD and Data/List/Basic. |
Foundations/Relation/RelatesWithinSteps |
Bounded reachability helpers; consider Mathlib's Logic/Relation. |
Foundations/BooleanAnalysis/Fourier |
Consider Mathlib beside Analysis/Fourier/FiniteAbelian. |
Foundations/BooleanAnalysis/{Bernoulli,CoordinateSampling,Fibers,HarmonicTransform,LightPatterns,MirrorSets}, Foundations/Analysis/HarmonicMean |
Consider Mathlib probability APIs; generic finite-type harmonicMean is split into Foundations/Analysis/HarmonicMean (#317). |
Foundations/BooleanAnalysis/HadamardTester |
Consider the PCP hierarchy. |
Foundations/Combinatorics/CentralBinomial |
Consider Mathlib's Data/Nat/Choose/Central (Nat.centralBinom_sq_mul_le) and Combinatorics/Choose. |
Foundations/Combinatorics/{FiniteCover,Hoeffding,Hypergeometric,PowersetTail,Sunflower} |
Consider Mathlib combinatorics; probabilistic-method lemmas belong near Combinatorics/Probabilistic. |
Foundations/Data/Finset/Expect |
Product-type expectation helpers extracted from Foundations/Combinatorics/Expander/Products (#317); Mathlib candidates. |
Foundations/Data/Finset/Markov |
Mathlib candidate: Algebra/Order/BigOperators/Group/Finset (Finset.card_filter_mul_le_sum, Finset.mul_card_filter_le_sum). |
Foundations/Data/Finset/OrderGlue |
Follow-up to #1496: rename the generic forall_level_iff, exists_innerLevel, outerLevel_notMem and filter_glue using order-embedding/complement terminology (for example forall_iff_orderEmb_and_compl), retaining this topic module. Migrate the concrete Schonhage/Levels and Schonhage/Batch clients together with the active native band-preparation client; defer that API migration until the latter is stable. |
Foundations/Data/Matrix/Permanent |
Mathlib candidate: Laplace expansion of the permanent along row and column 0, beside LinearAlgebra/Matrix/Permanent (mirroring Matrix.det_succ_row_zero). |
Foundations/LinearAlgebra/{Rank,Matrix/CutRank,Matrix/Lindsey} |
Mathlib candidates: LinearAlgebra/Dimension/LinearMap and LinearAlgebra/Matrix/Rank; placement of Lindsey's lemma needs agreement. |
Probability/PairwiseIndependentHash/Shift |
Consider integration into PairwiseIndependentHash. |
Probability/PairwiseIndependentHash/Toeplitz |
Move Matrix.toeplitz to Mathlib beside LinearAlgebra/Matrix/Circulant. |
Probability/ApproximateCounting/Relative |
Extract the natural-number root lemmas to Mathlib. |
Foundations/Data/Nat/Bits |
Nat.foldr_bit_bits is a candidate for Mathlib's Data/Nat/Bits; its local relocation is complete, but upstream integration is still pending. |
From 2110aa5a (2026-10-19), renaming, moving or removing a public declaration already on main
left a deprecated alias or theorem at the old full name; the sweep integrated at 7738dcea added
aliases for the names that changed before the rule existed and restored old binder orders where
they had changed. The library supports no downstream users yet, so #587 deleted every deprecated
declaration, and such changes now update all clients in this repository instead (AGENTS.md,
Proof hygiene). This list records earlier changes that had no mechanical successor.
- Signature changes under the old name.
GeneralizedGeography.decide_mem_eq_anybecame the more generalList.decide_mem_eq_any;RotationMap.le_edgeExpansion_of_spectralExpansion_letakesVimplicitly;PolyTimeCompletetakes{β}beforeC;PMF.iid_maphas the opposite orientation;eval_toUnbounded_atomsOfchanged its signature. - Removed or made private, without a successor of the same shape.
- Raz–Wigderson helpers:
bobAnswer_aliceMatching,aliceGraph_swap_swap,bobGraph_swap_swap,exists_run_oneRun,run_oneRun_of_disjointness,run_oneRun_of_mem. - Graph non-isomorphism:
PublicCoin.entry,entry_fin,value,value_fin(usematrixBit) andmem_orbit_self. - Communication:
PublicCoin.majorityandle_card_filter_ne_of_majority_ne(useBitString.strictMajorityOnandcard_filter_eq_le_half_of_strictMajorityOn_ne);ecomplexity_le_succ,IsFoolingSet.le_ecomplexity,PublicCoin.Solves.sq_mul_two_pow_le_four_pow. - Hamiltonian cycle:
SAT.rowLength,rowLength_sub_one,diamondArcs,literalArcs,diamondGraphArcs,diamondGraphVertices,mem_diamondGraphArcs,mem_diamondGraphVertices(useDiamond.graph);Diamond.Followsand its lemmas are private. SAT.SparseIndependentSet.mem_clauseEdgesandmem_variableEdges; the eightCookLevin.determined_of_mem_*lemmas (private);SharpSAT.getD_idxOf,getD_mem_of_isFirst,isFirst_idxOf;Crypto.le_length_encPreimagePrefixandUniformLearning.toOuterMeasure_uniformOfFintype_ne(private);UniformLearning.signVal_mul_chi_mem_Icc.- Landings of 2026-10-19 before the rule: about 25
AffineDispersernames; the natural-proofs predicatesIsNatural,IsLarge,IsUseful,IsCircuitTest,truthTableGeneratorand their lemmas, moved into theNaturalProofnamespace; 12 Ladner helpers (among themboolDecoder,natDecoder,ofBits,dropFalsesT);BakerGillSolovay.unaryLanguageand three lemmas.
- Raz–Wigderson helpers:
- Meaning strengthened under the old name. On 2026-10-20
Turing.MultiTapeNTM.DecidesInSpacestarted to require that every branch halt (Sipser, Definition 8.1), soNLandNPSPACEfollow the textbook convention. The former meaning isTuring.MultiTapeNTM.RecognizesInSpace(DecidesInSpace.recognizesInSpace); membership proofs now also need a per-instance halting bound, the second component ofDecidesInSpace(read back withDecidesInSpace.exists_runsInTime). - Word-RAM operation bases. On 2026-10-21 the word RAM became parametric in a basis of
operations.
Cslib.WordRAM.Op,Instr,ProgramandCodetake a basisBbefore the register count, andDecidableInTime,DecidableInTimeAt,LinearTimeandPolynomialTimetake it as their first explicit argument; the previous instruction set isCslib.WordRAM.Basis.standard. The constructorsOp.binandOp.widthbecame definitions of the same names over the standard basis, so construction is unchanged but pattern matching,Op.bin.injEqandOp.width.injEqare gone (match onOp.alu).Op,InstrandCodeno longer deriveRepr. The binderBofExec.loop,ExecWithin.loopandExecWithin.loop_invariantis nowT, and theB : Set βbinder of therecodelemmas inWordRAM/Timeis nowA'; named-argument callers must follow. On the same dateCslib.Circuits.Signature.HomandSignature.Hom.Preservesmoved, with their names unchanged, fromCircuit/MapOptoCircuit/SignatureHom, whichCircuit/MapOpimports. - Word-RAM bases with undefined values. On 2026-10-23
Cslib.WordRAM.Basis.interpbecameOption-valued, and an operation whose value isnonefaults. The fieldBasis.interp_mono_of_not_readsWidthreplacesBasis.interp_eq_of_not_readsWidth; it only keeps values that fit a word.Basis.Hom.preservesis now a field of its own, an equation per word size, operation and arguments, rather thanSignature.Hom.Preserves.StandardOp.eval,Basis.standard_interp_binandBasis.standard_interp_widthwrap their old values insome.Op.eval_alunow reads(B.interp w f (x.regs ∘ args)).bind (x.put w d): an undefined value propagates, and the word check follows for a defined one.Exec.aluandExecWithin.alutake the valuevand the hypothesisB.interp w f (x.regs ∘ args) = some v.Basis.standardkeeps its semantics; the newBasis.exactfaults onx - yfory > xand onx / 0andx % 0. - Renamed modules. On 2026-10-20
Circuit/Boolean/MassProduction/{Sharp,SharpParameters, SharpStatement}became…/{Fine,FineParameters,FineStatement}, with theirSharpdeclarations renamed toFine. Imports of the old module paths must be updated: a module stub would have no upstream counterpart, so none is kept. - Withdrawn results of 2026-10-22 (#372). On 2026-10-22 the maintainer withdrew results merged
that morning without adequate correctness review, deleting them without aliases. An alias would
keep exactly the names being withdrawn, and none of them had been submitted to cslib or used
downstream.
- Regev's reduction (
Crypto/Lattice/LWE.lean, whole module) and OT completeness (Crypto/Multiparty/ObliviousTransfer.lean, whole module). ACC0.lean:SymPlusCompilation,symPlusCompilation_zero,exists_fastSymPlusEval_of_symPlusCompilation,exists_mem_NEXP_notMem_ACC0,not_NEXP_subset_ACC0. The duplicateCslib.Circuits.Boolean.SigmaP_subset_EXPandSigmaP_subset_NEXPwere also deleted; useCslib.Complexity.SigmaP_subset_EXPandSigmaP_subset_NEXP, now inClasses/Inclusions.IdentityTesting.lean:kabanets_impagliazzo,kabanets_impagliazzo_of_EXP_subset_P,PermPITCertified,exists_certified_perm_family_of_PITInt_mem_P_of_mem_VP,NEXP_eq_EXP_of_NEXP_subset_SigmaP.Hastad.lean:hastadSATProband its three lemmas,hastadGraphSATProb, andhastadGraphSATProb_eq_add_hastadGraphLinearCorr. The SAT conjuncts were dropped fromhastadGraphProb_longCode_of_satisfies(nowgraphLinearProb_longCode_of_satisfies) andhastad_gapLabelCover_dichotomy(nowgapLabelCover_dichotomy).- The conditional sumset-extractor frontier layer (#391), whose extractor-family hypothesis was
never discharged:
Circuit/Frontier/Extractor.leanandComplexity/FrontierExtractor.lean(whole modules), and the decimal restatementseventually_456249_div_100000_sub_mul_lt_innerSize,circuitLowerBound_456249_div_100000,averageCaseBound_456249_div_100000,eventually_456249_div_100000_sub_mul_lt_innerSize_of_nondeterministicDecidesandeventually_456249_div_100000_sub_mul_lt_card_of_aggregates. Combine the exact-Ltheorems withGaussian.circuitCoefficient_ge_456249instead. - #392 withdrew Gentry's bootstrapping (
Crypto/Computational/Bootstrapping.leanandBootstrapping/{HomomorphicEval,KeyChain,KeyEncryption}.lean, whole modules), whoseBootstrappableinterface assumed the content of the theorem. From the Håstad modules it deletedGapExactThreeDistinctSAT,no_GapExactThreeDistinctSAT_eq_empty,xorThreeCNFand its five lemmas,hastadLinearProb_le_of_hastadLinearCorr_leand the same-day aliasCslib.PCP.Hastad.fourierCoeff_sq_signVal_le_one. The kept long-code, folding and projection lemmas moved toCslib.BitStringinFoundations/BooleanAnalysis/LongCode(IsFoldedbecameIsOdd), andHastad/ExactThreeDistinctmerged intoPCP/Approximation/MaxExactThreeSAT, keeping its declaration names; imports of the deleted module path must be updated.hastad_gapLabelCover_dichotomy(nowgapLabelCover_dichotomy) now choosesηbefore the label sets. - Follow-up #390 (same date and policy): the rest of the
ACC0.leanWilliams scaffolding,SymPlusCircuitand its API,evalMaskand its lemmas,zetaTransform,fastZeta,fastZeta_eq_zetaTransform,parity_mem_EXP,parity_mem_NEXP,exists_mem_NEXP_notMem_{AC0,AC0Mod,SIZEMod},exists_mem_SIZEMod_of_mem_AC0Mod,NEXP_subset_PPoly_of_NEXP_subset_ACC0,PH_eq_SigmaP_two_of_NEXP_subset_ACC0andKannan.language_mem_SigmaP_two_of_NEXP_subset_ACC0; the remainingACC0development is split intoACC0/BasicandACC0/Simulation, andNC_subset_PPoly,AC_subset_PPolyandsize_majorityDeMorganCircuit_le_sqmoved toDepthClasses,FanInTwoandThresholdNC1, all with names unchanged. The moduleCircuit/Arithmetic/IdentityTestingis deleted. Its Schwartz–Zippel restatements (MvPolynomial.card_mul_card_roots_le,card_roots_le,exists_eval_ne_zero_of_totalDegree_lt_card; use Mathlib'sMvPolynomial.schwartz_zippel_totalDegree),encArith*,PITIntand its lemmas, the arithmetic circuit combinators, the permanent chain (minorVarthroughisLaplacePermChain_laplacePermCircuit),intPermFamilyandexists_mem_NEXP_notMem_SIZEare deleted.Matrix.permanent_succ_{column,row}_zeromoved toFoundations/Data/Matrix/Permanent,Cslib.Circuits.Circuit.eval_polynomialtoArithmetic/VP, andpermFamily,isPFamily_permFamilyandtotalDegree_permanent_genericMatrix_letoArithmetic/Determinant, with names unchanged.
- Regev's reduction (
- Two multigraph namespaces. Since 2026-10-20 the frontier multigraph
(
Cslib.Circuits.Frontier.Multigraph) defines its simple graph as that of the multigraph given by its ends (Cslib.Multigraph), and its module publicly imports the latter. Their shared base namestoSimpleGraph,toSimpleGraph_adj,edgeCutandmem_edgeCutare ambiguous when both namespaces are visible, for example insidenamespace Cslib.Circuits.Frontieror with both opened; use dot notation (G.toSimpleGraph_adj) or full names. Upstreaming the frontier multigraph therefore followsFoundations/Combinatorics/Multigraph.lean.
The historical ledger preserves earlier integration notes and per-module follow-up ideas.
- Word-RAM word-size contracts (2026-10-22). Time and encoding arguments now depend on
word size, and an ordinary predicate
allowed : α → ℕ → Propadmits input/width pairs.WordSizeDependentProgramselects code only by width; the primary decision and function classes require a fixed register count and uniformly bounded instruction-list length.Uniformvariants retain one fixed program, which may read the width. Existing fixed-code clients prove the uniform variants and can forget uniformity. TheLogWordwrappers express the transdichotomous assumption, require a positive constant, and remain conditional on input fitting. Asymptotic time keeps correctness at every admitted fitting input and makes only the runtime estimate eventual, with constants shared by all widths. Width schedules connect to Mathlib's real-valued big-O after casting. No effective selection of code, width or encoding, or Turing-machine complexity identification, follows. These breaking local API changes intentionally retain no deprecated aliases, as authorized by Erik for this redesign.