Skip to content

Commit 3d8102b

Browse files
committed
refactor(Algebra/Lie/BaseChange): use new tensor product machinery (#6628)
1 parent ae74c2e commit 3d8102b

1 file changed

Lines changed: 9 additions & 27 deletions

File tree

Mathlib/Algebra/Lie/BaseChange.lean

Lines changed: 9 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Authors: Oliver Nash
55
-/
66
import Mathlib.Algebra.Algebra.RestrictScalars
77
import 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

3738
variable [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]
5048
private 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

5351
instance : Bracket (A ⊗[R] L) (A ⊗[R] L) where bracket x y := bracket' R A L x y
5452

5553
private 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

6360
private 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

133115
end ExtendScalars

0 commit comments

Comments
 (0)