Zulip Chat Archive
Stream: mathlib4
Topic: define class of ideal lies over
Yongle Hu (Sep 30 2024 at 06:54):
Now we have Quotient.algebraQuotientOfLEComap in mathlib, which states that if S is an R-algebra, p and P are ideals of R and S respectively, and P lies over p, then R / p is an S / P-algebra. However, this is a def rather than an instance, since during instance inference, conditions like (h : p ≤ Ideal.comap f P) are not searched for. This brings some difficulties in practice. For example, writing (B ⧸ P) ≃ₐ[A ⧸ p] (B ⧸ P) and Module.Finite (A ⧸ p) (B ⧸ P) results in errors.
To solve it, my current idea is to define a class of lying over. Then we can write (B ⧸ P) ≃ₐ[A ⧸ p] (B ⧸ P) and Module.Finite (A ⧸ p) (B ⧸ P).
import Mathlib.RingTheory.Ideal.Over
variable {A B : Type*} [CommRing A] [CommRing B] [Algebra A B] (P : Ideal B) (p : Ideal A)
class ideal_lies_over : Prop where over : p = Ideal.comap (algebraMap A B) P
infix : 50 "lies_over" => ideal_lies_over
variable [ho : P lies_over p]
instance : Algebra (A ⧸ p) (B ⧸ P) := Ideal.Quotient.algebraQuotientOfLEComap (le_of_eq ho.over)
instance : IsScalarTower A (A ⧸ p) (B ⧸ P) := IsScalarTower.of_algebraMap_eq (fun _ ↦ rfl)
instance [Module.Finite A B] : Module.Finite (A ⧸ p) (B ⧸ P) :=
Module.Finite.of_restrictScalars_finite A (A ⧸ p) (B ⧸ P)
#check (B ⧸ P) ≃ₐ[A ⧸ p] (B ⧸ P)
Is there a better way to solve it? Thanks!
Kevin Buzzard (Oct 01 2024 at 21:35):
In the FLT repo I demonstrate another solution (which I learnt from Amelia) which is basically just to add the assumption that S/P is an R/p algebra and also to add the IsScalarTower instances for R,R/p,S/P and R,S,S/P. Now you can prove that p is a subset of the pullback of P!
Yongle Hu (Oct 02 2024 at 01:46):
That's a very clever idea! But the condition I need is p = Ideal.comap (algebraMap A B) P, so using this method, do I need to state p = Ideal.comap (algebraMap A B) P and [Algebra (R ⧸ p) (S ⧸ P)] [IsScalarTower R (R ⧸ p) (S ⧸ P)] at the same time?
Kevin Buzzard (Oct 04 2024 at 21:09):
I guess this would be one way out of the problem. Your ideal_lies_over solution looks interesting though. I am not really able to judge the relative merits of these approaches.
Last updated: May 02 2025 at 03:31 UTC