diff -r ad6d4a14adb5 -r f03a01a18c6e src/HOL/Analysis/Path_Connected.thy --- a/src/HOL/Analysis/Path_Connected.thy Fri Apr 12 19:48:29 2019 +0200 +++ b/src/HOL/Analysis/Path_Connected.thy Fri Apr 12 22:09:25 2019 +0200 @@ -10,34 +10,34 @@ subsection \Paths and Arcs\ -definition%important path :: "(real \ 'a::topological_space) \ bool" +definition\<^marker>\tag important\ path :: "(real \ 'a::topological_space) \ bool" where "path g \ continuous_on {0..1} g" -definition%important pathstart :: "(real \ 'a::topological_space) \ 'a" +definition\<^marker>\tag important\ pathstart :: "(real \ 'a::topological_space) \ 'a" where "pathstart g = g 0" -definition%important pathfinish :: "(real \ 'a::topological_space) \ 'a" +definition\<^marker>\tag important\ pathfinish :: "(real \ 'a::topological_space) \ 'a" where "pathfinish g = g 1" -definition%important path_image :: "(real \ 'a::topological_space) \ 'a set" +definition\<^marker>\tag important\ path_image :: "(real \ 'a::topological_space) \ 'a set" where "path_image g = g ` {0 .. 1}" -definition%important reversepath :: "(real \ 'a::topological_space) \ real \ 'a" +definition\<^marker>\tag important\ reversepath :: "(real \ 'a::topological_space) \ real \ 'a" where "reversepath g = (\x. g(1 - x))" -definition%important joinpaths :: "(real \ 'a::topological_space) \ (real \ 'a) \ real \ 'a" +definition\<^marker>\tag important\ joinpaths :: "(real \ 'a::topological_space) \ (real \ 'a) \ real \ 'a" (infixr "+++" 75) where "g1 +++ g2 = (\x. if x \ 1/2 then g1 (2 * x) else g2 (2 * x - 1))" -definition%important simple_path :: "(real \ 'a::topological_space) \ bool" +definition\<^marker>\tag important\ simple_path :: "(real \ 'a::topological_space) \ bool" where "simple_path g \ path g \ (\x\{0..1}. \y\{0..1}. g x = g y \ x = y \ x = 0 \ y = 1 \ x = 1 \ y = 0)" -definition%important arc :: "(real \ 'a :: topological_space) \ bool" +definition\<^marker>\tag important\ arc :: "(real \ 'a :: topological_space) \ bool" where "arc g \ path g \ inj_on g {0..1}" -subsection%unimportant\Invariance theorems\ +subsection\<^marker>\tag unimportant\\Invariance theorems\ lemma path_eq: "path p \ (\t. t \ {0..1} \ p t = q t) \ path q" using continuous_on_eq path_def by blast @@ -133,7 +133,7 @@ by (auto simp: arc_def inj_on_def path_linear_image_eq) -subsection%unimportant\Basic lemmas about paths\ +subsection\<^marker>\tag unimportant\\Basic lemmas about paths\ lemma pathin_iff_path_real [simp]: "pathin euclideanreal g \ path g" by (simp add: pathin_def path_def) @@ -298,7 +298,7 @@ qed -subsection%unimportant \Path Images\ +subsection\<^marker>\tag unimportant\ \Path Images\ lemma bounded_path_image: "path g \ bounded(path_image g)" by (simp add: compact_imp_bounded compact_path_image) @@ -391,7 +391,7 @@ by (auto simp: simple_path_def path_image_def inj_on_def less_eq_real_def Ball_def) -subsection%unimportant\Simple paths with the endpoints removed\ +subsection\<^marker>\tag unimportant\\Simple paths with the endpoints removed\ lemma simple_path_endless: "simple_path c \ path_image c - {pathstart c,pathfinish c} = c ` {0<..<1}" @@ -414,7 +414,7 @@ by (simp add: simple_path_endless) -subsection%unimportant\The operations on paths\ +subsection\<^marker>\tag unimportant\\The operations on paths\ lemma path_image_subset_reversepath: "path_image(reversepath g) \ path_image g" by (auto simp: path_image_def reversepath_def) @@ -562,7 +562,7 @@ by (rule ext) (auto simp: mult.commute) -subsection%unimportant\Some reversed and "if and only if" versions of joining theorems\ +subsection\<^marker>\tag unimportant\\Some reversed and "if and only if" versions of joining theorems\ lemma path_join_path_ends: fixes g1 :: "real \ 'a::metric_space" @@ -695,7 +695,7 @@ using pathfinish_in_path_image by (fastforce simp: arc_join_eq) -subsection%unimportant\The joining of paths is associative\ +subsection\<^marker>\tag unimportant\\The joining of paths is associative\ lemma path_assoc: "\pathfinish p = pathstart q; pathfinish q = pathstart r\ @@ -745,7 +745,7 @@ \ arc(p +++ (q +++ r)) \ arc((p +++ q) +++ r)" by (simp add: arc_simple_path simple_path_assoc) -subsubsection%unimportant\Symmetry and loops\ +subsubsection\<^marker>\tag unimportant\\Symmetry and loops\ lemma path_sym: "\pathfinish p = pathstart q; pathfinish q = pathstart p\ \ path(p +++ q) \ path(q +++ p)" @@ -764,7 +764,7 @@ subsection\Subpath\ -definition%important subpath :: "real \ real \ (real \ 'a) \ real \ 'a::real_normed_vector" +definition\<^marker>\tag important\ subpath :: "real \ real \ (real \ 'a) \ real \ 'a::real_normed_vector" where "subpath a b g \ \x. g((b - a) * x + a)" lemma path_image_subpath_gen: @@ -940,7 +940,7 @@ by (rule ext) (simp add: joinpaths_def subpath_def divide_simps) -subsection%unimportant\There is a subpath to the frontier\ +subsection\<^marker>\tag unimportant\\There is a subpath to the frontier\ lemma subpath_to_frontier_explicit: fixes S :: "'a::metric_space set" @@ -1059,7 +1059,7 @@ subsection \Shift Path to Start at Some Given Point\ -definition%important shiftpath :: "real \ (real \ 'a::topological_space) \ real \ 'a" +definition\<^marker>\tag important\ shiftpath :: "real \ (real \ 'a::topological_space) \ real \ 'a" where "shiftpath a f = (\x. if (a + x) \ 1 then f (a + x) else f (a + x - 1))" lemma pathstart_shiftpath: "a \ 1 \ pathstart (shiftpath a g) = g a" @@ -1171,7 +1171,7 @@ subsection \Straight-Line Paths\ -definition%important linepath :: "'a::real_normed_vector \ 'a \ real \ 'a" +definition\<^marker>\tag important\ linepath :: "'a::real_normed_vector \ 'a \ real \ 'a" where "linepath a b = (\x. (1 - x) *\<^sub>R a + x *\<^sub>R b)" lemma pathstart_linepath[simp]: "pathstart (linepath a b) = a" @@ -1273,7 +1273,7 @@ using mult_left_le [of a "1-u"] mult_left_le [of b u] by auto -subsection%unimportant\Segments via convex hulls\ +subsection\<^marker>\tag unimportant\\Segments via convex hulls\ lemma segments_subset_convex_hull: "closed_segment a b \ (convex hull {a,b,c})" @@ -1391,7 +1391,7 @@ qed -subsection%unimportant \Bounding a point away from a path\ +subsection\<^marker>\tag unimportant\ \Bounding a point away from a path\ lemma not_on_path_ball: fixes g :: "real \ 'a::heine_borel" @@ -1425,10 +1425,10 @@ text \Original formalization by Tom Hales\ -definition%important "path_component s x y \ +definition\<^marker>\tag important\ "path_component s x y \ (\g. path g \ path_image g \ s \ pathstart g = x \ pathfinish g = y)" -abbreviation%important +abbreviation\<^marker>\tag important\ "path_component_set s x \ Collect (path_component s x)" lemmas path_defs = path_def pathstart_def pathfinish_def path_image_def path_component_def @@ -1477,7 +1477,7 @@ unfolding path_component_def by (rule_tac x="linepath a b" in exI, auto) -subsubsection%unimportant \Path components as sets\ +subsubsection\<^marker>\tag unimportant\ \Path components as sets\ lemma path_component_set: "path_component_set s x = @@ -1502,7 +1502,7 @@ subsection \Path connectedness of a space\ -definition%important "path_connected s \ +definition\<^marker>\tag important\ "path_connected s \ (\x\s. \y\s. \g. path g \ path_image g \ s \ pathstart g = x \ pathfinish g = y)" lemma path_connectedin_iff_path_connected_real [simp]: @@ -1814,7 +1814,7 @@ qed -subsection%unimportant\Lemmas about path-connectedness\ +subsection\<^marker>\tag unimportant\\Lemmas about path-connectedness\ lemma path_connected_linear_image: fixes f :: "'a::real_normed_vector \ 'b::real_normed_vector" @@ -1909,7 +1909,7 @@ using is_interval_connected_1 is_interval_path_connected path_connected_imp_connected by blast -subsection%unimportant\Path components\ +subsection\<^marker>\tag unimportant\\Path components\ lemma Union_path_component [simp]: "Union {path_component_set S x |x. x \ S} = S" @@ -2736,7 +2736,7 @@ by (auto simp: path_connected_annulus [OF assms] path_connected_imp_connected) -subsection%unimportant\Relations between components and path components\ +subsection\<^marker>\tag unimportant\\Relations between components and path components\ lemma open_connected_component: fixes s :: "'a::real_normed_vector set" @@ -2841,7 +2841,7 @@ qed -subsection%unimportant\Existence of unbounded components\ +subsection\<^marker>\tag unimportant\\Existence of unbounded components\ lemma cobounded_unbounded_component: fixes s :: "'a :: euclidean_space set" @@ -2929,13 +2929,13 @@ subsection\The \inside\ and \outside\ of a Set\ -text%important\The inside comprises the points in a bounded connected component of the set's complement. +text\<^marker>\tag important\\The inside comprises the points in a bounded connected component of the set's complement. The outside comprises the points in unbounded connected component of the complement.\ -definition%important inside where +definition\<^marker>\tag important\ inside where "inside S \ {x. (x \ S) \ bounded(connected_component_set ( - S) x)}" -definition%important outside where +definition\<^marker>\tag important\ outside where "outside S \ -S \ {x. \ bounded(connected_component_set (- S) x)}" lemma outside: "outside S = {x. \ bounded(connected_component_set (- S) x)}"