Theorem: CliffordAlgebra.contractLeft_comm
File: Mathlib/LinearAlgebra/CliffordAlgebra/Contraction.lean

tactic: induction' x using CliffordAlgebra.left_induction with r x y hx hy m x hx
state_before: R : Type u1
inst✝² : CommRing R
M : Type u2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
d d' : Module.Dual R M
x : CliffordAlgebra Q
⊢ (contractLeft d) ((contractLeft d') x) = -(contractLeft d') ((contractLeft d) x)
state_after: case algebraMap
R : Type u1
inst✝² : CommRing R
M : Type u2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
d d' : Module.Dual R M
r : R
⊢ (contractLeft d) ((contractLeft d') ((algebraMap R (CliffordAlgebra Q)) r)) =
    -(contractLeft d') ((contractLeft d) ((algebraMap R (CliffordAlgebra Q)) r))

case add
R : Type u1
inst✝² : CommRing R
M : Type u2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
d d' : Module.Dual R M
x y : CliffordAlgebra Q
hx : (contractLeft d) ((contractLeft d') x) = -(contractLeft d') ((contractLeft d) x)
hy : (contractLeft d) ((contractLeft d') y) = -(contractLeft d') ((contractLeft d) y)
⊢ (contractLeft d) ((contractLeft d') (x + y)) = -(contractLeft d') ((contractLeft d) (x + y))

case ι_mul
R : Type u1
inst✝² : CommRing R
M : Type u2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
d d' : Module.Dual R M
m : CliffordAlgebra Q
x : M
hx : (contractLeft d) ((contractLeft d') m) = -(contractLeft d') ((contractLeft d) m)
⊢ (contractLeft d) ((contractLeft d') ((ι Q) x * m)) = -(contractLeft d') ((contractLeft d) ((ι Q) x * m))

tactic: simp_rw [contractLeft_algebraMap, map_zero, neg_zero]
state_before: case algebraMap
R : Type u1
inst✝² : CommRing R
M : Type u2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
d d' : Module.Dual R M
r : R
⊢ (contractLeft d) ((contractLeft d') ((algebraMap R (CliffordAlgebra Q)) r)) =
    -(contractLeft d') ((contractLeft d) ((algebraMap R (CliffordAlgebra Q)) r))
state_after: no goals

tactic: rw [map_add, map_add, map_add, map_add, hx, hy, neg_add]
state_before: case add
R : Type u1
inst✝² : CommRing R
M : Type u2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
d d' : Module.Dual R M
x y : CliffordAlgebra Q
hx : (contractLeft d) ((contractLeft d') x) = -(contractLeft d') ((contractLeft d) x)
hy : (contractLeft d) ((contractLeft d') y) = -(contractLeft d') ((contractLeft d) y)
⊢ (contractLeft d) ((contractLeft d') (x + y)) = -(contractLeft d') ((contractLeft d) (x + y))
state_after: no goals

tactic: simp only [contractLeft_ι_mul, map_sub, LinearMap.map_smul]
state_before: case ι_mul
R : Type u1
inst✝² : CommRing R
M : Type u2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
d d' : Module.Dual R M
m : CliffordAlgebra Q
x : M
hx : (contractLeft d) ((contractLeft d') m) = -(contractLeft d') ((contractLeft d) m)
⊢ (contractLeft d) ((contractLeft d') ((ι Q) x * m)) = -(contractLeft d') ((contractLeft d) ((ι Q) x * m))
state_after: case ι_mul
R : Type u1
inst✝² : CommRing R
M : Type u2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
d d' : Module.Dual R M
m : CliffordAlgebra Q
x : M
hx : (contractLeft d) ((contractLeft d') m) = -(contractLeft d') ((contractLeft d) m)
⊢ d' x • (contractLeft d) m - (d x • (contractLeft d') m - (ι Q) x * (contractLeft d) ((contractLeft d') m)) =
    -(d x • (contractLeft d') m - (d' x • (contractLeft d) m - (ι Q) x * (contractLeft d') ((contractLeft d) m)))

tactic: rw [neg_sub, sub_sub_eq_add_sub, hx, mul_neg, ← sub_eq_add_neg]
state_before: case ι_mul
R : Type u1
inst✝² : CommRing R
M : Type u2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
d d' : Module.Dual R M
m : CliffordAlgebra Q
x : M
hx : (contractLeft d) ((contractLeft d') m) = -(contractLeft d') ((contractLeft d) m)
⊢ d' x • (contractLeft d) m - (d x • (contractLeft d') m - (ι Q) x * (contractLeft d) ((contractLeft d') m)) =
    -(d x • (contractLeft d') m - (d' x • (contractLeft d) m - (ι Q) x * (contractLeft d') ((contractLeft d) m)))
state_after: no goals