src/HOL/Multivariate_Analysis/Cartesian_Euclidean_Space.thy
changeset 44170 510ac30f44c0
parent 44167 e81d676d598e
child 44211 bd7c586b902e
equal deleted inserted replaced
44169:bdcc11b2fdc8 44170:510ac30f44c0
   760 apply (rule span_setsum)
   760 apply (rule span_setsum)
   761 apply simp
   761 apply simp
   762 apply auto
   762 apply auto
   763 apply (rule span_mul)
   763 apply (rule span_mul)
   764 apply (rule span_superset)
   764 apply (rule span_superset)
   765 apply (auto simp add: Collect_def mem_def)
   765 apply auto
   766 done
   766 done
   767 
   767 
   768 lemma finite_stdbasis: "finite {cart_basis i ::real^'n |i. i\<in> (UNIV:: 'n set)}" (is "finite ?S")
   768 lemma finite_stdbasis: "finite {cart_basis i ::real^'n |i. i\<in> (UNIV:: 'n set)}" (is "finite ?S")
   769 proof-
   769 proof-
   770   have eq: "?S = cart_basis ` UNIV" by blast
   770   have eq: "?S = cart_basis ` UNIV" by blast
   783   and iS: "i \<notin> S"
   783   and iS: "i \<notin> S"
   784   shows "(x$i) = 0"
   784   shows "(x$i) = 0"
   785 proof-
   785 proof-
   786   let ?U = "UNIV :: 'n set"
   786   let ?U = "UNIV :: 'n set"
   787   let ?B = "cart_basis ` S"
   787   let ?B = "cart_basis ` S"
   788   let ?P = "\<lambda>(x::real^_). \<forall>i\<in> ?U. i \<notin> S \<longrightarrow> x$i =0"
   788   let ?P = "{(x::real^_). \<forall>i\<in> ?U. i \<notin> S \<longrightarrow> x$i =0}"
   789  {fix x::"real^_" assume xS: "x\<in> ?B"
   789  {fix x::"real^_" assume xS: "x\<in> ?B"
   790    from xS have "?P x" by auto}
   790    from xS have "x \<in> ?P" by auto}
   791  moreover
   791  moreover
   792  have "subspace ?P"
   792  have "subspace ?P"
   793    by (auto simp add: subspace_def Collect_def mem_def)
   793    by (auto simp add: subspace_def)
   794  ultimately show ?thesis
   794  ultimately show ?thesis
   795    using x span_induct[of ?B ?P x] iS by blast
   795    using x span_induct[of ?B ?P x] iS by blast
   796 qed
   796 qed
   797 
   797 
   798 lemma independent_stdbasis: "independent {cart_basis i ::real^'n |i. i\<in> (UNIV :: 'n set)}"
   798 lemma independent_stdbasis: "independent {cart_basis i ::real^'n |i. i\<in> (UNIV :: 'n set)}"
   828   let ?I = "{cart_basis i:: real^'m|i. i \<in> ?U}"
   828   let ?I = "{cart_basis i:: real^'m|i. i \<in> ?U}"
   829   {fix x assume x: "x \<in> (UNIV :: (real^'m) set)"
   829   {fix x assume x: "x \<in> (UNIV :: (real^'m) set)"
   830     from equalityD2[OF span_stdbasis]
   830     from equalityD2[OF span_stdbasis]
   831     have IU: " (UNIV :: (real^'m) set) \<subseteq> span ?I" by blast
   831     have IU: " (UNIV :: (real^'m) set) \<subseteq> span ?I" by blast
   832     from linear_eq[OF lf lg IU] fg x
   832     from linear_eq[OF lf lg IU] fg x
   833     have "f x = g x" unfolding Collect_def  Ball_def mem_def by metis}
   833     have "f x = g x" unfolding Ball_def mem_Collect_eq by metis}
   834   then show ?thesis by (auto intro: ext)
   834   then show ?thesis by (auto intro: ext)
   835 qed
   835 qed
   836 
   836 
   837 lemma bilinear_eq_stdbasis_cart:
   837 lemma bilinear_eq_stdbasis_cart:
   838   assumes bf: "bilinear (f:: real^'m \<Rightarrow> real^'n \<Rightarrow> _)"
   838   assumes bf: "bilinear (f:: real^'m \<Rightarrow> real^'n \<Rightarrow> _)"