Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 447a2d6

Browse files
chore(data/matrix/basic): move numeral section into diagonal (#3022)
Since the numeral section defines numerals for matrices as scalar multiples of `one_val`, which is the identity matrix, these are defined solely for diagonal matrices of type `matrix n n r`. So the numeral section should be in the diagonal section. Co-authored-by: Bryan Gin-ge Chen <bryangingechen@gmail.com>
1 parent 1df9301 commit 447a2d6

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

src/data/matrix/basic.lean

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ instance [add_comm_group α] : add_comm_group (matrix m n α) := pi.add_comm_gro
5959
section diagonal
6060
variables [decidable_eq n]
6161

62+
/-- `diagonal d` is the square matrix such that `(diagonal d) i i = d i` and `(diagonal d) i j = 0`
63+
if `i ≠ j`. -/
6264
def diagonal [has_zero α] (d : n → α) : matrix n n α := λ i j, if i = j then d i else 0
6365

6466
@[simp] theorem diagonal_val_eq [has_zero α] {d : n → α} (i : n) : (diagonal d) i i = d i :=
@@ -82,6 +84,10 @@ begin
8284
{ simp [h, transpose, diagonal_val_ne' h] }
8385
end
8486

87+
@[simp] theorem diagonal_add [add_monoid α] (d₁ d₂ : n → α) :
88+
diagonal d₁ + diagonal d₂ = diagonal (λ i, d₁ i + d₂ i) :=
89+
by ext i j; by_cases h : i = j; simp [h]
90+
8591
section one
8692
variables [has_zero α] [has_one α]
8793

@@ -101,18 +107,16 @@ diagonal_val_ne'
101107

102108
end one
103109

104-
end diagonal
105-
106110
section numeral
107111

108-
@[simp] lemma bit0_val [has_add α] (M : matrix n n α) (i : n) (j : n) :
112+
@[simp] lemma bit0_val [has_add α] (M : matrix m m α) (i : m) (j : m) :
109113
(bit0 M) i j = bit0 (M i j) := rfl
110114

111-
variables [decidable_eq n] [add_monoid α] [has_one α]
115+
variables [add_monoid α] [has_one α]
112116

113117
lemma bit1_val (M : matrix n n α) (i : n) (j : n) :
114118
(bit1 M) i j = if i = j then bit1 (M i j) else bit0 (M i j) :=
115-
by dsimp [bit1]; by_cases i = j; simp [h]
119+
by dsimp [bit1]; by_cases h : i = j; simp [h]
116120

117121
@[simp]
118122
lemma bit1_val_eq (M : matrix n n α) (i : n) :
@@ -126,9 +130,7 @@ by simp [bit1_val, h]
126130

127131
end numeral
128132

129-
@[simp] theorem diagonal_add [decidable_eq n] [add_monoid α] (d₁ d₂ : n → α) :
130-
diagonal d₁ + diagonal d₂ = diagonal (λ i, d₁ i + d₂ i) :=
131-
by ext i j; by_cases i = j; simp [h]
133+
end diagonal
132134

133135
section dot_product
134136

0 commit comments

Comments
 (0)