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 ofDspansΩ[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]asScopies ofSwith kernel (kaehler_differential.ker_total) generated by the relations:dx + dy = d(x + y)x dy + y dx = d(x * y)dr = 0forr ∈ R
kaehler_differential.map: Given a map between the arrowsR → AandS → B, we have anA-linear mapΩ[A⁄R] → Ω[B⁄S].
Future project #
- Define a
is_kaehler_differentialpredicate.
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 = 0forr ∈ Rwheredbis the unit in the copy ofSwith 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)