Skip to content

Commit 08679ec

Browse files
committed
bump to the latest mathlib4
1 parent 2ba9708 commit 08679ec

File tree

11 files changed

+105
-88
lines changed

11 files changed

+105
-88
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
/build/
22
/lake-packages
3+
lakefile.olean

MatrixCookbook/10FunctionsAndOperators.lean

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ variable [Field R]
3838
/-- The pdf does not mention `hx`! -/
3939
theorem eq_487 (X : Matrix m m R) (n : ℕ) (hx : (X - 1).det ≠ 0) :
4040
(X ^ n - 1) * (X - 1)⁻¹ = ∑ i in Finset.range n, X ^ i := by
41-
rw [← geom_sum_mul X n, Matrix.mul_eq_mul, Matrix.mul_eq_mul,
42-
mul_nonsing_inv_cancel_right _ _ hx.isUnit]
41+
rw [← geom_sum_mul X n, mul_nonsing_inv_cancel_right _ _ hx.isUnit]
4342

4443
/-! #### Taylor Expansion of Scalar Function -/
4544

@@ -89,8 +88,8 @@ theorem eq_507 [Nontrivial m] [Nonempty n] :
8988
let A := stdBasisMatrix m1 n1 (1 : R)
9089
let B := stdBasisMatrix m2 n1 (1 : R)
9190
have := Matrix.ext_iff.mpr (h A B) (m1, m2) (n1, n1)
92-
simpa [StdBasisMatrix.apply_same, StdBasisMatrix.apply_of_row_ne hm,
93-
MulZeroClass.mul_zero, mul_one, one_ne_zero] using this
91+
simp [StdBasisMatrix.apply_same, StdBasisMatrix.apply_of_row_ne hm,
92+
mul_zero, mul_one, one_ne_zero] at this
9493

9594
/-- Note we have to "cast" between the types -/
9695
theorem eq_508 (A : Matrix m n R) (B : Matrix r q R) (C : Matrix l p R) :
@@ -104,7 +103,7 @@ theorem eq_510 (A : Matrix m n R) (B : Matrix r q R) : (A ⊗ₖ B)ᵀ = Aᵀ
104103
rw [kroneckerMap_transpose]
105104

106105
theorem eq_511 (A : Matrix l m R) (B : Matrix p q R) (C : Matrix m n R) (D : Matrix q r R) :
107-
A ⊗ₖ B C ⊗ₖ D = (A C) ⊗ₖ (B D) := by rw [Matrix.mul_kronecker_mul]
106+
A ⊗ₖ B * C ⊗ₖ D = (A * C) ⊗ₖ (B * D) := by rw [Matrix.mul_kronecker_mul]
108107

109108
theorem eq_512 (A : Matrix m m R) (B : Matrix n n R) : (A ⊗ₖ B)⁻¹ = A⁻¹ ⊗ₖ B⁻¹ :=
110109
inv_kronecker _ _
@@ -129,13 +128,13 @@ def vec (A : Matrix m n R) : Matrix (n × m) Unit R :=
129128
col fun ij => A ij.2 ij.1
130129

131130
theorem eq_520 (A : Matrix l m R) (X : Matrix m n R) (B : Matrix n p R) :
132-
vec (A X B) = Bᵀ ⊗ₖ A vec X := by
131+
vec (A * X * B) = Bᵀ ⊗ₖ A * vec X := by
133132
ext ⟨k, l⟩
134133
simp_rw [vec, Matrix.mul_apply, Matrix.kroneckerMap_apply, col_apply, Finset.sum_mul,
135134
transpose_apply, ← Finset.univ_product_univ, Finset.sum_product, mul_right_comm _ _ (B _ _),
136135
mul_comm _ (B _ _)]
137136

138-
theorem eq_521 (A B : Matrix m n R) : (Aᵀ B).trace = ((vec A)ᵀ vec B) () () := by
137+
theorem eq_521 (A B : Matrix m n R) : (Aᵀ * B).trace = ((vec A)ᵀ * vec B) () () := by
139138
simp_rw [Matrix.trace, Matrix.diag, Matrix.mul_apply, vec, transpose_apply, col_apply, ←
140139
Finset.univ_product_univ, Finset.sum_product]
141140

@@ -147,7 +146,7 @@ theorem eq_523 (r : R) (A : Matrix m n R) : vec (r • A) = r • vec A :=
147146

148147
-- note: `Bᵀ` is `B` in the PDF
149148
theorem eq_524 (a : m → R) (X : Matrix m n R) (B : Matrix n n R) (c : m → R) :
150-
row a X B Xᵀ col c = (vec X)ᵀ Bᵀ ⊗ₖ (col c row a) vec X := by
149+
row a * X * B * Xᵀ * col c = (vec X)ᵀ * Bᵀ ⊗ₖ (col c * row a) * vec X := by
151150
-- not the proof from the book
152151
ext ⟨i, j⟩
153152
simp only [vec, Matrix.mul_apply, Finset.sum_mul, Finset.mul_sum, Matrix.kroneckerMap_apply,
@@ -167,19 +166,19 @@ theorem eq_524 (a : m → R) (X : Matrix m n R) (B : Matrix n n R) (c : m → R)
167166
/-! #### Examples -/
168167

169168

170-
theorem eq_525 (x : n → ℂ) : ‖(PiLp.equiv 1 _).symm x‖ = ∑ i, Complex.abs (x i) := by
171-
simpa using PiLp.norm_eq_of_nat 1 Nat.cast_one.symm ((PiLp.equiv 1 _).symm x)
169+
theorem eq_525 (x : n → ℂ) : ‖(WithLp.equiv 1 _).symm x‖ = ∑ i, Complex.abs (x i) := by
170+
simpa using PiLp.norm_eq_of_nat 1 Nat.cast_one.symm ((WithLp.equiv 1 _).symm x)
172171

173-
theorem eq_526 (x : n → ℂ) : ↑(‖(PiLp.equiv 2 _).symm x‖ ^ 2) = star x ⬝ᵥ x := by
172+
theorem eq_526 (x : n → ℂ) : ↑(‖(WithLp.equiv 2 _).symm x‖ ^ 2) = star x ⬝ᵥ x := by
174173
rw [← EuclideanSpace.inner_piLp_equiv_symm, inner_self_eq_norm_sq_to_K, Complex.ofReal_pow]
175174
rfl -- porting note: added
176175

177176
theorem eq_527 (x : n → ℂ) (p : ℝ≥0∞) (h : 0 < p.toReal) :
178-
‖(PiLp.equiv p _).symm x‖ = (∑ i, Complex.abs (x i) ^ p.toReal) ^ (1 / p.toReal) := by
179-
simp_rw [PiLp.norm_eq_sum h, PiLp.equiv_symm_apply, Complex.norm_eq_abs]
177+
‖(WithLp.equiv p _).symm x‖ = (∑ i, Complex.abs (x i) ^ p.toReal) ^ (1 / p.toReal) := by
178+
simp_rw [PiLp.norm_eq_sum h, WithLp.equiv_symm_pi_apply, Complex.norm_eq_abs]
180179

181-
theorem eq_528 (x : n → ℂ) : ‖(PiLp.equiv ∞ _).symm x‖ = ⨆ i, Complex.abs (x i) := by
182-
simp_rw [PiLp.norm_eq_ciSup, PiLp.equiv_symm_apply, Complex.norm_eq_abs]
180+
theorem eq_528 (x : n → ℂ) : ‖(WithLp.equiv ∞ _).symm x‖ = ⨆ i, Complex.abs (x i) := by
181+
simp_rw [PiLp.norm_eq_ciSup, WithLp.equiv_symm_pi_apply, Complex.norm_eq_abs]
183182

184183
/-! ### Matrix Norms -/
185184

@@ -224,7 +223,7 @@ theorem eq_534 [Nonempty n] : ‖(1 : Matrix n n ℝ)‖ = 1 :=
224223
theorem eq_535 (A : Matrix m n ℝ) (x : n → ℝ) : ‖A.mulVec x‖ ≤ ‖A‖ * ‖x‖ :=
225224
linfty_op_norm_mulVec _ _
226225

227-
theorem eq_536 (A : Matrix m n ℝ) (B : Matrix n p ℝ) : ‖A B‖ ≤ ‖A‖ * ‖B‖ :=
226+
theorem eq_536 (A : Matrix m n ℝ) (B : Matrix n p ℝ) : ‖A * B‖ ≤ ‖A‖ * ‖B‖ :=
228227
linfty_op_norm_mul _ _
229228

230229
end
@@ -279,7 +278,7 @@ end
279278
-- lemma eq_544 : sorry := sorry
280279
-- lemma eq_545 : sorry := sorry
281280
theorem eq_546 (A : Matrix m n ℝ) (B : Matrix n r ℝ) :
282-
rank A + rank B - Fintype.card n ≤ rank (A B) ∧ rank (A B) ≤ min (rank A) (rank B) :=
281+
rank A + rank B - Fintype.card n ≤ rank (A * B) ∧ rank (A * B) ≤ min (rank A) (rank B) :=
283282
sorry, rank_mul_le _ _⟩
284283

285284
/-! ### Integral Involving Dirac Delta Functions -/
@@ -291,10 +290,11 @@ theorem eq_546 (A : Matrix m n ℝ) (B : Matrix n r ℝ) :
291290
-- lemma eq_547 : sorry := sorry
292291
-- lemma eq_548 : sorry := sorry
293292
theorem eq_549 (A : Matrix m n ℝ) :
294-
A.rank = Aᵀ.rank ∧ A.rank = (A Aᵀ).rank ∧ A.rank = (Aᵀ A).rank :=
293+
A.rank = Aᵀ.rank ∧ A.rank = (A * Aᵀ).rank ∧ A.rank = (Aᵀ * A).rank :=
295294
⟨A.rank_transpose.symm, A.rank_self_mul_transpose.symm, A.rank_transpose_mul_self.symm⟩
296295

297-
theorem eq_550 (A : Matrix m m ℝ) : A.PosDef ↔ ∃ B : (Matrix m m ℝ)ˣ, A = ↑B * ↑Bᵀ :=
296+
theorem eq_550 (A : Matrix m m ℝ) :
297+
A.PosDef ↔ ∃ B : (Matrix m m ℝ)ˣ, A = (↑B : Matrix m m ℝ) * ↑Bᵀ :=
298298
sorry
299299

300300
end MatrixCookbook

MatrixCookbook/1Basic.lean

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ theorem eq_3 {A : Matrix m m R} : Aᵀ⁻¹ = A⁻¹ᵀ :=
3939
theorem eq_4 {A B : Matrix m n R} : (A + B)ᵀ = Aᵀ + Bᵀ :=
4040
transpose_add _ _
4141

42-
theorem eq_5 {A : Matrix m n R} {B : Matrix n p R} : (A B)ᵀ = Bᵀ Aᵀ :=
42+
theorem eq_5 {A : Matrix m n R} {B : Matrix n p R} : (A * B)ᵀ = Bᵀ * Aᵀ :=
4343
transpose_mul _ _
4444

4545
theorem eq_6 {l : List (Matrix m m R)} : l.prodᵀ = (l.map transpose).reverse.prod :=
@@ -51,7 +51,7 @@ theorem eq_7 [StarRing R] {A : Matrix m m R} : Aᴴ⁻¹ = A⁻¹ᴴ :=
5151
theorem eq_8 [StarRing R] {A B : Matrix m n R} : (A + B)ᴴ = Aᴴ + Bᴴ :=
5252
conjTranspose_add _ _
5353

54-
theorem eq_9 [StarRing R] {A : Matrix m n R} {B : Matrix n p R} : (A B)ᴴ = Bᴴ Aᴴ :=
54+
theorem eq_9 [StarRing R] {A : Matrix m n R} {B : Matrix n p R} : (A * B)ᴴ = Bᴴ * Aᴴ :=
5555
conjTranspose_mul _ _
5656

5757
theorem eq_10 [StarRing R] {l : List (Matrix m m R)} :
@@ -72,17 +72,17 @@ theorem eq_12 {A : Matrix m m R} [IsAlgClosed R] : trace A = A.charpoly.roots.su
7272
theorem eq_13 {A : Matrix m m R} : trace A = trace Aᵀ :=
7373
(Matrix.trace_transpose _).symm
7474

75-
theorem eq_14 {A : Matrix m n R} {B : Matrix n m R} : trace (A B) = trace (B A) :=
75+
theorem eq_14 {A : Matrix m n R} {B : Matrix n m R} : trace (A * B) = trace (B * A) :=
7676
Matrix.trace_mul_comm _ _
7777

7878
theorem eq_15 {A B : Matrix m m R} : trace (A + B) = trace A + trace B :=
7979
trace_add _ _
8080

8181
theorem eq_16 {A : Matrix m n R} {B : Matrix n p R} {C : Matrix p m R} :
82-
trace (A B C) = trace (B C A) :=
82+
trace (A * B * C) = trace (B * C * A) :=
8383
(Matrix.trace_mul_cycle B C A).symm
8484

85-
theorem eq_17 {a : m → R} : dotProduct a a = trace (col a row a) :=
85+
theorem eq_17 {a : m → R} : dotProduct a a = trace (col a * row a) :=
8686
(Matrix.trace_col_mul_row _ _).symm
8787

8888
end
@@ -109,7 +109,7 @@ theorem eq_22 {A : Matrix m m R} : det A⁻¹ = (det A)⁻¹ :=
109109
theorem eq_23 {A : Matrix m m R} (k : ℕ) : det (A ^ k) = det A ^ k :=
110110
det_pow _ _
111111

112-
theorem eq_24 {u v : m → R} : det (1 + col u row v) = 1 + dotProduct u v := by
112+
theorem eq_24 {u v : m → R} : det (1 + col u * row v) = 1 + dotProduct u v := by
113113
rw [det_one_add_col_mul_row u v, dotProduct_comm]
114114

115115
theorem eq_25 {A : Matrix (Fin 2) (Fin 2) R} : det (1 + A) = 1 + det A + trace A := by
@@ -118,7 +118,7 @@ theorem eq_25 {A : Matrix (Fin 2) (Fin 2) R} : det (1 + A) = 1 + det A + trace A
118118
theorem eq_26 {A : Matrix (Fin 3) (Fin 3) R} [Invertible (2 : R)] :
119119
det (1 + A) = 1 + det A + trace A + ⅟ 2 * trace A ^ 2 - ⅟ 2 * trace (A ^ 2) := by
120120
apply mul_left_cancel₀ (isUnit_of_invertible (2 : R)).ne_zero
121-
simp only [det_fin_three, trace_fin_three, pow_two, Matrix.mul_eq_mul, Matrix.mul_apply,
121+
simp only [det_fin_three, trace_fin_three, pow_two, Matrix.mul_apply,
122122
Fin.sum_univ_succ, Matrix.one_apply]
123123
dsimp
124124
simp only [mul_add, mul_sub, mul_invOf_self_assoc]
@@ -173,7 +173,8 @@ theorem eq_30 {A : Matrix (Fin 2) (Fin 2) R} : trace A = A 0 0 + A 1 1 :=
173173
/-! Note: there are some non-numbered eigenvalue things here -/
174174

175175

176-
theorem eq_31 {A : Matrix (Fin 2) (Fin 2) R} : A⁻¹ = (det A)⁻¹ • !![A 1 1, -A 0 1; -A 1 0, A 0 0] := by rw [inv_def, adjugate_fin_two, Ring.inverse_eq_inv]
176+
theorem eq_31 {A : Matrix (Fin 2) (Fin 2) R} : A⁻¹ = (det A)⁻¹ • !![A 1 1, -A 0 1; -A 1 0, A 0 0] := by
177+
rw [inv_def, adjugate_fin_two, Ring.inverse_eq_inv]
177178

178179
end
179180

MatrixCookbook/2Derivatives.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ open Matrix
3636
/-! TODO: is this what is actually meant by `∂(XY) = (∂X)Y + X(∂Y)`? -/
3737

3838

39-
theorem eq_33 (A : Matrix m n R) : (deriv fun x : R => A) = 0 :=
39+
theorem eq_33 (A : Matrix m n R) : (deriv fun _ : R => A) = 0 :=
4040
deriv_const' _
4141

4242
theorem eq_34 (c : R) (X : R → Matrix m n R) (hX : Differentiable R X) :
@@ -53,7 +53,7 @@ theorem eq_36 (X : R → Matrix m m R) (hX : Differentiable R X) :
5353

5454
theorem eq_37 (X : R → Matrix m n R) (Y : R → Matrix n p R) (hX : Differentiable R X)
5555
(hY : Differentiable R Y) :
56-
(deriv fun a => X a Y a) = fun a => deriv X a Y a + X a deriv Y a :=
56+
(deriv fun a => X a * Y a) = fun a => deriv X a * Y a + X a * deriv Y a :=
5757
funext fun a => ((hX a).hasDerivAt.matrix_mul (hY a).hasDerivAt).deriv
5858

5959
theorem eq_38 (X Y : R → Matrix n p R) (hX : Differentiable R X) (hY : Differentiable R Y) :

MatrixCookbook/3Inverses.lean

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -102,41 +102,41 @@ theorem eq158 : sorry :=
102102

103103

104104
theorem eq_159 (B : Matrix n m ℂ) (C : Matrix m n ℂ) :
105-
(A + B C)⁻¹ = A⁻¹ - A⁻¹ B (1 + C A⁻¹ B)⁻¹ C A⁻¹ :=
105+
(A + B * C)⁻¹ = A⁻¹ - A⁻¹ * B * (1 + C * A⁻¹ * B)⁻¹ * C * A⁻¹ :=
106106
sorry
107107

108108
/-! ### Sherman-Morrison -/
109109

110110

111111
theorem eq_160 (b c : n → ℂ) :
112-
(A + col b row c)⁻¹ = A⁻¹ - (1 + c ⬝ᵥ A⁻¹.mulVec b)⁻¹ • A⁻¹ (col b row c) A⁻¹ := by
112+
(A + col b * row c)⁻¹ = A⁻¹ - (1 + c ⬝ᵥ A⁻¹.mulVec b)⁻¹ • A⁻¹ * (col b * row c) * A⁻¹ := by
113113
rw [eq_159, ← Matrix.mul_assoc _ (col b), Matrix.mul_assoc _ (row c), Matrix.mul_assoc _ (row c),
114-
Matrix.mul_smul, Matrix.mul_assoc _ _ (row c ⬝ _)]
114+
Matrix.smul_mul]
115115
congr
116116
sorry
117117

118118
/-! ### The Searle Set of Identities -/
119119

120120

121-
theorem eq_161 : (1 + A⁻¹)⁻¹ = A (A + 1)⁻¹ :=
121+
theorem eq_161 : (1 + A⁻¹)⁻¹ = A * (A + 1)⁻¹ :=
122122
sorry
123123

124-
theorem eq_162 : (A + Bᵀ B)⁻¹ B = A⁻¹ B (1 + Bᵀ A⁻¹ B)⁻¹ :=
124+
theorem eq_162 : (A + Bᵀ * B)⁻¹ * B = A⁻¹ * B * (1 + Bᵀ * A⁻¹ * B)⁻¹ :=
125125
sorry
126126

127-
theorem eq_163 : (A⁻¹ + B⁻¹)⁻¹ = A (A + B)⁻¹ B ∧ (A⁻¹ + B⁻¹)⁻¹ = B (A + B)⁻¹ A :=
127+
theorem eq_163 : (A⁻¹ + B⁻¹)⁻¹ = A * (A + B)⁻¹ * B ∧ (A⁻¹ + B⁻¹)⁻¹ = B * (A + B)⁻¹ * A :=
128128
sorry
129129

130-
theorem eq_164 : A - A (A + B)⁻¹ A = B - B (A + B)⁻¹ B :=
130+
theorem eq_164 : A - A * (A + B)⁻¹ * A = B - B * (A + B)⁻¹ * B :=
131131
sorry
132132

133-
theorem eq_165 : A⁻¹ + B⁻¹ = A⁻¹ (A + B)⁻¹ B⁻¹ :=
133+
theorem eq_165 : A⁻¹ + B⁻¹ = A⁻¹ * (A + B)⁻¹ * B⁻¹ :=
134134
sorry
135135

136-
theorem eq_166 : (1 + A B)⁻¹ = 1 - A (1 + B A)⁻¹ B :=
136+
theorem eq_166 : (1 + A * B)⁻¹ = 1 - A * (1 + B * A)⁻¹ * B :=
137137
sorry
138138

139-
theorem eq_167 : (1 + A B)⁻¹ A = A (1 + B A)⁻¹ :=
139+
theorem eq_167 : (1 + A * B)⁻¹ * A = A * (1 + B * A)⁻¹ :=
140140
sorry
141141

142142
/-! ### Rank-1 update of inverse of inner product -/
@@ -196,7 +196,7 @@ theorem eq183 : sorry :=
196196
/-! ## Implication on Inverses -/
197197

198198

199-
theorem eq_184 : (A + B)⁻¹ = A⁻¹ + B⁻¹ → A B⁻¹ A = B A⁻¹ B :=
199+
theorem eq_184 : (A + B)⁻¹ = A⁻¹ + B⁻¹ → A * B⁻¹ * A = B * A⁻¹ * B :=
200200
sorry
201201

202202
/-! ### A PosDef identity -/

MatrixCookbook/5SolutionsAndDecompositions.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ theorem eq301 : sorry :=
230230

231231

232232
theorem eq_302 {n : ℕ} (A : Matrix (Fin n) (Fin n) ℝ) (hA : A.PosDef) :
233-
A = LDL.lower hA LDL.diag hA (LDL.lower hA)ᴴ :=
233+
A = LDL.lower hA * LDL.diag hA * (LDL.lower hA)ᴴ :=
234234
(LDL.lower_conj_diag hA).symm
235235

236236
end MatrixCookbook

MatrixCookbook/9SpecialMatrices.lean

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -35,36 +35,38 @@ namespace MatrixCookbook
3535

3636

3737
theorem eq_397 (A₁₁ : Matrix m m R) (A₁₂ : Matrix m n R) (A₂₁ : Matrix n m R) (A₂₂ : Matrix n n R)
38-
[Invertible A₂₂] : (fromBlocks A₁₁ A₁₂ A₂₁ A₂₂).det = A₂₂.det * (A₁₁ - A₁₂ ⅟ A₂₂ A₂₁).det :=
38+
[Invertible A₂₂] : (fromBlocks A₁₁ A₁₂ A₂₁ A₂₂).det = A₂₂.det * (A₁₁ - A₁₂ * ⅟ A₂₂ * A₂₁).det :=
3939
det_fromBlocks₂₂ _ _ _ _
4040

4141
theorem eq_398 (A₁₁ : Matrix m m R) (A₁₂ : Matrix m n R) (A₂₁ : Matrix n m R) (A₂₂ : Matrix n n R)
42-
[Invertible A₁₁] : (fromBlocks A₁₁ A₁₂ A₂₁ A₂₂).det = A₁₁.det * (A₂₂ - A₂₁ ⅟ A₁₁ A₁₂).det :=
42+
[Invertible A₁₁] : (fromBlocks A₁₁ A₁₂ A₂₁ A₂₂).det = A₁₁.det * (A₂₂ - A₂₁ * ⅟ A₁₁ * A₁₂).det :=
4343
det_fromBlocks₁₁ _ _ _ _
4444

4545
/-! ### The Inverse -/
4646

4747

4848
/-- Eq 399 is the definition of `C₁`, this is the equation below it without `C₂` at all. -/
4949
theorem eq_399 (A₁₁ : Matrix m m R) (A₁₂ : Matrix m n R) (A₂₁ : Matrix n m R) (A₂₂ : Matrix n n R)
50-
[Invertible A₂₂] [Invertible (A₁₁ - A₁₂ ⅟ A₂₂ A₂₁)] :
50+
[Invertible A₂₂] [Invertible (A₁₁ - A₁₂ * ⅟ A₂₂ * A₂₁)] :
5151
(fromBlocks A₁₁ A₁₂ A₂₁ A₂₂)⁻¹ =
52-
let C₁ := A₁₁ - A₁₂ ⅟ A₂₂ A₂₁
52+
let C₁ := A₁₁ - A₁₂ * ⅟ A₂₂ * A₂₁
5353
let i : Invertible C₁ := ‹_›
54-
fromBlocks (⅟ C₁) (-⅟ C₁ ⬝ A₁₂ ⬝ ⅟ A₂₂) (-⅟ A₂₂ ⬝ A₂₁ ⬝ ⅟ C₁)
55-
(⅟ A₂₂ + ⅟ A₂₂ ⬝ A₂₁ ⬝ ⅟ C₁ ⬝ A₁₂ ⬝ ⅟ A₂₂) := by
54+
fromBlocks
55+
(⅟ C₁) (-(⅟ C₁ * A₁₂ * ⅟ A₂₂))
56+
(-(⅟ A₂₂ * A₂₁ * ⅟ C₁)) (⅟ A₂₂ + ⅟ A₂₂ * A₂₁ * ⅟ C₁ * A₁₂ * ⅟ A₂₂) := by
5657
letI := fromBlocks₂₂Invertible A₁₁ A₁₂ A₂₁ A₂₂
5758
convert invOf_fromBlocks₂₂_eq A₁₁ A₁₂ A₂₁ A₂₂
5859
rw [invOf_eq_nonsing_inv]
5960

6061
/-- Eq 400 is the definition of `C₂`, this is the equation below it without `C₁` at all. -/
6162
theorem eq_400 (A₁₁ : Matrix m m R) (A₁₂ : Matrix m n R) (A₂₁ : Matrix n m R) (A₂₂ : Matrix n n R)
62-
[Invertible A₁₁] [Invertible (A₂₂ - A₂₁ ⅟ A₁₁ A₁₂)] :
63+
[Invertible A₁₁] [Invertible (A₂₂ - A₂₁ * ⅟ A₁₁ * A₁₂)] :
6364
(fromBlocks A₁₁ A₁₂ A₂₁ A₂₂)⁻¹ =
64-
let C₂ := A₂₂ - A₂₁ ⅟ A₁₁ A₁₂
65+
let C₂ := A₂₂ - A₂₁ * ⅟ A₁₁ * A₁₂
6566
let i : Invertible C₂ := ‹_›
66-
fromBlocks (⅟ A₁₁ + ⅟ A₁₁ ⬝ A₁₂ ⬝ ⅟ C₂ ⬝ A₂₁ ⬝ ⅟ A₁₁) (-⅟ A₁₁ ⬝ A₁₂ ⬝ ⅟ C₂)
67-
(-⅟ C₂ ⬝ A₂₁ ⬝ ⅟ A₁₁) (⅟ C₂) := by
67+
fromBlocks
68+
(⅟ A₁₁ + ⅟ A₁₁ * A₁₂ * ⅟ C₂ * A₂₁ * ⅟ A₁₁) (-(⅟ A₁₁ * A₁₂ * ⅟ C₂))
69+
(-(⅟ C₂ * A₂₁ * ⅟ A₁₁)) (⅟ C₂) := by
6870
letI := fromBlocks₁₁Invertible A₁₁ A₁₂ A₂₁ A₂₂
6971
convert invOf_fromBlocks₁₁_eq A₁₁ A₁₂ A₂₁ A₂₂
7072
rw [invOf_eq_nonsing_inv]
@@ -161,19 +163,19 @@ theorem eq_421 [StarRing R] (hA : IsIdempotentElem A) : IsIdempotentElem (1 - A
161163
sorry
162164

163165
theorem eq_422 (hA : IsIdempotentElem A) (hB : IsIdempotentElem B) (h : Commute A B) :
164-
IsIdempotentElem (A B) :=
166+
IsIdempotentElem (A * B) :=
165167
hA.mul_of_commute h hB
166168

167169
theorem eq_423 (hA : IsIdempotentElem A) : sorry = trace A :=
168170
sorry
169171

170-
theorem eq_424 (hA : IsIdempotentElem A) : A (1 - A) = 0 := by
172+
theorem eq_424 (hA : IsIdempotentElem A) : A * (1 - A) = 0 := by
171173
-- porting note: was `simp [mul_sub, ← Matrix.mul_eq_mul, hA.eq]`
172-
rw [Matrix.mul_sub, Matrix.mul_one, ←Matrix.mul_eq_mul, hA.eq, sub_self]
174+
rw [Matrix.mul_sub, Matrix.mul_one, hA.eq, sub_self]
173175

174-
theorem eq_425 (hA : IsIdempotentElem A) : (1 - A) A = 0 := by
176+
theorem eq_425 (hA : IsIdempotentElem A) : (1 - A) * A = 0 := by
175177
-- porting note: was `simp [sub_mul, ← Matrix.mul_eq_mul, hA.eq]`
176-
rw [Matrix.sub_mul, Matrix.one_mul, ←Matrix.mul_eq_mul, hA.eq, sub_self]
178+
rw [Matrix.sub_mul, Matrix.one_mul, hA.eq, sub_self]
177179

178180
theorem eq426 : sorry :=
179181
sorry
@@ -453,7 +455,7 @@ theorem eq_477 :
453455
of ![(Pi.single 1 1 : Fin 3 → R), Pi.single 0 1, Pi.single 2 1] := by ext i j; fin_cases i <;> fin_cases j <;> rfl
454456

455457
theorem eq_478 (e : Equiv.Perm m) :
456-
e.toPEquiv.toMatrix e.toPEquiv.toMatrixᵀ = (1 : Matrix m m R) := by
458+
e.toPEquiv.toMatrix * e.toPEquiv.toMatrixᵀ = (1 : Matrix m m R) := by
457459
rw [← PEquiv.toMatrix_symm, ← PEquiv.toMatrix_trans, ← Equiv.toPEquiv_symm, ←
458460
Equiv.toPEquiv_trans, Equiv.self_trans_symm, Equiv.toPEquiv_refl, PEquiv.toMatrix_refl]
459461

MatrixCookbook/ForMathlib/Analysis/Matrix.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ theorem hasDerivAt_matrix {f : R → Matrix m n A} {r : R} {f' : Matrix m n A} :
4747

4848
theorem HasDerivAt.matrix_mul {X : R → Matrix m n A} {Y : R → Matrix n p A} {X' : Matrix m n A}
4949
{Y' : Matrix n p A} {r : R} (hX : HasDerivAt X X' r) (hY : HasDerivAt Y Y' r) :
50-
HasDerivAt (fun a => X a Y a) (X' Y r + X r Y') r := by
50+
HasDerivAt (fun a => X a * Y a) (X' * Y r + X r * Y') r := by
5151
rw [hasDerivAt_matrix] at hX hY ⊢
5252
intro i j
5353
simp only [mul_apply, Matrix.add_apply, ← Finset.sum_add_distrib]
@@ -84,8 +84,8 @@ theorem HasDerivAt.conjTranspose [StarRing R] [TrivialStar R] [StarAddMonoid A]
8484
theorem deriv_matrix (f : R → Matrix m n A) (r : R) (hX : DifferentiableAt R f r) :
8585
deriv f r = of fun i j => deriv (fun r => f r i j) r := by
8686
ext i j
87-
rw [deriv_pi]
88-
simp_rw [deriv_pi, of_apply]
87+
rw [of_apply, deriv_pi]
88+
dsimp only
8989
rw [deriv_pi]
9090
· intro i
9191
erw [differentiableAt_pi] at hX -- porting note: added

MatrixCookbook/Lib/TraceDetFinFour.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ theorem trace_pow_two_fin_four (A : Matrix (Fin 4) (Fin 4) R) :
4040
2 * A 1 2 * A 2 1 +
4141
2 * A 1 3 * A 3 1 +
4242
2 * A 2 3 * A 3 2 := by
43-
simp_rw [Matrix.trace_fin_four, pow_two, mul_eq_mul, mul_apply, Fin.sum_univ_four]
43+
simp_rw [Matrix.trace_fin_four, pow_two, mul_apply, Fin.sum_univ_four]
4444
ring
4545

4646
-- porting note: added
@@ -68,7 +68,7 @@ theorem trace_pow_three_fin_four (A : Matrix (Fin 4) (Fin 4) R) :
6868
A 3 2 * (A 0 3 * A 2 0 + A 1 3 * A 2 1 + A 2 2 * A 2 3 + A 2 3 * A 3 3) +
6969
A 1 3 * (A 0 1 * A 3 0 + A 1 1 * A 3 1 + A 2 1 * A 3 2 + A 3 1 * A 3 3) +
7070
A 2 3 * (A 0 2 * A 3 0 + A 1 2 * A 3 1 + A 2 2 * A 3 2 + A 3 2 * A 3 3) := by
71-
simp_rw [Matrix.trace_fin_four, pow_three, mul_eq_mul, mul_apply, Fin.sum_univ_four]
71+
simp_rw [Matrix.trace_fin_four, pow_three, mul_apply, Fin.sum_univ_four]
7272
ring
7373

7474
theorem det_one_add_fin_four (A : Matrix (Fin 4) (Fin 4) R) :

0 commit comments

Comments
 (0)