Theorem: Matrix.TransvectionStruct.toMatrix_reindexEquiv_prod
File: Mathlib/LinearAlgebra/Matrix/Transvection.lean

tactic: induction' L with t L IH
state_before: n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝⁵ : Field 𝕜
inst✝⁴ : DecidableEq n
inst✝³ : DecidableEq p
inst✝² : CommRing R
i j : n
inst✝¹ : Fintype n
inst✝ : Fintype p
e : n ≃ p
L : List (TransvectionStruct n R)
⊢ (List.map (toMatrix ∘ reindexEquiv e) L).prod = (reindexAlgEquiv R e) (List.map toMatrix L).prod
state_after: case nil
n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝⁵ : Field 𝕜
inst✝⁴ : DecidableEq n
inst✝³ : DecidableEq p
inst✝² : CommRing R
i j : n
inst✝¹ : Fintype n
inst✝ : Fintype p
e : n ≃ p
⊢ (List.map (toMatrix ∘ reindexEquiv e) []).prod = (reindexAlgEquiv R e) (List.map toMatrix []).prod

case cons
n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝⁵ : Field 𝕜
inst✝⁴ : DecidableEq n
inst✝³ : DecidableEq p
inst✝² : CommRing R
i j : n
inst✝¹ : Fintype n
inst✝ : Fintype p
e : n ≃ p
t : TransvectionStruct n R
L : List (TransvectionStruct n R)
IH : (List.map (toMatrix ∘ reindexEquiv e) L).prod = (reindexAlgEquiv R e) (List.map toMatrix L).prod
⊢ (List.map (toMatrix ∘ reindexEquiv e) (t :: L)).prod = (reindexAlgEquiv R e) (List.map toMatrix (t :: L)).prod

tactic: simp
state_before: case nil
n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝⁵ : Field 𝕜
inst✝⁴ : DecidableEq n
inst✝³ : DecidableEq p
inst✝² : CommRing R
i j : n
inst✝¹ : Fintype n
inst✝ : Fintype p
e : n ≃ p
⊢ (List.map (toMatrix ∘ reindexEquiv e) []).prod = (reindexAlgEquiv R e) (List.map toMatrix []).prod
state_after: no goals

tactic: simp only [toMatrix_reindexEquiv, IH, Function.comp_apply, List.prod_cons,
  reindexAlgEquiv_apply, List.map]
state_before: case cons
n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝⁵ : Field 𝕜
inst✝⁴ : DecidableEq n
inst✝³ : DecidableEq p
inst✝² : CommRing R
i j : n
inst✝¹ : Fintype n
inst✝ : Fintype p
e : n ≃ p
t : TransvectionStruct n R
L : List (TransvectionStruct n R)
IH : (List.map (toMatrix ∘ reindexEquiv e) L).prod = (reindexAlgEquiv R e) (List.map toMatrix L).prod
⊢ (List.map (toMatrix ∘ reindexEquiv e) (t :: L)).prod = (reindexAlgEquiv R e) (List.map toMatrix (t :: L)).prod
state_after: case cons
n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝⁵ : Field 𝕜
inst✝⁴ : DecidableEq n
inst✝³ : DecidableEq p
inst✝² : CommRing R
i j : n
inst✝¹ : Fintype n
inst✝ : Fintype p
e : n ≃ p
t : TransvectionStruct n R
L : List (TransvectionStruct n R)
IH : (List.map (toMatrix ∘ reindexEquiv e) L).prod = (reindexAlgEquiv R e) (List.map toMatrix L).prod
⊢ (reindex e e) t.toMatrix * (reindex e e) (List.map toMatrix L).prod =
    (reindex e e) (t.toMatrix * (List.map toMatrix L).prod)

tactic: exact (reindexAlgEquiv_mul _ _ _ _).symm
state_before: case cons
n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝⁵ : Field 𝕜
inst✝⁴ : DecidableEq n
inst✝³ : DecidableEq p
inst✝² : CommRing R
i j : n
inst✝¹ : Fintype n
inst✝ : Fintype p
e : n ≃ p
t : TransvectionStruct n R
L : List (TransvectionStruct n R)
IH : (List.map (toMatrix ∘ reindexEquiv e) L).prod = (reindexAlgEquiv R e) (List.map toMatrix L).prod
⊢ (reindex e e) t.toMatrix * (reindex e e) (List.map toMatrix L).prod =
    (reindex e e) (t.toMatrix * (List.map toMatrix L).prod)
state_after: no goals