@@ -644,6 +644,22 @@ lemma smul_mul_vec_assoc (A : matrix m n α) (b : n → α) (a : α) :
644
644
(a • A).mul_vec b = a • (A.mul_vec b) :=
645
645
by { ext, apply smul_dot_product }
646
646
647
+ lemma mul_vec_add (A : matrix m n α) (x y : n → α) :
648
+ A.mul_vec (x + y) = A.mul_vec x + A.mul_vec y :=
649
+ by { ext, apply dot_product_add }
650
+
651
+ lemma add_mul_vec (A B : matrix m n α) (x : n → α) :
652
+ (A + B).mul_vec x = A.mul_vec x + B.mul_vec x :=
653
+ by { ext, apply add_dot_product }
654
+
655
+ lemma vec_mul_add (A B : matrix m n α) (x : m → α) :
656
+ vec_mul x (A + B) = vec_mul x A + vec_mul x B :=
657
+ by { ext, apply dot_product_add }
658
+
659
+ lemma add_vec_mul (A : matrix m n α) (x y : m → α) :
660
+ vec_mul (x + y) A = vec_mul x A + vec_mul y A :=
661
+ by { ext, apply add_dot_product }
662
+
647
663
variables [decidable_eq m] [decidable_eq n]
648
664
649
665
/--
@@ -742,6 +758,14 @@ lemma mul_vec_smul_assoc (A : matrix m n α) (b : n → α) (a : α) :
742
758
A.mul_vec (a • b) = a • (A.mul_vec b) :=
743
759
by { ext, apply dot_product_smul }
744
760
761
+ lemma mul_vec_transpose (A : matrix m n α) (x : m → α) :
762
+ mul_vec Aᵀ x = vec_mul x A :=
763
+ by { ext, apply dot_product_comm }
764
+
765
+ lemma vec_mul_transpose (A : matrix m n α) (x : n → α) :
766
+ vec_mul x Aᵀ = mul_vec A x :=
767
+ by { ext, apply dot_product_comm }
768
+
745
769
end comm_semiring
746
770
747
771
section transpose
0 commit comments