Zulip Chat Archive

Stream: mathlib4

Topic: Getting a list of all mathlib theorems fully-namespaced


Bolton Bailey (Mar 14 2024 at 01:41):

Working in /Data, I often notice things that are present in only one of the Polynomial and MvPolynomial namespaces, but should be present in both. The same goes for Finset Multiset and List.

I'd like to investigate this a bit more rigorously. Is there some way to get a list of all the lemmas in mathlib so I can see if there are other namespaces that overlap and which lemmas from other namespaces overlap with which others?

Floris van Doorn (Mar 14 2024 at 15:26):

Something like this?

import Mathlib.Lean.Expr.Basic

open Lean

run_cmd do
  -- all constants in imported files
  let constants := ( getEnv).constants.map₁.toList.map (·.1)
  -- remove some auto-generated constants
  let constants  constants.filterM fun nm  return !( nm.isBlackListed)
  -- print first 100
  logInfo m!"{constants |>.take 100}"

Bolton Bailey (Mar 14 2024 at 21:15):

That works perfectly, thanks!

Bolton Bailey (Mar 14 2024 at 21:57):

For Zulip's viewing pleasure: the top 100 most similar namespace pairs by intersection-over-union (out of namespaces with at least 200 declarations).

IOU: 0.51 Subring Subsemiring
IOU: 0.41 WithTop WithBot
IOU: 0.39 AddMonoidHom MonoidHom
IOU: 0.39 Subgroup AddSubgroup
IOU: 0.38 AddSubmonoid Submonoid
IOU: 0.26 Finsupp DFinsupp
IOU: 0.24 Submonoid Subsemiring
IOU: 0.23 Submonoid Subring
IOU: 0.23 AddSubgroup AddSubmonoid
IOU: 0.22 AddSubmonoid Subring
IOU: 0.22 AddSubmonoid Subsemiring
IOU: 0.22 Subgroup Submonoid
IOU: 0.21 AddEquiv RingEquiv
IOU: 0.20 ULift MulOpposite
IOU: 0.20 Subalgebra Subsemiring
IOU: 0.20 Filter.Germ Function.Injective
IOU: 0.20 Subalgebra Subring
IOU: 0.19 AlgEquiv RingEquiv
IOU: 0.19 AddSubgroup Submonoid
IOU: 0.18 Subgroup AddSubmonoid
IOU: 0.17 MonoidHom RingHom
IOU: 0.17 AddMonoidHom RingHom
IOU: 0.17 Function.Injective MulOpposite
IOU: 0.17 AlgEquiv AddEquiv
IOU: 0.16 RingHom AlgHom
IOU: 0.16 Filter.Germ MulOpposite
IOU: 0.15 ULift Filter.Germ
IOU: 0.15 ULift Function.Injective
IOU: 0.15 Subgroup Subring
IOU: 0.15 AlgEquiv AlgHom
IOU: 0.15 IntermediateField Subalgebra
IOU: 0.15 AddSubgroup Subring
IOU: 0.14 AddSubgroup Subsemiring
IOU: 0.14 Filter.Tendsto Continuous
IOU: 0.14 Subgroup Subsemiring
IOU: 0.14 LinearEquiv AddEquiv
IOU: 0.13 LinearEquiv RingEquiv
IOU: 0.13 ENNReal NNReal
IOU: 0.13 Pi ULift
IOU: 0.13 LinearEquiv AlgEquiv
IOU: 0.13 Pi Function.Injective
IOU: 0.13 Pi Prod
IOU: 0.13 Nat Int
IOU: 0.12 LinearEquiv ContinuousLinearEquiv
IOU: 0.11 Pi Filter.Germ
IOU: 0.11 Set Finset
IOU: 0.10 OrderIso Homeomorph
IOU: 0.10 MonoidHom AlgHom
IOU: 0.10 Complex IsROrC
IOU: 0.10 Real Complex
IOU: 0.10 Submodule AddSubmonoid
IOU: 0.10 Pi MulOpposite
IOU: 0.10 IntermediateField Subring
IOU: 0.10 AddMonoidHom AlgHom
IOU: 0.09 Submonoid Subalgebra
IOU: 0.09 WithTop EReal
IOU: 0.09 ContinuousMap BoundedContinuousFunction
IOU: 0.09 IntermediateField Subsemiring
IOU: 0.09 Homeomorph ContinuousLinearEquiv
IOU: 0.08 WithBot EReal
IOU: 0.08 WithTop Filter.Germ
IOU: 0.08 AddSubmonoid Subalgebra
IOU: 0.08 ContinuousLinearMap ContinuousMultilinearMap
IOU: 0.08 LinearMap ContinuousLinearMap
IOU: 0.08 Finset Multiset
IOU: 0.08 RingEquiv AlgHom
IOU: 0.08 LinearEquiv Homeomorph
IOU: 0.08 ContinuousLinearEquiv AddEquiv
IOU: 0.08 LinearMap AddMonoidHom
IOU: 0.08 Equiv Homeomorph
IOU: 0.08 MulOpposite TrivSqZeroExt
IOU: 0.08 WithBot Filter.Germ
IOU: 0.08 Submodule AddSubgroup
IOU: 0.08 List Multiset
IOU: 0.07 Filter.Germ TrivSqZeroExt
IOU: 0.07 ULift TrivSqZeroExt
IOU: 0.07 Prod ULift
IOU: 0.07 CategoryTheory.ShortComplex HomologicalComplex
IOU: 0.07 RingHom RingEquiv
IOU: 0.07 Submodule Submonoid
IOU: 0.07 AddMonoidHom AddEquiv
IOU: 0.07 Homeomorph AddEquiv
IOU: 0.07 AddSubgroup Subalgebra
IOU: 0.07 ENNReal WithTop
IOU: 0.07 LieSubmodule Subring
IOU: 0.07 ContinuousLinearMap AddMonoidHom
IOU: 0.07 Equiv OrderIso
IOU: 0.07 AffineSubspace LieSubmodule
IOU: 0.07 LieSubmodule Subsemiring
IOU: 0.07 RingHom AlgEquiv
IOU: 0.06 AffineSubspace Subring
IOU: 0.06 AffineSubspace Subsemiring
IOU: 0.06 AddSubmonoid LieSubmodule
IOU: 0.06 Homeomorph RingEquiv
IOU: 0.06 Option Part
IOU: 0.06 AlgEquiv ContinuousLinearEquiv
IOU: 0.06 ContinuousLinearEquiv RingEquiv
IOU: 0.06 Pi DFinsupp
IOU: 0.06 Subgroup Subalgebra
IOU: 0.06 Equiv LinearEquiv

Johan Commelin (Mar 15 2024 at 03:32):

"Similar" means "contain many lemmas with the same name"? Or what exactly?

Bolton Bailey (Mar 15 2024 at 04:30):

It just means that a large fraction of lemma names that appear in one appear in both.


Last updated: May 02 2025 at 03:31 UTC