diff -r dbc62f86a1a9 -r de25474ce728 src/HOL/Multivariate_Analysis/Convex_Euclidean_Space.thy --- a/src/HOL/Multivariate_Analysis/Convex_Euclidean_Space.thy Tue Mar 15 14:08:25 2016 +0000 +++ b/src/HOL/Multivariate_Analysis/Convex_Euclidean_Space.thy Wed Mar 16 13:57:06 2016 +0000 @@ -6377,11 +6377,14 @@ definition 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 + definition "between = (\(a,b) x. x \ closed_segment a b)" definition "starlike s \ (\a\s. \x\s. closed_segment a x \ s)" -lemmas segment = open_segment_def closed_segment_def +lemma starlike_UNIV [simp]: "starlike UNIV" + by (simp add: starlike_def) lemma midpoint_refl: "midpoint x x = x" unfolding midpoint_def @@ -6540,6 +6543,9 @@ lemma open_segment_idem [simp]: "open_segment a a = {}" by (simp add: open_segment_def) +lemma closed_segment_eq_open: "closed_segment a b = open_segment a b \ {a,b}" + using open_segment_def by auto + lemma closed_segment_eq_real_ivl: fixes a b::real shows "closed_segment a b = (if a \ b then {a .. b} else {b .. a})" @@ -7903,6 +7909,28 @@ lemmas rel_interior_segment = rel_interior_closed_segment rel_interior_open_segment +lemma starlike_convex_tweak_boundary_points: + fixes S :: "'a::euclidean_space set" + assumes "convex S" "S \ {}" and ST: "rel_interior S \ T" and TS: "T \ closure S" + shows "starlike T" +proof - + have "rel_interior S \ {}" + by (simp add: assms rel_interior_eq_empty) + then obtain a where a: "a \ rel_interior S" by blast + with ST have "a \ T" by blast + have *: "\x. x \ T \ open_segment a x \ rel_interior S" + apply (rule rel_interior_closure_convex_segment [OF \convex S\ a]) + using assms by blast + show ?thesis + unfolding starlike_def + apply (rule bexI [OF _ \a \ T\]) + apply (simp add: closed_segment_eq_open) + apply (intro conjI ballI a \a \ T\ rel_interior_closure_convex_segment [OF \convex S\ a]) + apply (simp add: order_trans [OF * ST]) + done +qed + +subsection\The relative frontier of a set\ definition "rel_frontier S = closure S - rel_interior S"