Theorem: CliffordAlgebra.changeForm_contractLeft
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 Q' Q'' : QuadraticForm R M
B B' : BilinForm R M
h : B.toQuadraticForm = Q' - Q
h' : B'.toQuadraticForm = Q'' - Q'
d : Module.Dual R M
x : CliffordAlgebra Q
⊢ (changeForm h) ((contractLeft d) x) = (contractLeft d) ((changeForm h) x)
state_after: case algebraMap
R : Type u1
inst✝² : CommRing R
M : Type u2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q Q' Q'' : QuadraticForm R M
B B' : BilinForm R M
h : B.toQuadraticForm = Q' - Q
h' : B'.toQuadraticForm = Q'' - Q'
d : Module.Dual R M
r : R
⊢ (changeForm h) ((contractLeft d) ((algebraMap R (CliffordAlgebra Q)) r)) =
    (contractLeft d) ((changeForm h) ((algebraMap R (CliffordAlgebra Q)) r))

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

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

tactic: simp only [contractLeft_algebraMap, changeForm_algebraMap, map_zero]
state_before: case algebraMap
R : Type u1
inst✝² : CommRing R
M : Type u2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q Q' Q'' : QuadraticForm R M
B B' : BilinForm R M
h : B.toQuadraticForm = Q' - Q
h' : B'.toQuadraticForm = Q'' - Q'
d : Module.Dual R M
r : R
⊢ (changeForm h) ((contractLeft d) ((algebraMap R (CliffordAlgebra Q)) r)) =
    (contractLeft d) ((changeForm h) ((algebraMap R (CliffordAlgebra Q)) r))
state_after: no goals

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

tactic: simp only [contractLeft_ι_mul, changeForm_ι_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 Q' Q'' : QuadraticForm R M
B B' : BilinForm R M
h : B.toQuadraticForm = Q' - Q
h' : B'.toQuadraticForm = Q'' - Q'
d : Module.Dual R M
m : CliffordAlgebra Q
x : M
hx : (changeForm h) ((contractLeft d) m) = (contractLeft d) ((changeForm h) m)
⊢ (changeForm h) ((contractLeft d) ((ι Q) x * m)) = (contractLeft d) ((changeForm h) ((ι Q) x * m))
state_after: case ι_mul
R : Type u1
inst✝² : CommRing R
M : Type u2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q Q' Q'' : QuadraticForm R M
B B' : BilinForm R M
h : B.toQuadraticForm = Q' - Q
h' : B'.toQuadraticForm = Q'' - Q'
d : Module.Dual R M
m : CliffordAlgebra Q
x : M
hx : (changeForm h) ((contractLeft d) m) = (contractLeft d) ((changeForm h) m)
⊢ d x • (changeForm h) m -
      ((ι Q') x * (changeForm h) ((contractLeft d) m) - (contractLeft (B x)) ((changeForm h) ((contractLeft d) m))) =
    d x • (changeForm h) m - (ι Q') x * (contractLeft d) ((changeForm h) m) -
      (contractLeft d) ((contractLeft (B x)) ((changeForm h) m))

tactic: rw [← hx, contractLeft_comm, ← sub_add, sub_neg_eq_add, ← hx]
state_before: case ι_mul
R : Type u1
inst✝² : CommRing R
M : Type u2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q Q' Q'' : QuadraticForm R M
B B' : BilinForm R M
h : B.toQuadraticForm = Q' - Q
h' : B'.toQuadraticForm = Q'' - Q'
d : Module.Dual R M
m : CliffordAlgebra Q
x : M
hx : (changeForm h) ((contractLeft d) m) = (contractLeft d) ((changeForm h) m)
⊢ d x • (changeForm h) m -
      ((ι Q') x * (changeForm h) ((contractLeft d) m) - (contractLeft (B x)) ((changeForm h) ((contractLeft d) m))) =
    d x • (changeForm h) m - (ι Q') x * (contractLeft d) ((changeForm h) m) -
      (contractLeft d) ((contractLeft (B x)) ((changeForm h) m))
state_after: no goals