# HG changeset patch # User nipkow # Date 1575497489 -3600 # Node ID da28fd2852ed21fe6c3ce2dea199c8c21c92e2dd # Parent 7b9ff966974f9657a39a682cd7eb0f39c159d2b5 moved starlike where it belongs diff -r 7b9ff966974f -r da28fd2852ed src/HOL/Analysis/Homotopy.thy --- a/src/HOL/Analysis/Homotopy.thy Wed Dec 04 19:55:30 2019 +0100 +++ b/src/HOL/Analysis/Homotopy.thy Wed Dec 04 23:11:29 2019 +0100 @@ -1478,6 +1478,38 @@ using homotopic_through_contractible [of S id S f T id g] by (simp add: assms contractible_imp_path_connected) +subsection\Starlike sets\ + +definition\<^marker>\tag important\ "starlike S \ (\a\S. \x\S. closed_segment a x \ S)" + +lemma starlike_UNIV [simp]: "starlike UNIV" + by (simp add: starlike_def) + +lemma convex_imp_starlike: + "convex S \ S \ {} \ starlike S" + unfolding convex_contains_segment starlike_def by auto + +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 + lemma starlike_imp_contractible_gen: fixes S :: "'a::real_normed_vector set" assumes S: "starlike S" diff -r 7b9ff966974f -r da28fd2852ed src/HOL/Analysis/Starlike.thy --- a/src/HOL/Analysis/Starlike.thy Wed Dec 04 19:55:30 2019 +0100 +++ b/src/HOL/Analysis/Starlike.thy Wed Dec 04 23:11:29 2019 +0100 @@ -14,18 +14,6 @@ Line_Segment begin -subsection\Starlike sets\ - -definition\<^marker>\tag important\ "starlike S \ (\a\S. \x\S. closed_segment a x \ S)" - -lemma starlike_UNIV [simp]: "starlike UNIV" - by (simp add: starlike_def) - -lemma convex_imp_starlike: - "convex S \ S \ {} \ starlike S" - unfolding convex_contains_segment starlike_def by auto - - lemma affine_hull_closed_segment [simp]: "affine hull (closed_segment a b) = affine hull {a,b}" by (simp add: segment_convex_hull) @@ -1003,27 +991,6 @@ 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\<^marker>\tag important\ "rel_frontier S = closure S - rel_interior S"