@@ -257,76 +257,84 @@ by simp_rw [dot_product, mul_comm]
257
257
dot_product v w = v ⟨⟩ * w ⟨⟩ :=
258
258
by simp [dot_product]
259
259
260
- @[simp] lemma dot_product_zero [non_unital_non_assoc_semiring α] (v : m → α) :
261
- dot_product v 0 = 0 :=
262
- by simp [dot_product]
260
+ section non_unital_non_assoc_semiring
261
+ variables [non_unital_non_assoc_semiring α] (u v w : m → α)
263
262
264
- @[simp] lemma dot_product_zero' [non_unital_non_assoc_semiring α] (v : m → α) :
265
- dot_product v (λ _, 0 ) = 0 :=
266
- dot_product_zero v
263
+ @[simp] lemma dot_product_zero : dot_product v 0 = 0 := by simp [dot_product]
267
264
268
- @[simp] lemma zero_dot_product [non_unital_non_assoc_semiring α] (v : m → α) :
269
- dot_product 0 v = 0 :=
270
- by simp [dot_product]
265
+ @[simp] lemma dot_product_zero' : dot_product v (λ _, 0 ) = 0 := dot_product_zero v
271
266
272
- @[simp] lemma zero_dot_product' [non_unital_non_assoc_semiring α] (v : m → α) :
273
- dot_product (λ _, (0 : α)) v = 0 :=
274
- zero_dot_product v
267
+ @[simp] lemma zero_dot_product : dot_product 0 v = 0 := by simp [dot_product]
275
268
276
- @[simp] lemma add_dot_product [non_unital_non_assoc_semiring α] (u v w : m → α) :
277
- dot_product (u + v) w = dot_product u w + dot_product v w :=
269
+ @[simp] lemma zero_dot_product' : dot_product (λ _, (0 : α)) v = 0 := zero_dot_product v
270
+
271
+ @[simp] lemma add_dot_product : dot_product (u + v) w = dot_product u w + dot_product v w :=
278
272
by simp [dot_product, add_mul, finset.sum_add_distrib]
279
273
280
- @[simp] lemma dot_product_add [non_unital_non_assoc_semiring α] (u v w : m → α) :
281
- dot_product u (v + w) = dot_product u v + dot_product u w :=
274
+ @[simp] lemma dot_product_add : dot_product u (v + w) = dot_product u v + dot_product u w :=
282
275
by simp [dot_product, mul_add, finset.sum_add_distrib]
283
276
284
- @[simp] lemma diagonal_dot_product [decidable_eq m] [non_unital_non_assoc_semiring α]
285
- (v w : m → α) (i : m) :
286
- dot_product (diagonal v i) w = v i * w i :=
277
+ end non_unital_non_assoc_semiring
278
+
279
+ section non_unital_non_assoc_semiring_decidable
280
+ variables [decidable_eq m] [non_unital_non_assoc_semiring α] (u v w : m → α)
281
+
282
+ @[simp] lemma diagonal_dot_product (i : m) : dot_product (diagonal v i) w = v i * w i :=
287
283
have ∀ j ≠ i, diagonal v i j * w j = 0 := λ j hij, by simp [diagonal_apply_ne' hij],
288
284
by convert finset.sum_eq_single i (λ j _, this j) _ using 1 ; simp
289
285
290
- @[simp] lemma dot_product_diagonal [decidable_eq m] [non_unital_non_assoc_semiring α]
291
- (v w : m → α) (i : m) :
292
- dot_product v (diagonal w i) = v i * w i :=
286
+ @[simp] lemma dot_product_diagonal (i : m) : dot_product v (diagonal w i) = v i * w i :=
293
287
have ∀ j ≠ i, v j * diagonal w i j = 0 := λ j hij, by simp [diagonal_apply_ne' hij],
294
288
by convert finset.sum_eq_single i (λ j _, this j) _ using 1 ; simp
295
289
296
- @[simp] lemma dot_product_diagonal' [decidable_eq m] [non_unital_non_assoc_semiring α]
297
- (v w : m → α) (i : m) :
298
- dot_product v (λ j, diagonal w j i) = v i * w i :=
290
+ @[simp] lemma dot_product_diagonal' (i : m) : dot_product v (λ j, diagonal w j i) = v i * w i :=
299
291
have ∀ j ≠ i, v j * diagonal w j i = 0 := λ j hij, by simp [diagonal_apply_ne hij],
300
292
by convert finset.sum_eq_single i (λ j _, this j) _ using 1 ; simp
301
293
302
- @[simp] lemma neg_dot_product [ring α] (v w : m → α) : dot_product (-v) w = - dot_product v w :=
303
- by simp [dot_product]
294
+ end non_unital_non_assoc_semiring_decidable
304
295
305
- @[simp] lemma dot_product_neg [ring α] (v w : m → α) : dot_product v (-w) = - dot_product v w :=
306
- by simp [dot_product]
296
+ section ring
297
+ variables [ring α] (u v w : m → α)
298
+
299
+ @[simp] lemma neg_dot_product : dot_product (-v) w = - dot_product v w := by simp [dot_product]
300
+
301
+ @[simp] lemma dot_product_neg : dot_product v (-w) = - dot_product v w := by simp [dot_product]
307
302
308
- @[simp] lemma smul_dot_product [monoid R] [has_mul α] [add_comm_monoid α] [distrib_mul_action R α]
309
- [is_scalar_tower R α α] (x : R) (v w : m → α) :
303
+ @[simp] lemma sub_dot_product : dot_product (u - v) w = dot_product u w - dot_product v w :=
304
+ by simp [sub_eq_add_neg]
305
+
306
+ @[simp] lemma dot_product_sub : dot_product u (v - w) = dot_product u v - dot_product u w :=
307
+ by simp [sub_eq_add_neg]
308
+
309
+ end ring
310
+
311
+ section distrib_mul_action
312
+ variables [monoid R] [has_mul α] [add_comm_monoid α] [distrib_mul_action R α]
313
+
314
+ @[simp] lemma smul_dot_product [is_scalar_tower R α α] (x : R) (v w : m → α) :
310
315
dot_product (x • v) w = x • dot_product v w :=
311
316
by simp [dot_product, finset.smul_sum, smul_mul_assoc]
312
317
313
- @[simp] lemma dot_product_smul [monoid R] [has_mul α] [add_comm_monoid α] [distrib_mul_action R α]
314
- [smul_comm_class R α α] (x : R) (v w : m → α) :
318
+ @[simp] lemma dot_product_smul [smul_comm_class R α α] (x : R) (v w : m → α) :
315
319
dot_product v (x • w) = x • dot_product v w :=
316
320
by simp [dot_product, finset.smul_sum, mul_smul_comm]
317
321
318
- lemma star_dot_product_star [semiring α] [star_ring α] (v w : m → α) :
319
- dot_product (star v) (star w) = star (dot_product w v) :=
322
+ end distrib_mul_action
323
+
324
+ section star_ring
325
+ variables [semiring α] [star_ring α] (v w : m → α)
326
+
327
+ lemma star_dot_product_star : dot_product (star v) (star w) = star (dot_product w v) :=
320
328
by simp [dot_product]
321
329
322
- lemma star_dot_product [semiring α] [star_ring α] (v w : m → α) :
323
- dot_product (star v) w = star (dot_product (star w) v) :=
330
+ lemma star_dot_product : dot_product (star v) w = star (dot_product (star w) v) :=
324
331
by simp [dot_product]
325
332
326
- lemma dot_product_star [semiring α] [star_ring α] (v w : m → α) :
327
- dot_product v (star w) = star (dot_product w (star v)) :=
333
+ lemma dot_product_star : dot_product v (star w) = star (dot_product w (star v)) :=
328
334
by simp [dot_product]
329
335
336
+ end star_ring
337
+
330
338
end dot_product
331
339
332
340
/-- `M ⬝ N` is the usual product of matrices `M` and `N`, i.e. we have that
@@ -676,7 +684,13 @@ dot_product_diagonal' v w x
676
684
@[simp] lemma mul_vec_zero (A : matrix m n α) : mul_vec A 0 = 0 :=
677
685
by { ext, simp [mul_vec] }
678
686
679
- @[simp] lemma vec_mul_zero (A : matrix m n α) : vec_mul 0 A = 0 :=
687
+ @[simp] lemma zero_vec_mul (A : matrix m n α) : vec_mul 0 A = 0 :=
688
+ by { ext, simp [vec_mul] }
689
+
690
+ @[simp] lemma zero_mul_vec (v : n → α) : mul_vec (0 : matrix m n α) v = 0 :=
691
+ by { ext, simp [mul_vec] }
692
+
693
+ @[simp] lemma vec_mul_zero (v : m → α) : vec_mul v (0 : matrix m n α) = 0 :=
680
694
by { ext, simp [vec_mul] }
681
695
682
696
lemma vec_mul_vec_eq (w : m → α) (v : n → α) :
@@ -722,7 +736,7 @@ end non_unital_semiring
722
736
section non_assoc_semiring
723
737
variables [non_assoc_semiring α]
724
738
725
- @[simp] lemma mul_vec_one [decidable_eq m] (v : m → α) : mul_vec 1 v = v :=
739
+ @[simp] lemma one_mul_vec [decidable_eq m] (v : m → α) : mul_vec 1 v = v :=
726
740
by { ext, rw [←diagonal_one, mul_vec_diagonal, one_mul] }
727
741
728
742
@[simp] lemma vec_mul_one [decidable_eq m] (v : m → α) : vec_mul v 1 = v :=
0 commit comments