Theorem: MatrixCookbook.eq_400 (MatrixCookbook/9SpecialMatrices.lean)

State before:
R : Type u_2
l : Type ?u.51145
m : Type u_1
n : Type u_3
p : Type ?u.51154
q : Type ?u.51157
r : Type ?u.51160
inst✝¹⁴ : Fintype l
inst✝¹³ : Fintype m
inst✝¹² : Fintype n
inst✝¹¹ : Fintype p
inst✝¹⁰ : Fintype q
inst✝⁹ : Fintype r
inst✝⁸ : DecidableEq l
inst✝⁷ : DecidableEq m
inst✝⁶ : DecidableEq n
inst✝⁵ : DecidableEq p
inst✝⁴ : DecidableEq q
inst✝³ : DecidableEq r
inst✝² : Field R
A₁₁ : Matrix m m R
A₁₂ : Matrix m n R
A₂₁ : Matrix n m R
A₂₂ : Matrix n n R
inst✝¹ : Invertible A₁₁
inst✝ : Invertible (A₂₂ - A₂₁ * ⅟A₁₁ * A₁₂)
⊢ (A₁₁.fromBlocks A₁₂ A₂₁ A₂₂)⁻¹ =
    let C₂ := A₂₂ - A₂₁ * ⅟A₁₁ * A₁₂;
    let i := inst✝;
    (⅟A₁₁ + ⅟A₁₁ * A₁₂ * ⅟C₂ * A₂₁ * ⅟A₁₁).fromBlocks (-(⅟A₁₁ * A₁₂ * ⅟C₂)) (-(⅟C₂ * A₂₁ * ⅟A₁₁)) ⅟C₂
Tactic:
letI := fromBlocks₁₁Invertible A₁₁ A₁₂ A₂₁ A₂₂
State after:
R : Type u_2
l : Type ?u.51145
m : Type u_1
n : Type u_3
p : Type ?u.51154
q : Type ?u.51157
r : Type ?u.51160
inst✝¹⁴ : Fintype l
inst✝¹³ : Fintype m
inst✝¹² : Fintype n
inst✝¹¹ : Fintype p
inst✝¹⁰ : Fintype q
inst✝⁹ : Fintype r
inst✝⁸ : DecidableEq l
inst✝⁷ : DecidableEq m
inst✝⁶ : DecidableEq n
inst✝⁵ : DecidableEq p
inst✝⁴ : DecidableEq q
inst✝³ : DecidableEq r
inst✝² : Field R
A₁₁ : Matrix m m R
A₁₂ : Matrix m n R
A₂₁ : Matrix n m R
A₂₂ : Matrix n n R
inst✝¹ : Invertible A₁₁
inst✝ : Invertible (A₂₂ - A₂₁ * ⅟A₁₁ * A₁₂)
this : Invertible (A₁₁.fromBlocks A₁₂ A₂₁ A₂₂) := A₁₁.fromBlocks₁₁Invertible A₁₂ A₂₁ A₂₂
⊢ (A₁₁.fromBlocks A₁₂ A₂₁ A₂₂)⁻¹ =
    let C₂ := A₂₂ - A₂₁ * ⅟A₁₁ * A₁₂;
    let i := inst✝;
    (⅟A₁₁ + ⅟A₁₁ * A₁₂ * ⅟C₂ * A₂₁ * ⅟A₁₁).fromBlocks (-(⅟A₁₁ * A₁₂ * ⅟C₂)) (-(⅟C₂ * A₂₁ * ⅟A₁₁)) ⅟C₂

State before:
R : Type u_2
l : Type ?u.51145
m : Type u_1
n : Type u_3
p : Type ?u.51154
q : Type ?u.51157
r : Type ?u.51160
inst✝¹⁴ : Fintype l
inst✝¹³ : Fintype m
inst✝¹² : Fintype n
inst✝¹¹ : Fintype p
inst✝¹⁰ : Fintype q
inst✝⁹ : Fintype r
inst✝⁸ : DecidableEq l
inst✝⁷ : DecidableEq m
inst✝⁶ : DecidableEq n
inst✝⁵ : DecidableEq p
inst✝⁴ : DecidableEq q
inst✝³ : DecidableEq r
inst✝² : Field R
A₁₁ : Matrix m m R
A₁₂ : Matrix m n R
A₂₁ : Matrix n m R
A₂₂ : Matrix n n R
inst✝¹ : Invertible A₁₁
inst✝ : Invertible (A₂₂ - A₂₁ * ⅟A₁₁ * A₁₂)
this : Invertible (A₁₁.fromBlocks A₁₂ A₂₁ A₂₂) := A₁₁.fromBlocks₁₁Invertible A₁₂ A₂₁ A₂₂
⊢ (A₁₁.fromBlocks A₁₂ A₂₁ A₂₂)⁻¹ =
    let C₂ := A₂₂ - A₂₁ * ⅟A₁₁ * A₁₂;
    let i := inst✝;
    (⅟A₁₁ + ⅟A₁₁ * A₁₂ * ⅟C₂ * A₂₁ * ⅟A₁₁).fromBlocks (-(⅟A₁₁ * A₁₂ * ⅟C₂)) (-(⅟C₂ * A₂₁ * ⅟A₁₁)) ⅟C₂
Tactic:
convert invOf_fromBlocks₁₁_eq A₁₁ A₁₂ A₂₁ A₂₂
State after:
case h.e'_2
R : Type u_2
l : Type ?u.51145
m : Type u_1
n : Type u_3
p : Type ?u.51154
q : Type ?u.51157
r : Type ?u.51160
inst✝¹⁴ : Fintype l
inst✝¹³ : Fintype m
inst✝¹² : Fintype n
inst✝¹¹ : Fintype p
inst✝¹⁰ : Fintype q
inst✝⁹ : Fintype r
inst✝⁸ : DecidableEq l
inst✝⁷ : DecidableEq m
inst✝⁶ : DecidableEq n
inst✝⁵ : DecidableEq p
inst✝⁴ : DecidableEq q
inst✝³ : DecidableEq r
inst✝² : Field R
A₁₁ : Matrix m m R
A₁₂ : Matrix m n R
A₂₁ : Matrix n m R
A₂₂ : Matrix n n R
inst✝¹ : Invertible A₁₁
inst✝ : Invertible (A₂₂ - A₂₁ * ⅟A₁₁ * A₁₂)
this : Invertible (A₁₁.fromBlocks A₁₂ A₂₁ A₂₂) := A₁₁.fromBlocks₁₁Invertible A₁₂ A₂₁ A₂₂
⊢ (A₁₁.fromBlocks A₁₂ A₂₁ A₂₂)⁻¹ = ⅟(A₁₁.fromBlocks A₁₂ A₂₁ A₂₂)

State before:
case h.e'_2
R : Type u_2
l : Type ?u.51145
m : Type u_1
n : Type u_3
p : Type ?u.51154
q : Type ?u.51157
r : Type ?u.51160
inst✝¹⁴ : Fintype l
inst✝¹³ : Fintype m
inst✝¹² : Fintype n
inst✝¹¹ : Fintype p
inst✝¹⁰ : Fintype q
inst✝⁹ : Fintype r
inst✝⁸ : DecidableEq l
inst✝⁷ : DecidableEq m
inst✝⁶ : DecidableEq n
inst✝⁵ : DecidableEq p
inst✝⁴ : DecidableEq q
inst✝³ : DecidableEq r
inst✝² : Field R
A₁₁ : Matrix m m R
A₁₂ : Matrix m n R
A₂₁ : Matrix n m R
A₂₂ : Matrix n n R
inst✝¹ : Invertible A₁₁
inst✝ : Invertible (A₂₂ - A₂₁ * ⅟A₁₁ * A₁₂)
this : Invertible (A₁₁.fromBlocks A₁₂ A₂₁ A₂₂) := A₁₁.fromBlocks₁₁Invertible A₁₂ A₂₁ A₂₂
⊢ (A₁₁.fromBlocks A₁₂ A₂₁ A₂₂)⁻¹ = ⅟(A₁₁.fromBlocks A₁₂ A₂₁ A₂₂)
Tactic:
rw [invOf_eq_nonsing_inv]
State after:
no goals