Theorem: Matrix.blockDiagonal'_transpose
File: Mathlib/Data/Matrix/Block.lean

tactic: ext (⟨ii, ix⟩⟨ji, jx⟩)
state_before: l : Type ?u.198919
m : Type ?u.198922
n : Type ?u.198925
o : Type u_4
p : Type ?u.198931
q : Type ?u.198934
m' : o → Type u_1
n' : o → Type u_2
p' : o → Type ?u.198949
R : Type ?u.198952
S : Type ?u.198955
α : Type u_3
β : Type ?u.198961
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : (i : o) → Matrix (m' i) (n' i) α
⊢ (blockDiagonal' M)ᵀ = blockDiagonal' fun k => (M k)ᵀ

tactic: simp only [transpose_apply, blockDiagonal'_apply]
state_before: case a.mk.h.mk
l : Type ?u.198919
m : Type ?u.198922
n : Type ?u.198925
o : Type u_4
p : Type ?u.198931
q : Type ?u.198934
m' : o → Type u_1
n' : o → Type u_2
p' : o → Type ?u.198949
R : Type ?u.198952
S : Type ?u.198955
α : Type u_3
β : Type ?u.198961
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : (i : o) → Matrix (m' i) (n' i) α
ii : o
ix : n' ii
ji : o
jx : m' ji
⊢ (blockDiagonal' M)ᵀ { fst := ii, snd := ix } { fst := ji, snd := jx } =
    blockDiagonal' (fun k => (M k)ᵀ) { fst := ii, snd := ix } { fst := ji, snd := jx }

tactic: split_ifs with h
state_before: case a.mk.h.mk
l : Type ?u.198919
m : Type ?u.198922
n : Type ?u.198925
o : Type u_4
p : Type ?u.198931
q : Type ?u.198934
m' : o → Type u_1
n' : o → Type u_2
p' : o → Type ?u.198949
R : Type ?u.198952
S : Type ?u.198955
α : Type u_3
β : Type ?u.198961
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : (i : o) → Matrix (m' i) (n' i) α
ii : o
ix : n' ii
ji : o
jx : m' ji
⊢ (if h : ji = ii then M ji jx (cast (_ : n' { fst := ii, snd := ix }.fst = n' { fst := ji, snd := jx }.fst) ix)
    else 0) =
    if h : ii = ji then M ii (cast (_ : m' { fst := ji, snd := jx }.fst = m' { fst := ii, snd := ix }.fst) jx) ix else 0

tactic: subst h
state_before: case a.mk.h.mk.inl.inl
l : Type ?u.198919
m : Type ?u.198922
n : Type ?u.198925
o : Type u_4
p : Type ?u.198931
q : Type ?u.198934
m' : o → Type u_1
n' : o → Type u_2
p' : o → Type ?u.198949
R : Type ?u.198952
S : Type ?u.198955
α : Type u_3
β : Type ?u.198961
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : (i : o) → Matrix (m' i) (n' i) α
ii : o
ix : n' ii
ji : o
jx : m' ji
h : ji = ii
h✝ : ii = ji
⊢ M ji jx (cast (_ : n' { fst := ii, snd := ix }.fst = n' { fst := ji, snd := jx }.fst) ix) =
    M ii (cast (_ : m' { fst := ji, snd := jx }.fst = m' { fst := ii, snd := ix }.fst) jx) ix

tactic: rfl
state_before: case a.mk.h.mk.inl.inl
l : Type ?u.198919
m : Type ?u.198922
n : Type ?u.198925
o : Type u_4
p : Type ?u.198931
q : Type ?u.198934
m' : o → Type u_1
n' : o → Type u_2
p' : o → Type ?u.198949
R : Type ?u.198952
S : Type ?u.198955
α : Type u_3
β : Type ?u.198961
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : (i : o) → Matrix (m' i) (n' i) α
ji : o
jx : m' ji
ix : n' ji
h✝ : ji = ji
⊢ M ji jx (cast (_ : n' { fst := ji, snd := ix }.fst = n' { fst := ji, snd := jx }.fst) ix) =
    M ji (cast (_ : m' { fst := ji, snd := jx }.fst = m' { fst := ji, snd := ix }.fst) jx) ix

tactic: simp_all only [not_true]
state_before: case a.mk.h.mk.inl.inr
l : Type ?u.198919
m : Type ?u.198922
n : Type ?u.198925
o : Type u_4
p : Type ?u.198931
q : Type ?u.198934
m' : o → Type u_1
n' : o → Type u_2
p' : o → Type ?u.198949
R : Type ?u.198952
S : Type ?u.198955
α : Type u_3
β : Type ?u.198961
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : (i : o) → Matrix (m' i) (n' i) α
ii : o
ix : n' ii
ji : o
jx : m' ji
h : ji = ii
h✝ : ¬ii = ji
⊢ M ji jx (cast (_ : n' { fst := ii, snd := ix }.fst = n' { fst := ji, snd := jx }.fst) ix) = 0

tactic: simp_all only [not_true]
state_before: case a.mk.h.mk.inr.inl
l : Type ?u.198919
m : Type ?u.198922
n : Type ?u.198925
o : Type u_4
p : Type ?u.198931
q : Type ?u.198934
m' : o → Type u_1
n' : o → Type u_2
p' : o → Type ?u.198949
R : Type ?u.198952
S : Type ?u.198955
α : Type u_3
β : Type ?u.198961
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : (i : o) → Matrix (m' i) (n' i) α
ii : o
ix : n' ii
ji : o
jx : m' ji
h : ¬ji = ii
h✝ : ii = ji
⊢ 0 = M ii (cast (_ : m' { fst := ji, snd := jx }.fst = m' { fst := ii, snd := ix }.fst) jx) ix

tactic: rfl
state_before: case a.mk.h.mk.inr.inr
l : Type ?u.198919
m : Type ?u.198922
n : Type ?u.198925
o : Type u_4
p : Type ?u.198931
q : Type ?u.198934
m' : o → Type u_1
n' : o → Type u_2
p' : o → Type ?u.198949
R : Type ?u.198952
S : Type ?u.198955
α : Type u_3
β : Type ?u.198961
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : (i : o) → Matrix (m' i) (n' i) α
ii : o
ix : n' ii
ji : o
jx : m' ji
h : ¬ji = ii
h✝ : ¬ii = ji
⊢ 0 = 0