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.
Equations
- Ideal.instAddCommGroupCotangent I = id inferInstance
instance
Ideal.cotangentModule
{R : Type u}
[CommRing R]
(I : Ideal R)
:
Module (R ⧸ I) (Ideal.Cotangent I)
Equations
- Ideal.cotangentModule I = id inferInstance
Equations
- Ideal.instInhabitedCotangent I = { default := 0 }
instance
Ideal.Cotangent.moduleOfTower
{R : Type u}
{S : Type v}
[CommRing R]
[CommSemiring S]
[Algebra S R]
(I : Ideal R)
:
Module S (Ideal.Cotangent I)
Equations
instance
Ideal.Cotangent.isScalarTower
{R : Type u}
{S : Type v}
{S' : Type w}
[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' (Ideal.Cotangent I)
Equations
- ⋯ = ⋯
instance
Ideal.instIsNoetherianCotangentToSemiringToCommSemiringToAddCommMonoidInstAddCommGroupCotangentModuleOfTowerId
{R : Type u}
[CommRing R]
(I : Ideal R)
[IsNoetherian R ↥I]
:
IsNoetherian R (Ideal.Cotangent I)
Equations
- ⋯ = ⋯
@[simp]
theorem
Ideal.toCotangent_apply
{R : Type u}
[CommRing R]
(I : Ideal R)
:
∀ (a : ↥I), (Ideal.toCotangent I) a = Submodule.Quotient.mk a
The quotient map from I
to I ⧸ I ^ 2
.
Equations
- Ideal.toCotangent I = Submodule.mkQ (I • ⊤)
Instances For
theorem
Ideal.map_toCotangent_ker
{R : Type u}
[CommRing R]
(I : Ideal R)
:
Submodule.map (Submodule.subtype I) (LinearMap.ker (Ideal.toCotangent I)) = I ^ 2
theorem
Ideal.mem_toCotangent_ker
{R : Type u}
[CommRing R]
(I : Ideal R)
{x : ↥I}
:
x ∈ LinearMap.ker (Ideal.toCotangent I) ↔ ↑x ∈ I ^ 2
theorem
Ideal.toCotangent_eq
{R : Type u}
[CommRing R]
(I : Ideal R)
{x : ↥I}
{y : ↥I}
:
(Ideal.toCotangent I) x = (Ideal.toCotangent I) y ↔ ↑x - ↑y ∈ I ^ 2
theorem
Ideal.toCotangent_eq_zero
{R : Type u}
[CommRing R]
(I : Ideal R)
(x : ↥I)
:
(Ideal.toCotangent I) x = 0 ↔ ↑x ∈ I ^ 2
def
Ideal.cotangentToQuotientSquare
{R : Type u}
[CommRing R]
(I : Ideal R)
:
Ideal.Cotangent I →ₗ[R] R ⧸ I ^ 2
The inclusion map I ⧸ I ^ 2
to R ⧸ I ^ 2
.
Equations
- Ideal.cotangentToQuotientSquare I = Submodule.mapQ (I • ⊤) (I ^ 2) (Submodule.subtype I) ⋯
Instances For
theorem
Ideal.to_quotient_square_comp_toCotangent
{R : Type u}
[CommRing R]
(I : Ideal R)
:
Ideal.cotangentToQuotientSquare I ∘ₗ Ideal.toCotangent I = Submodule.mkQ (I ^ 2) ∘ₗ Submodule.subtype I
theorem
Ideal.toCotangent_to_quotient_square
{R : Type u}
[CommRing R]
(I : Ideal R)
(x : ↥I)
:
(Ideal.cotangentToQuotientSquare I) ((Ideal.toCotangent I) x) = (Submodule.mkQ (I ^ 2)) ↑x
I ⧸ I ^ 2
as an ideal of R ⧸ I ^ 2
.
Equations
- Ideal.cotangentIdeal I = Submodule.map (RingHom.toSemilinearMap (Ideal.Quotient.mk (I ^ 2))) I
Instances For
theorem
Ideal.cotangentIdeal_square
{R : Type u}
[CommRing R]
(I : Ideal R)
:
Ideal.cotangentIdeal I ^ 2 = ⊥
noncomputable def
Ideal.cotangentEquivIdeal
{R : Type u}
[CommRing R]
(I : Ideal R)
:
Ideal.Cotangent I ≃ₗ[R] ↥(Ideal.cotangentIdeal I)
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_apply
{R : Type u}
[CommRing R]
(I : Ideal R)
(x : Ideal.Cotangent I)
:
↑((Ideal.cotangentEquivIdeal I) x) = (Ideal.cotangentToQuotientSquare I) x
theorem
Ideal.cotangentEquivIdeal_symm_apply
{R : Type u}
[CommRing R]
(I : Ideal R)
(x : R)
(hx : x ∈ I)
:
(LinearEquiv.symm (Ideal.cotangentEquivIdeal I)) { val := (Submodule.mkQ (I ^ 2)) x, property := ⋯ } = (Ideal.toCotangent I) { val := x, property := hx }
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)
:
A ⧸ RingHom.ker f.toRingHom ^ 2 →ₐ[R] B
The lift of f : A →ₐ[R] B
to A ⧸ J ^ 2 →ₐ[R] B
with J
being the kernel of f
.
Equations
- AlgHom.kerSquareLift f = let __src := Ideal.Quotient.lift (RingHom.ker f.toRingHom ^ 2) f.toRingHom ⋯; { toRingHom := __src, commutes' := ⋯ }
Instances For
theorem
AlgHom.ker_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)
:
RingHom.ker (AlgHom.kerSquareLift f).toRingHom = Ideal.cotangentIdeal (RingHom.ker f.toRingHom)
The quotient ring of I ⧸ I ^ 2
is R ⧸ I
.
Equations
Instances For
@[reducible]
The A ⧸ I
-vector space I ⧸ I ^ 2
.
Equations
Instances For
instance
LocalRing.instModuleResidueFieldCotangentSpaceToSemiringToDivisionSemiringToSemifieldFieldToAddCommMonoidInstAddCommGroupCotangentMaximalIdealToCommSemiring
(R : Type u_1)
[CommRing R]
[LocalRing R]
:
Equations
- One or more equations did not get rendered due to their size.
instance
LocalRing.instIsScalarTowerResidueFieldCotangentSpaceToSMulToCommSemiringToSemiringToDivisionSemiringToSemifieldFieldAlgebraToSMulToZeroToNegZeroClassToSubNegZeroMonoidToSubtractionMonoidToDivisionAddCommMonoidInstAddCommGroupCotangentMaximalIdealToSMulZeroClassToZeroToCommMonoidWithZeroToCommGroupWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToAddCommMonoidInstModuleResidueFieldCotangentSpaceToSemiringToDivisionSemiringToSemifieldFieldToAddCommMonoidInstAddCommGroupCotangentMaximalIdealToCommSemiringToCommMonoidWithZeroToSemiringModuleOfTowerId
(R : Type u_1)
[CommRing R]
[LocalRing R]
:
Equations
- ⋯ = ⋯
instance
LocalRing.instFiniteDimensionalResidueFieldCotangentSpaceToDivisionRingFieldInstAddCommGroupCotangentMaximalIdealToCommSemiringInstModuleResidueFieldCotangentSpaceToSemiringToDivisionSemiringToSemifieldFieldToAddCommMonoidInstAddCommGroupCotangentMaximalIdealToCommSemiring
(R : Type u_1)
[CommRing R]
[LocalRing R]
[IsNoetherianRing R]
:
Equations
- ⋯ = ⋯
theorem
LocalRing.subsingleton_cotangentSpace_iff
{R : Type u_1}
[CommRing R]
[LocalRing R]
[IsNoetherianRing R]
:
theorem
LocalRing.CotangentSpace.map_eq_top_iff
{R : Type u_1}
[CommRing R]
[LocalRing R]
[IsNoetherianRing R]
{M : Submodule R ↥(LocalRing.maximalIdeal R)}
:
Submodule.map (Ideal.toCotangent (LocalRing.maximalIdeal R)) M = ⊤ ↔ M = ⊤
theorem
LocalRing.CotangentSpace.span_image_eq_top_iff
{R : Type u_1}
[CommRing R]
[LocalRing R]
[IsNoetherianRing R]
{s : Set ↥(LocalRing.maximalIdeal R)}
:
Submodule.span (LocalRing.ResidueField R) (⇑(Ideal.toCotangent (LocalRing.maximalIdeal R)) '' s) = ⊤ ↔ Submodule.span R s = ⊤
theorem
LocalRing.finrank_cotangentSpace_eq_zero_iff
{R : Type u_1}
[CommRing R]
[LocalRing R]
[IsNoetherianRing R]
:
theorem
LocalRing.finrank_cotangentSpace_le_one_iff
{R : Type u_1}
[CommRing R]
[LocalRing R]
[IsNoetherianRing R]
: