# HG changeset patch # User immler # Date 1546107673 0 # Node ID b9b7a5e2472ea38de1d850abf05bc2d01ce0742c # Parent da2726f78610c3b58fad0951239cb32ea5f37c58# Parent d466e0a639e4dc7b5f53d3100a25f2a4d26b1fb3 merged diff -r da2726f78610 -r b9b7a5e2472e src/HOL/Analysis/Measure_Space.thy --- a/src/HOL/Analysis/Measure_Space.thy Sat Dec 29 18:45:57 2018 +0100 +++ b/src/HOL/Analysis/Measure_Space.thy Sat Dec 29 18:21:13 2018 +0000 @@ -1749,7 +1749,7 @@ using emeasure_mono[of "a - b" a M] * by (auto simp: fmeasurable_def) qed -subsection\Measurable sets formed by unions and intersections\ +subsection%unimportant\Measurable sets formed by unions and intersections\ lemma fmeasurable_Diff: "A \ fmeasurable M \ B \ sets M \ A - B \ fmeasurable M" using fmeasurableI2[of A M "A - B"] by auto diff -r da2726f78610 -r b9b7a5e2472e src/HOL/Analysis/Product_Vector.thy --- a/src/HOL/Analysis/Product_Vector.thy Sat Dec 29 18:45:57 2018 +0100 +++ b/src/HOL/Analysis/Product_Vector.thy Sat Dec 29 18:21:13 2018 +0000 @@ -16,17 +16,17 @@ by force -subsection \Product is a module\ +subsection \Product is a Module\ locale module_prod = module_pair begin definition scale :: "'a \ 'b \ 'c \ 'b \ 'c" where "scale a v = (s1 a (fst v), s2 a (snd v))" -lemma scale_prod: "scale x (a, b) = (s1 x a, s2 x b)" +lemma%important scale_prod: "scale x (a, b) = (s1 x a, s2 x b)" by (auto simp: scale_def) -sublocale p: module scale +sublocale%important p: module scale proof qed (simp_all add: scale_def m1.scale_left_distrib m1.scale_right_distrib m2.scale_left_distrib m2.scale_right_distrib) @@ -56,7 +56,7 @@ end -subsection \Product is a real vector space\ +subsection \Product is a Real Vector Space\ instantiation prod :: (real_vector, real_vector) real_vector begin @@ -70,7 +70,7 @@ lemma snd_scaleR [simp]: "snd (scaleR r A) = scaleR r (snd A)" unfolding scaleR_prod_def by simp -lemma scaleR_Pair [simp]: "scaleR r (a, b) = (scaleR r a, scaleR r b)" +proposition scaleR_Pair [simp]: "scaleR r (a, b) = (scaleR r a, scaleR r b)" unfolding scaleR_prod_def by simp instance @@ -109,20 +109,20 @@ extend_basis_raw_def dim_raw_def linear_def by (rule refl)+ -subsection \Product is a metric space\ +subsection \Product is a Metric Space\ (* TODO: Product of uniform spaces and compatibility with metric_spaces! *) -instantiation prod :: (metric_space, metric_space) dist +instantiation%unimportant prod :: (metric_space, metric_space) dist begin -definition%important dist_prod_def[code del]: +definition dist_prod_def[code del]: "dist x y = sqrt ((dist (fst x) (fst y))\<^sup>2 + (dist (snd x) (snd y))\<^sup>2)" instance .. end -instantiation prod :: (metric_space, metric_space) uniformity_dist +instantiation%unimportant prod :: (metric_space, metric_space) uniformity_dist begin definition [code del]: @@ -138,7 +138,7 @@ instantiation prod :: (metric_space, metric_space) metric_space begin -lemma dist_Pair_Pair: "dist (a, b) (c, d) = sqrt ((dist a c)\<^sup>2 + (dist b d)\<^sup>2)" +proposition dist_Pair_Pair: "dist (a, b) (c, d) = sqrt ((dist a c)\<^sup>2 + (dist b d)\<^sup>2)" unfolding dist_prod_def by simp lemma dist_fst_le: "dist (fst x) (fst y) \ dist x y" @@ -251,7 +251,7 @@ then show "\n0. \m\n0. \n\n0. dist (X m, Y m) (X n, Y n) < r" .. qed -subsection \Product is a complete metric space\ +subsection \Product is a Complete Metric Space\ instance%important prod :: (complete_space, complete_space) complete_space proof%unimportant @@ -268,7 +268,7 @@ by (rule convergentI) qed -subsection \Product is a normed vector space\ +subsection \Product is a Normed Vector Space\ instantiation prod :: (real_normed_vector, real_normed_vector) real_normed_vector begin @@ -279,7 +279,7 @@ definition sgn_prod_def: "sgn (x::'a \ 'b) = scaleR (inverse (norm x)) x" -lemma norm_Pair: "norm (a, b) = sqrt ((norm a)\<^sup>2 + (norm b)\<^sup>2)" +proposition norm_Pair: "norm (a, b) = sqrt ((norm a)\<^sup>2 + (norm b)\<^sup>2)" unfolding norm_prod_def by simp instance @@ -310,15 +310,15 @@ declare [[code abort: "norm::('a::real_normed_vector*'b::real_normed_vector) \ real"]] -instance prod :: (banach, banach) banach .. +instance%important prod :: (banach, banach) banach .. subsubsection%unimportant \Pair operations are linear\ -proposition bounded_linear_fst: "bounded_linear fst" +lemma bounded_linear_fst: "bounded_linear fst" using fst_add fst_scaleR by (rule bounded_linear_intro [where K=1], simp add: norm_prod_def) -proposition bounded_linear_snd: "bounded_linear snd" +lemma bounded_linear_snd: "bounded_linear snd" using snd_add snd_scaleR by (rule bounded_linear_intro [where K=1], simp add: norm_prod_def) @@ -355,7 +355,8 @@ subsubsection%unimportant \Frechet derivatives involving pairs\ proposition has_derivative_Pair [derivative_intros]: - assumes f: "(f has_derivative f') (at x within s)" and g: "(g has_derivative g') (at x within s)" + assumes f: "(f has_derivative f') (at x within s)" + and g: "(g has_derivative g') (at x within s)" shows "((\x. (f x, g x)) has_derivative (\h. (f' h, g' h))) (at x within s)" proof (rule has_derivativeI_sandwich[of 1]) show "bounded_linear (\h. (f' h, g' h))" @@ -455,6 +456,8 @@ qed done +subsection \Product is Finite Dimensional\ + lemma (in finite_dimensional_vector_space) zero_not_in_Basis[simp]: "0 \ Basis" using dependent_zero local.independent_Basis by blast @@ -492,7 +495,7 @@ Basis_pair_def) qed -lemma dim_Times: +proposition dim_Times: assumes "vs1.subspace S" "vs2.subspace T" shows "p.dim(S \ T) = vs1.dim S + vs2.dim T" proof - diff -r da2726f78610 -r b9b7a5e2472e src/HOL/Analysis/Starlike.thy --- a/src/HOL/Analysis/Starlike.thy Sat Dec 29 18:45:57 2018 +0100 +++ b/src/HOL/Analysis/Starlike.thy Sat Dec 29 18:21:13 2018 +0000 @@ -4979,7 +4979,7 @@ subsection%unimportant\Use set distance for an easy proof of separation properties\ -proposition separation_closures: +proposition%unimportant separation_closures: fixes S :: "'a::euclidean_space set" assumes "S \ closure T = {}" "T \ closure S = {}" obtains U V where "U \ V = {}" "open U" "open V" "S \ U" "T \ V" @@ -5525,7 +5525,7 @@ subsubsection%unimportant\Representing affine hull as a finite intersection of hyperplanes\ -proposition affine_hull_convex_Int_nonempty_interior: +proposition%unimportant affine_hull_convex_Int_nonempty_interior: fixes S :: "'a::real_normed_vector set" assumes "convex S" "S \ interior T \ {}" shows "affine hull (S \ T) = affine hull S" @@ -5696,7 +5696,7 @@ (if a = 0 \ r > 0 then -1 else DIM('a))" using aff_dim_halfspace_le [of "-a" "-r"] by simp -subsection%unimportant\Properties of special hyperplanes\ +subsection\Properties of special hyperplanes\ lemma subspace_hyperplane: "subspace {x. a \ x = 0}" by (simp add: subspace_def inner_right_distrib) @@ -5973,7 +5973,7 @@ subsection%unimportant\General case without assuming closure and getting non-strict separation\ -proposition separating_hyperplane_closed_point_inset: +proposition%unimportant separating_hyperplane_closed_point_inset: fixes S :: "'a::euclidean_space set" assumes "convex S" "closed S" "S \ {}" "z \ S" obtains a b where "a \ S" "(a - z) \ z < b" "\x. x \ S \ b < (a - z) \ x" @@ -6010,7 +6010,7 @@ by simp (metis \0 \ S\) -proposition separating_hyperplane_set_0_inspan: +proposition%unimportant separating_hyperplane_set_0_inspan: fixes S :: "'a::euclidean_space set" assumes "convex S" "S \ {}" "0 \ S" obtains a where "a \ span S" "a \ 0" "\x. x \ S \ 0 \ a \ x" @@ -6101,7 +6101,7 @@ done qed -proposition supporting_hyperplane_rel_boundary: +proposition%unimportant supporting_hyperplane_rel_boundary: fixes S :: "'a::euclidean_space set" assumes "convex S" "x \ S" and xno: "x \ rel_interior S" obtains a where "a \ 0" @@ -6204,7 +6204,7 @@ qed -proposition affine_hull_Int: +proposition%unimportant affine_hull_Int: fixes s :: "'a::euclidean_space set" assumes "\ affine_dependent(s \ t)" shows "affine hull (s \ t) = affine hull s \ affine hull t" @@ -6212,7 +6212,7 @@ apply (simp add: hull_mono) by (simp add: affine_hull_Int_subset assms) -proposition convex_hull_Int: +proposition%unimportant convex_hull_Int: fixes s :: "'a::euclidean_space set" assumes "\ affine_dependent(s \ t)" shows "convex hull (s \ t) = convex hull s \ convex hull t" @@ -6220,7 +6220,7 @@ apply (simp add: hull_mono) by (simp add: convex_hull_Int_subset assms) -proposition +proposition%unimportant fixes s :: "'a::euclidean_space set set" assumes "\ affine_dependent (\s)" shows affine_hull_Inter: "affine hull (\s) = (\t\s. affine hull t)" (is "?A") @@ -6250,7 +6250,7 @@ by auto qed -proposition in_convex_hull_exchange_unique: +proposition%unimportant in_convex_hull_exchange_unique: fixes S :: "'a::euclidean_space set" assumes naff: "\ affine_dependent S" and a: "a \ convex hull S" and S: "T \ S" "T' \ S" @@ -6398,7 +6398,7 @@ qed qed -corollary convex_hull_exchange_Int: +corollary%unimportant convex_hull_exchange_Int: fixes a :: "'a::euclidean_space" assumes "\ affine_dependent S" "a \ convex hull S" "T \ S" "T' \ S" shows "(convex hull (insert a T)) \ (convex hull (insert a T')) = @@ -6551,7 +6551,7 @@ by (simp add: subs) (metis (lifting) span_eq_iff subs) qed -proposition affine_hyperplane_sums_eq_UNIV: +proposition%unimportant affine_hyperplane_sums_eq_UNIV: fixes S :: "'a :: euclidean_space set" assumes "affine S" and "S \ {v. a \ v = b} \ {}" @@ -6786,7 +6786,7 @@ by (rule_tac U=U in that) (auto simp: span_Un) qed -corollary orthogonal_extension_strong: +corollary%unimportant orthogonal_extension_strong: fixes S :: "'a::euclidean_space set" assumes S: "pairwise orthogonal S" obtains U where "U \ (insert 0 S) = {}" "pairwise orthogonal (S \ U)" @@ -6869,7 +6869,7 @@ qed -proposition orthogonal_to_subspace_exists_gen: +proposition%unimportant orthogonal_to_subspace_exists_gen: fixes S :: "'a :: euclidean_space set" assumes "span S \ span T" obtains x where "x \ 0" "x \ span T" "\y. y \ span S \ orthogonal x y" @@ -6915,7 +6915,7 @@ qed qed -corollary orthogonal_to_subspace_exists: +corollary%unimportant orthogonal_to_subspace_exists: fixes S :: "'a :: euclidean_space set" assumes "dim S < DIM('a)" obtains x where "x \ 0" "\y. y \ span S \ orthogonal x y" @@ -6927,7 +6927,7 @@ by (auto simp: span_UNIV) qed -corollary orthogonal_to_vector_exists: +corollary%unimportant orthogonal_to_vector_exists: fixes x :: "'a :: euclidean_space" assumes "2 \ DIM('a)" obtains y where "y \ 0" "orthogonal x y" @@ -6938,9 +6938,12 @@ by (rule orthogonal_to_subspace_exists) (simp add: orthogonal_commute span_base that) qed -proposition orthogonal_subspace_decomp_exists: +proposition%unimportant orthogonal_subspace_decomp_exists: fixes S :: "'a :: euclidean_space set" - obtains y z where "y \ span S" "\w. w \ span S \ orthogonal z w" "x = y + z" + obtains y z + where "y \ span S" + and "\w. w \ span S \ orthogonal z w" + and "x = y + z" proof - obtain T where "0 \ T" "T \ span S" "pairwise orthogonal T" "independent T" "card T = dim (span S)" "span T = span S" @@ -7223,7 +7226,7 @@ by force qed -corollary dense_complement_affine: +corollary%unimportant dense_complement_affine: fixes S :: "'a :: euclidean_space set" assumes less: "aff_dim T < aff_dim S" and "affine S" shows "closure(S - T) = S" proof (cases "S \ T = {}") @@ -7243,7 +7246,7 @@ by (metis closure_translation translation_diff translation_invert) qed -corollary dense_complement_openin_affine_hull: +corollary%unimportant dense_complement_openin_affine_hull: fixes S :: "'a :: euclidean_space set" assumes less: "aff_dim T < aff_dim S" and ope: "openin (subtopology euclidean (affine hull S)) S" @@ -7257,7 +7260,7 @@ by (metis Int_Diff aff_dim_affine_hull affine_affine_hull dense_complement_affine hull_subset inf.orderE less) qed -corollary dense_complement_convex: +corollary%unimportant dense_complement_convex: fixes S :: "'a :: euclidean_space set" assumes "aff_dim T < aff_dim S" "convex S" shows "closure(S - T) = closure S" @@ -7272,7 +7275,7 @@ by (metis Diff_mono \convex S\ closure_mono convex_closure_rel_interior order_refl rel_interior_subset) qed -corollary dense_complement_convex_closed: +corollary%unimportant dense_complement_convex_closed: fixes S :: "'a :: euclidean_space set" assumes "aff_dim T < aff_dim S" "convex S" "closed S" shows "closure(S - T) = S" @@ -7284,7 +7287,7 @@ text\ If we take a slice out of a set, we can do it perpendicularly, with the normal vector to the slice parallel to the affine hull.\ -proposition affine_parallel_slice: +proposition%unimportant affine_parallel_slice: fixes S :: "'a :: euclidean_space set" assumes "affine S" and "S \ {x. a \ x \ b} \ {}" @@ -7468,7 +7471,7 @@ by (rule that) qed -subsection\Several Variants of Paracompactness\ +subsection\Paracompactness\ proposition paracompact: fixes S :: "'a :: euclidean_space set" @@ -7602,7 +7605,7 @@ qed qed -corollary paracompact_closed: +corollary%unimportant paracompact_closed: fixes S :: "'a :: euclidean_space set" assumes "closed S" and opC: "\T. T \ \ \ open T" @@ -7687,7 +7690,7 @@ subsection%unimportant\The union of two collinear segments is another segment\ -proposition in_convex_hull_exchange: +proposition%unimportant in_convex_hull_exchange: fixes a :: "'a::euclidean_space" assumes a: "a \ convex hull S" and xS: "x \ convex hull S" obtains b where "b \ S" "x \ convex hull (insert a (S - {b}))" @@ -7964,10 +7967,10 @@ subsection\Orthogonal complement\ -definition orthogonal_comp ("_\<^sup>\" [80] 80) +definition%important orthogonal_comp ("_\<^sup>\" [80] 80) where "orthogonal_comp W \ {x. \y \ W. orthogonal y x}" -lemma subspace_orthogonal_comp: "subspace (W\<^sup>\)" +proposition subspace_orthogonal_comp: "subspace (W\<^sup>\)" unfolding subspace_def orthogonal_comp_def orthogonal_def by (auto simp: inner_right_distrib) @@ -8002,7 +8005,7 @@ by (meson assms subsetCE subspace_add) qed -lemma subspace_sum_orthogonal_comp: +proposition subspace_sum_orthogonal_comp: fixes U :: "'a :: euclidean_space set" assumes "subspace U" shows "U + U\<^sup>\ = UNIV" @@ -8080,7 +8083,7 @@ apply (simp add: adjoint_works assms(1) inner_commute) by (metis adjoint_works all_zero_iff assms(1) inner_commute) -subsection\ A non-injective linear function maps into a hyperplane.\ +subsection%unimportant \A non-injective linear function maps into a hyperplane.\ lemma linear_surj_adj_imp_inj: fixes f :: "'m::euclidean_space \ 'n::euclidean_space" @@ -8139,7 +8142,7 @@ by (simp add: \surj f\ adjoint_adjoint adjoint_linear assms linear_surj_adj_imp_inj) qed -proposition linear_singular_into_hyperplane: +lemma linear_singular_into_hyperplane: fixes f :: "'n::euclidean_space \ 'n" assumes "linear f" shows "\ inj f \ (\a. a \ 0 \ (\x. a \ f x = 0))" (is "_ = ?rhs")