equal
deleted
inserted
replaced
233 subsection%unimportant\<open>Basic componentwise operations on vectors\<close> |
233 subsection%unimportant\<open>Basic componentwise operations on vectors\<close> |
234 |
234 |
235 instantiation vec :: (times, finite) times |
235 instantiation vec :: (times, finite) times |
236 begin |
236 begin |
237 |
237 |
238 definition "( * ) \<equiv> (\<lambda> x y. (\<chi> i. (x$i) * (y$i)))" |
238 definition "(*) \<equiv> (\<lambda> x y. (\<chi> i. (x$i) * (y$i)))" |
239 instance .. |
239 instance .. |
240 |
240 |
241 end |
241 end |
242 |
242 |
243 instantiation vec :: (one, finite) one |
243 instantiation vec :: (one, finite) one |
959 by (vector field_simps) |
959 by (vector field_simps) |
960 |
960 |
961 lemma vec_eq[simp]: "(vec m = vec n) \<longleftrightarrow> (m = n)" |
961 lemma vec_eq[simp]: "(vec m = vec n) \<longleftrightarrow> (m = n)" |
962 by (simp add: vec_eq_iff) |
962 by (simp add: vec_eq_iff) |
963 |
963 |
964 lemma Vector_Spaces_linear_vec [simp]: "Vector_Spaces.linear ( * ) vector_scalar_mult vec" |
964 lemma Vector_Spaces_linear_vec [simp]: "Vector_Spaces.linear (*) vector_scalar_mult vec" |
965 by unfold_locales (vector algebra_simps)+ |
965 by unfold_locales (vector algebra_simps)+ |
966 |
966 |
967 lemma vector_mul_eq_0[simp]: "(a *s x = 0) \<longleftrightarrow> a = (0::'a::idom) \<or> x = 0" |
967 lemma vector_mul_eq_0[simp]: "(a *s x = 0) \<longleftrightarrow> a = (0::'a::idom) \<or> x = 0" |
968 by vector |
968 by vector |
969 |
969 |
1159 where "matrix f = (\<chi> i j. (f(axis j 1))$i)" |
1159 where "matrix f = (\<chi> i j. (f(axis j 1))$i)" |
1160 |
1160 |
1161 lemma%unimportant matrix_id_mat_1: "matrix id = mat 1" |
1161 lemma%unimportant matrix_id_mat_1: "matrix id = mat 1" |
1162 by (simp add: mat_def matrix_def axis_def) |
1162 by (simp add: mat_def matrix_def axis_def) |
1163 |
1163 |
1164 lemma%unimportant matrix_scaleR: "(matrix (( *\<^sub>R) r)) = mat r" |
1164 lemma%unimportant matrix_scaleR: "(matrix ((*\<^sub>R) r)) = mat r" |
1165 by (simp add: mat_def matrix_def axis_def if_distrib cong: if_cong) |
1165 by (simp add: mat_def matrix_def axis_def if_distrib cong: if_cong) |
1166 |
1166 |
1167 lemma%unimportant matrix_vector_mul_linear[intro, simp]: "linear (\<lambda>x. A *v (x::'a::real_algebra_1 ^ _))" |
1167 lemma%unimportant matrix_vector_mul_linear[intro, simp]: "linear (\<lambda>x. A *v (x::'a::real_algebra_1 ^ _))" |
1168 by (simp add: linear_iff matrix_vector_mult_def vec_eq_iff field_simps sum_distrib_left |
1168 by (simp add: linear_iff matrix_vector_mult_def vec_eq_iff field_simps sum_distrib_left |
1169 sum.distrib scaleR_right.sum) |
1169 sum.distrib scaleR_right.sum) |
1216 (SOME A'::'a^'m^'n. A ** A' = mat 1 \<and> A' ** A = mat 1)" |
1216 (SOME A'::'a^'m^'n. A ** A' = mat 1 \<and> A' ** A = mat 1)" |
1217 |
1217 |
1218 lemma%unimportant inj_matrix_vector_mult: |
1218 lemma%unimportant inj_matrix_vector_mult: |
1219 fixes A::"'a::field^'n^'m" |
1219 fixes A::"'a::field^'n^'m" |
1220 assumes "invertible A" |
1220 assumes "invertible A" |
1221 shows "inj (( *v) A)" |
1221 shows "inj ((*v) A)" |
1222 by (metis assms inj_on_inverseI invertible_def matrix_vector_mul_assoc matrix_vector_mul_lid) |
1222 by (metis assms inj_on_inverseI invertible_def matrix_vector_mul_assoc matrix_vector_mul_lid) |
1223 |
1223 |
1224 lemma%important scalar_invertible: |
1224 lemma%important scalar_invertible: |
1225 fixes A :: "('a::real_algebra_1)^'m^'n" |
1225 fixes A :: "('a::real_algebra_1)^'m^'n" |
1226 assumes "k \<noteq> 0" and "invertible A" |
1226 assumes "k \<noteq> 0" and "invertible A" |