equal
deleted
inserted
replaced
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> _)" |