Skip to content

perf: flatten Monoid - #42599

Open
astrainfinita wants to merge 9 commits into
leanprover-community:masterfrom
astrainfinita:algebra_flat
Open

perf: flatten Monoid#42599
astrainfinita wants to merge 9 commits into
leanprover-community:masterfrom
astrainfinita:algebra_flat

Conversation

@astrainfinita

@astrainfinita astrainfinita commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator

This PR does not introduce any new instances. I expect that adjusting instance priorities and adding shortcuts will further improve performance. (#41846)

In any case, we may eventually have to add shortcut instances anyway, since the algebraic hierarchy has grown large enough to hit synthInstance.maxSize.

Once leanprover/lean4#2666 is resolved (if that eventually happens), this should be changed to use direct annotations instead.

Open in Gitpod

@astrainfinita

Copy link
Copy Markdown
Collaborator Author

!bench

@leanprover-radar

leanprover-radar commented Aug 10, 2026

Copy link
Copy Markdown

Benchmark results for 82e3677 against 6d605ae are in. There are significant results. @astrainfinita

  • build//instructions: -754.6G (-0.52%)

Large changes (1✅)

  • 1 hidden

Medium changes (11✅, 8🟥)

  • build/module/Mathlib.Algebra.Ring.CentroidHom//instructions: -3.4G (-10.40%)
  • build/module/Mathlib.Analysis.CStarAlgebra.ContinuousFunctionalCalculus.Instances//instructions: -4.9G (-6.28%)
  • build/module/Mathlib.Analysis.Calculus.IteratedDeriv.Lemmas//instructions: -7.1G (-7.82%)
  • 🟥 build/module/Mathlib.Analysis.Calculus.LineDeriv.QuadraticMap//instructions: +3.7G (+29.27%)
  • build/module/Mathlib.Analysis.Normed.Field.Basic//instructions: -2.6G (-11.37%)
  • build/module/Mathlib.Analysis.Normed.Lp.lpHolder//instructions: -7.2G (-11.59%)
  • 🟥 build/module/Mathlib.Analysis.SpecialFunctions.Log.Deriv//instructions: +7.6G (+15.93%)
  • build/module/Mathlib.FieldTheory.RatFunc.Basic//instructions: -7.5G (-5.35%)
  • 🟥 build/module/Mathlib.FieldTheory.SeparableClosure//instructions: +4.0G (+5.75%)
  • build/module/Mathlib.Geometry.Convex.ConvexSpace.Module//instructions: -3.0G (-5.57%)
  • 🟥 build/module/Mathlib.GroupTheory.OrderOfElement//instructions: +10.1G (+13.14%)
  • build/module/Mathlib.LinearAlgebra.BilinearMap//instructions: -3.3G (-5.29%)
  • 🟥 build/module/Mathlib.MeasureTheory.Integral.IntervalIntegral.TrapezoidalRule//instructions: +4.9G (+13.77%)
  • 🟥 build/module/Mathlib.NumberTheory.Harmonic.ZetaAsymp//instructions: +9.8G (+16.54%)
  • build/module/Mathlib.NumberTheory.ModularForms.Cusps//instructions: -3.1G (-8.17%)
  • 🟥 build/module/Mathlib.NumberTheory.NumberField.Units.Basic//instructions: +10.8G (+35.23%)
  • build/module/Mathlib.RingTheory.DedekindDomain.Different//instructions: -26.2G (-7.62%)
  • build/module/Mathlib.RingTheory.DedekindDomain.LinearDisjoint//instructions: -8.9G (-6.04%)
  • 🟥 build/module/Mathlib.RingTheory.Polynomial.IsIntegral//instructions: +5.3G (+14.59%)

Small changes (111✅, 12🟥)

  • build/module/Mathlib.Algebra.Algebra.Bilinear//instructions: -683.7M (-4.41%)
  • build/module/Mathlib.Algebra.Algebra.NonUnitalSubalgebra//instructions: -3.3G (-5.01%)
  • build/module/Mathlib.Algebra.Algebra.Spectrum.Quasispectrum//instructions: -997.5M (-3.14%)
  • build/module/Mathlib.Algebra.Algebra.Unitization//instructions: -1.5G (-3.18%)
  • build/module/Mathlib.Algebra.Category.Grp.Preadditive//instructions: -642.3M (-8.69%)
  • build/module/Mathlib.Algebra.Category.ModuleCat.Presheaf//instructions: -1.4G (-2.93%)
  • build/module/Mathlib.Algebra.Category.Ring.Limits//instructions: -3.2G (-4.50%)
  • build/module/Mathlib.Algebra.Field.IsField//instructions: -428.6M (-6.80%)
  • build/module/Mathlib.Algebra.Homology.HomotopyCategory.MappingCocone//instructions: -1.8G (-5.63%)
  • build/module/Mathlib.Algebra.Lie.Basis.Basic//instructions: -1.6G (-2.43%)
  • build/module/Mathlib.Algebra.Module.LinearMap.Defs//instructions: -1.3G (-2.75%)
  • build/module/Mathlib.Algebra.Module.LocalizedModule.Submodule//instructions: -1.0G (-2.66%)
  • build/module/Mathlib.Algebra.Order.Module.Defs//instructions: -2.0G (-4.58%)
  • build/module/Mathlib.Algebra.Quaternion//instructions: -2.4G (-2.34%)
  • build/module/Mathlib.Algebra.Star.LinearMap//instructions: -1.9G (-6.16%)
  • build/module/Mathlib.Algebra.Star.NonUnitalSubalgebra//instructions: -5.2G (-5.04%)
  • build/module/Mathlib.Algebra.Star.Unitary//instructions: -887.8M (-3.14%)
  • build/module/Mathlib.Algebra.TrivSqZeroExt.Basic//instructions: -2.0G (-2.95%)
  • build/module/Mathlib.Analysis.Analytic.Constructions//instructions: -2.7G (-2.33%)
  • build/module/Mathlib.Analysis.Analytic.ConvergenceRadius//instructions: -1.4G (-2.67%)
  • and 103 more

@github-actions

github-actions Bot commented Aug 10, 2026

Copy link
Copy Markdown

PR summary cfc88dbe95

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference

Declarations diff (regex)

No declarations were harmed in the making of this PR! 🐙

You can run this locally as follows
## from your `mathlib4` directory:
git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci

## summary with just the declaration names:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh <optional_commit>

## more verbose report:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh long <optional_commit>

The doc-module for scripts/pr_summary/declarations_diff.sh in the mathlib-ci repository contains some details about this script.

Declarations diff (Lean)

Lean-aware diff — post-build, computed from the Lean environment (commit cfc88db).

  • +12 new declarations
  • −4 removed declarations
+AddMonoid.add_assoc
+AddMonoid.toAdd
+AddZeroClass.toAdd
+AddZeroClass.toZero
+AlgHom.End_toMul_mul
-AlgHom.End_toSemigroup_toMul_mul
+BialgHom.End_toMul_mul
-BialgHom.End_toSemigroup_toMul_mul
+CoalgHom.End_toMul_mul
-CoalgHom.End_toSemigroup_toMul_mul
+GradedAlgHom.toMul_mul
-GradedAlgHom.toSemigroup_toMul_mul
+Monoid.mul_assoc
+Monoid.toMul
+MulOneClass.toMul
+MulOneClass.toOne

Increase in strong tech debt: (relative, absolute) = (1.00, 0.00)
Current number Change Type (strong)
6982 1 backward.isDefEq.respectTransparency
No changes to weak technical debt.

Current commit cfc88dbe95
Reference commit 6d605ae1ac

This script lives in the mathlib-ci repository. To run it locally, from your mathlib4 directory:

git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci
../mathlib-ci/scripts/reporting/technical-debt-metrics.sh pr_summary
  • The relative value is the weighted sum of the differences with weight given by the inverse of the current value of the statistic.
  • The absolute value is the relative value divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).

@astrainfinita astrainfinita added the t-algebra Algebra (groups, rings, fields, etc) label Aug 10, 2026
@astrainfinita

Copy link
Copy Markdown
Collaborator Author

!bench

@leanprover-radar

leanprover-radar commented Aug 10, 2026

Copy link
Copy Markdown

Benchmark results for 64cca18 against 6d605ae are in. There are significant results. @astrainfinita

  • build//instructions: -908.1G (-0.63%)

Large changes (1✅, 1🟥)

  • 🟥 build/module/Mathlib.Algebra.Category.Grp.Colimits//instructions: +9.3G (+31.94%)
  • and 1 hidden

Medium changes (16✅, 8🟥)

  • build/module/Mathlib.Algebra.BigOperators.Fin//instructions: -3.1G (-6.24%)
  • build/module/Mathlib.Algebra.Ring.CentroidHom//instructions: -3.4G (-10.23%)
  • build/module/Mathlib.Algebra.Star.NonUnitalSubalgebra//instructions: -5.5G (-5.29%)
  • build/module/Mathlib.AlgebraicTopology.SimplicialObject.ChainHomotopy//instructions: -4.4G (-11.03%)
  • build/module/Mathlib.Analysis.CStarAlgebra.ContinuousFunctionalCalculus.Instances//instructions: -5.6G (-7.18%)
  • build/module/Mathlib.Analysis.CStarAlgebra.Multiplier//instructions: -6.6G (-8.86%)
  • build/module/Mathlib.Analysis.Calculus.FormalMultilinearSeries//instructions: -3.2G (-7.68%)
  • build/module/Mathlib.Analysis.Calculus.IteratedDeriv.Lemmas//instructions: -6.8G (-7.52%)
  • 🟥 build/module/Mathlib.Analysis.Calculus.LineDeriv.QuadraticMap//instructions: +3.5G (+27.83%)
  • build/module/Mathlib.Analysis.Normed.Lp.lpHolder//instructions: -7.4G (-12.02%)
  • build/module/Mathlib.Analysis.Normed.Module.Alternating.Uncurry.Fin//instructions: -3.1G (-8.06%)
  • 🟥 build/module/Mathlib.Analysis.SpecialFunctions.Log.Deriv//instructions: +5.0G (+10.39%)
  • build/module/Mathlib.Data.Real.Embedding//instructions: -2.5G (-9.91%)
  • build/module/Mathlib.FieldTheory.RatFunc.Basic//instructions: -7.4G (-5.31%)
  • 🟥 build/module/Mathlib.FieldTheory.SeparableClosure//instructions: +4.1G (+5.83%)
  • 🟥 build/module/Mathlib.GroupTheory.OrderOfElement//instructions: +10.0G (+13.06%)
  • build/module/Mathlib.LinearAlgebra.BilinearMap//instructions: -3.2G (-5.11%)
  • 🟥 build/module/Mathlib.NumberTheory.Harmonic.ZetaAsymp//instructions: +7.1G (+12.05%)
  • build/module/Mathlib.NumberTheory.ModularForms.Cusps//instructions: -3.1G (-8.24%)
  • 🟥 build/module/Mathlib.NumberTheory.NumberField.Units.Basic//instructions: +10.8G (+35.37%)
  • and 4 more

Small changes (165✅, 15🟥)

  • build/module/Mathlib.Algebra.Algebra.Bilinear//instructions: -646.9M (-4.17%)
  • build/module/Mathlib.Algebra.Algebra.NonUnitalSubalgebra//instructions: -3.5G (-5.29%)
  • build/module/Mathlib.Algebra.Algebra.Spectrum.Quasispectrum//instructions: -880.2M (-2.77%)
  • build/module/Mathlib.Algebra.Algebra.Unitization//instructions: -1.4G (-3.05%)
  • build/module/Mathlib.Algebra.Category.Grp.Preadditive//instructions: -891.1M (-12.05%)
  • build/module/Mathlib.Algebra.Category.ModuleCat.Basic//instructions: -1.5G (-3.96%)
  • build/module/Mathlib.Algebra.Category.ModuleCat.Ext.Basic//instructions: -1.1G (-6.92%)
  • build/module/Mathlib.Algebra.Category.ModuleCat.Presheaf.Abelian//instructions: -1.1G (-13.70%)
  • build/module/Mathlib.Algebra.Category.ModuleCat.Presheaf.Sheafification//instructions: -1.6G (-4.21%)
  • build/module/Mathlib.Algebra.Category.ModuleCat.Presheaf//instructions: -2.1G (-4.42%)
  • build/module/Mathlib.Algebra.Category.ModuleCat.Sheaf.Free//instructions: -1.7G (-7.97%)
  • build/module/Mathlib.Algebra.Category.ModuleCat.Sheaf.PullbackContinuous//instructions: -1.2G (-2.97%)
  • build/module/Mathlib.Algebra.Category.ModuleCat.Sheaf.Quasicoherent//instructions: -1.6G (-1.49%)
  • build/module/Mathlib.Algebra.Category.Ring.Constructions//instructions: -1.5G (-3.30%)
  • build/module/Mathlib.Algebra.Category.Ring.Limits//instructions: -3.2G (-4.47%)
  • build/module/Mathlib.Algebra.Field.IsField//instructions: -433.3M (-6.87%)
  • build/module/Mathlib.Algebra.Homology.Additive//instructions: -1.1G (-4.44%)
  • build/module/Mathlib.Algebra.Homology.HomotopyCategory.MappingCocone//instructions: -1.8G (-5.59%)
  • build/module/Mathlib.Algebra.Lie.Basis.Basic//instructions: -1.9G (-2.81%)
  • build/module/Mathlib.Algebra.Module.LinearMap.Defs//instructions: -1.4G (-3.03%)
  • and 160 more

@astrainfinita

Copy link
Copy Markdown
Collaborator Author

!bench

@leanprover-radar

leanprover-radar commented Aug 10, 2026

Copy link
Copy Markdown

Benchmark results for 34bee2d against 6d605ae are in. There are significant results. @astrainfinita

  • build//instructions: -864.2G (-0.60%)

Large changes (1✅)

  • 1 hidden

Medium changes (12✅, 7🟥)

  • build/module/Mathlib.Algebra.Category.Grp.Colimits//instructions: -3.9G (-13.37%)
  • build/module/Mathlib.Algebra.Ring.CentroidHom//instructions: -3.4G (-10.32%)
  • build/module/Mathlib.Analysis.CStarAlgebra.ContinuousFunctionalCalculus.Instances//instructions: -5.5G (-7.00%)
  • build/module/Mathlib.Analysis.CStarAlgebra.Multiplier//instructions: -6.9G (-9.23%)
  • build/module/Mathlib.Analysis.Calculus.FormalMultilinearSeries//instructions: -3.2G (-7.78%)
  • build/module/Mathlib.Analysis.Calculus.IteratedDeriv.Lemmas//instructions: -6.8G (-7.55%)
  • 🟥 build/module/Mathlib.Analysis.Calculus.LineDeriv.QuadraticMap//instructions: +3.5G (+27.54%)
  • build/module/Mathlib.Analysis.Normed.Lp.lpHolder//instructions: -9.8G (-15.93%)
  • 🟥 build/module/Mathlib.Analysis.SpecialFunctions.Log.Deriv//instructions: +4.7G (+9.93%)
  • build/module/Mathlib.FieldTheory.RatFunc.Basic//instructions: -7.0G (-5.03%)
  • 🟥 build/module/Mathlib.FieldTheory.SeparableClosure//instructions: +4.1G (+5.91%)
  • build/module/Mathlib.GroupTheory.GroupAction.SubMulAction//instructions: -1.9G (-6.45%)
  • 🟥 build/module/Mathlib.GroupTheory.OrderOfElement//instructions: +10.1G (+13.21%)
  • build/module/Mathlib.LinearAlgebra.BilinearMap//instructions: -3.2G (-5.16%)
  • 🟥 build/module/Mathlib.NumberTheory.Harmonic.ZetaAsymp//instructions: +7.3G (+12.36%)
  • 🟥 build/module/Mathlib.NumberTheory.NumberField.Units.Basic//instructions: +11.8G (+38.56%)
  • build/module/Mathlib.RingTheory.DedekindDomain.Different//instructions: -26.0G (-7.57%)
  • build/module/Mathlib.RingTheory.DedekindDomain.LinearDisjoint//instructions: -8.9G (-6.09%)
  • 🟥 build/module/Mathlib.RingTheory.Polynomial.IsIntegral//instructions: +5.3G (+14.62%)

Small changes (163✅, 17🟥)

  • build/module/Mathlib.Algebra.Algebra.Bilinear//instructions: -695.2M (-4.48%)
  • build/module/Mathlib.Algebra.Algebra.NonUnitalSubalgebra//instructions: -3.3G (-4.96%)
  • build/module/Mathlib.Algebra.Algebra.Spectrum.Quasispectrum//instructions: -931.7M (-2.94%)
  • build/module/Mathlib.Algebra.Algebra.Unitization//instructions: -1.4G (-3.13%)
  • build/module/Mathlib.Algebra.Category.Grp.Preadditive//instructions: -924.9M (-12.51%)
  • build/module/Mathlib.Algebra.Category.Grp.Ulift//instructions: -2.1G (-16.32%)
  • build/module/Mathlib.Algebra.Category.ModuleCat.Basic//instructions: -1.6G (-4.12%)
  • build/module/Mathlib.Algebra.Category.ModuleCat.Ext.Basic//instructions: -1.0G (-6.58%)
  • build/module/Mathlib.Algebra.Category.ModuleCat.Presheaf.Abelian//instructions: -886.6M (-11.37%)
  • build/module/Mathlib.Algebra.Category.ModuleCat.Presheaf.Monoidal//instructions: -1.2G (-2.64%)
  • build/module/Mathlib.Algebra.Category.ModuleCat.Presheaf.Sheafification//instructions: -1.8G (-4.80%)
  • build/module/Mathlib.Algebra.Category.ModuleCat.Presheaf//instructions: -2.0G (-4.29%)
  • build/module/Mathlib.Algebra.Category.ModuleCat.Sheaf.Free//instructions: -1.3G (-6.07%)
  • build/module/Mathlib.Algebra.Category.ModuleCat.Sheaf.PullbackContinuous//instructions: -1.2G (-2.91%)
  • build/module/Mathlib.Algebra.Category.ModuleCat.Sheaf.Quasicoherent//instructions: -1.7G (-1.52%)
  • build/module/Mathlib.Algebra.Category.Ring.Limits//instructions: -3.3G (-4.61%)
  • build/module/Mathlib.Algebra.Field.IsField//instructions: -442.3M (-7.01%)
  • build/module/Mathlib.Algebra.Homology.HomotopyCategory.MappingCocone//instructions: -1.9G (-5.75%)
  • build/module/Mathlib.Algebra.Module.LinearMap.Defs//instructions: -1.2G (-2.50%)
  • build/module/Mathlib.Algebra.Module.LocalizedModule.Submodule//instructions: -932.6M (-2.44%)
  • and 160 more

@astrainfinita

Copy link
Copy Markdown
Collaborator Author

!bench

@leanprover-radar

leanprover-radar commented Aug 10, 2026

Copy link
Copy Markdown

Benchmark results for 5bf184b against 6d605ae are in. There are significant results. @astrainfinita

  • build//instructions: -855.3G (-0.59%)

Large changes (1✅, 1🟥)

  • 🟥 build/module/Mathlib.Algebra.Category.Grp.Colimits//instructions: +21.7G (+74.49%)
  • and 1 hidden

Medium changes (15✅, 10🟥)

  • build/module/Mathlib.Algebra.BigOperators.Fin//instructions: -2.9G (-5.84%)
  • 🟥 build/module/Mathlib.Algebra.Category.Grp.Ulift//instructions: +3.8G (+29.87%)
  • build/module/Mathlib.Algebra.Ring.CentroidHom//instructions: -3.4G (-10.29%)
  • build/module/Mathlib.AlgebraicTopology.SimplicialObject.ChainHomotopy//instructions: -4.4G (-11.10%)
  • build/module/Mathlib.Analysis.CStarAlgebra.ContinuousFunctionalCalculus.Instances//instructions: -5.9G (-7.54%)
  • build/module/Mathlib.Analysis.CStarAlgebra.Multiplier//instructions: -7.4G (-9.93%)
  • build/module/Mathlib.Analysis.Calculus.FormalMultilinearSeries//instructions: -3.2G (-7.67%)
  • build/module/Mathlib.Analysis.Calculus.IteratedDeriv.Lemmas//instructions: -6.8G (-7.53%)
  • 🟥 build/module/Mathlib.Analysis.Calculus.LineDeriv.QuadraticMap//instructions: +3.5G (+27.67%)
  • build/module/Mathlib.Analysis.Normed.Field.Basic//instructions: -2.6G (-11.31%)
  • build/module/Mathlib.Analysis.Normed.Lp.lpHolder//instructions: -7.3G (-11.74%)
  • build/module/Mathlib.Analysis.Normed.Module.Alternating.Uncurry.Fin//instructions: -3.2G (-8.08%)
  • 🟥 build/module/Mathlib.Analysis.SpecialFunctions.Log.Deriv//instructions: +4.9G (+10.22%)
  • 🟥 build/module/Mathlib.CategoryTheory.Abelian.Indization//instructions: +2.3G (+21.38%)
  • build/module/Mathlib.FieldTheory.RatFunc.Basic//instructions: -7.5G (-5.38%)
  • 🟥 build/module/Mathlib.FieldTheory.SeparableClosure//instructions: +4.2G (+5.99%)
  • 🟥 build/module/Mathlib.GroupTheory.OrderOfElement//instructions: +10.0G (+13.10%)
  • build/module/Mathlib.LinearAlgebra.BilinearMap//instructions: -3.2G (-5.17%)
  • 🟥 build/module/Mathlib.NumberTheory.Harmonic.ZetaAsymp//instructions: +7.2G (+12.18%)
  • build/module/Mathlib.NumberTheory.ModularForms.Cusps//instructions: -3.2G (-8.48%)
  • and 5 more

Small changes (153✅, 19🟥)

  • build/module/Mathlib.Algebra.Algebra.Bilinear//instructions: -650.5M (-4.19%)
  • build/module/Mathlib.Algebra.Algebra.NonUnitalSubalgebra//instructions: -3.5G (-5.39%)
  • build/module/Mathlib.Algebra.Algebra.Spectrum.Quasispectrum//instructions: -944.3M (-2.98%)
  • build/module/Mathlib.Algebra.Algebra.Unitization//instructions: -1.5G (-3.21%)
  • 🟥 build/module/Mathlib.Algebra.Category.FGModuleCat.Abelian//instructions: +1.7G (+18.72%)
  • build/module/Mathlib.Algebra.Category.Grp.Preadditive//instructions: -894.7M (-12.10%)
  • build/module/Mathlib.Algebra.Category.ModuleCat.Basic//instructions: -1.5G (-3.95%)
  • build/module/Mathlib.Algebra.Category.ModuleCat.Presheaf.Monoidal//instructions: -1.3G (-2.72%)
  • build/module/Mathlib.Algebra.Category.ModuleCat.Presheaf.Sheafification//instructions: -1.7G (-4.44%)
  • build/module/Mathlib.Algebra.Category.ModuleCat.Presheaf//instructions: -2.0G (-4.23%)
  • 🟥 build/module/Mathlib.Algebra.Category.ModuleCat.Sheaf.Free//instructions: +1.7G (+7.68%)
  • build/module/Mathlib.Algebra.Category.ModuleCat.Sheaf.PullbackContinuous//instructions: -1.2G (-3.06%)
  • build/module/Mathlib.Algebra.Category.ModuleCat.Sheaf.Quasicoherent//instructions: -1.6G (-1.46%)
  • build/module/Mathlib.Algebra.Category.Ring.Constructions//instructions: -1.5G (-3.28%)
  • build/module/Mathlib.Algebra.Category.Ring.Limits//instructions: -3.2G (-4.46%)
  • build/module/Mathlib.Algebra.Field.IsField//instructions: -444.8M (-7.05%)
  • build/module/Mathlib.Algebra.Homology.Additive//instructions: -1.0G (-4.31%)
  • build/module/Mathlib.Algebra.Homology.HomotopyCategory.MappingCocone//instructions: -1.8G (-5.59%)
  • build/module/Mathlib.Algebra.Lie.Basis.Basic//instructions: -1.9G (-2.80%)
  • build/module/Mathlib.Algebra.Module.LinearMap.Defs//instructions: -1.4G (-3.03%)
  • and 152 more

This reverts commit 5bf184b.
This reverts commit 8ceec5d.
@astrainfinita
astrainfinita marked this pull request as ready for review August 10, 2026 03:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

t-algebra Algebra (groups, rings, fields, etc)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants