@@ -5,6 +5,7 @@ Authors: Oliver Nash
55-/
66import Mathlib.Algebra.Algebra.RestrictScalars
77import Mathlib.Algebra.Lie.TensorProduct
8+ import Mathlib.LinearAlgebra.TensorProduct.Tower
89
910#align_import algebra.lie.base_change from "leanprover-community/mathlib" @"9264b15ee696b7ca83f13c8ad67c83d6eb70b730"
1011
@@ -36,28 +37,24 @@ namespace ExtendScalars
3637
3738variable [CommRing R] [CommRing A] [Algebra R A] [LieRing L] [LieAlgebra R L]
3839
39- /-- The Lie bracket on the extension of a Lie algebra `L` over `R` by an algebra `A` over `R`.
40-
41- In fact this bracket is fully `A`-bilinear but without a significant upgrade to our mixed-scalar
42- support in the tensor product library, it is far easier to bootstrap like this, starting with the
43- definition below. -/
44- private def bracket' : A ⊗[R] L →ₗ[R] A ⊗[R] L →ₗ[R] A ⊗[R] L :=
40+ /-- The Lie bracket on the extension of a Lie algebra `L` over `R` by an algebra `A` over `R`. -/
41+ private def bracket' : A ⊗[R] L →ₗ[A] A ⊗[R] L →ₗ[A] A ⊗[R] L :=
4542 TensorProduct.curry <|
46- TensorProduct.map (LinearMap.mul' R _) (LieModule.toModuleHom R L L : L ⊗[R] L →ₗ[R] L) ∘ₗ
47- ↑(TensorProduct.tensorTensorTensorComm R A L A L)
43+ TensorProduct.AlgebraTensorModule.map
44+ (LinearMap.mul' A A) (LieModule.toModuleHom R L L : L ⊗[R] L →ₗ[R] L) ∘ₗ
45+ (TensorProduct.AlgebraTensorModule.tensorTensorTensorComm R A A L A L).toLinearMap
4846
4947@[simp]
5048private theorem bracket'_tmul (s t : A) (x y : L) :
51- bracket' R A L (s ⊗ₜ[R] x) (t ⊗ₜ[R] y) = (s * t) ⊗ₜ ⁅x, y⁆ := by simp [bracket']
49+ bracket' R A L (s ⊗ₜ[R] x) (t ⊗ₜ[R] y) = (s * t) ⊗ₜ ⁅x, y⁆ := rfl
5250
5351instance : Bracket (A ⊗[R] L) (A ⊗[R] L) where bracket x y := bracket' R A L x y
5452
5553private theorem bracket_def (x y : A ⊗[R] L) : ⁅x, y⁆ = bracket' R A L x y :=
5654 rfl
5755
5856@[simp]
59- theorem bracket_tmul (s t : A) (x y : L) : ⁅s ⊗ₜ[R] x, t ⊗ₜ[R] y⁆ = (s * t) ⊗ₜ ⁅x, y⁆ := by
60- rw [bracket_def, bracket'_tmul]
57+ theorem bracket_tmul (s t : A) (x y : L) : ⁅s ⊗ₜ[R] x, t ⊗ₜ[R] y⁆ = (s * t) ⊗ₜ ⁅x, y⁆ := rfl
6158#align lie_algebra.extend_scalars.bracket_tmul LieAlgebra.ExtendScalars.bracket_tmul
6259
6360private theorem bracket_lie_self (x : A ⊗[R] L) : ⁅x, x⁆ = 0 := by
@@ -112,22 +109,7 @@ instance : LieRing (A ⊗[R] L) where
112109 lie_self := bracket_lie_self R A L
113110 leibniz_lie := bracket_leibniz_lie R A L
114111
115- private theorem bracket_lie_smul (a : A) (x y : A ⊗[R] L) : ⁅x, a • y⁆ = a • ⁅x, y⁆ := by
116- refine' x.induction_on _ _ _
117- · simp only [zero_lie, smul_zero]
118- · intro a₁ l₁; refine' y.induction_on _ _ _
119- · simp only [lie_zero, smul_zero]
120- · intro a₂ l₂
121- simp only [bracket_def, bracket', TensorProduct.smul_tmul', mul_left_comm a₁ a a₂,
122- TensorProduct.curry_apply, LinearMap.mul'_apply, Algebra.id.smul_eq_mul,
123- Function.comp_apply, LinearEquiv.coe_coe, LinearMap.coe_comp, TensorProduct.map_tmul,
124- TensorProduct.tensorTensorTensorComm_tmul]
125- · intro z₁ z₂ h₁ h₂
126- simp only [h₁, h₂, smul_add, lie_add]
127- · intro z₁ z₂ h₁ h₂
128- simp only [h₁, h₂, smul_add, add_lie]
129-
130- instance lieAlgebra : LieAlgebra A (A ⊗[R] L) where lie_smul := bracket_lie_smul R A L
112+ instance lieAlgebra : LieAlgebra A (A ⊗[R] L) where lie_smul _a _x _y := map_smul _ _ _
131113#align lie_algebra.extend_scalars.lie_algebra LieAlgebra.ExtendScalars.lieAlgebra
132114
133115end ExtendScalars
0 commit comments