THE SITE DIAGNOSIS TABLE
the sites that did not come out, and what stopped each one
The Cleanable Table lists what came out. On its own that is a numerator with no denominator, and a numerator with no denominator is how a removal rate gets quoted as though it were a possibility rate. This is the rest.
Of 765 sites examined, 340 — 44.4% — were never testable. The occurrence is not in a position where an instance would be supplied, so there is no proposition to hand to synthesis and nothing to substitute. That is a fact about the shape of the proof term rather than about whether the mathematics needs choice.
Measured with gonzalgo · Lean 4.32.1 with Mathlib v4.32.1 · instance synthesis attempted per occurrence, inside the declaration's own context
| verdict | what stopped it | library | declaration | proposition |
|---|---|---|---|---|
| choice-needed | instance exists but needs choice | Mathlib | Nonneg.conditionallyCompleteLinearOrder._aux_1 | Classical.propDecidable (sSup (Subtype.val '' t) ∈ Set.Ici a) |
| choice-needed | instance exists but needs choice | Mathlib | Nonneg.conditionallyCompleteLinearOrder._aux_3 | Classical.propDecidable (sInf (Subtype.val '' t) ∈ Set.Ici a) |
| choice-needed | instance exists but needs choice | Mathlib | Pi.Lex.linearOrder | Classical.decRel fun x1 x2 => x1 < x2 |
| choice-needed | instance exists but needs choice | Mathlib | LowerSet.instLinearOrder | Classical.propDecidable (a = b) |
| choice-needed | instance exists but needs choice | Mathlib | LowerSet.instLinearOrder | Classical.propDecidable (a ≤ b) |
| choice-needed | instance exists but needs choice | Mathlib | LowerSet.instLinearOrder | Classical.propDecidable (a < b) |
| choice-needed | instance exists but needs choice | Mathlib | UpperSet.instLinearOrder | Classical.propDecidable (a = b) |
| choice-needed | instance exists but needs choice | Mathlib | UpperSet.instLinearOrder | Classical.propDecidable (a ≤ b) |
| choice-needed | instance exists but needs choice | Mathlib | UpperSet.instLinearOrder | Classical.propDecidable (a < b) |
| choice-needed | instance exists but needs choice | Mathlib | HahnSeries.instLinearOrderLex | Classical.decRel LE.le a b |
| choice-needed | instance exists but needs choice | Mathlib | HahnSeries.instLinearOrderLex | Classical.decRel LE.le |
| choice-needed | instance exists but needs choice | Mathlib | ValuationRing.instLinearOrderIdealOfDecidableLE | Classical.propDecidable (a < b) |
| choice-needed | instance exists but needs choice | Mathlib | ValuationSubring.instLinearOrderedCommGroupWithZeroValueGroup._aux_25 | Classical.decRel LE.le a b |
| choice-needed | instance exists but needs choice | Mathlib | ValuationSubring.instLinearOrderedCommGroupWithZeroValueGroup._aux_27 | Classical.decRel LE.le a b |
| choice-needed | instance exists but needs choice | Mathlib | ValuationSubring.instLinearOrderedCommGroupWithZeroValueGroup._aux_29 | Classical.decRel LE.le |
| choice-needed | instance exists but needs choice | Mathlib | ValuationSubring.instLinearOrderedCommGroupWithZeroValueGroup._aux_32 | Classical.decRel LE.le |
| choice-needed | instance exists but needs choice | Mathlib | ValuationSubring.instLinearOrderedCommGroupWithZeroValueGroup._aux_34 | Classical.decRel LE.le |
| choice-needed | instance exists but needs choice | Mathlib | ValuationSubring.instLinearOrderedCommGroupWithZeroValueGroup._aux_36 | Classical.decRel LE.le |
| no-instance | no Decidable instance found | Batteries | List.Sublist.erase_diff_erase_sublist._f | Classical.propDecidable (b = a) |
| no-instance | no Decidable instance found | Init | List.count_erase._f | Classical.propDecidable (c = b) |
| no-instance | no Decidable instance found | Init | List.count_erase._f | Classical.propDecidable (b = a) |
| no-instance | no Decidable instance found | Init | List.erase_eq_eraseP._f | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Init | List.isSublist_iff_sublist._f | Classical.propDecidable (head✝¹ = head✝) |
| no-instance | no Decidable instance found | Init | Lean.Grind.Field.noNatZeroDivisors.ofIsCharPZero | Classical.propDecidable (b = 0) |
| no-instance | no Decidable instance found | Init | _private.Init.While.0.whileM.Pred | Classical.propDecidable (∃ g, whileM.body f g = g) |
| no-instance | no Decidable instance found | Mathlib | CommRingCat.Under.tensorProductFanIsLimit | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | Field.DirectLimit.inv | Classical.propDecidable (p = 0) |
| no-instance | no Decidable instance found | Mathlib | finsuppLEquivDirectSum | Classical.decPred fun m => m ≠ 0 |
| no-instance | no Decidable instance found | Mathlib | IsField.toSemifield | Classical.propDecidable (a = 0) |
| no-instance | no Decidable instance found | Mathlib | MonoidWithZeroHom.ValueGroup₀.embedding | Classical.decPred fun b => b = 0 |
| no-instance | no Decidable instance found | Mathlib | MonoidWithZeroHom.ValueGroup₀.restrict₀ | Classical.decPred (fun b => b = 0) (f a) |
| no-instance | no Decidable instance found | Mathlib | Ring.inverse | Classical.propDecidable (∃ u, ↑u = x) |
| no-instance | no Decidable instance found | Mathlib | groupWithZeroOfIsUnitOrEqZero | Classical.propDecidable (a = 0) |
| no-instance | no Decidable instance found | Mathlib | HomologicalComplex.dgoToHomologicalComplex | Classical.propDecidable (i + b = j) |
| no-instance | no Decidable instance found | Mathlib | HomologicalComplex.double | Classical.propDecidable (k = i₀) |
| no-instance | no Decidable instance found | Mathlib | HomologicalComplex.double | Classical.propDecidable (k = i₁) |
| no-instance | no Decidable instance found | Mathlib | HomologicalComplex.double | Classical.propDecidable (k' = i₀) |
| no-instance | no Decidable instance found | Mathlib | HomologicalComplex.double | Classical.propDecidable (k' = i₁) |
| no-instance | no Decidable instance found | Mathlib | HomologicalComplex.double | Classical.propDecidable (i₀ = i₁) |
| no-instance | no Decidable instance found | Mathlib | HomologicalComplex.evalCompCoyonedaCorepresentable | Classical.propDecidable (∃ k, c.Rel j k) |
| no-instance | no Decidable instance found | Mathlib | HomologicalComplex.evalCompCoyonedaCorepresentable | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | HomologicalComplex.evalCompCoyonedaCorepresentative | Classical.propDecidable (∃ k, c.Rel j k) |
| no-instance | no Decidable instance found | Mathlib | HomologicalComplex.evalCompCoyonedaCorepresentative | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | HomologicalComplex.mkHomFromDouble | Classical.propDecidable (k = i₀) |
| no-instance | no Decidable instance found | Mathlib | HomologicalComplex.mkHomFromDouble | Classical.propDecidable (k = i₁) |
| no-instance | no Decidable instance found | Mathlib | ComplexShape.Embedding.r | Classical.propDecidable (∃ i, e.f i = i') |
| no-instance | no Decidable instance found | Mathlib | ComplexShape.Embedding.liftExtend.f | Classical.propDecidable (∃ i, e.f i = i') |
| no-instance | no Decidable instance found | Mathlib | LieAlgebra.LoopAlgebra.toFinsupp | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | LieModule.chainTopCoeff | Classical.propDecidable (α = 0) |
| no-instance | no Decidable instance found | Mathlib | LieModule.chainTopCoeff | Classical.propDecidable (LieModule.genWeightSpace M (a • α + ⇑β) = ⊥) |
| no-instance | no Decidable instance found | Mathlib | AddMonoidAlgebra.modOf | Classical.decPred (fun g₁ => ∃ g₂, g₁ = g + g₂) a |
| no-instance | no Decidable instance found | Mathlib | MvPolynomial.coeffs | Classical.decEq R |
| no-instance | no Decidable instance found | Mathlib | MvPolynomial.degreeOf | Classical.decEq σ |
| no-instance | no Decidable instance found | Mathlib | MvPolynomial.degrees | Classical.decEq σ |
| no-instance | no Decidable instance found | Mathlib | MvPolynomial.pderiv | Classical.decEq σ |
| no-instance | no Decidable instance found | Mathlib | MvPolynomial.vars | Classical.decEq σ |
| no-instance | no Decidable instance found | Mathlib | Nonneg.conditionallyCompleteLinearOrder._aux_1 | Classical.propDecidable t.Nonempty |
| no-instance | no Decidable instance found | Mathlib | Nonneg.conditionallyCompleteLinearOrder._aux_1 | Classical.propDecidable (BddAbove t) |
| no-instance | no Decidable instance found | Mathlib | Nonneg.conditionallyCompleteLinearOrder._aux_3 | Classical.propDecidable t.Nonempty |
| no-instance | no Decidable instance found | Mathlib | Nonneg.conditionallyCompleteLinearOrder._aux_3 | Classical.propDecidable (BddBelow t) |
| no-instance | no Decidable instance found | Mathlib | Polynomial.coeffs | Classical.decEq R |
| no-instance | no Decidable instance found | Mathlib | Polynomial.cardPowDegree | Classical.decEq Fq |
| no-instance | no Decidable instance found | Mathlib | _private.Mathlib.Algebra.Polynomial.Derivative.0.Polynomial.iterate_derivative_prod_X_sub_C.match_1_4 | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | _private.Mathlib.Algebra.Polynomial.Derivative.0.Polynomial.iterate_derivative_prod_X_sub_C.match_1_6 | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | Polynomial.divByMonic | Classical.decEq R |
| no-instance | no Decidable instance found | Mathlib | Polynomial.divModByMonicAux._unary | Classical.decEq R |
| no-instance | no Decidable instance found | Mathlib | Polynomial.modByMonic | Classical.decEq R |
| no-instance | no Decidable instance found | Mathlib | Polynomial.rootMultiplicity | Classical.decEq R |
| no-instance | no Decidable instance found | Mathlib | Polynomial.rootMultiplicity | Classical.decPred fun n => ¬(Polynomial.X - Polynomial.C a) ^ (n + 1) ∣ p |
| no-instance | no Decidable instance found | Mathlib | prodXSubSMul | Classical.decEq R |
| no-instance | no Decidable instance found | Mathlib | Polynomial.recOnHorner._unary | Classical.decEq R |
| no-instance | no Decidable instance found | Mathlib | Polynomial.recOnHorner._unary | Classical.decEq R (p.coeff 0) 0 |
| no-instance | no Decidable instance found | Mathlib | Polynomial.nthRootsFinset | Classical.decEq R |
| no-instance | no Decidable instance found | Mathlib | Polynomial.rootSet | Classical.decEq S |
| no-instance | no Decidable instance found | Mathlib | Polynomial.rootSetFintype | Classical.decEq S |
| no-instance | no Decidable instance found | Mathlib | Polynomial.roots | Classical.dec (p = 0) |
| no-instance | no Decidable instance found | Mathlib | Polynomial.roots | Classical.decEq R |
| no-instance | no Decidable instance found | Mathlib | WeierstrassCurve.Jacobian.Point.toAffine | Classical.propDecidable (W.Nonsingular P) |
| no-instance | no Decidable instance found | Mathlib | WeierstrassCurve.Jacobian.Point.toAffine | Classical.propDecidable (P 2 = 0) |
| no-instance | no Decidable instance found | Mathlib | WeierstrassCurve.Projective.Point.toAffine | Classical.propDecidable (W.Nonsingular P) |
| no-instance | no Decidable instance found | Mathlib | WeierstrassCurve.Projective.Point.toAffine | Classical.propDecidable (P 2 = 0) |
| no-instance | no Decidable instance found | Mathlib | _private.Mathlib.AlgebraicGeometry.Morphisms.Basic.0.AlgebraicGeometry.HasAffineProperty.of_iSup_eq_top.match_1_2 | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | AlgebraicGeometry.Scheme.instFieldCarrierResidueField._aux_1 | Classical.propDecidable (a✝ = 0) |
| no-instance | no Decidable instance found | Mathlib | AlgebraicGeometry.Scheme.instFieldCarrierResidueField._aux_3 | Classical.propDecidable (a = 0) |
| no-instance | no Decidable instance found | Mathlib | AlgebraicGeometry.Scheme.instFieldCarrierResidueField._aux_5 | Classical.propDecidable (a = 0) |
| no-instance | no Decidable instance found | Mathlib | AlgebraicTopology.DoldKan.Γ₀.Obj.Termwise.mapMono | Classical.propDecidable (Δ = Δ') |
| no-instance | no Decidable instance found | Mathlib | AlgebraicTopology.DoldKan.Γ₀.Obj.Termwise.mapMono | Classical.propDecidable (AlgebraicTopology.DoldKan.Isδ₀ i) |
| no-instance | no Decidable instance found | Mathlib | CategoryTheory.SimplicialObject.Splitting.πSummand | Classical.propDecidable (B = A) |
| no-instance | no Decidable instance found | Mathlib | BoxIntegral.Prepartition.biUnion | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | BoxIntegral.Prepartition.disjUnion | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | BoxIntegral.Prepartition.restrict | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | BoxIntegral.Box.splitLower | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | BoxIntegral.Box.splitUpper | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | BoxIntegral.Prepartition.split | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | BoxIntegral.TaggedPrepartition.disjUnion | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | BoxIntegral.unitPartition.prepartition | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | BoxIntegral.unitPartition.prepartition | Classical.propDecidable (I = BoxIntegral.unitPartition.box n a) |
| no-instance | no Decidable instance found | Mathlib | definition._@.Mathlib.Analysis.CStarAlgebra.ContinuousFunctionalCalculus.NonUnital.2216632569._hygCtx._hyg.8 | Classical.propDecidable (p a) |
| no-instance | no Decidable instance found | Mathlib | definition._@.Mathlib.Analysis.CStarAlgebra.ContinuousFunctionalCalculus.NonUnital.2216632569._hygCtx._hyg.8 | Classical.propDecidable (ContinuousOn f (quasispectrum R a)) |
| no-instance | no Decidable instance found | Mathlib | definition._@.Mathlib.Analysis.CStarAlgebra.ContinuousFunctionalCalculus.NonUnital.2216632569._hygCtx._hyg.8 | Classical.propDecidable (f 0 = 0) |
| no-instance | no Decidable instance found | Mathlib | dslope | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | ValueDistribution.logCounting | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | ValueDistribution.proximity | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | Orientation.definition._@.Mathlib.Analysis.InnerProductSpace.Orientation.2114562672._hygCtx._hyg.2 | Classical.propDecidable (o = positiveOrientation) |
| no-instance | no Decidable instance found | Mathlib | OrthonormalBasis.instFunLike | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | HilbertBasis.instFunLike | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | HilbertBasis.instFunLike.match_1 | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | _private.Mathlib.Analysis.Matrix.Normed.0.Matrix.unitOf | Classical.propDecidable (a = 0) |
| no-instance | no Decidable instance found | Mathlib | toMeromorphicNFAt | Classical.propDecidable (MeromorphicAt f x) |
| no-instance | no Decidable instance found | Mathlib | toMeromorphicNFAt | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | GeneralSchauderBasis._sizeOf_1 | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | GeneralSchauderBasis.casesOn | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | GeneralSchauderBasis.mk._flat_ctor | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | GeneralSchauderBasis.mk.noConfusion | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | GeneralSchauderBasis.noConfusion | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | GeneralSchauderBasis.noConfusionType | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | GeneralSchauderBasis.recOn | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | _private.Mathlib.Analysis.Normed.Module.Bases.0.GeneralSchauderBasis.ext.match_1 | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | ContinuousMultilinearMap.iteratedFDeriv | Classical.propDecidable (a = b) |
| no-instance | no Decidable instance found | Mathlib | CategoryTheory.IsGrothendieckAbelian.generatingMonomorphisms.largerSubobject | Classical.propDecidable (A = ⊤) |
Showing the first 120 of 765 rows. Grouped by verdict, so the head of the table is one category. The full set is in the JSON and the CSV.
proposition is the goal an instance would have had to be found for, where there was one. A not-a-goal row often shows Classical.propDecidable bare or partly applied, which is the case where there is nothing to decide.
Get the data
site-diagnosis.json · site-diagnosis.csv · CC-BY-4.0 · version 2026-08-12
One of the gonzalgo indexes — standing measurements of what formal libraries rest on, remeasured as the libraries move. Cite the series as 10.5281/zenodo.21900625, which resolves to the current deposit.
Reproduce it
lake env lean -D maxErrors=4000 lean/Substitute.lean
Method: 10.5281/zenodo.21769846.
What the four verdicts mean for a repair
no instance (395, 51.6%) is the honest negative: the proposition is there, synthesis was asked, and Lean has no constructive way to decide it. These are the sites where the classical dependence is doing real work.
not an instance position (340, 44.4%) is not a negative at all. Nothing was tested. Counting these as failures understates removability and counting them as successes overstates it, which is why they are their own category rather than folded into either.
needs choice anyway (18) is the sharpest case: an instance exists, and it depends on choice itself, so substituting it moves the dependence rather than removing it. Any measure that stops at whether an instance exists would score these as wins.
timed out (12) is unknown, not negative. It is small here, which is the improvement this run represents.
Why an earlier pass is not used
A previous run over the same question returned 404 synthesis timeouts against this run's 12, and had no not-a-goal category at all, so nearly every site it could not clean was recorded as a time limit being hit. It was measuring its own budget. Its numbers are not reproduced here.
Reading it with the Cleanable Table
Together the two tables give the shape of the problem rather than a single rate. Removal succeeded where a decidable proposition sat in an instance position and the constructive instance existed. Where any of those three fails it fails for a different reason, and only one of the three is about mathematics.