src/HOL/Analysis/Finite_Cartesian_Product.thy
changeset 69064 5840724b1d71
parent 68833 fde093888c16
child 69260 0a9688695a1b
equal deleted inserted replaced
69045:8c240fdeffcb 69064:5840724b1d71
   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"