@@ -82,6 +82,10 @@ theorem diagonal_zero [Zero α] : (diagonal fun _ => 0 : Matrix n n α) = 0 := b
8282@[simp]
8383theorem diagonal_zero' [Zero α] : (diagonal 0 : Matrix n n α) = 0 := diagonal_zero
8484
85+ @[simp]
86+ theorem diagonal_eq_zero [Zero α] {d : n → α} : diagonal d = 0 ↔ d = 0 :=
87+ diagonal_injective.eq_iff' diagonal_zero
88+
8589@[simp]
8690theorem diagonal_transpose [Zero α] (v : n → α) : (diagonal v)ᵀ = diagonal v := by
8791 ext i j
@@ -131,11 +135,21 @@ theorem diagonal_natCast [Zero α] [NatCast α] (m : ℕ) : diagonal (fun _ : n
131135@[norm_cast]
132136theorem diagonal_natCast' [Zero α] [NatCast α] (m : ℕ) : diagonal ((m : n → α)) = m := rfl
133137
138+ @[simp]
139+ theorem diagonal_eq_natCast [Zero α] [NatCast α] {d : n → α} {m : ℕ} :
140+ diagonal d = m ↔ d = m :=
141+ diagonal_injective.eq_iff' <| diagonal_natCast' _
142+
134143theorem diagonal_ofNat [Zero α] [NatCast α] (m : ℕ) [m.AtLeastTwo] :
135- diagonal (fun _ : n => (ofNat(m) : α)) = OfNat. ofNat m := rfl
144+ diagonal (fun _ : n => (ofNat(m) : α)) = ofNat(m) := rfl
136145
137146theorem diagonal_ofNat' [Zero α] [NatCast α] (m : ℕ) [m.AtLeastTwo] :
138- diagonal (ofNat(m) : n → α) = OfNat.ofNat m := rfl
147+ diagonal (ofNat(m) : n → α) = ofNat(m) := rfl
148+
149+ @[simp]
150+ theorem diagonal_eq_ofNat [Zero α] [NatCast α] {d : n → α} {m : ℕ} [m.AtLeastTwo] :
151+ diagonal d = ofNat(m) ↔ d = ofNat(m) :=
152+ diagonal_injective.eq_iff' <| diagonal_ofNat' _
139153
140154instance [Zero α] [IntCast α] : IntCast (Matrix n n α) where
141155 intCast m := diagonal fun _ => m
@@ -146,6 +160,11 @@ theorem diagonal_intCast [Zero α] [IntCast α] (m : ℤ) : diagonal (fun _ : n
146160@[norm_cast]
147161theorem diagonal_intCast' [Zero α] [IntCast α] (m : ℤ) : diagonal ((m : n → α)) = m := rfl
148162
163+ @[simp]
164+ theorem diagonal_eq_intCast [Zero α] [IntCast α] {d : n → α} {m : ℤ} :
165+ diagonal d = m ↔ d = m :=
166+ diagonal_injective.eq_iff' <| diagonal_intCast' _
167+
149168@[simp]
150169theorem diagonal_map [Zero α] [Zero β] {f : α → β} (h : f 0 = 0 ) {d : n → α} :
151170 (diagonal d).map f = diagonal fun m => f (d m) := by
@@ -210,6 +229,10 @@ theorem diagonal_one : (diagonal fun _ => 1 : Matrix n n α) = 1 :=
210229theorem diagonal_one' : (diagonal 1 : Matrix n n α) = 1 :=
211230 rfl
212231
232+ @[simp]
233+ theorem diagonal_eq_one {d : n → α} : diagonal d = 1 ↔ d = 1 :=
234+ diagonal_injective.eq_iff' diagonal_one
235+
213236theorem one_apply {i j} : (1 : Matrix n n α) i j = if i = j then 1 else 0 :=
214237 rfl
215238
0 commit comments