The module of kaehler differentials #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
Main results #
kaehler_differential
: The module of kaehler differentials. For anR
-algebraS
, we provide the notationΩ[S⁄R]
forkaehler_differential R S
. Note that the slash is\textfractionsolidus
.kaehler_differential.D
: The derivation into the module of kaehler differentials.kaehler_differential.span_range_derivation
: The image ofD
spansΩ[S⁄R]
as anS
-module.kaehler_differential.linear_map_equiv_derivation
: The isomorphismHom_R(Ω[S⁄R], M) ≃ₗ[S] Der_R(S, M)
.kaehler_differential.quot_ker_total_equiv
: An alternative description ofΩ[S⁄R]
asS
copies ofS
with kernel (kaehler_differential.ker_total
) generated by the relations:dx + dy = d(x + y)
x dy + y dx = d(x * y)
dr = 0
forr ∈ R
kaehler_differential.map
: Given a map between the arrowsR → A
andS → B
, we have anA
-linear mapΩ[A⁄R] → Ω[B⁄S]
.
Future project #
- Define a
is_kaehler_differential
predicate.
The kernel of the multiplication map S ⊗[R] S →ₐ[R] S
.
For a R
-derivation S → M
, this is the map S ⊗[R] S →ₗ[S] M
sending s ⊗ₜ t ↦ s • D t
.
Equations
- D.tensor_product_to = tensor_product.algebra_tensor_module.lift (⇑((linear_map.lsmul S (S →ₗ[R] M)).flip) D.to_linear_map)
The kernel of S ⊗[R] S →ₐ[R] S
is generated by 1 ⊗ s - s ⊗ 1
as a S
-module.
The module of Kähler differentials (Kahler differentials, Kaehler differentials).
This is implemented as I / I ^ 2
with I
the kernel of the multiplication map S ⊗[R] S →ₐ[R] S
.
To view elements as a linear combination of the form s • D s'
, use
kaehler_differential.tensor_product_to_surjective
and derivation.tensor_product_to_tmul
.
We also provide the notation Ω[S⁄R]
for kaehler_differential R S
.
Note that the slash is \textfractionsolidus
.
Instances for kaehler_differential
- kaehler_differential.add_comm_group
- kaehler_differential.module
- kaehler_differential.nonempty
- kaehler_differential.module'
- kaehler_differential.is_scalar_tower
- kaehler_differential.is_scalar_tower_of_tower
- kaehler_differential.is_scalar_tower'
- algebra.formally_unramified.subsingleton_kaehler_differential
Equations
The quotient map I → Ω[S⁄R]
with I
being the kernel of S ⊗[R] S → S
.
Equations
(Implementation) The underlying linear map of the derivation into Ω[S⁄R]
.
Equations
- kaehler_differential.D_linear_map R S = (linear_map.restrict_scalars R (kaehler_differential.from_ideal R S)).comp (linear_map.cod_restrict (submodule.restrict_scalars R (kaehler_differential.ideal R S)) (algebra.tensor_product.include_right.to_linear_map - algebra.tensor_product.include_left.to_linear_map) _)
The universal derivation into Ω[S⁄R]
.
Equations
- kaehler_differential.D R S = {to_linear_map := kaehler_differential.D_linear_map R S _inst_3, map_one_eq_zero' := _, leibniz' := _}
The linear map from Ω[S⁄R]
, associated with a derivation.
Equations
The S
-linear maps from Ω[S⁄R]
to M
are (S
-linearly) equivalent to R
-derivations
from S
to M
.
Equations
- kaehler_differential.linear_map_equiv_derivation R S = {to_fun := (⇑(derivation.llcomp.flip) (kaehler_differential.D R S)).to_fun, map_add' := _, map_smul' := _, inv_fun := derivation.lift_kaehler_differential _inst_7, left_inv := _, right_inv := _}
The quotient ring of S ⊗ S ⧸ J ^ 2
by Ω[S⁄R]
is isomorphic to S
.
The quotient ring of S ⊗ S ⧸ J ^ 2
by Ω[S⁄R]
is isomorphic to S
as an S
-algebra.
Equations
- kaehler_differential.quotient_cotangent_ideal R S = {to_fun := (kaehler_differential.quotient_cotangent_ideal_ring_equiv R S).to_fun, inv_fun := (kaehler_differential.quotient_cotangent_ideal_ring_equiv R S).inv_fun, left_inv := _, right_inv := _, map_mul' := _, map_add' := _, commutes' := _}
Derivations into Ω[S⁄R]
is equivalent to derivations
into (kaehler_differential.ideal R S).cotangent_ideal
(Implementation) An equiv
version of kaehler_differential.End_equiv_aux
.
Used in kaehler_differential.End_equiv
.
Equations
- kaehler_differential.End_equiv_aux_equiv R S = (equiv.refl (S →ₐ[R] tensor_product R S S ⧸ kaehler_differential.ideal R S ^ 2)).subtype_equiv _
The endomorphisms of Ω[S⁄R]
corresponds to sections of the surjection S ⊗[R] S ⧸ J ^ 2 →ₐ[R] S
,
with J
being the kernel of the multiplication map S ⊗[R] S →ₐ[R] S
.
Equations
- kaehler_differential.End_equiv R S = (kaehler_differential.linear_map_equiv_derivation R S).to_equiv.trans ((kaehler_differential.End_equiv_derivation' R S).to_equiv.trans ((derivation_to_square_zero_equiv_lift (kaehler_differential.ideal R S).cotangent_ideal _).trans (kaehler_differential.End_equiv_aux_equiv R S)))
The S
-submodule of S →₀ S
(the direct sum of copies of S
indexed by S
) generated by
the relations:
dx + dy = d(x + y)
x dy + y dx = d(x * y)
dr = 0
forr ∈ R
wheredb
is the unit in the copy ofS
with indexb
.
This is the kernel of the surjection finsupp.total S Ω[S⁄R] S (kaehler_differential.D R S)
.
See kaehler_differential.ker_total_eq
and kaehler_differential.total_surjective
.
Equations
- kaehler_differential.ker_total R S = submodule.span S (set.range (λ (x : S × S), finsupp.single x.fst 1 + finsupp.single x.snd 1 - finsupp.single (x.fst + x.snd) 1) ∪ set.range (λ (x : S × S), finsupp.single x.snd x.fst + finsupp.single x.fst x.snd - finsupp.single (x.fst * x.snd) 1) ∪ set.range (λ (x : R), finsupp.single (⇑(algebra_map R S) x) 1))
The (universal) derivation into (S →₀ S) ⧸ kaehler_differential.ker_total R S
.
Equations
- kaehler_differential.derivation_quot_ker_total R S = {to_linear_map := {to_fun := λ (x : S), ⇑((kaehler_differential.ker_total R S).mkq) (finsupp.single x 1), map_add' := _, map_smul' := _}, map_one_eq_zero' := _, leibniz' := _}
Ω[S⁄R]
is isomorphic to S
copies of S
with kernel kaehler_differential.ker_total
.
Equations
- kaehler_differential.quot_ker_total_equiv R S = {to_fun := ((kaehler_differential.ker_total R S).liftq (finsupp.total S Ω[S⁄R] S ⇑(kaehler_differential.D R S)) _).to_fun, map_add' := _, map_smul' := _, inv_fun := ⇑((kaehler_differential.derivation_quot_ker_total R S).lift_kaehler_differential), left_inv := _, right_inv := _}
For a tower R → A → B
and an R
-derivation B → M
, we may compose with A → B
to obtain an
R
-derivation A → M
.
Equations
- derivation.comp_algebra_map A d = {to_linear_map := d.to_linear_map.comp (is_scalar_tower.to_alg_hom R A B).to_linear_map, map_one_eq_zero' := _, leibniz' := _}
The map Ω[A⁄R] →ₗ[A] Ω[B⁄R]
given a square
A --→ B
↑ ↑
| |
R --→ S
Equations
The lift of the map Ω[A⁄R] →ₗ[A] Ω[B⁄R]
to the base change along A → B
.
This is the first map in the exact sequence B ⊗[A] Ω[A⁄R] → Ω[B⁄R] → Ω[B⁄A] → 0
.
Equations
- kaehler_differential.map_base_change R A B = _.lift (kaehler_differential.map R R A B)