diff -r 9c31678d2139 -r 0acdcd8f4ba1 src/HOL/Analysis/Starlike.thy --- a/src/HOL/Analysis/Starlike.thy Thu Apr 05 06:15:02 2018 +0000 +++ b/src/HOL/Analysis/Starlike.thy Fri Apr 06 17:34:50 2018 +0200 @@ -15,7 +15,7 @@ subsection \Midpoint\ -definition midpoint :: "'a::real_vector \ 'a \ 'a" +definition%important midpoint :: "'a::real_vector \ 'a \ 'a" where "midpoint a b = (inverse (2::real)) *\<^sub>R (a + b)" lemma midpoint_idem [simp]: "midpoint x x = x" @@ -94,10 +94,10 @@ subsection \Line segments\ -definition closed_segment :: "'a::real_vector \ 'a \ 'a set" +definition%important closed_segment :: "'a::real_vector \ 'a \ 'a set" where "closed_segment a b = {(1 - u) *\<^sub>R a + u *\<^sub>R b | u::real. 0 \ u \ u \ 1}" -definition open_segment :: "'a::real_vector \ 'a \ 'a set" where +definition%important open_segment :: "'a::real_vector \ 'a \ 'a set" where "open_segment a b \ closed_segment a b - {a,b}" lemmas segment = open_segment_def closed_segment_def @@ -599,7 +599,7 @@ subsection\Starlike sets\ -definition "starlike S \ (\a\S. \x\S. closed_segment a x \ S)" +definition%important "starlike S \ (\a\S. \x\S. closed_segment a x \ S)" lemma starlike_UNIV [simp]: "starlike UNIV" by (simp add: starlike_def) @@ -662,7 +662,7 @@ by (meson hull_mono inf_mono subset_insertI subset_refl) qed -subsection\More results about segments\ +subsection%unimportant\More results about segments\ lemma dist_half_times2: fixes a :: "'a :: real_normed_vector" @@ -884,7 +884,7 @@ subsection\Betweenness\ -definition "between = (\(a,b) x. x \ closed_segment a b)" +definition%important "between = (\(a,b) x. x \ closed_segment a b)" lemma betweenI: assumes "0 \ u" "u \ 1" "x = (1 - u) *\<^sub>R a + u *\<^sub>R b" @@ -1055,7 +1055,7 @@ by (auto simp: between_mem_segment closed_segment_eq_real_ivl) -subsection \Shrinking towards the interior of a convex set\ +subsection%unimportant \Shrinking towards the interior of a convex set\ lemma mem_interior_convex_shrink: fixes s :: "'a::euclidean_space set" @@ -1249,7 +1249,7 @@ qed -subsection \Some obvious but surprisingly hard simplex lemmas\ +subsection%unimportant \Some obvious but surprisingly hard simplex lemmas\ lemma simplex: assumes "finite s" @@ -1693,7 +1693,7 @@ qed -subsection \Relative interior of convex set\ +subsection%unimportant \Relative interior of convex set\ lemma rel_interior_convex_nonempty_aux: fixes S :: "'n::euclidean_space set" @@ -2081,7 +2081,7 @@ subsection\The relative frontier of a set\ -definition "rel_frontier S = closure S - rel_interior S" +definition%important "rel_frontier S = closure S - rel_interior S" lemma rel_frontier_empty [simp]: "rel_frontier {} = {}" by (simp add: rel_frontier_def) @@ -2460,7 +2460,7 @@ qed -subsubsection \Relative interior and closure under common operations\ +subsubsection%unimportant \Relative interior and closure under common operations\ lemma rel_interior_inter_aux: "\{rel_interior S |S. S \ I} \ \I" proof - @@ -3150,7 +3150,7 @@ by (force simp: rel_frontier_def rel_interior_Times assms closure_Times) -subsubsection \Relative interior of convex cone\ +subsubsection%unimportant \Relative interior of convex cone\ lemma cone_rel_interior: fixes S :: "'m::euclidean_space set" @@ -3423,7 +3423,7 @@ qed -subsection \Convexity on direct sums\ +subsection%unimportant \Convexity on direct sums\ lemma closure_sum: fixes S T :: "'a::real_normed_vector set" @@ -3794,7 +3794,7 @@ using \y < x\ by (simp add: field_simps) qed simp -subsection\Explicit formulas for interior and relative interior of convex hull\ +subsection%unimportant\Explicit formulas for interior and relative interior of convex hull\ lemma at_within_cbox_finite: assumes "x \ box a b" "x \ S" "finite S" @@ -4157,7 +4157,7 @@ by (metis Diff_cancel convex_hull_singleton insert_absorb2 open_segment_def segment_convex_hull) qed -subsection\Similar results for closure and (relative or absolute) frontier.\ +subsection%unimportant\Similar results for closure and (relative or absolute) frontier.\ lemma closure_convex_hull [simp]: fixes s :: "'a::euclidean_space set" @@ -4315,7 +4315,7 @@ subsection \Coplanarity, and collinearity in terms of affine hull\ -definition coplanar where +definition%important coplanar where "coplanar s \ \u v w. s \ affine hull {u,v,w}" lemma collinear_affine_hull: @@ -4767,7 +4767,7 @@ subsection\The infimum of the distance between two sets\ -definition setdist :: "'a::metric_space set \ 'a set \ real" where +definition%important setdist :: "'a::metric_space set \ 'a set \ real" where "setdist s t \ (if s = {} \ t = {} then 0 else Inf {dist x y| x y. x \ s \ y \ t})" @@ -5003,7 +5003,7 @@ \ setdist {x} S > 0" using less_eq_real_def setdist_eq_0_closedin by fastforce -subsection\Basic lemmas about hyperplanes and halfspaces\ +subsection%unimportant\Basic lemmas about hyperplanes and halfspaces\ lemma hyperplane_eq_Ex: assumes "a \ 0" obtains x where "a \ x = b" @@ -5056,7 +5056,7 @@ using halfspace_eq_empty_le [of "-a" "-b"] by simp -subsection\Use set distance for an easy proof of separation properties\ +subsection%unimportant\Use set distance for an easy proof of separation properties\ proposition separation_closures: fixes S :: "'a::euclidean_space set" @@ -5150,12 +5150,12 @@ subsection\Connectedness of the intersection of a chain\ -proposition connected_chain: +proposition%important connected_chain: fixes \ :: "'a :: euclidean_space set set" assumes cc: "\S. S \ \ \ compact S \ connected S" and linear: "\S T. S \ \ \ T \ \ \ S \ T \ T \ S" shows "connected(\\)" -proof (cases "\ = {}") +proof%unimportant (cases "\ = {}") case True then show ?thesis by auto next @@ -5299,13 +5299,13 @@ by (meson le_max_iff_disj) qed -proposition proper_map: +proposition%important proper_map: fixes f :: "'a::heine_borel \ 'b::heine_borel" assumes "closedin (subtopology euclidean S) K" and com: "\U. \U \ T; compact U\ \ compact (S \ f -` U)" and "f ` S \ T" shows "closedin (subtopology euclidean T) (f ` K)" -proof - +proof%unimportant - have "K \ S" using assms closedin_imp_subset by metis obtain C where "closed C" and Keq: "K = S \ C" @@ -5387,7 +5387,7 @@ by (simp add: continuous_on_closed * closedin_imp_subset) qed -subsection\Trivial fact: convexity equals connectedness for collinear sets\ +subsection%unimportant\Trivial fact: convexity equals connectedness for collinear sets\ lemma convex_connected_collinear: fixes S :: "'a::euclidean_space set" @@ -5605,7 +5605,7 @@ by (simp add: clo closedin_closed_Int) qed -subsubsection\Representing affine hull as a finite intersection of hyperplanes\ +subsubsection%unimportant\Representing affine hull as a finite intersection of hyperplanes\ proposition affine_hull_convex_Int_nonempty_interior: fixes S :: "'a::real_normed_vector set" @@ -5778,7 +5778,7 @@ (if a = 0 \ r > 0 then -1 else DIM('a))" using aff_dim_halfspace_le [of "-a" "-r"] by simp -subsection\Properties of special hyperplanes\ +subsection%unimportant\Properties of special hyperplanes\ lemma subspace_hyperplane: "subspace {x. a \ x = 0}" by (simp add: subspace_def inner_right_distrib) @@ -5925,7 +5925,7 @@ shows "a \ 0 \ aff_dim {x. a \ x = r} = DIM('a) - 1" by (metis aff_dim_eq_hyperplane affine_hull_eq affine_hyperplane) -subsection\Some stepping theorems\ +subsection%unimportant\Some stepping theorems\ lemma dim_empty [simp]: "dim ({} :: 'a::euclidean_space set) = 0" by (force intro!: dim_unique) @@ -6092,7 +6092,7 @@ by (metis One_nat_def \a \ 0\ affine_bounded_eq_lowdim affine_hyperplane bounded_hyperplane_eq_trivial_0) qed -subsection\General case without assuming closure and getting non-strict separation\ +subsection%unimportant\General case without assuming closure and getting non-strict separation\ proposition separating_hyperplane_closed_point_inset: fixes S :: "'a::euclidean_space set" @@ -6280,7 +6280,7 @@ by (metis assms convex_closure convex_rel_interior_closure) -subsection\ Some results on decomposing convex hulls: intersections, simplicial subdivision\ +subsection%unimportant\ Some results on decomposing convex hulls: intersections, simplicial subdivision\ lemma fixes s :: "'a::euclidean_space set" @@ -6636,7 +6636,7 @@ qed qed -subsection\Misc results about span\ +subsection%unimportant\Misc results about span\ lemma eq_span_insert_eq: assumes "(x - y) \ span S" @@ -7026,11 +7026,11 @@ apply (simp add: x) done -proposition Gram_Schmidt_step: +proposition%important Gram_Schmidt_step: fixes S :: "'a::euclidean_space set" assumes S: "pairwise orthogonal S" and x: "x \ span S" shows "orthogonal x (a - (\b\S. (b \ a / (b \ b)) *\<^sub>R b))" -proof - +proof%unimportant - have "finite S" by (simp add: S pairwise_orthogonal_imp_finite) have "orthogonal (a - (\b\S. (b \ a / (b \ b)) *\<^sub>R b)) x" @@ -7087,11 +7087,11 @@ qed -proposition orthogonal_extension: +proposition%important orthogonal_extension: fixes S :: "'a::euclidean_space set" assumes S: "pairwise orthogonal S" obtains U where "pairwise orthogonal (S \ U)" "span (S \ U) = span (S \ T)" -proof - +proof%unimportant - obtain B where "finite B" "span B = span T" using basis_subspace_exists [of "span T"] subspace_span by auto with orthogonal_extension_aux [of B S] @@ -7149,13 +7149,13 @@ done qed -proposition orthonormal_basis_subspace: +proposition%important orthonormal_basis_subspace: fixes S :: "'a :: euclidean_space set" assumes "subspace S" obtains B where "B \ S" "pairwise orthogonal B" and "\x. x \ B \ norm x = 1" and "independent B" "card B = dim S" "span B = S" -proof - +proof%unimportant - obtain B where "0 \ B" "B \ S" and orth: "pairwise orthogonal B" and "independent B" "card B = dim S" "span B = S" @@ -7186,11 +7186,11 @@ qed -proposition orthogonal_to_subspace_exists_gen: +proposition%important 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" -proof - +proof%unimportant - obtain B where "B \ span S" and orthB: "pairwise orthogonal B" and "\x. x \ B \ norm x = 1" and "independent B" "card B = dim S" "span B = span S" @@ -7249,10 +7249,10 @@ by (rule orthogonal_to_subspace_exists) (simp add: orthogonal_commute span_clauses(1) that) qed -proposition orthogonal_subspace_decomp_exists: +proposition%important 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" -proof - +proof%unimportant - obtain T where "0 \ T" "T \ span S" "pairwise orthogonal T" "independent T" "card T = dim (span S)" "span T = span S" using orthogonal_basis_subspace subspace_span by blast let ?a = "\b\T. (b \ x / (b \ b)) *\<^sub>R b" @@ -7341,11 +7341,11 @@ qed qed -proposition dim_orthogonal_sum: +proposition%important dim_orthogonal_sum: fixes A :: "'a::euclidean_space set" assumes "\x y. \x \ A; y \ B\ \ x \ y = 0" shows "dim(A \ B) = dim A + dim B" -proof - +proof%unimportant - have 1: "\x y. \x \ span A; y \ B\ \ x \ y = 0" by (erule span_induct [OF _ subspace_hyperplane2]; simp add: assms) have "\x y. \x \ span A; y \ span B\ \ x \ y = 0" @@ -7472,10 +7472,10 @@ subsection\Lower-dimensional affine subsets are nowhere dense.\ -proposition dense_complement_subspace: +proposition%important dense_complement_subspace: fixes S :: "'a :: euclidean_space set" assumes dim_less: "dim T < dim S" and "subspace S" shows "closure(S - T) = S" -proof - +proof%unimportant - have "closure(S - U) = S" if "dim U < dim S" "U \ S" for U proof - have "span U \ span S" @@ -7583,7 +7583,7 @@ by (simp add: assms dense_complement_convex) -subsection\Parallel slices, etc.\ +subsection%unimportant\Parallel slices, etc.\ 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.\ @@ -7811,7 +7811,7 @@ subsection\Several Variants of Paracompactness\ -proposition paracompact: +proposition%important paracompact: fixes S :: "'a :: euclidean_space set" assumes "S \ \\" and opC: "\T. T \ \ \ open T" obtains \' where "S \ \ \'" @@ -7819,7 +7819,7 @@ and "\x. x \ S \ \V. open V \ x \ V \ finite {U. U \ \' \ (U \ V \ {})}" -proof (cases "S = {}") +proof%unimportant (cases "S = {}") case True with that show ?thesis by blast next case False @@ -7955,7 +7955,7 @@ using paracompact_closedin [of UNIV S \] assms by auto -subsection\Closed-graph characterization of continuity\ +subsection%unimportant\Closed-graph characterization of continuity\ lemma continuous_closed_graph_gen: fixes T :: "'b::real_normed_vector set" @@ -8026,7 +8026,7 @@ by (rule continuous_on_Un_local_open [OF opS opT]) qed -subsection\The union of two collinear segments is another segment\ +subsection%unimportant\The union of two collinear segments is another segment\ proposition in_convex_hull_exchange: fixes a :: "'a::euclidean_space" @@ -8204,14 +8204,14 @@ subsection\Covering an open set by a countable chain of compact sets\ -proposition open_Union_compact_subsets: +proposition%important open_Union_compact_subsets: fixes S :: "'a::euclidean_space set" assumes "open S" obtains C where "\n. compact(C n)" "\n. C n \ S" "\n. C n \ interior(C(Suc n))" "\(range C) = S" "\K. \compact K; K \ S\ \ \N. \n\N. K \ (C n)" -proof (cases "S = {}") +proof%unimportant (cases "S = {}") case True then show ?thesis by (rule_tac C = "\n. {}" in that) auto