Theorem: Matrix.one_submatrix_mul
File: Mathlib/Data/Matrix/Basic.lean

tactic: cases nonempty_fintype o
state_before: l : Type u_4
m : Type u_1
n : Type u_3
o : Type u_2
m' : o → Type ?u.1177977
n' : o → Type ?u.1177982
R : Type ?u.1177985
S : Type ?u.1177988
α : Type v
β : Type w
γ : Type ?u.1177995
inst✝³ : Fintype m
inst✝² : Finite o
inst✝¹ : NonAssocSemiring α
inst✝ : DecidableEq o
e₁ : l → o
e₂ : m ≃ o
M : Matrix m n α
⊢ submatrix 1 e₁ ↑e₂ ⬝ M = submatrix M (↑e₂.symm ∘ e₁) id

tactic: let A := M.submatrix e₂.symm id
state_before: case intro
l : Type u_4
m : Type u_1
n : Type u_3
o : Type u_2
m' : o → Type ?u.1177977
n' : o → Type ?u.1177982
R : Type ?u.1177985
S : Type ?u.1177988
α : Type v
β : Type w
γ : Type ?u.1177995
inst✝³ : Fintype m
inst✝² : Finite o
inst✝¹ : NonAssocSemiring α
inst✝ : DecidableEq o
e₁ : l → o
e₂ : m ≃ o
M : Matrix m n α
val✝ : Fintype o
⊢ submatrix 1 e₁ ↑e₂ ⬝ M = submatrix M (↑e₂.symm ∘ e₁) id

tactic: have : M = A.submatrix e₂ id := by
  simp only [submatrix_submatrix, Function.comp.right_id, submatrix_id_id, Equiv.symm_comp_self]
state_before: case intro
l : Type u_4
m : Type u_1
n : Type u_3
o : Type u_2
m' : o → Type ?u.1177977
n' : o → Type ?u.1177982
R : Type ?u.1177985
S : Type ?u.1177988
α : Type v
β : Type w
γ : Type ?u.1177995
inst✝³ : Fintype m
inst✝² : Finite o
inst✝¹ : NonAssocSemiring α
inst✝ : DecidableEq o
e₁ : l → o
e₂ : m ≃ o
M : Matrix m n α
val✝ : Fintype o
A : Matrix o n α := submatrix M (↑e₂.symm) id
⊢ submatrix 1 e₁ ↑e₂ ⬝ M = submatrix M (↑e₂.symm ∘ e₁) id

tactic: rw [this, submatrix_mul_equiv]
state_before: case intro
l : Type u_4
m : Type u_1
n : Type u_3
o : Type u_2
m' : o → Type ?u.1177977
n' : o → Type ?u.1177982
R : Type ?u.1177985
S : Type ?u.1177988
α : Type v
β : Type w
γ : Type ?u.1177995
inst✝³ : Fintype m
inst✝² : Finite o
inst✝¹ : NonAssocSemiring α
inst✝ : DecidableEq o
e₁ : l → o
e₂ : m ≃ o
M : Matrix m n α
val✝ : Fintype o
A : Matrix o n α := submatrix M (↑e₂.symm) id
this : M = submatrix A (↑e₂) id
⊢ submatrix 1 e₁ ↑e₂ ⬝ M = submatrix M (↑e₂.symm ∘ e₁) id

tactic: simp only [Matrix.one_mul, submatrix_submatrix, Function.comp.right_id, submatrix_id_id,
  Equiv.symm_comp_self]
state_before: case intro
l : Type u_4
m : Type u_1
n : Type u_3
o : Type u_2
m' : o → Type ?u.1177977
n' : o → Type ?u.1177982
R : Type ?u.1177985
S : Type ?u.1177988
α : Type v
β : Type w
γ : Type ?u.1177995
inst✝³ : Fintype m
inst✝² : Finite o
inst✝¹ : NonAssocSemiring α
inst✝ : DecidableEq o
e₁ : l → o
e₂ : m ≃ o
M : Matrix m n α
val✝ : Fintype o
A : Matrix o n α := submatrix M (↑e₂.symm) id
this : M = submatrix A (↑e₂) id
⊢ submatrix (1 ⬝ A) e₁ id = submatrix (submatrix A (↑e₂) id) (↑e₂.symm ∘ e₁) id

tactic: simp only [submatrix_submatrix, Function.comp.right_id, submatrix_id_id, Equiv.symm_comp_self]
state_before: l : Type u_4
m : Type u_1
n : Type u_3
o : Type u_2
m' : o → Type ?u.1177977
n' : o → Type ?u.1177982
R : Type ?u.1177985
S : Type ?u.1177988
α : Type v
β : Type w
γ : Type ?u.1177995
inst✝³ : Fintype m
inst✝² : Finite o
inst✝¹ : NonAssocSemiring α
inst✝ : DecidableEq o
e₁ : l → o
e₂ : m ≃ o
M : Matrix m n α
val✝ : Fintype o
A : Matrix o n α := submatrix M (↑e₂.symm) id
⊢ M = submatrix A (↑e₂) id