The module I ⧸ I ^ 2 #
In this file, we provide special API support for the module I ⧸ I ^ 2. The official
definition is a quotient module of I, but the alternative definition as an ideal of R ⧸ I ^ 2 is
also given, and the two are R-equivalent as in Ideal.cotangentEquivIdeal.
Additional support is also given to the cotangent space m ⧸ m ^ 2 of a local ring.
@[implicit_reducible]
Equations
- I.instInhabitedCotangent = { default := Ideal.instInhabitedCotangent._aux_1 I }
@[implicit_reducible]
Equations
- One or more equations did not get rendered due to their size.
@[implicit_reducible]
Equations
- I.instModuleQuotientCotangent = { smul := Ideal.instModuleQuotientCotangent._aux_1 I, mul_smul := ⋯, one_smul := ⋯, smul_zero := ⋯, smul_add := ⋯, add_smul := ⋯, zero_smul := ⋯ }
@[implicit_reducible]
instance
Ideal.instModuleCotangentOfAlgebra
{R : Type u_2}
{S : Type u_1}
[CommRing R]
[CommSemiring S]
[Algebra S R]
(I : Ideal R)
:
Equations
- I.instModuleCotangentOfAlgebra = { smul := Ideal.instModuleCotangentOfAlgebra._aux_1 I, mul_smul := ⋯, one_smul := ⋯, smul_zero := ⋯, smul_add := ⋯, add_smul := ⋯, zero_smul := ⋯ }
instance
Ideal.instIsScalarTowerQuotientCotangent
{R : Type u_1}
[CommRing R]
(I : Ideal R)
:
IsScalarTower R (R ⧸ I) I.Cotangent
instance
Ideal.instIsScalarTowerCotangent
{R : Type u_3}
{S : Type u_1}
{S' : Type u_2}
[CommRing R]
[CommSemiring S]
[Algebra S R]
[CommSemiring S']
[Algebra S' R]
[Algebra S S']
[IsScalarTower S S' R]
(I : Ideal R)
:
IsScalarTower S S' I.Cotangent
instance
Ideal.instIsNoetherianCotangentOfSubtypeMem
{R : Type u_1}
[CommRing R]
(I : Ideal R)
[IsNoetherian R ↥I]
:
@[simp]
theorem
Ideal.isTorsionBySet_cotangent
{R : Type u}
[CommRing R]
(I : Ideal R)
:
Module.IsTorsionBySet R I.Cotangent ↑I
I ⧸ I ^ 2 as an ideal of R ⧸ I ^ 2.
Equations
- I.cotangentIdeal = Submodule.map (Ideal.Quotient.mk (I ^ 2)).toSemilinearMap I
Instances For
The equivalence of the two definitions of I / I ^ 2, either as the quotient of I or the
ideal of R / I ^ 2.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
Ideal.cotangentEquivIdeal_symm_apply
{R : Type u}
[CommRing R]
(I : Ideal R)
(x : R)
(hx : x ∈ I)
:
def
AlgHom.kerSquareLift
{R : Type u}
[CommRing R]
{A : Type u_1}
{B : Type u_2}
[CommRing A]
[CommRing B]
[Algebra R A]
[Algebra R B]
(f : A →ₐ[R] B)
:
The lift of f : A →ₐ[R] B to A ⧸ J ^ 2 →ₐ[R] B with J being the kernel of f.
Equations
- f.kerSquareLift = { toRingHom := Ideal.Quotient.lift (RingHom.ker f.toRingHom ^ 2) f.toRingHom ⋯, commutes' := ⋯ }
Instances For
@[implicit_reducible]
instance
Ideal.Algebra.kerSquareLift
{R : Type u}
[CommRing R]
{A : Type u_1}
[CommRing A]
[Algebra R A]
:
Algebra (R ⧸ RingHom.ker (algebraMap R A) ^ 2) A
Equations
instance
Ideal.instIsScalarTowerQuotientHPowKerRingHomAlgebraMapOfNat
{R : Type u}
[CommRing R]
{A : Type u_1}
{B : Type u_2}
[CommRing A]
[CommRing B]
[Algebra R A]
[Algebra R B]
[Algebra A B]
[IsScalarTower R A B]
:
IsScalarTower R (A ⧸ RingHom.ker (algebraMap A B) ^ 2) B
The quotient ring of I ⧸ I ^ 2 is R ⧸ I.
Equations
- I.quotCotangent = (Ideal.quotEquivOfEq ⋯).trans ((DoubleQuot.quotQuotEquivQuotSup (I ^ 2) I).trans (Ideal.quotEquivOfEq ⋯))
Instances For
def
Ideal.mapCotangent
{R : Type u}
[CommRing R]
{A : Type u_1}
{B : Type u_2}
[CommRing A]
[CommRing B]
[Algebra R A]
[Algebra R B]
(I₁ : Ideal A)
(I₂ : Ideal B)
(f : A →ₐ[R] B)
(h : I₁ ≤ comap f I₂)
:
The map I/I² → J/J² if I ≤ f⁻¹(J).
Equations
- I₁.mapCotangent I₂ f h = (Submodule.restrictScalars R (I₁ • ⊤)).mapQ (Submodule.restrictScalars R (I₂ • ⊤)) (f.toLinearMap.restrict h) ⋯
Instances For
@[simp]
def
Ideal.Cotangent.lift
{R : Type u}
[CommRing R]
{S : Type u_3}
[CommRing S]
[Algebra R S]
{I : Ideal S}
{M : Type u_4}
[AddCommGroup M]
[Module R M]
(f : ↥I →ₗ[R] M)
(hf : ∀ (x y : ↥I), f (x * y) = 0)
:
Lift a linear map f : I →ₗ[R] M that vanishes on products to a linear map on the
cotangent space I ⧸ I ^ 2.
Equations
- Ideal.Cotangent.lift f hf = { toFun := (↑(QuotientAddGroup.lift (I • ⊤).toAddSubgroup f.toAddMonoidHom ⋯)).toFun, map_add' := ⋯, map_smul' := ⋯ }
Instances For
@[simp]
theorem
Ideal.Cotangent.equivOfEq_toCotangent
{R : Type u}
[CommRing R]
(I J : Ideal R)
(hIJ : I = J)
(x : ↥I)
:
@[implicit_reducible]
instance
IsLocalRing.instModuleResidueFieldCotangentSpace
(R : Type u_1)
[CommRing R]
[IsLocalRing R]
:
Module (ResidueField R) (CotangentSpace R)
Equations
- One or more equations did not get rendered due to their size.
instance
IsLocalRing.instIsScalarTowerResidueFieldCotangentSpace
(R : Type u_1)
[CommRing R]
[IsLocalRing R]
:
IsScalarTower R (ResidueField R) (CotangentSpace R)
instance
IsLocalRing.instFiniteDimensionalResidueFieldCotangentSpaceOfIsNoetherianRing
(R : Type u_1)
[CommRing R]
[IsLocalRing R]
[IsNoetherianRing R]
:
theorem
IsLocalRing.subsingleton_cotangentSpace_iff
{R : Type u_1}
[CommRing R]
[IsLocalRing R]
[IsNoetherianRing R]
:
theorem
IsLocalRing.CotangentSpace.map_eq_top_iff
{R : Type u_1}
[CommRing R]
[IsLocalRing R]
[IsNoetherianRing R]
{M : Submodule R ↥(maximalIdeal R)}
:
theorem
IsLocalRing.CotangentSpace.span_image_eq_top_iff
{R : Type u_1}
[CommRing R]
[IsLocalRing R]
[IsNoetherianRing R]
{s : Set ↥(maximalIdeal R)}
:
theorem
IsLocalRing.finrank_cotangentSpace_eq_zero_iff
{R : Type u_1}
[CommRing R]
[IsLocalRing R]
[IsNoetherianRing R]
:
theorem
IsLocalRing.finrank_cotangentSpace_le_one_iff
{R : Type u_1}
[CommRing R]
[IsLocalRing R]
[IsNoetherianRing R]
:
theorem
Ideal.mapCotangent_surjective_of_comap_eq
{A : Type u_1}
{B : Type u_2}
[CommRing A]
[CommRing B]
[Algebra A B]
(surj : Function.Surjective ⇑(algebraMap A B))
{I : Ideal B}
{J : Ideal A}
(eq : comap (algebraMap A B) I = RingHom.ker (algebraMap A B) ⊔ J)
:
Function.Surjective ⇑(J.mapCotangent I (Algebra.ofId A B) ⋯)
theorem
Ideal.mapCotangent_ker_of_surjective
{A : Type u_1}
{B : Type u_2}
[CommRing A]
[CommRing B]
[Algebra A B]
(surj : Function.Surjective ⇑(algebraMap A B))
{I : Ideal B}
{J : Ideal A}
(eq : comap (algebraMap A B) I = RingHom.ker (algebraMap A B) ⊔ J)
:
(J.mapCotangent I (Algebra.ofId A B) ⋯).ker = Submodule.map J.toCotangent (Submodule.comap (Submodule.subtype J) (RingHom.ker (algebraMap A B) ⊓ J))