Skip to content

Commit 86eaade

Browse files
committed
improved R-linearity to A-linearity in the PushForward of Derivations (#31464)
Let $A$ be an $R$-algebra for a commutative ring $R$ and $f:M\to N$ an $A$-module homomorphism. Given a derivation $D\in Der_R(A,M)$, we have a derivation $f \circ D$ of $Der_R(A,N)$. The induced map $Der_R(A,M)\to Der_R(A,N)$ is $A$-linear but was only reported to be $R$-linear in the previous implementation. All changes are in the PushForward section of the RingTheory/Derivation/Basic.lean file. The statements of definitions * `_root_.LinearMap.compDer` * `llcomp` * `_root_.LinearEquiv.compDer` are changed from $R$-linear to $A$-linear. For the stronger linearity the proof of `map_smul'` in `_root_.LinearMap.compDer` had to be changed. The rest remains as is. Edit: Some files explicitly used the weaker version, these have now been changed, by applying `.restrictScalars (R:=...)`, whereever the weaker linearity version of `compDer` was needed. Co-authored-by: leo <leonid.ryvkin@rub.de>
1 parent 2da5710 commit 86eaade

File tree

4 files changed

+9
-8
lines changed

4 files changed

+9
-8
lines changed

Mathlib/Geometry/Manifold/Algebra/LeftInvariantDerivation.lean

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,8 @@ instance : AddCommGroup (LeftInvariantDerivation I G) :=
159159
coe_injective.addCommGroup _ coe_zero coe_add coe_neg coe_sub (fun _ _ => rfl) fun _ _ => rfl
160160

161161
instance : SMul 𝕜 (LeftInvariantDerivation I G) where
162-
smul r X := ⟨r • X.1, fun g => by simp_rw [LinearMap.map_smul, left_invariant']⟩
162+
smul r X := ⟨r • X.1, fun g => by
163+
simp only [LinearMap.map_smul_of_tower, map_smul]; rw [left_invariant']⟩
163164

164165
variable (r)
165166

Mathlib/Geometry/Manifold/DerivationBundle.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,8 @@ namespace Derivation
113113
variable {I}
114114

115115
/-- The evaluation at a point as a linear map. -/
116-
def evalAt (x : M) : Derivation 𝕜 C^∞⟮I, M; 𝕜⟯ C^∞⟮I, M; 𝕜⟯ →ₗ[𝕜] PointDerivation I x :=
117-
(ContMDiffFunction.evalAt I x).compDer
116+
def evalAt (x : M) : Derivation 𝕜 C^∞⟮I, M; 𝕜⟯ C^∞⟮I, M; 𝕜⟯ →ₗ[C^∞⟮I, M; 𝕜⟯⟨x⟩]
117+
PointDerivation I x := (ContMDiffFunction.evalAt I x).compDer
118118

119119
theorem evalAt_apply (x : M) : evalAt x X f = (X f) x :=
120120
rfl

Mathlib/RingTheory/Derivation/Basic.lean

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -267,15 +267,15 @@ variable (f : M →ₗ[A] N) (e : M ≃ₗ[A] N)
267267

268268
/-- We can push forward derivations using linear maps, i.e., the composition of a derivation with a
269269
linear map is a derivation. Furthermore, this operation is linear on the spaces of derivations. -/
270-
def _root_.LinearMap.compDer : Derivation R A M →ₗ[R] Derivation R A N where
270+
def _root_.LinearMap.compDer : Derivation R A M →ₗ[A] Derivation R A N where
271271
toFun D :=
272272
{ toLinearMap := (f : M →ₗ[R] N).comp (D : A →ₗ[R] M)
273273
map_one_eq_zero' := by simp only [LinearMap.comp_apply, coeFn_coe, map_one_eq_zero, map_zero]
274274
leibniz' := fun a b => by
275275
simp only [coeFn_coe, LinearMap.comp_apply, LinearMap.map_add, leibniz,
276276
LinearMap.coe_restrictScalars, LinearMap.map_smul] }
277277
map_add' D₁ D₂ := by ext; exact LinearMap.map_add _ _ _
278-
map_smul' r D := by dsimp; ext; exact LinearMap.map_smul (f : M →ₗ[R] N) _ _
278+
map_smul' r D := by ext; dsimp; simp only [_root_.map_smul]
279279

280280
@[simp]
281281
theorem coe_to_linearMap_comp : (f.compDer D : A →ₗ[R] N) = (f : M →ₗ[R] N).comp (D : A →ₗ[R] M) :=
@@ -287,13 +287,13 @@ theorem coe_comp : (f.compDer D : A → N) = (f : M →ₗ[R] N).comp (D : A →
287287

288288
/-- The composition of a derivation with a linear map as a bilinear map -/
289289
@[simps]
290-
def llcomp : (M →ₗ[A] N) →ₗ[A] Derivation R A M →ₗ[R] Derivation R A N where
290+
def llcomp : (M →ₗ[A] N) →ₗ[A] Derivation R A M →ₗ[A] Derivation R A N where
291291
toFun f := f.compDer
292292
map_add' f₁ f₂ := by ext; rfl
293293
map_smul' r D := by ext; rfl
294294

295295
/-- Pushing a derivation forward through a linear equivalence is an equivalence. -/
296-
def _root_.LinearEquiv.compDer : Derivation R A M ≃ₗ[R] Derivation R A N :=
296+
def _root_.LinearEquiv.compDer : Derivation R A M ≃ₗ[A] Derivation R A N :=
297297
{ e.toLinearMap.compDer with
298298
invFun := e.symm.toLinearMap.compDer
299299
left_inv := fun D => by ext a; exact e.symm_apply_apply (D a)

Mathlib/RingTheory/Kaehler/Basic.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ local instance instR : Module R (KaehlerDifferential.ideal R S).cotangentIdeal :
370370
/-- Derivations into `Ω[S⁄R]` is equivalent to derivations
371371
into `(KaehlerDifferential.ideal R S).cotangentIdeal`. -/
372372
noncomputable def KaehlerDifferential.endEquivDerivation' :
373-
Derivation R S Ω[S⁄R] ≃ₗ[R] Derivation R S (ideal R S).cotangentIdeal :=
373+
Derivation R S Ω[S⁄R] ≃ₗ[S] Derivation R S (ideal R S).cotangentIdeal :=
374374
LinearEquiv.compDer ((KaehlerDifferential.ideal R S).cotangentEquivIdeal.restrictScalars S)
375375

376376
/-- (Implementation) An `Equiv` version of `KaehlerDifferential.End_equiv_aux`.

0 commit comments

Comments
 (0)