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.cotangent_equiv_ideal
.
Additional support is also given to the cotangent space m ⧸ m ^ 2
of a local ring.
I ⧸ I ^ 2
as a quotient of I
.
Instances for ideal.cotangent
@[protected, instance]
@[protected, instance]
Equations
- ideal.cotangent.inhabited I = {default := 0}
@[protected, instance]
def
ideal.cotangent.module_of_tower
{R : Type u_1}
{S : Type u_2}
[comm_ring R]
[comm_semiring S]
[algebra S R]
(I : ideal R) :
Equations
@[protected, instance]
def
ideal.cotangent.is_scalar_tower
{R : Type u_1}
{S : Type u_2}
{S' : Type u_3}
[comm_ring R]
[comm_semiring S]
[algebra S R]
[comm_semiring S']
[algebra S' R]
[algebra S S']
[is_scalar_tower S S' R]
(I : ideal R) :
is_scalar_tower S S' I.cotangent
@[protected, instance]
theorem
ideal.to_cotangent_apply
{R : Type u_1}
[comm_ring R]
(I : ideal R)
(ᾰ : ↥I) :
⇑(I.to_cotangent) ᾰ = submodule.quotient.mk ᾰ
theorem
ideal.map_to_cotangent_ker
{R : Type u_1}
[comm_ring R]
(I : ideal R) :
submodule.map (submodule.subtype I) (linear_map.ker I.to_cotangent) = I ^ 2
theorem
ideal.mem_to_cotangent_ker
{R : Type u_1}
[comm_ring R]
(I : ideal R)
{x : ↥I} :
x ∈ linear_map.ker I.to_cotangent ↔ ↑x ∈ I ^ 2
theorem
ideal.to_quotient_square_comp_to_cotangent
{R : Type u_1}
[comm_ring R]
(I : ideal R) :
I.cotangent_to_quotient_square.comp I.to_cotangent = (submodule.mkq (I ^ 2)).comp (submodule.subtype I)
@[simp]
theorem
ideal.to_cotangent_to_quotient_square
{R : Type u_1}
[comm_ring R]
(I : ideal R)
(x : ↥I) :
⇑(I.cotangent_to_quotient_square) (⇑(I.to_cotangent) x) = ⇑(submodule.mkq (I ^ 2)) ↑x
I ⧸ I ^ 2
as an ideal of R ⧸ I ^ 2
.
Equations
- I.cotangent_ideal = let rq : R →+* R ⧸ I ^ 2 := ideal.quotient.mk (I ^ 2) in submodule.map rq.to_semilinear_map I
theorem
ideal.cotangent_ideal_square
{R : Type u_1}
[comm_ring R]
(I : ideal R) :
I.cotangent_ideal ^ 2 = ⊥
noncomputable
def
ideal.cotangent_equiv_ideal
{R : Type u_1}
[comm_ring R]
(I : ideal R) :
I.cotangent ≃ₗ[R] ↥(I.cotangent_ideal)
The equivalence of the two definitions of I / I ^ 2
, either as the quotient of I
or the
ideal of R / I ^ 2
.
Equations
- I.cotangent_equiv_ideal = {to_fun := (linear_map.cod_restrict (submodule.restrict_scalars R I.cotangent_ideal) I.cotangent_to_quotient_square _).to_fun, map_add' := _, map_smul' := _, inv_fun := (equiv.of_bijective (λ (c : I.cotangent), ⟨⇑(I.cotangent_to_quotient_square) c, _⟩) _).inv_fun, left_inv := _, right_inv := _}
@[simp, nolint]
theorem
ideal.cotangent_equiv_ideal_apply
{R : Type u_1}
[comm_ring R]
(I : ideal R)
(x : I.cotangent) :
↑(⇑(I.cotangent_equiv_ideal) x) = ⇑(I.cotangent_to_quotient_square) x
theorem
ideal.cotangent_equiv_ideal_symm_apply
{R : Type u_1}
[comm_ring R]
(I : ideal R)
(x : R)
(hx : x ∈ I) :
⇑(I.cotangent_equiv_ideal.symm) ⟨⇑(submodule.mkq (I ^ 2)) x, _⟩ = ⇑(I.to_cotangent) ⟨x, hx⟩
def
alg_hom.ker_square_lift
{R : Type u_1}
[comm_ring R]
{A : Type u_4}
{B : Type u_5}
[comm_ring A]
[comm_ring B]
[algebra R A]
[algebra R B]
(f : A →ₐ[R] B) :
A ⧸ ring_hom.ker f.to_ring_hom ^ 2 →ₐ[R] B
The lift of f : A →ₐ[R] B
to A ⧸ J ^ 2 →ₐ[R] B
with J
being the kernel of f
.
Equations
- f.ker_square_lift = {to_fun := (ideal.quotient.lift (ring_hom.ker f.to_ring_hom ^ 2) f.to_ring_hom _).to_fun, map_one' := _, map_mul' := _, map_zero' := _, map_add' := _, commutes' := _}
@[reducible]
The A ⧸ I
-vector space I ⧸ I ^ 2
.
Equations
@[protected, instance]
@[protected, instance]
@[protected, instance]
def
local_ring.cotangent_space.finite_dimensional
(R : Type u_1)
[comm_ring R]
[local_ring R]
[is_noetherian_ring R] :