Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: introduce Ideal.IsTwoSided class for quotients of noncommutative rings #17930

Open
wants to merge 89 commits into
base: master
Choose a base branch
from

Conversation

alreadydone
Copy link
Contributor

@alreadydone alreadydone commented Oct 18, 2024

@alreadydone alreadydone added awaiting-CI t-algebra Algebra (groups, rings, fields, etc) labels Oct 18, 2024
Copy link

github-actions bot commented Oct 18, 2024

PR summary a180e6862f

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference

Declarations diff

+ IsTorsionBySet.semilinearMap
+ IsTwoSided
+ _root_.RingHom.coe_toSemilinearMap
+ commSemiring
+ divisionRing
+ exists_right_inv_of_exists_left_inv
+ instance (R) {A} [CommRing R] [CommRing A] (I : Ideal A) [Algebra R A] :
+ instance (priority := 100) quotientAlgebra {R} [CommRing R] {I : Ideal A} [I.IsTwoSided]
+ instance (priority := low) (f : R →+* S) [RingHomSurjective f] (I : Ideal R) [I.IsTwoSided] :
+ instance (priority := low) : (I ^ n).IsTwoSided
+ instance (priority := low) : (Module.annihilator R M).IsTwoSided
+ instance (priority := low) : (N.colon P).IsTwoSided
+ instance (priority := low) : (ker f).IsTwoSided := inferInstanceAs (Ideal.comap f ⊥).IsTwoSided
+ instance (priority := low) : IsTwoSided (⊤ : Ideal α) := ⟨fun _ _ ↦ trivial⟩
+ instance (priority := low) : IsTwoSided (⊥ : Ideal α)
+ instance (priority := low) [J.IsTwoSided] : (I * J).IsTwoSided
+ instance (priority := low) [K.IsTwoSided] : (comap f K).IsTwoSided
+ instance (priority := low) [∀ i, (I i).IsTwoSided] : (pi I).IsTwoSided
+ instance (priority := low) {ι} (I : ι → Ideal α) [∀ i, (I i).IsTwoSided] : (⨅ i, I i).IsTwoSided
+ instance : Coe R (R ⧸ I)
+ instance : I.IsTwoSided := ⟨fun b ha ↦ mul_comm b _ ▸ I.smul_mem _ ha⟩
+ instance : IsCoatomic (Ideal α) := CompleteLattice.coatomic_of_top_compact isCompactElement_top
+ instance : Nonempty (R ⧸ I)
+ instance [I.IsTwoSided] : Module (R ⧸ I) (M ⧸ I • (⊤ : Submodule R M))
+ instance {A} [CommRing A] [Algebra R₁ A] (I : Ideal A) : Algebra R₁ (A ⧸ I) := inferInstance
+ instance {R} [CommRing R] (I : Ideal R) : Ring (R ⧸ I) := inferInstance
+ instance {R} [CommRing R] : HasQuotient R (Ideal R) := inferInstance
+ instance {α} [CommRing α] (I : Ideal α) : I.IsTwoSided := inferInstance
+ isTorsionBySet_iff_subset_annihilator
+ isTorsionBySet_of_subset
+ isTorsionBy_iff_mem_annihilator
+ mul_one
+ mul_smul
+ pow_succ
+ pow_succ'
+ ring
+ semiring
++ pow_add
++- subsingleton_iff
- inhabited
- instance (priority := 100) quotientAlgebra {I : Ideal A} [Algebra R A] :
- instance : IsCoatomic (Ideal α) := by
- instance : Module (R ⧸ I) (M ⧸ I • (⊤ : Submodule R M))
- instance {I : Ideal R} : Coe R (R ⧸ I)

You can run this locally as follows
## summary with just the declaration names:
./scripts/declarations_diff.sh <optional_commit>

## more verbose report:
./scripts/declarations_diff.sh long <optional_commit>

The doc-module for script/declarations_diff.sh contains some details about this script.


Decrease in tech debt: (relative, absolute) = (2.99, 0.03)
Current number Change Type
196 -2 adaptation notes
199 -4 disabled simpNF lints

Current commit a180e6862f
Reference commit b1178f181d

You can run this locally as

./scripts/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).

@mathlib4-dependent-issues-bot mathlib4-dependent-issues-bot added the blocked-by-other-PR This PR depends on another PR to Mathlib (this label is automatically managed by a bot) label Oct 18, 2024
@alreadydone alreadydone changed the title refactor: introduce Ideal.IsTwoSided class for generalization to noncommutative setting refactor: introduce Ideal.IsTwoSided class for quotients of noncommutative rings Oct 22, 2024
@leanprover-community-bot-assistant leanprover-community-bot-assistant added the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Oct 26, 2024
@leanprover-bot
Copy link
Collaborator

Here are the benchmark results for commit 49dbf9e.
There were significant changes against commit 75368be:

  Benchmark                                       Metric         Change
  =====================================================================
+ ~Mathlib.FieldTheory.SeparableDegree            instructions    -5.3%
- ~Mathlib.LinearAlgebra.Semisimple               instructions    24.1%
- ~Mathlib.RingTheory.AdjoinRoot                  instructions    15.8%
- ~Mathlib.RingTheory.Ideal.Quotient.Operations   instructions    25.3%
- ~Mathlib.RingTheory.Jacobson.Ring               instructions    17.4%
- ~Mathlib.RingTheory.Polynomial.Quotient         instructions    20.0%

@alreadydone
Copy link
Contributor Author

!bench

@leanprover-bot
Copy link
Collaborator

Here are the benchmark results for commit 53313de.
There were significant changes against commit 75368be:

  Benchmark                                       Metric         Change
  =====================================================================
+ ~Mathlib.FieldTheory.SeparableDegree            instructions    -5.3%
- ~Mathlib.LinearAlgebra.Semisimple               instructions    24.1%
- ~Mathlib.RingTheory.AdjoinRoot                  instructions    15.8%
- ~Mathlib.RingTheory.Ideal.Quotient.Operations   instructions    25.3%
- ~Mathlib.RingTheory.Jacobson.Ring               instructions    17.4%
- ~Mathlib.RingTheory.Polynomial.Quotient         instructions    20.0%

@alreadydone
Copy link
Contributor Author

!bench

@leanprover-bot
Copy link
Collaborator

Here are the benchmark results for commit 08e995d.
There were significant changes against commit 75368be:

  Benchmark                                       Metric         Change
  =====================================================================
+ ~Mathlib.FieldTheory.SeparableDegree            instructions    -5.3%
- ~Mathlib.LinearAlgebra.Semisimple               instructions    24.1%
- ~Mathlib.RingTheory.AdjoinRoot                  instructions    18.4%
- ~Mathlib.RingTheory.Ideal.Quotient.Operations   instructions    25.6%
- ~Mathlib.RingTheory.Jacobson.Ring               instructions    21.2%
- ~Mathlib.RingTheory.Polynomial.Quotient         instructions    21.3%

@alreadydone
Copy link
Contributor Author

!bench

@leanprover-bot
Copy link
Collaborator

Here are the benchmark results for commit 00e44e4.
The entire run failed.
Found no significant differences.

@alreadydone
Copy link
Contributor Author

!bench

@leanprover-bot
Copy link
Collaborator

Here are the benchmark results for commit 0f6f5ef.
There were significant changes against commit 7d071de:

  Benchmark                                       Metric         Change
  =====================================================================
- ~Mathlib.FieldTheory.LinearDisjoint             instructions     7.5%
- ~Mathlib.LinearAlgebra.Semisimple               instructions    24.1%
- ~Mathlib.RingTheory.AdjoinRoot                  instructions    15.8%
- ~Mathlib.RingTheory.Ideal.Quotient.Operations   instructions    25.3%
- ~Mathlib.RingTheory.Jacobson.Ring               instructions    17.4%
- ~Mathlib.RingTheory.Polynomial.Quotient         instructions    20.1%

@leanprover-community-bot-assistant leanprover-community-bot-assistant added the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Dec 31, 2024
@kbuzzard
Copy link
Member

@alreadydone How about this for a proposal to move this PR forwards.

  1. You merge master and fix conflicts
  2. You pull off a bunch of completely uncontroversial stuff from this PR which doesn't cause any slowdowns (e.g. a bunch of missing API which looks uncontroversial), and just PR that independently, and we get it merged, because the diff here is quite intimidating.
  3. Once this PR has a very short diff, we get Michael Stoll to run his refined timing tool on it.
  4. Hopefully we decide that the actual time differences are small and merge.

I've just opened Mathlib.RingTheory.Ideal.Quotient.Operations on this branch and it seems to compile perfectly reasonably, it's not like those crazy algebraic geometry files you see sometimes when you have to bump up heartbeats and they're taking forever on a single declaration. I also looked at Mathlib.LinearAlgebra.Semisimple and there there is a slow declaration there, but it is already slow on master so this doesn't really count as an argument against this refactor. I'm wondering whether if we see the absolute change here we'll decide that it's fine to merge this. But right now it's a pretty intimidating diff and there are slowdowns too so I can see that it's not a popular PR to review.

@alreadydone
Copy link
Contributor Author

alreadydone commented Jan 10, 2025

Thanks for the proposal!

  1. I have merged master and fix conflicts several times, but since it touches many files it's bound to accrue conflicts as time goes on.
  2. As experiment: Ideal.IsTwoSided #20140 shows, slowdown starts to happen once I added Ideal.Quotient.ring, which is one of the main purpose of this PR. If I only add Ideal.IsTwoSided, there is no noticeable slowdown, but that's because we're not really using the class.
  3. +4. You can run the timing tool on the very small (+48 -42) PR experiment: Ideal.IsTwoSided #20140, which has a pretty similar performance profile.

The diff isn't that intimidating if you look at the declarations diff: the only instance removed is the inhabited instance (replaced by nonempty), and most additions are IsTwoSided instances. Many decls are generalized to the noncommutative setting and there isn't much reason to worry about them; fortuantely the changes happen in the variables so they aptly don't show up in the declarations diff.
image

Copy link
Member

@kbuzzard kbuzzard left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Once the merge conflicts are fixed we can benchmark this PR and have an actual look at the slowdowns. It seems to me that they are actually not too bad, and perhaps just the price we have to pay for doing algebra properly rather than the way we're currently doing it.

However I would like to raise the possibility that instead of (I : Ideal R) [IsTwoSided I] we could just do (I : TwoSidedIdeal R). (which already exists). Why are we not doing down the TwoSidedIdeal route? Sorry if this has all been covered before, I'm just getting up to speed with it all.

Comment on lines 271 to 277
#adaptation_note
/--
On nightly-2024-11-12, we had to add `nolint simpNF` to the following lemma,
as otherwise we get a deterministic timeout in typeclass inference.
This should be investigated.
-/
@[simp, nolint simpNF]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
#adaptation_note
/--
On nightly-2024-11-12, we had to add `nolint simpNF` to the following lemma,
as otherwise we get a deterministic timeout in typeclass inference.
This should be investigated.
-/
@[simp, nolint simpNF]
@[simp]

Is this comment still true? I don't seem to get any error or lint failure in the file itself (with #lint) if I remove the nolint. Same for the adaptation note just below.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tested the effect around here and it seems negligible. Let me do another test after merging master.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After removing nolint simpNF, build went down from 0.19% to 0.18%, but lint went up from 0.13% to 0.15%. Is this worth it? Linting tends to cost more time due to lack of parallelization, I heard.

@@ -223,14 +231,14 @@ lemma quotientInfToPiQuotient_surj [Finite ι] {I : ι → Ideal R}

/-- **Chinese Remainder Theorem**. Eisenbud Ex.2.6.
Similar to Atiyah-Macdonald 1.10 and Stacks 00DT -/
noncomputable def quotientInfRingEquivPiQuotient [Finite ι] (f : ι → Ideal R)
noncomputable def quotientInfRingEquivPiQuotient (f : ι → Ideal R)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it still similar to Stacks 00DT? If so then maybe add a @[stacks] tag?

Copy link
Contributor Author

@alreadydone alreadydone Jan 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, but it's only the isomorphism, not the equality between infimum and product of ideals. The closest thing to the equality in mathlib is probably Ideal.iInf_span_singleton, which should probably be generalized ...

Suggested change
noncomputable def quotientInfRingEquivPiQuotient (f : ι → Ideal R)
@[stacks 00DT "isomorphism in (1)"]
noncomputable def quotientInfRingEquivPiQuotient (f : ι → Ideal R)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

However I would like to raise the possibility that instead of (I : Ideal R) [IsTwoSided I] we could just do (I : TwoSidedIdeal R). (which already exists). Why are we not doing down the TwoSidedIdeal route? Sorry if this has all been covered before, I'm just getting up to speed with it all.

I explained reasons to prefer IsTwoSided here. Here are my latest thoughts: if using TwoSidedIdeal for quotients,

(1) in order to unify the commutative case and noncommutative case, you would like to switch all quotients by Ideals to quotients by TwoSidedIdeals. In the process you need to duplicate a lot of APIs about Ideals to TwoSidedIdeals; it helps to think all that you need for this exact declaration quotientInfRingEquivPiQuotient. Such duplication is mostly meaningless as most operations on Ideal and TwoSidedIdeal agree, and you'd be better served adding instances registering that these operations preserve two-sidedness (which is done in this PR).

(2) Even you are to maintain the two parallel APIs, it's inevitable that you sometimes need to convert between the two types, either by coercion or explicit invocation of .toIdeal/.toTwoSidedIdeal, which is not good news for readability. This is further complicated by the fact TwoSidedIdeal is a RingCon, carrying the data of a binary predicate rather than a unary one, which means that going from TwoSidedIdeal to Ideal and back can't be defeq. This can be alleviated by changing TwoSidedIdeal to be the bundle of Ideal and IsTwoSided, which is arguably the right thing to do, since in a semiring a RingCon and a TwoSidedIdeal aren't the same thing.

(3) When I said "all quotients by Ideals" I actually meant only those where we use the ring structure; since Ideals are in particular Submodules, it's still valid to consider the quotient module. But the ring also has an algebra hence a module structure, and one may needs to compare both at times. If the two quotients are defeq you could treat them as the same (which is a bit of defeq abuse but prevalent when dealing with e.g. CoeSort of Submodule/Subalgebra), but if not (see (2)), you have to use an explicit isomorphism. I think it's better not to create more ways of talking about the same thing.

@alreadydone alreadydone removed the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Jan 10, 2025
@alreadydone
Copy link
Contributor Author

!bench

@leanprover-bot
Copy link
Collaborator

Here are the benchmark results for commit 80a2ec8.
There were significant changes against commit b1178f1:

  Benchmark                                         Metric         Change
  =======================================================================
- ~Mathlib.FieldTheory.LinearDisjoint               instructions     8.1%
- ~Mathlib.LinearAlgebra.Semisimple                 instructions    24.7%
- ~Mathlib.RingTheory.AdjoinRoot                    instructions    16.0%
- ~Mathlib.RingTheory.Ideal.Quotient.Operations     instructions    25.4%
- ~Mathlib.RingTheory.Jacobson.Ring                 instructions    17.7%
- ~Mathlib.RingTheory.Polynomial.Quotient           instructions    20.0%
- ~Mathlib.Topology.Algebra.Valued.LocallyCompact   instructions    16.4%

Copy link

File Instructions %
build +292.551⬝10⁹ (+0.19%)
lint +9.802⬝10⁹ (+0.13%)
Mathlib.RingTheory.Ideal.Quotient.Operations +33.651⬝10⁹ (+25.40%)
Mathlib.LinearAlgebra.Semisimple +27.90⬝10⁹ (+24.71%)
Mathlib.RingTheory.AdjoinRoot +22.287⬝10⁹ (+16.01%)
Mathlib.FieldTheory.LinearDisjoint +19.332⬝10⁹ (+8.13%)
Mathlib.RingTheory.Jacobson.Ring +17.63⬝10⁹ (+17.70%)
2 files, Instructions +10.0⬝10⁹
File Instructions %
Mathlib.RingTheory.Polynomial.Quotient +10.628⬝10⁹ (+19.97%)
Mathlib.Topology.Algebra.Valued.LocallyCompact +10.192⬝10⁹ (+16.35%)
2 files, Instructions +8.0⬝10⁹
File Instructions %
Mathlib.NumberTheory.KummerDedekind +8.531⬝10⁹ (+9.62%)
Mathlib.RingTheory.Ideal.Quotient.Basic +8.399⬝10⁹ (+35.89%)
3 files, Instructions +7.0⬝10⁹
File Instructions %
Mathlib.RingTheory.Smooth.Kaehler +7.223⬝10⁹ (+2.45%)
Mathlib.RingTheory.Kaehler.Basic +7.89⬝10⁹ (+2.23%)
Mathlib.RingTheory.LocalRing.ResidueField.Basic +7.12⬝10⁹ (+23.15%)
File Instructions %
Mathlib.RingTheory.Regular.RegularSequence +5.11⬝10⁹ (+5.58%)
2 files, Instructions +4.0⬝10⁹
File Instructions %
Mathlib.RingTheory.Smooth.Basic +4.878⬝10⁹ (+16.18%)
Mathlib.RingTheory.AdicCompletion.Functoriality +4.749⬝10⁹ (+5.35%)
4 files, Instructions +3.0⬝10⁹
File Instructions %
Mathlib.RingTheory.IntegralClosure.IsIntegralClosure.Basic +3.899⬝10⁹ (+4.59%)
Mathlib.RingTheory.Ideal.Cotangent +3.894⬝10⁹ (+4.63%)
Mathlib.RingTheory.Ideal.Operations +3.417⬝10⁹ (+3.59%)
Mathlib.LinearAlgebra.InvariantBasisNumber +3.267⬝10⁹ (+17.54%)
6 files, Instructions +2.0⬝10⁹
File Instructions %
Mathlib.AlgebraicGeometry.EllipticCurve.Group +2.992⬝10⁹ (+1.52%)
Mathlib.RingTheory.Smooth.Pi +2.761⬝10⁹ (+9.70%)
Mathlib.RingTheory.Nullstellensatz +2.648⬝10⁹ (+9.53%)
Mathlib.FieldTheory.KummerExtension +2.502⬝10⁹ (+2.37%)
Mathlib.RingTheory.Ideal.Over +2.317⬝10⁹ (+2.68%)
Mathlib.RingTheory.PowerSeries.Inverse +2.277⬝10⁹ (+7.56%)
20 files, Instructions +1.0⬝10⁹
File Instructions %
Mathlib.FieldTheory.IsAlgClosed.AlgebraicClosure +1.876⬝10⁹ (+3.56%)
Mathlib.Algebra.Module.Torsion +1.821⬝10⁹ (+2.30%)
Mathlib.NumberTheory.Padics.RingHoms +1.802⬝10⁹ (+3.48%)
Mathlib.RingTheory.Jacobson.Ideal +1.790⬝10⁹ (+7.56%)
Mathlib.AlgebraicGeometry.PrimeSpectrum.Polynomial +1.775⬝10⁹ (+1.30%)
Mathlib.RingTheory.AdicCompletion.Basic +1.753⬝10⁹ (+1.78%)
Mathlib.LinearAlgebra.TensorProduct.Quotient +1.581⬝10⁹ (+2.30%)
Mathlib.RingTheory.Ideal.MinimalPrime +1.569⬝10⁹ (+9.07%)
Mathlib.RingTheory.Valuation.ValuationSubring +1.524⬝10⁹ (+0.98%)
Mathlib.RingTheory.QuotSMulTop +1.504⬝10⁹ (+3.49%)
Mathlib.RingTheory.LocalRing.Quotient +1.496⬝10⁹ (+5.40%)
Mathlib.Algebra.Colimit.Ring +1.308⬝10⁹ (+1.49%)
Mathlib.Data.Array.Lemmas +1.290⬝10⁹ (+37.26%)
Mathlib.RingTheory.Trace.Quotient +1.282⬝10⁹ (+2.16%)
Mathlib.RingTheory.FinitePresentation +1.236⬝10⁹ (+2.88%)
Mathlib.RingTheory.DedekindDomain.Ideal +1.222⬝10⁹ (+0.52%)
Mathlib.RingTheory.Invariant +1.209⬝10⁹ (+2.20%)
Mathlib.RingTheory.Ideal.Quotient.Defs +1.168⬝10⁹ (+10.69%)
Mathlib.RingTheory.Unramified.Basic +1.167⬝10⁹ (+3.91%)
Mathlib.RingTheory.Localization.Ideal +1.13⬝10⁹ (+4.82%)
File Instructions %
Mathlib.RingTheory.Artinian.Instances -1.660⬝10⁹ (-12.76%)
CI run

@alreadydone
Copy link
Contributor Author

!bench

@leanprover-bot
Copy link
Collaborator

Here are the benchmark results for commit a180e68.
There were significant changes against commit b1178f1:

  Benchmark                                         Metric         Change
  =======================================================================
- ~Mathlib.FieldTheory.LinearDisjoint               instructions     8.1%
- ~Mathlib.LinearAlgebra.Semisimple                 instructions    24.9%
- ~Mathlib.RingTheory.AdjoinRoot                    instructions    16.0%
- ~Mathlib.RingTheory.Ideal.Quotient.Operations     instructions    25.4%
- ~Mathlib.RingTheory.Jacobson.Ring                 instructions    17.7%
- ~Mathlib.RingTheory.Polynomial.Quotient           instructions    20.0%
- ~Mathlib.Topology.Algebra.Valued.LocallyCompact   instructions    16.1%

Copy link

File Instructions %
build +282.831⬝10⁹ (+0.18%)
lint +11.749⬝10⁹ (+0.15%)
Mathlib.RingTheory.Ideal.Quotient.Operations +33.635⬝10⁹ (+25.39%)
Mathlib.LinearAlgebra.Semisimple +27.328⬝10⁹ (+24.93%)
Mathlib.RingTheory.AdjoinRoot +22.247⬝10⁹ (+15.99%)
Mathlib.FieldTheory.LinearDisjoint +19.320⬝10⁹ (+8.13%)
Mathlib.RingTheory.Jacobson.Ring +17.70⬝10⁹ (+17.70%)
2 files, Instructions +10.0⬝10⁹
File Instructions %
Mathlib.RingTheory.Polynomial.Quotient +10.632⬝10⁹ (+19.98%)
Mathlib.Topology.Algebra.Valued.LocallyCompact +10.11⬝10⁹ (+16.06%)
2 files, Instructions +8.0⬝10⁹
File Instructions %
Mathlib.NumberTheory.KummerDedekind +8.504⬝10⁹ (+9.59%)
Mathlib.RingTheory.Ideal.Quotient.Basic +8.402⬝10⁹ (+35.91%)
3 files, Instructions +7.0⬝10⁹
File Instructions %
Mathlib.RingTheory.Smooth.Kaehler +7.169⬝10⁹ (+2.44%)
Mathlib.RingTheory.LocalRing.ResidueField.Basic +7.106⬝10⁹ (+23.46%)
Mathlib.RingTheory.Kaehler.Basic +7.90⬝10⁹ (+2.23%)
3 files, Instructions +4.0⬝10⁹
File Instructions %
Mathlib.RingTheory.Smooth.Basic +4.882⬝10⁹ (+16.20%)
Mathlib.RingTheory.AdicCompletion.Functoriality +4.748⬝10⁹ (+5.35%)
Mathlib.RingTheory.Regular.RegularSequence +4.670⬝10⁹ (+5.20%)
4 files, Instructions +3.0⬝10⁹
File Instructions %
Mathlib.RingTheory.IntegralClosure.IsIntegralClosure.Basic +3.906⬝10⁹ (+4.60%)
Mathlib.RingTheory.Ideal.Cotangent +3.888⬝10⁹ (+4.62%)
Mathlib.RingTheory.Ideal.Operations +3.393⬝10⁹ (+3.57%)
Mathlib.LinearAlgebra.InvariantBasisNumber +3.275⬝10⁹ (+17.58%)
6 files, Instructions +2.0⬝10⁹
File Instructions %
Mathlib.AlgebraicGeometry.EllipticCurve.Group +2.984⬝10⁹ (+1.52%)
Mathlib.RingTheory.Smooth.Pi +2.764⬝10⁹ (+9.72%)
Mathlib.RingTheory.Nullstellensatz +2.644⬝10⁹ (+9.52%)
Mathlib.FieldTheory.KummerExtension +2.498⬝10⁹ (+2.36%)
Mathlib.RingTheory.Ideal.Over +2.306⬝10⁹ (+2.66%)
Mathlib.RingTheory.PowerSeries.Inverse +2.271⬝10⁹ (+7.54%)
18 files, Instructions +1.0⬝10⁹
File Instructions %
Mathlib.FieldTheory.IsAlgClosed.AlgebraicClosure +1.884⬝10⁹ (+3.58%)
Mathlib.Algebra.Module.Torsion +1.802⬝10⁹ (+2.28%)
Mathlib.RingTheory.Jacobson.Ideal +1.791⬝10⁹ (+7.57%)
Mathlib.AlgebraicGeometry.PrimeSpectrum.Polynomial +1.772⬝10⁹ (+1.29%)
Mathlib.RingTheory.AdicCompletion.Basic +1.749⬝10⁹ (+1.78%)
Mathlib.NumberTheory.Padics.RingHoms +1.711⬝10⁹ (+3.30%)
Mathlib.LinearAlgebra.TensorProduct.Quotient +1.580⬝10⁹ (+2.30%)
Mathlib.RingTheory.QuotSMulTop +1.498⬝10⁹ (+3.48%)
Mathlib.RingTheory.LocalRing.Quotient +1.496⬝10⁹ (+5.40%)
Mathlib.RingTheory.Ideal.MinimalPrime +1.487⬝10⁹ (+8.60%)
Mathlib.RingTheory.Valuation.ValuationSubring +1.484⬝10⁹ (+0.96%)
Mathlib.RingTheory.Ideal.Quotient.Defs +1.416⬝10⁹ (+12.97%)
Mathlib.Algebra.Colimit.Ring +1.331⬝10⁹ (+1.51%)
Mathlib.RingTheory.Invariant +1.291⬝10⁹ (+2.34%)
Mathlib.RingTheory.Trace.Quotient +1.283⬝10⁹ (+2.16%)
Mathlib.RingTheory.DedekindDomain.Ideal +1.232⬝10⁹ (+0.53%)
Mathlib.RingTheory.FinitePresentation +1.69⬝10⁹ (+2.49%)
Mathlib.RingTheory.Localization.Ideal +1.13⬝10⁹ (+4.82%)
2 files, Instructions -2.0⬝10⁹
File Instructions %
Mathlib.RingTheory.MvPolynomial.Localization -1.66⬝10⁹ (-3.11%)
Mathlib.RingTheory.Artinian.Instances -1.826⬝10⁹ (-14.04%)

CI run

@leanprover-community-bot-assistant leanprover-community-bot-assistant added the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Jan 13, 2025
@alreadydone
Copy link
Contributor Author

Gained merge conflicts again from #20518. Should I fix them now?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) t-algebra Algebra (groups, rings, fields, etc)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants