[STATEMENT]
theorem path_contains_arc:
  fixes p :: "real \<Rightarrow> 'a::{complete_space,real_normed_vector}"
  assumes "path p" and a: "pathstart p = a" and b: "pathfinish p = b" and "a \<noteq> b"
  obtains q where "arc q" "path_image q \<subseteq> path_image p" "pathstart q = a" "pathfinish q = b"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>q. \<lbrakk>arc q; path_image q \<subseteq> path_image p; pathstart q = a; pathfinish q = b\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. (\<And>q. \<lbrakk>arc q; path_image q \<subseteq> path_image p; pathstart q = a; pathfinish q = b\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
have ucont_p: "uniformly_continuous_on {0..1} p"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. uniformly_continuous_on {0..1} p
[PROOF STEP]
using \<open>path p\<close>
[PROOF STATE]
proof (prove)
using this:
path p

goal (1 subgoal):
 1. uniformly_continuous_on {0..1} p
[PROOF STEP]
unfolding path_def
[PROOF STATE]
proof (prove)
using this:
continuous_on {0..1} p

goal (1 subgoal):
 1. uniformly_continuous_on {0..1} p
[PROOF STEP]
by (metis compact_Icc compact_uniformly_continuous)
[PROOF STATE]
proof (state)
this:
uniformly_continuous_on {0..1} p

goal (1 subgoal):
 1. (\<And>q. \<lbrakk>arc q; path_image q \<subseteq> path_image p; pathstart q = a; pathfinish q = b\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
define \<phi> where "\<phi> \<equiv> \<lambda>S. S \<subseteq> {0..1} \<and> 0 \<in> S \<and> 1 \<in> S \<and>
                           (\<forall>x \<in> S. \<forall>y \<in> S. open_segment x y \<inter> S = {} \<longrightarrow> p x = p y)"
[PROOF STATE]
proof (state)
this:
\<phi> \<equiv> \<lambda>S. S \<subseteq> {0..1} \<and> 0 \<in> S \<and> 1 \<in> S \<and> (\<forall>x\<in>S. \<forall>y\<in>S. open_segment x y \<inter> S = {} \<longrightarrow> p x = p y)

goal (1 subgoal):
 1. (\<And>q. \<lbrakk>arc q; path_image q \<subseteq> path_image p; pathstart q = a; pathfinish q = b\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
obtain T where "closed T" "\<phi> T" and T: "\<And>U. \<lbrakk>closed U; \<phi> U\<rbrakk> \<Longrightarrow> \<not> (U \<subset> T)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>T. \<lbrakk>closed T; \<phi> T; \<And>U. \<lbrakk>closed U; \<phi> U\<rbrakk> \<Longrightarrow> \<not> U \<subset> T\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
proof (rule Brouwer_reduction_theorem_gen [of "{0..1}" \<phi>])
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. (\<And>T. \<lbrakk>closed T; \<phi> T; \<And>U. \<lbrakk>closed U; \<phi> U\<rbrakk> \<Longrightarrow> \<not> U \<subset> T\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> closed {0..1}
 2. (\<And>T. \<lbrakk>closed T; \<phi> T; \<And>U. \<lbrakk>closed U; \<phi> U\<rbrakk> \<Longrightarrow> \<not> U \<subset> T\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> \<phi> {0..1}
 3. \<And>F. \<lbrakk>\<And>T. \<lbrakk>closed T; \<phi> T; \<And>U. \<lbrakk>closed U; \<phi> U\<rbrakk> \<Longrightarrow> \<not> U \<subset> T\<rbrakk> \<Longrightarrow> thesis; \<And>n. closed (F n); \<And>n. \<phi> (F n); \<And>n. F (Suc n) \<subseteq> F n\<rbrakk> \<Longrightarrow> \<phi> (\<Inter> (range F))
 4. \<And>T. \<lbrakk>\<And>T. \<lbrakk>closed T; \<phi> T; \<And>U. \<lbrakk>closed U; \<phi> U\<rbrakk> \<Longrightarrow> \<not> U \<subset> T\<rbrakk> \<Longrightarrow> thesis; T \<subseteq> {0..1}; closed T; \<phi> T; \<And>U. \<lbrakk>U \<subseteq> {0..1}; closed U; \<phi> U\<rbrakk> \<Longrightarrow> \<not> U \<subset> T\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
have *: "{x<..<y} \<inter> {0..1} = {x<..<y}" if "0 \<le> x" "y \<le> 1" "x \<le> y" for x y::real
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {x<..<y} \<inter> {0..1} = {x<..<y}
[PROOF STEP]
using that
[PROOF STATE]
proof (prove)
using this:
0 \<le> x
y \<le> 1
x \<le> y

goal (1 subgoal):
 1. {x<..<y} \<inter> {0..1} = {x<..<y}
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<lbrakk>0 \<le> ?x; ?y \<le> 1; ?x \<le> ?y\<rbrakk> \<Longrightarrow> {?x<..<?y} \<inter> {0..1} = {?x<..<?y}

goal (4 subgoals):
 1. (\<And>T. \<lbrakk>closed T; \<phi> T; \<And>U. \<lbrakk>closed U; \<phi> U\<rbrakk> \<Longrightarrow> \<not> U \<subset> T\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> closed {0..1}
 2. (\<And>T. \<lbrakk>closed T; \<phi> T; \<And>U. \<lbrakk>closed U; \<phi> U\<rbrakk> \<Longrightarrow> \<not> U \<subset> T\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> \<phi> {0..1}
 3. \<And>F. \<lbrakk>\<And>T. \<lbrakk>closed T; \<phi> T; \<And>U. \<lbrakk>closed U; \<phi> U\<rbrakk> \<Longrightarrow> \<not> U \<subset> T\<rbrakk> \<Longrightarrow> thesis; \<And>n. closed (F n); \<And>n. \<phi> (F n); \<And>n. F (Suc n) \<subseteq> F n\<rbrakk> \<Longrightarrow> \<phi> (\<Inter> (range F))
 4. \<And>T. \<lbrakk>\<And>T. \<lbrakk>closed T; \<phi> T; \<And>U. \<lbrakk>closed U; \<phi> U\<rbrakk> \<Longrightarrow> \<not> U \<subset> T\<rbrakk> \<Longrightarrow> thesis; T \<subseteq> {0..1}; closed T; \<phi> T; \<And>U. \<lbrakk>U \<subseteq> {0..1}; closed U; \<phi> U\<rbrakk> \<Longrightarrow> \<not> U \<subset> T\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
show "\<phi> {0..1}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<phi> {0..1}
[PROOF STEP]
by (auto simp: \<phi>_def open_segment_eq_real_ivl *)
[PROOF STATE]
proof (state)
this:
\<phi> {0..1}

goal (3 subgoals):
 1. (\<And>T. \<lbrakk>closed T; \<phi> T; \<And>U. \<lbrakk>closed U; \<phi> U\<rbrakk> \<Longrightarrow> \<not> U \<subset> T\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> closed {0..1}
 2. \<And>F. \<lbrakk>\<And>T. \<lbrakk>closed T; \<phi> T; \<And>U. \<lbrakk>closed U; \<phi> U\<rbrakk> \<Longrightarrow> \<not> U \<subset> T\<rbrakk> \<Longrightarrow> thesis; \<And>n. closed (F n); \<And>n. \<phi> (F n); \<And>n. F (Suc n) \<subseteq> F n\<rbrakk> \<Longrightarrow> \<phi> (\<Inter> (range F))
 3. \<And>T. \<lbrakk>\<And>T. \<lbrakk>closed T; \<phi> T; \<And>U. \<lbrakk>closed U; \<phi> U\<rbrakk> \<Longrightarrow> \<not> U \<subset> T\<rbrakk> \<Longrightarrow> thesis; T \<subseteq> {0..1}; closed T; \<phi> T; \<And>U. \<lbrakk>U \<subseteq> {0..1}; closed U; \<phi> U\<rbrakk> \<Longrightarrow> \<not> U \<subset> T\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
show "\<phi> (\<Inter>(F ` UNIV))"
      if "\<And>n. closed (F n)" and \<phi>: "\<And>n. \<phi> (F n)" and Fsub: "\<And>n. F (Suc n) \<subseteq> F n" for F
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<phi> (\<Inter> (range F))
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<phi> (\<Inter> (range F))
[PROOF STEP]
have F01: "\<And>n. F n \<subseteq> {0..1} \<and> 0 \<in> F n \<and> 1 \<in> F n"
        and peq: "\<And>n x y. \<lbrakk>x \<in> F n; y \<in> F n; open_segment x y \<inter> F n = {}\<rbrakk> \<Longrightarrow> p x = p y"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>n. F n \<subseteq> {0..1} \<and> 0 \<in> F n \<and> 1 \<in> F n) &&& (\<And>n x y. \<lbrakk>x \<in> F n; y \<in> F n; open_segment x y \<inter> F n = {}\<rbrakk> \<Longrightarrow> p x = p y)
[PROOF STEP]
by (metis \<phi> \<phi>_def)+
[PROOF STATE]
proof (state)
this:
F ?n \<subseteq> {0..1} \<and> 0 \<in> F ?n \<and> 1 \<in> F ?n
\<lbrakk>?x \<in> F ?n; ?y \<in> F ?n; open_segment ?x ?y \<inter> F ?n = {}\<rbrakk> \<Longrightarrow> p ?x = p ?y

goal (1 subgoal):
 1. \<phi> (\<Inter> (range F))
[PROOF STEP]
have pqF: False if "\<forall>u. x \<in> F u" "\<forall>x. y \<in> F x" "open_segment x y \<inter> (\<Inter>x. F x) = {}" and neg: "p x \<noteq> p y"
        for x y
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. False
[PROOF STEP]
using that
[PROOF STATE]
proof (prove)
using this:
\<forall>u. x \<in> F u
\<forall>x. y \<in> F x
open_segment x y \<inter> \<Inter> (range F) = {}
p x \<noteq> p y

goal (1 subgoal):
 1. False
[PROOF STEP]
proof (induction x y rule: linorder_class.linorder_less_wlog)
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>a b. \<lbrakk>a < b; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
 2. \<And>a. \<lbrakk>\<forall>u. a \<in> F u; \<forall>x. a \<in> F x; open_segment a a \<inter> \<Inter> (range F) = {}; p a \<noteq> p a\<rbrakk> \<Longrightarrow> False
 3. \<And>a b. \<lbrakk>\<lbrakk>\<forall>u. b \<in> F u; \<forall>x. a \<in> F x; open_segment b a \<inter> \<Inter> (range F) = {}; p b \<noteq> p a\<rbrakk> \<Longrightarrow> False; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
case (less x y)
[PROOF STATE]
proof (state)
this:
x < y
\<forall>u. x \<in> F u
\<forall>x. y \<in> F x
open_segment x y \<inter> \<Inter> (range F) = {}
p x \<noteq> p y

goal (3 subgoals):
 1. \<And>a b. \<lbrakk>a < b; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
 2. \<And>a. \<lbrakk>\<forall>u. a \<in> F u; \<forall>x. a \<in> F x; open_segment a a \<inter> \<Inter> (range F) = {}; p a \<noteq> p a\<rbrakk> \<Longrightarrow> False
 3. \<And>a b. \<lbrakk>\<lbrakk>\<forall>u. b \<in> F u; \<forall>x. a \<in> F x; open_segment b a \<inter> \<Inter> (range F) = {}; p b \<noteq> p a\<rbrakk> \<Longrightarrow> False; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
have xy: "x \<in> {0..1}" "y \<in> {0..1}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. x \<in> {0..1} &&& y \<in> {0..1}
[PROOF STEP]
by (metis less.prems subsetCE F01)+
[PROOF STATE]
proof (state)
this:
x \<in> {0..1}
y \<in> {0..1}

goal (3 subgoals):
 1. \<And>a b. \<lbrakk>a < b; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
 2. \<And>a. \<lbrakk>\<forall>u. a \<in> F u; \<forall>x. a \<in> F x; open_segment a a \<inter> \<Inter> (range F) = {}; p a \<noteq> p a\<rbrakk> \<Longrightarrow> False
 3. \<And>a b. \<lbrakk>\<lbrakk>\<forall>u. b \<in> F u; \<forall>x. a \<in> F x; open_segment b a \<inter> \<Inter> (range F) = {}; p b \<noteq> p a\<rbrakk> \<Longrightarrow> False; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
have "norm(p x - p y) / 2 > 0"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. 0 < norm (p x - p y) / 2
[PROOF STEP]
using less
[PROOF STATE]
proof (prove)
using this:
x < y
\<forall>u. x \<in> F u
\<forall>x. y \<in> F x
open_segment x y \<inter> \<Inter> (range F) = {}
p x \<noteq> p y

goal (1 subgoal):
 1. 0 < norm (p x - p y) / 2
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
0 < norm (p x - p y) / 2

goal (3 subgoals):
 1. \<And>a b. \<lbrakk>a < b; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
 2. \<And>a. \<lbrakk>\<forall>u. a \<in> F u; \<forall>x. a \<in> F x; open_segment a a \<inter> \<Inter> (range F) = {}; p a \<noteq> p a\<rbrakk> \<Longrightarrow> False
 3. \<And>a b. \<lbrakk>\<lbrakk>\<forall>u. b \<in> F u; \<forall>x. a \<in> F x; open_segment b a \<inter> \<Inter> (range F) = {}; p b \<noteq> p a\<rbrakk> \<Longrightarrow> False; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
0 < norm (p x - p y) / 2
[PROOF STEP]
obtain e where "e > 0"
          and e: "\<And>u v. \<lbrakk>u \<in> {0..1}; v \<in> {0..1}; dist v u < e\<rbrakk> \<Longrightarrow> dist (p v) (p u) < norm(p x - p y) / 2"
[PROOF STATE]
proof (prove)
using this:
0 < norm (p x - p y) / 2

goal (1 subgoal):
 1. (\<And>e. \<lbrakk>0 < e; \<And>u v. \<lbrakk>u \<in> {0..1}; v \<in> {0..1}; dist v u < e\<rbrakk> \<Longrightarrow> dist (p v) (p u) < norm (p x - p y) / 2\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by (metis uniformly_continuous_onE [OF ucont_p])
[PROOF STATE]
proof (state)
this:
0 < e
\<lbrakk>?u \<in> {0..1}; ?v \<in> {0..1}; dist ?v ?u < e\<rbrakk> \<Longrightarrow> dist (p ?v) (p ?u) < norm (p x - p y) / 2

goal (3 subgoals):
 1. \<And>a b. \<lbrakk>a < b; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
 2. \<And>a. \<lbrakk>\<forall>u. a \<in> F u; \<forall>x. a \<in> F x; open_segment a a \<inter> \<Inter> (range F) = {}; p a \<noteq> p a\<rbrakk> \<Longrightarrow> False
 3. \<And>a b. \<lbrakk>\<lbrakk>\<forall>u. b \<in> F u; \<forall>x. a \<in> F x; open_segment b a \<inter> \<Inter> (range F) = {}; p b \<noteq> p a\<rbrakk> \<Longrightarrow> False; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
have minxy: "min e (y - x)  < (y - x) * (3 / 2)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. min e (y - x) < (y - x) * (3 / 2)
[PROOF STEP]
by (subst min_less_iff_disj) (simp add: less)
[PROOF STATE]
proof (state)
this:
min e (y - x) < (y - x) * (3 / 2)

goal (3 subgoals):
 1. \<And>a b. \<lbrakk>a < b; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
 2. \<And>a. \<lbrakk>\<forall>u. a \<in> F u; \<forall>x. a \<in> F x; open_segment a a \<inter> \<Inter> (range F) = {}; p a \<noteq> p a\<rbrakk> \<Longrightarrow> False
 3. \<And>a b. \<lbrakk>\<lbrakk>\<forall>u. b \<in> F u; \<forall>x. a \<in> F x; open_segment b a \<inter> \<Inter> (range F) = {}; p b \<noteq> p a\<rbrakk> \<Longrightarrow> False; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
define w where "w \<equiv> x + (min e (y - x) / 3)"
[PROOF STATE]
proof (state)
this:
w \<equiv> x + min e (y - x) / 3

goal (3 subgoals):
 1. \<And>a b. \<lbrakk>a < b; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
 2. \<And>a. \<lbrakk>\<forall>u. a \<in> F u; \<forall>x. a \<in> F x; open_segment a a \<inter> \<Inter> (range F) = {}; p a \<noteq> p a\<rbrakk> \<Longrightarrow> False
 3. \<And>a b. \<lbrakk>\<lbrakk>\<forall>u. b \<in> F u; \<forall>x. a \<in> F x; open_segment b a \<inter> \<Inter> (range F) = {}; p b \<noteq> p a\<rbrakk> \<Longrightarrow> False; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
define z where "z \<equiv>y - (min e (y - x) / 3)"
[PROOF STATE]
proof (state)
this:
z \<equiv> y - min e (y - x) / 3

goal (3 subgoals):
 1. \<And>a b. \<lbrakk>a < b; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
 2. \<And>a. \<lbrakk>\<forall>u. a \<in> F u; \<forall>x. a \<in> F x; open_segment a a \<inter> \<Inter> (range F) = {}; p a \<noteq> p a\<rbrakk> \<Longrightarrow> False
 3. \<And>a b. \<lbrakk>\<lbrakk>\<forall>u. b \<in> F u; \<forall>x. a \<in> F x; open_segment b a \<inter> \<Inter> (range F) = {}; p b \<noteq> p a\<rbrakk> \<Longrightarrow> False; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
have "w < z" and w: "w \<in> {x<..<y}" and z: "z \<in> {x<..<y}"
          and wxe: "norm(w - x) < e" and zye: "norm(z - y) < e"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (w < z &&& w \<in> {x<..<y}) &&& z \<in> {x<..<y} &&& norm (w - x) < e &&& norm (z - y) < e
[PROOF STEP]
using minxy \<open>0 < e\<close> less
[PROOF STATE]
proof (prove)
using this:
min e (y - x) < (y - x) * (3 / 2)
0 < e
x < y
\<forall>u. x \<in> F u
\<forall>x. y \<in> F x
open_segment x y \<inter> \<Inter> (range F) = {}
p x \<noteq> p y

goal (1 subgoal):
 1. (w < z &&& w \<in> {x<..<y}) &&& z \<in> {x<..<y} &&& norm (w - x) < e &&& norm (z - y) < e
[PROOF STEP]
unfolding w_def z_def
[PROOF STATE]
proof (prove)
using this:
min e (y - x) < (y - x) * (3 / 2)
0 < e
x < y
\<forall>u. x \<in> F u
\<forall>x. y \<in> F x
open_segment x y \<inter> \<Inter> (range F) = {}
p x \<noteq> p y

goal (1 subgoal):
 1. (x + min e (y - x) / 3 < y - min e (y - x) / 3 &&& x + min e (y - x) / 3 \<in> {x<..<y}) &&& y - min e (y - x) / 3 \<in> {x<..<y} &&& norm (x + min e (y - x) / 3 - x) < e &&& norm (y - min e (y - x) / 3 - y) < e
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
w < z
w \<in> {x<..<y}
z \<in> {x<..<y}
norm (w - x) < e
norm (z - y) < e

goal (3 subgoals):
 1. \<And>a b. \<lbrakk>a < b; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
 2. \<And>a. \<lbrakk>\<forall>u. a \<in> F u; \<forall>x. a \<in> F x; open_segment a a \<inter> \<Inter> (range F) = {}; p a \<noteq> p a\<rbrakk> \<Longrightarrow> False
 3. \<And>a b. \<lbrakk>\<lbrakk>\<forall>u. b \<in> F u; \<forall>x. a \<in> F x; open_segment b a \<inter> \<Inter> (range F) = {}; p b \<noteq> p a\<rbrakk> \<Longrightarrow> False; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
have Fclo: "\<And>T. T \<in> range F \<Longrightarrow> closed T"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>T. T \<in> range F \<Longrightarrow> closed T
[PROOF STEP]
by (metis \<open>\<And>n. closed (F n)\<close> image_iff)
[PROOF STATE]
proof (state)
this:
?T \<in> range F \<Longrightarrow> closed ?T

goal (3 subgoals):
 1. \<And>a b. \<lbrakk>a < b; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
 2. \<And>a. \<lbrakk>\<forall>u. a \<in> F u; \<forall>x. a \<in> F x; open_segment a a \<inter> \<Inter> (range F) = {}; p a \<noteq> p a\<rbrakk> \<Longrightarrow> False
 3. \<And>a b. \<lbrakk>\<lbrakk>\<forall>u. b \<in> F u; \<forall>x. a \<in> F x; open_segment b a \<inter> \<Inter> (range F) = {}; p b \<noteq> p a\<rbrakk> \<Longrightarrow> False; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
have eq: "{w..z} \<inter> \<Inter>(F ` UNIV) = {}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {w..z} \<inter> \<Inter> (range F) = {}
[PROOF STEP]
using less w z
[PROOF STATE]
proof (prove)
using this:
x < y
\<forall>u. x \<in> F u
\<forall>x. y \<in> F x
open_segment x y \<inter> \<Inter> (range F) = {}
p x \<noteq> p y
w \<in> {x<..<y}
z \<in> {x<..<y}

goal (1 subgoal):
 1. {w..z} \<inter> \<Inter> (range F) = {}
[PROOF STEP]
by (simp add: open_segment_eq_real_ivl disjoint_iff)
[PROOF STATE]
proof (state)
this:
{w..z} \<inter> \<Inter> (range F) = {}

goal (3 subgoals):
 1. \<And>a b. \<lbrakk>a < b; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
 2. \<And>a. \<lbrakk>\<forall>u. a \<in> F u; \<forall>x. a \<in> F x; open_segment a a \<inter> \<Inter> (range F) = {}; p a \<noteq> p a\<rbrakk> \<Longrightarrow> False
 3. \<And>a b. \<lbrakk>\<lbrakk>\<forall>u. b \<in> F u; \<forall>x. a \<in> F x; open_segment b a \<inter> \<Inter> (range F) = {}; p b \<noteq> p a\<rbrakk> \<Longrightarrow> False; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
{w..z} \<inter> \<Inter> (range F) = {}
[PROOF STEP]
obtain K where "finite K" and K: "{w..z} \<inter> (\<Inter> (F ` K)) = {}"
[PROOF STATE]
proof (prove)
using this:
{w..z} \<inter> \<Inter> (range F) = {}

goal (1 subgoal):
 1. (\<And>K. \<lbrakk>finite K; {w..z} \<inter> \<Inter> (F ` K) = {}\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by (metis finite_subset_image compact_imp_fip [OF compact_interval Fclo])
[PROOF STATE]
proof (state)
this:
finite K
{w..z} \<inter> \<Inter> (F ` K) = {}

goal (3 subgoals):
 1. \<And>a b. \<lbrakk>a < b; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
 2. \<And>a. \<lbrakk>\<forall>u. a \<in> F u; \<forall>x. a \<in> F x; open_segment a a \<inter> \<Inter> (range F) = {}; p a \<noteq> p a\<rbrakk> \<Longrightarrow> False
 3. \<And>a b. \<lbrakk>\<lbrakk>\<forall>u. b \<in> F u; \<forall>x. a \<in> F x; open_segment b a \<inter> \<Inter> (range F) = {}; p b \<noteq> p a\<rbrakk> \<Longrightarrow> False; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
finite K
{w..z} \<inter> \<Inter> (F ` K) = {}
[PROOF STEP]
have "K \<noteq> {}"
[PROOF STATE]
proof (prove)
using this:
finite K
{w..z} \<inter> \<Inter> (F ` K) = {}

goal (1 subgoal):
 1. K \<noteq> {}
[PROOF STEP]
using \<open>w < z\<close> \<open>{w..z} \<inter> \<Inter>(F ` K) = {}\<close>
[PROOF STATE]
proof (prove)
using this:
finite K
{w..z} \<inter> \<Inter> (F ` K) = {}
w < z
{w..z} \<inter> \<Inter> (F ` K) = {}

goal (1 subgoal):
 1. K \<noteq> {}
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
K \<noteq> {}

goal (3 subgoals):
 1. \<And>a b. \<lbrakk>a < b; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
 2. \<And>a. \<lbrakk>\<forall>u. a \<in> F u; \<forall>x. a \<in> F x; open_segment a a \<inter> \<Inter> (range F) = {}; p a \<noteq> p a\<rbrakk> \<Longrightarrow> False
 3. \<And>a b. \<lbrakk>\<lbrakk>\<forall>u. b \<in> F u; \<forall>x. a \<in> F x; open_segment b a \<inter> \<Inter> (range F) = {}; p b \<noteq> p a\<rbrakk> \<Longrightarrow> False; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
define n where "n \<equiv> Max K"
[PROOF STATE]
proof (state)
this:
n \<equiv> Max K

goal (3 subgoals):
 1. \<And>a b. \<lbrakk>a < b; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
 2. \<And>a. \<lbrakk>\<forall>u. a \<in> F u; \<forall>x. a \<in> F x; open_segment a a \<inter> \<Inter> (range F) = {}; p a \<noteq> p a\<rbrakk> \<Longrightarrow> False
 3. \<And>a b. \<lbrakk>\<lbrakk>\<forall>u. b \<in> F u; \<forall>x. a \<in> F x; open_segment b a \<inter> \<Inter> (range F) = {}; p b \<noteq> p a\<rbrakk> \<Longrightarrow> False; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
have "n \<in> K"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. n \<in> K
[PROOF STEP]
unfolding n_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Max K \<in> K
[PROOF STEP]
by (metis \<open>K \<noteq> {}\<close> \<open>finite K\<close> Max_in)
[PROOF STATE]
proof (state)
this:
n \<in> K

goal (3 subgoals):
 1. \<And>a b. \<lbrakk>a < b; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
 2. \<And>a. \<lbrakk>\<forall>u. a \<in> F u; \<forall>x. a \<in> F x; open_segment a a \<inter> \<Inter> (range F) = {}; p a \<noteq> p a\<rbrakk> \<Longrightarrow> False
 3. \<And>a b. \<lbrakk>\<lbrakk>\<forall>u. b \<in> F u; \<forall>x. a \<in> F x; open_segment b a \<inter> \<Inter> (range F) = {}; p b \<noteq> p a\<rbrakk> \<Longrightarrow> False; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
have "F n \<subseteq> \<Inter> (F ` K)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. F n \<subseteq> \<Inter> (F ` K)
[PROOF STEP]
unfolding n_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. F (Max K) \<subseteq> \<Inter> (F ` K)
[PROOF STEP]
by (metis Fsub Max_ge \<open>K \<noteq> {}\<close> \<open>finite K\<close> cINF_greatest lift_Suc_antimono_le)
[PROOF STATE]
proof (state)
this:
F n \<subseteq> \<Inter> (F ` K)

goal (3 subgoals):
 1. \<And>a b. \<lbrakk>a < b; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
 2. \<And>a. \<lbrakk>\<forall>u. a \<in> F u; \<forall>x. a \<in> F x; open_segment a a \<inter> \<Inter> (range F) = {}; p a \<noteq> p a\<rbrakk> \<Longrightarrow> False
 3. \<And>a b. \<lbrakk>\<lbrakk>\<forall>u. b \<in> F u; \<forall>x. a \<in> F x; open_segment b a \<inter> \<Inter> (range F) = {}; p b \<noteq> p a\<rbrakk> \<Longrightarrow> False; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
with K
[PROOF STATE]
proof (chain)
picking this:
{w..z} \<inter> \<Inter> (F ` K) = {}
F n \<subseteq> \<Inter> (F ` K)
[PROOF STEP]
have wzF_null: "{w..z} \<inter> F n = {}"
[PROOF STATE]
proof (prove)
using this:
{w..z} \<inter> \<Inter> (F ` K) = {}
F n \<subseteq> \<Inter> (F ` K)

goal (1 subgoal):
 1. {w..z} \<inter> F n = {}
[PROOF STEP]
by (metis disjoint_iff_not_equal subset_eq)
[PROOF STATE]
proof (state)
this:
{w..z} \<inter> F n = {}

goal (3 subgoals):
 1. \<And>a b. \<lbrakk>a < b; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
 2. \<And>a. \<lbrakk>\<forall>u. a \<in> F u; \<forall>x. a \<in> F x; open_segment a a \<inter> \<Inter> (range F) = {}; p a \<noteq> p a\<rbrakk> \<Longrightarrow> False
 3. \<And>a b. \<lbrakk>\<lbrakk>\<forall>u. b \<in> F u; \<forall>x. a \<in> F x; open_segment b a \<inter> \<Inter> (range F) = {}; p b \<noteq> p a\<rbrakk> \<Longrightarrow> False; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
obtain u where u: "u \<in> F n" "u \<in> {x..w}" "({u..w} - {u}) \<inter> F n = {}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>u. \<lbrakk>u \<in> F n; u \<in> {x..w}; ({u..w} - {u}) \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
proof (cases "w \<in> F n")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>\<And>u. \<lbrakk>u \<in> F n; u \<in> {x..w}; ({u..w} - {u}) \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis; w \<in> F n\<rbrakk> \<Longrightarrow> thesis
 2. \<lbrakk>\<And>u. \<lbrakk>u \<in> F n; u \<in> {x..w}; ({u..w} - {u}) \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis; w \<notin> F n\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
w \<in> F n

goal (2 subgoals):
 1. \<lbrakk>\<And>u. \<lbrakk>u \<in> F n; u \<in> {x..w}; ({u..w} - {u}) \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis; w \<in> F n\<rbrakk> \<Longrightarrow> thesis
 2. \<lbrakk>\<And>u. \<lbrakk>u \<in> F n; u \<in> {x..w}; ({u..w} - {u}) \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis; w \<notin> F n\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
w \<in> F n
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
w \<in> F n

goal (1 subgoal):
 1. thesis
[PROOF STEP]
by (metis wzF_null \<open>w < z\<close> atLeastAtMost_iff disjoint_iff_not_equal less_eq_real_def)
[PROOF STATE]
proof (state)
this:
thesis

goal (1 subgoal):
 1. \<lbrakk>\<And>u. \<lbrakk>u \<in> F n; u \<in> {x..w}; ({u..w} - {u}) \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis; w \<notin> F n\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>\<And>u. \<lbrakk>u \<in> F n; u \<in> {x..w}; ({u..w} - {u}) \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis; w \<notin> F n\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
w \<notin> F n

goal (1 subgoal):
 1. \<lbrakk>\<And>u. \<lbrakk>u \<in> F n; u \<in> {x..w}; ({u..w} - {u}) \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis; w \<notin> F n\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
obtain u where "u \<in> F n" "u \<in> {x..w}" "{u<..<w} \<inter> F n = {}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>u. \<lbrakk>u \<in> F n; u \<in> {x..w}; {u<..<w} \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
proof (rule segment_to_point_exists [of "F n \<inter> {x..w}" w])
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. (\<And>u. \<lbrakk>u \<in> F n; u \<in> {x..w}; {u<..<w} \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> closed (F n \<inter> {x..w})
 2. (\<And>u. \<lbrakk>u \<in> F n; u \<in> {x..w}; {u<..<w} \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> F n \<inter> {x..w} \<noteq> {}
 3. \<And>b. \<lbrakk>\<And>u. \<lbrakk>u \<in> F n; u \<in> {x..w}; {u<..<w} \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis; b \<in> F n \<inter> {x..w}; open_segment w b \<inter> (F n \<inter> {x..w}) = {}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
show "closed (F n \<inter> {x..w})"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. closed (F n \<inter> {x..w})
[PROOF STEP]
by (metis \<open>\<And>n. closed (F n)\<close> closed_Int closed_real_atLeastAtMost)
[PROOF STATE]
proof (state)
this:
closed (F n \<inter> {x..w})

goal (2 subgoals):
 1. (\<And>u. \<lbrakk>u \<in> F n; u \<in> {x..w}; {u<..<w} \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> F n \<inter> {x..w} \<noteq> {}
 2. \<And>b. \<lbrakk>\<And>u. \<lbrakk>u \<in> F n; u \<in> {x..w}; {u<..<w} \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis; b \<in> F n \<inter> {x..w}; open_segment w b \<inter> (F n \<inter> {x..w}) = {}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
show "F n \<inter> {x..w} \<noteq> {}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. F n \<inter> {x..w} \<noteq> {}
[PROOF STEP]
by (metis atLeastAtMost_iff disjoint_iff_not_equal greaterThanLessThan_iff less.prems(1) less_eq_real_def w)
[PROOF STATE]
proof (state)
this:
F n \<inter> {x..w} \<noteq> {}

goal (1 subgoal):
 1. \<And>b. \<lbrakk>\<And>u. \<lbrakk>u \<in> F n; u \<in> {x..w}; {u<..<w} \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis; b \<in> F n \<inter> {x..w}; open_segment w b \<inter> (F n \<inter> {x..w}) = {}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
qed (auto simp: open_segment_eq_real_ivl intro!: that)
[PROOF STATE]
proof (state)
this:
u \<in> F n
u \<in> {x..w}
{u<..<w} \<inter> F n = {}

goal (1 subgoal):
 1. \<lbrakk>\<And>u. \<lbrakk>u \<in> F n; u \<in> {x..w}; ({u..w} - {u}) \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis; w \<notin> F n\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
with False
[PROOF STATE]
proof (chain)
picking this:
w \<notin> F n
u \<in> F n
u \<in> {x..w}
{u<..<w} \<inter> F n = {}
[PROOF STEP]
show thesis
[PROOF STATE]
proof (prove)
using this:
w \<notin> F n
u \<in> F n
u \<in> {x..w}
{u<..<w} \<inter> F n = {}

goal (1 subgoal):
 1. thesis
[PROOF STEP]
by (auto simp add: disjoint_iff less_eq_real_def intro!: that)
[PROOF STATE]
proof (state)
this:
thesis

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
u \<in> F n
u \<in> {x..w}
({u..w} - {u}) \<inter> F n = {}

goal (3 subgoals):
 1. \<And>a b. \<lbrakk>a < b; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
 2. \<And>a. \<lbrakk>\<forall>u. a \<in> F u; \<forall>x. a \<in> F x; open_segment a a \<inter> \<Inter> (range F) = {}; p a \<noteq> p a\<rbrakk> \<Longrightarrow> False
 3. \<And>a b. \<lbrakk>\<lbrakk>\<forall>u. b \<in> F u; \<forall>x. a \<in> F x; open_segment b a \<inter> \<Inter> (range F) = {}; p b \<noteq> p a\<rbrakk> \<Longrightarrow> False; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
obtain v where v: "v \<in> F n" "v \<in> {z..y}" "({z..v} - {v}) \<inter> F n = {}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>v. \<lbrakk>v \<in> F n; v \<in> {z..y}; ({z..v} - {v}) \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
proof (cases "z \<in> F n")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>\<And>v. \<lbrakk>v \<in> F n; v \<in> {z..y}; ({z..v} - {v}) \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis; z \<in> F n\<rbrakk> \<Longrightarrow> thesis
 2. \<lbrakk>\<And>v. \<lbrakk>v \<in> F n; v \<in> {z..y}; ({z..v} - {v}) \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis; z \<notin> F n\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
z \<in> F n

goal (2 subgoals):
 1. \<lbrakk>\<And>v. \<lbrakk>v \<in> F n; v \<in> {z..y}; ({z..v} - {v}) \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis; z \<in> F n\<rbrakk> \<Longrightarrow> thesis
 2. \<lbrakk>\<And>v. \<lbrakk>v \<in> F n; v \<in> {z..y}; ({z..v} - {v}) \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis; z \<notin> F n\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
have "z \<in> {w..z}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. z \<in> {w..z}
[PROOF STEP]
using \<open>w < z\<close>
[PROOF STATE]
proof (prove)
using this:
w < z

goal (1 subgoal):
 1. z \<in> {w..z}
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
z \<in> {w..z}

goal (2 subgoals):
 1. \<lbrakk>\<And>v. \<lbrakk>v \<in> F n; v \<in> {z..y}; ({z..v} - {v}) \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis; z \<in> F n\<rbrakk> \<Longrightarrow> thesis
 2. \<lbrakk>\<And>v. \<lbrakk>v \<in> F n; v \<in> {z..y}; ({z..v} - {v}) \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis; z \<notin> F n\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
z \<in> {w..z}
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
z \<in> {w..z}

goal (1 subgoal):
 1. thesis
[PROOF STEP]
by (metis wzF_null Int_iff True empty_iff)
[PROOF STATE]
proof (state)
this:
thesis

goal (1 subgoal):
 1. \<lbrakk>\<And>v. \<lbrakk>v \<in> F n; v \<in> {z..y}; ({z..v} - {v}) \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis; z \<notin> F n\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>\<And>v. \<lbrakk>v \<in> F n; v \<in> {z..y}; ({z..v} - {v}) \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis; z \<notin> F n\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
z \<notin> F n

goal (1 subgoal):
 1. \<lbrakk>\<And>v. \<lbrakk>v \<in> F n; v \<in> {z..y}; ({z..v} - {v}) \<inter> F n = {}\<rbrakk> \<Longrightarrow> thesis; z \<notin> F n\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. thesis
[PROOF STEP]
proof (rule segment_to_point_exists [of "F n \<inter> {z..y}" z])
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. closed (F n \<inter> {z..y})
 2. F n \<inter> {z..y} \<noteq> {}
 3. \<And>b. \<lbrakk>b \<in> F n \<inter> {z..y}; open_segment z b \<inter> (F n \<inter> {z..y}) = {}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
show "closed (F n \<inter> {z..y})"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. closed (F n \<inter> {z..y})
[PROOF STEP]
by (metis \<open>\<And>n. closed (F n)\<close> closed_Int closed_atLeastAtMost)
[PROOF STATE]
proof (state)
this:
closed (F n \<inter> {z..y})

goal (2 subgoals):
 1. F n \<inter> {z..y} \<noteq> {}
 2. \<And>b. \<lbrakk>b \<in> F n \<inter> {z..y}; open_segment z b \<inter> (F n \<inter> {z..y}) = {}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
show "F n \<inter> {z..y} \<noteq> {}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. F n \<inter> {z..y} \<noteq> {}
[PROOF STEP]
by (metis atLeastAtMost_iff disjoint_iff_not_equal greaterThanLessThan_iff less.prems(2) less_eq_real_def z)
[PROOF STATE]
proof (state)
this:
F n \<inter> {z..y} \<noteq> {}

goal (1 subgoal):
 1. \<And>b. \<lbrakk>b \<in> F n \<inter> {z..y}; open_segment z b \<inter> (F n \<inter> {z..y}) = {}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
show "\<And>b. \<lbrakk>b \<in> F n \<inter> {z..y}; open_segment z b \<inter> (F n \<inter> {z..y}) = {}\<rbrakk> \<Longrightarrow> thesis"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>b. \<lbrakk>b \<in> F n \<inter> {z..y}; open_segment z b \<inter> (F n \<inter> {z..y}) = {}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>b. \<lbrakk>b \<in> F n \<inter> {z..y}; open_segment z b \<inter> (F n \<inter> {z..y}) = {}\<rbrakk> \<Longrightarrow> ?v b \<in> F n
 2. \<And>b. \<lbrakk>b \<in> F n \<inter> {z..y}; open_segment z b \<inter> (F n \<inter> {z..y}) = {}\<rbrakk> \<Longrightarrow> ?v b \<in> {z..y}
 3. \<And>b. \<lbrakk>b \<in> F n \<inter> {z..y}; open_segment z b \<inter> (F n \<inter> {z..y}) = {}\<rbrakk> \<Longrightarrow> ({z..?v b} - {?v b}) \<inter> F n = {}
[PROOF STEP]
show "\<And>b. \<lbrakk>b \<in> F n \<inter> {z..y}; open_segment z b \<inter> (F n \<inter> {z..y}) = {}\<rbrakk> \<Longrightarrow> ({z..b} - {b}) \<inter> F n = {}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>b. \<lbrakk>b \<in> F n \<inter> {z..y}; open_segment z b \<inter> (F n \<inter> {z..y}) = {}\<rbrakk> \<Longrightarrow> ({z..b} - {b}) \<inter> F n = {}
[PROOF STEP]
using False
[PROOF STATE]
proof (prove)
using this:
z \<notin> F n

goal (1 subgoal):
 1. \<And>b. \<lbrakk>b \<in> F n \<inter> {z..y}; open_segment z b \<inter> (F n \<inter> {z..y}) = {}\<rbrakk> \<Longrightarrow> ({z..b} - {b}) \<inter> F n = {}
[PROOF STEP]
by (auto simp: open_segment_eq_real_ivl less_eq_real_def)
[PROOF STATE]
proof (state)
this:
\<lbrakk>?b \<in> F n \<inter> {z..y}; open_segment z ?b \<inter> (F n \<inter> {z..y}) = {}\<rbrakk> \<Longrightarrow> ({z..?b} - {?b}) \<inter> F n = {}

goal (2 subgoals):
 1. \<And>b. \<lbrakk>b \<in> F n \<inter> {z..y}; open_segment z b \<inter> (F n \<inter> {z..y}) = {}\<rbrakk> \<Longrightarrow> b \<in> F n
 2. \<And>b. \<lbrakk>b \<in> F n \<inter> {z..y}; open_segment z b \<inter> (F n \<inter> {z..y}) = {}\<rbrakk> \<Longrightarrow> b \<in> {z..y}
[PROOF STEP]
qed auto
[PROOF STATE]
proof (state)
this:
\<lbrakk>?b \<in> F n \<inter> {z..y}; open_segment z ?b \<inter> (F n \<inter> {z..y}) = {}\<rbrakk> \<Longrightarrow> thesis

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
thesis

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
v \<in> F n
v \<in> {z..y}
({z..v} - {v}) \<inter> F n = {}

goal (3 subgoals):
 1. \<And>a b. \<lbrakk>a < b; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
 2. \<And>a. \<lbrakk>\<forall>u. a \<in> F u; \<forall>x. a \<in> F x; open_segment a a \<inter> \<Inter> (range F) = {}; p a \<noteq> p a\<rbrakk> \<Longrightarrow> False
 3. \<And>a b. \<lbrakk>\<lbrakk>\<forall>u. b \<in> F u; \<forall>x. a \<in> F x; open_segment b a \<inter> \<Inter> (range F) = {}; p b \<noteq> p a\<rbrakk> \<Longrightarrow> False; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
obtain u v where "u \<in> {0..1}" "v \<in> {0..1}" "norm(u - x) < e" "norm(v - y) < e" "p u = p v"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>u v. \<lbrakk>u \<in> {0..1}; v \<in> {0..1}; norm (u - x) < e; norm (v - y) < e; p u = p v\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (5 subgoals):
 1. (\<And>u v. \<lbrakk>u \<in> {0..1}; v \<in> {0..1}; norm (u - x) < e; norm (v - y) < e; p u = p v\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> ?u2 \<in> {0..1}
 2. (\<And>u v. \<lbrakk>u \<in> {0..1}; v \<in> {0..1}; norm (u - x) < e; norm (v - y) < e; p u = p v\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> ?v2 \<in> {0..1}
 3. (\<And>u v. \<lbrakk>u \<in> {0..1}; v \<in> {0..1}; norm (u - x) < e; norm (v - y) < e; p u = p v\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> norm (?u2 - x) < e
 4. (\<And>u v. \<lbrakk>u \<in> {0..1}; v \<in> {0..1}; norm (u - x) < e; norm (v - y) < e; p u = p v\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> norm (?v2 - y) < e
 5. (\<And>u v. \<lbrakk>u \<in> {0..1}; v \<in> {0..1}; norm (u - x) < e; norm (v - y) < e; p u = p v\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> p ?u2 = p ?v2
[PROOF STEP]
show "u \<in> {0..1}" "v \<in> {0..1}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. u \<in> {0..1} &&& v \<in> {0..1}
[PROOF STEP]
by (metis F01 \<open>u \<in> F n\<close> \<open>v \<in> F n\<close> subsetD)+
[PROOF STATE]
proof (state)
this:
u \<in> {0..1}
v \<in> {0..1}

goal (3 subgoals):
 1. (\<And>u v. \<lbrakk>u \<in> {0..1}; v \<in> {0..1}; norm (u - x) < e; norm (v - y) < e; p u = p v\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> norm (u - x) < e
 2. (\<And>u v. \<lbrakk>u \<in> {0..1}; v \<in> {0..1}; norm (u - x) < e; norm (v - y) < e; p u = p v\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> norm (v - y) < e
 3. (\<And>u v. \<lbrakk>u \<in> {0..1}; v \<in> {0..1}; norm (u - x) < e; norm (v - y) < e; p u = p v\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> p u = p v
[PROOF STEP]
show "norm(u - x) < e" "norm (v - y) < e"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. norm (u - x) < e &&& norm (v - y) < e
[PROOF STEP]
using \<open>u \<in> {x..w}\<close> \<open>v \<in> {z..y}\<close> atLeastAtMost_iff real_norm_def wxe zye
[PROOF STATE]
proof (prove)
using this:
u \<in> {x..w}
v \<in> {z..y}
(?i \<in> {?l..?u}) = (?l \<le> ?i \<and> ?i \<le> ?u)
norm ?r = \<bar>?r\<bar>
norm (w - x) < e
norm (z - y) < e

goal (1 subgoal):
 1. norm (u - x) < e &&& norm (v - y) < e
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
norm (u - x) < e
norm (v - y) < e

goal (1 subgoal):
 1. (\<And>u v. \<lbrakk>u \<in> {0..1}; v \<in> {0..1}; norm (u - x) < e; norm (v - y) < e; p u = p v\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> p u = p v
[PROOF STEP]
show "p u = p v"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. p u = p v
[PROOF STEP]
proof (rule peq)
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. u \<in> F ?n
 2. v \<in> F ?n
 3. open_segment u v \<inter> F ?n = {}
[PROOF STEP]
show "u \<in> F n" "v \<in> F n"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. u \<in> F n &&& v \<in> F n
[PROOF STEP]
by (auto simp: u v)
[PROOF STATE]
proof (state)
this:
u \<in> F n
v \<in> F n

goal (1 subgoal):
 1. open_segment u v \<inter> F n = {}
[PROOF STEP]
have "False" if "\<xi> \<in> F n" "u < \<xi>" "\<xi> < v" for \<xi>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. False
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. False
[PROOF STEP]
have "\<xi> \<notin> {z..v}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<xi> \<notin> {z..v}
[PROOF STEP]
by (metis DiffI disjoint_iff_not_equal less_irrefl singletonD that(1,3) v(3))
[PROOF STATE]
proof (state)
this:
\<xi> \<notin> {z..v}

goal (1 subgoal):
 1. False
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
\<xi> \<notin> {z..v}

goal (1 subgoal):
 1. False
[PROOF STEP]
have "\<xi> \<notin> {w..z} \<inter> F n"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<xi> \<notin> {w..z} \<inter> F n
[PROOF STEP]
by (metis equals0D wzF_null)
[PROOF STATE]
proof (state)
this:
\<xi> \<notin> {w..z} \<inter> F n

goal (1 subgoal):
 1. False
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
\<xi> \<notin> {z..v}
\<xi> \<notin> {w..z} \<inter> F n
[PROOF STEP]
have "\<xi> \<in> {u..w}"
[PROOF STATE]
proof (prove)
using this:
\<xi> \<notin> {z..v}
\<xi> \<notin> {w..z} \<inter> F n

goal (1 subgoal):
 1. \<xi> \<in> {u..w}
[PROOF STEP]
using that
[PROOF STATE]
proof (prove)
using this:
\<xi> \<notin> {z..v}
\<xi> \<notin> {w..z} \<inter> F n
\<xi> \<in> F n
u < \<xi>
\<xi> < v

goal (1 subgoal):
 1. \<xi> \<in> {u..w}
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<xi> \<in> {u..w}

goal (1 subgoal):
 1. False
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<xi> \<in> {u..w}
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<xi> \<in> {u..w}

goal (1 subgoal):
 1. False
[PROOF STEP]
by (metis DiffI disjoint_iff_not_equal less_eq_real_def not_le singletonD that(1,2) u(3))
[PROOF STATE]
proof (state)
this:
False

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<lbrakk>?\<xi> \<in> F n; u < ?\<xi>; ?\<xi> < v\<rbrakk> \<Longrightarrow> False

goal (1 subgoal):
 1. open_segment u v \<inter> F n = {}
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
\<lbrakk>?\<xi> \<in> F n; u < ?\<xi>; ?\<xi> < v\<rbrakk> \<Longrightarrow> False

goal (1 subgoal):
 1. open_segment u v \<inter> F n = {}
[PROOF STEP]
have "\<lbrakk>\<xi> \<in> F n; v < \<xi>; \<xi> < u\<rbrakk> \<Longrightarrow> False" for \<xi>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>\<xi> \<in> F n; v < \<xi>; \<xi> < u\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
using \<open>u \<in> {x..w}\<close> \<open>v \<in> {z..y}\<close> \<open>w < z\<close>
[PROOF STATE]
proof (prove)
using this:
u \<in> {x..w}
v \<in> {z..y}
w < z

goal (1 subgoal):
 1. \<lbrakk>\<xi> \<in> F n; v < \<xi>; \<xi> < u\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<lbrakk>?\<xi> \<in> F n; v < ?\<xi>; ?\<xi> < u\<rbrakk> \<Longrightarrow> False

goal (1 subgoal):
 1. open_segment u v \<inter> F n = {}
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
\<lbrakk>?\<xi> \<in> F n; u < ?\<xi>; ?\<xi> < v\<rbrakk> \<Longrightarrow> False
\<lbrakk>?\<xi> \<in> F n; v < ?\<xi>; ?\<xi> < u\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
show "open_segment u v \<inter> F n = {}"
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>?\<xi> \<in> F n; u < ?\<xi>; ?\<xi> < v\<rbrakk> \<Longrightarrow> False
\<lbrakk>?\<xi> \<in> F n; v < ?\<xi>; ?\<xi> < u\<rbrakk> \<Longrightarrow> False

goal (1 subgoal):
 1. open_segment u v \<inter> F n = {}
[PROOF STEP]
by (force simp: open_segment_eq_real_ivl)
[PROOF STATE]
proof (state)
this:
open_segment u v \<inter> F n = {}

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
p u = p v

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
u \<in> {0..1}
v \<in> {0..1}
norm (u - x) < e
norm (v - y) < e
p u = p v

goal (3 subgoals):
 1. \<And>a b. \<lbrakk>a < b; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
 2. \<And>a. \<lbrakk>\<forall>u. a \<in> F u; \<forall>x. a \<in> F x; open_segment a a \<inter> \<Inter> (range F) = {}; p a \<noteq> p a\<rbrakk> \<Longrightarrow> False
 3. \<And>a b. \<lbrakk>\<lbrakk>\<forall>u. b \<in> F u; \<forall>x. a \<in> F x; open_segment b a \<inter> \<Inter> (range F) = {}; p b \<noteq> p a\<rbrakk> \<Longrightarrow> False; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
u \<in> {0..1}
v \<in> {0..1}
norm (u - x) < e
norm (v - y) < e
p u = p v
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
u \<in> {0..1}
v \<in> {0..1}
norm (u - x) < e
norm (v - y) < e
p u = p v

goal (1 subgoal):
 1. False
[PROOF STEP]
using e [of x u] e [of y v] xy
[PROOF STATE]
proof (prove)
using this:
u \<in> {0..1}
v \<in> {0..1}
norm (u - x) < e
norm (v - y) < e
p u = p v
\<lbrakk>x \<in> {0..1}; u \<in> {0..1}; dist u x < e\<rbrakk> \<Longrightarrow> dist (p u) (p x) < norm (p x - p y) / 2
\<lbrakk>y \<in> {0..1}; v \<in> {0..1}; dist v y < e\<rbrakk> \<Longrightarrow> dist (p v) (p y) < norm (p x - p y) / 2
x \<in> {0..1}
y \<in> {0..1}

goal (1 subgoal):
 1. False
[PROOF STEP]
by (metis dist_norm dist_triangle_half_r order_less_irrefl)
[PROOF STATE]
proof (state)
this:
False

goal (2 subgoals):
 1. \<And>a. \<lbrakk>\<forall>u. a \<in> F u; \<forall>x. a \<in> F x; open_segment a a \<inter> \<Inter> (range F) = {}; p a \<noteq> p a\<rbrakk> \<Longrightarrow> False
 2. \<And>a b. \<lbrakk>\<lbrakk>\<forall>u. b \<in> F u; \<forall>x. a \<in> F x; open_segment b a \<inter> \<Inter> (range F) = {}; p b \<noteq> p a\<rbrakk> \<Longrightarrow> False; \<forall>u. a \<in> F u; \<forall>x. b \<in> F x; open_segment a b \<inter> \<Inter> (range F) = {}; p a \<noteq> p b\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
qed (auto simp: open_segment_commute)
[PROOF STATE]
proof (state)
this:
\<lbrakk>\<forall>u. ?x \<in> F u; \<forall>x. ?y \<in> F x; open_segment ?x ?y \<inter> \<Inter> (range F) = {}; p ?x \<noteq> p ?y\<rbrakk> \<Longrightarrow> False

goal (1 subgoal):
 1. \<phi> (\<Inter> (range F))
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<phi> (\<Inter> (range F))
[PROOF STEP]
unfolding \<phi>_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<Inter> (range F) \<subseteq> {0..1} \<and> 0 \<in> \<Inter> (range F) \<and> 1 \<in> \<Inter> (range F) \<and> (\<forall>x\<in>\<Inter> (range F). \<forall>y\<in>\<Inter> (range F). open_segment x y \<inter> \<Inter> (range F) = {} \<longrightarrow> p x = p y)
[PROOF STEP]
by (metis (no_types, opaque_lifting) INT_I Inf_lower2 rangeI that(3) F01 subsetCE pqF)
[PROOF STATE]
proof (state)
this:
\<phi> (\<Inter> (range F))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<lbrakk>\<And>n. closed (?F n); \<And>n. \<phi> (?F n); \<And>n. ?F (Suc n) \<subseteq> ?F n\<rbrakk> \<Longrightarrow> \<phi> (\<Inter> (range ?F))

goal (2 subgoals):
 1. (\<And>T. \<lbrakk>closed T; \<phi> T; \<And>U. \<lbrakk>closed U; \<phi> U\<rbrakk> \<Longrightarrow> \<not> U \<subset> T\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> closed {0..1}
 2. \<And>T. \<lbrakk>\<And>T. \<lbrakk>closed T; \<phi> T; \<And>U. \<lbrakk>closed U; \<phi> U\<rbrakk> \<Longrightarrow> \<not> U \<subset> T\<rbrakk> \<Longrightarrow> thesis; T \<subseteq> {0..1}; closed T; \<phi> T; \<And>U. \<lbrakk>U \<subseteq> {0..1}; closed U; \<phi> U\<rbrakk> \<Longrightarrow> \<not> U \<subset> T\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
show "closed {0..1::real}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. closed {0..1}
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
closed {0..1}

goal (1 subgoal):
 1. \<And>T. \<lbrakk>\<And>T. \<lbrakk>closed T; \<phi> T; \<And>U. \<lbrakk>closed U; \<phi> U\<rbrakk> \<Longrightarrow> \<not> U \<subset> T\<rbrakk> \<Longrightarrow> thesis; T \<subseteq> {0..1}; closed T; \<phi> T; \<And>U. \<lbrakk>U \<subseteq> {0..1}; closed U; \<phi> U\<rbrakk> \<Longrightarrow> \<not> U \<subset> T\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
qed (meson \<phi>_def)
[PROOF STATE]
proof (state)
this:
closed T
\<phi> T
\<lbrakk>closed ?U; \<phi> ?U\<rbrakk> \<Longrightarrow> \<not> ?U \<subset> T

goal (1 subgoal):
 1. (\<And>q. \<lbrakk>arc q; path_image q \<subseteq> path_image p; pathstart q = a; pathfinish q = b\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
closed T
\<phi> T
\<lbrakk>closed ?U; \<phi> ?U\<rbrakk> \<Longrightarrow> \<not> ?U \<subset> T
[PROOF STEP]
have "T \<subseteq> {0..1}" "0 \<in> T" "1 \<in> T"
    and peq: "\<And>x y. \<lbrakk>x \<in> T; y \<in> T; open_segment x y \<inter> T = {}\<rbrakk> \<Longrightarrow> p x = p y"
[PROOF STATE]
proof (prove)
using this:
closed T
\<phi> T
\<lbrakk>closed ?U; \<phi> ?U\<rbrakk> \<Longrightarrow> \<not> ?U \<subset> T

goal (1 subgoal):
 1. (T \<subseteq> {0..1} &&& 0 \<in> T &&& 1 \<in> T) &&& (\<And>x y. \<lbrakk>x \<in> T; y \<in> T; open_segment x y \<inter> T = {}\<rbrakk> \<Longrightarrow> p x = p y)
[PROOF STEP]
unfolding \<phi>_def
[PROOF STATE]
proof (prove)
using this:
closed T
T \<subseteq> {0..1} \<and> 0 \<in> T \<and> 1 \<in> T \<and> (\<forall>x\<in>T. \<forall>y\<in>T. open_segment x y \<inter> T = {} \<longrightarrow> p x = p y)
\<lbrakk>closed ?U; ?U \<subseteq> {0..1} \<and> 0 \<in> ?U \<and> 1 \<in> ?U \<and> (\<forall>x\<in>?U. \<forall>y\<in>?U. open_segment x y \<inter> ?U = {} \<longrightarrow> p x = p y)\<rbrakk> \<Longrightarrow> \<not> ?U \<subset> T

goal (1 subgoal):
 1. (T \<subseteq> {0..1} &&& 0 \<in> T &&& 1 \<in> T) &&& (\<And>x y. \<lbrakk>x \<in> T; y \<in> T; open_segment x y \<inter> T = {}\<rbrakk> \<Longrightarrow> p x = p y)
[PROOF STEP]
by metis+
[PROOF STATE]
proof (state)
this:
T \<subseteq> {0..1}
0 \<in> T
1 \<in> T
\<lbrakk>?x \<in> T; ?y \<in> T; open_segment ?x ?y \<inter> T = {}\<rbrakk> \<Longrightarrow> p ?x = p ?y

goal (1 subgoal):
 1. (\<And>q. \<lbrakk>arc q; path_image q \<subseteq> path_image p; pathstart q = a; pathfinish q = b\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
T \<subseteq> {0..1}
0 \<in> T
1 \<in> T
\<lbrakk>?x \<in> T; ?y \<in> T; open_segment ?x ?y \<inter> T = {}\<rbrakk> \<Longrightarrow> p ?x = p ?y
[PROOF STEP]
have "T \<noteq> {}"
[PROOF STATE]
proof (prove)
using this:
T \<subseteq> {0..1}
0 \<in> T
1 \<in> T
\<lbrakk>?x \<in> T; ?y \<in> T; open_segment ?x ?y \<inter> T = {}\<rbrakk> \<Longrightarrow> p ?x = p ?y

goal (1 subgoal):
 1. T \<noteq> {}
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
T \<noteq> {}

goal (1 subgoal):
 1. (\<And>q. \<lbrakk>arc q; path_image q \<subseteq> path_image p; pathstart q = a; pathfinish q = b\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
define h where "h \<equiv> \<lambda>x. p(SOME y. y \<in> T \<and> open_segment x y \<inter> T = {})"
[PROOF STATE]
proof (state)
this:
h \<equiv> \<lambda>x. p (SOME y. y \<in> T \<and> open_segment x y \<inter> T = {})

goal (1 subgoal):
 1. (\<And>q. \<lbrakk>arc q; path_image q \<subseteq> path_image p; pathstart q = a; pathfinish q = b\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
have "p y = p z" if "y \<in> T" "z \<in> T" and xyT: "open_segment x y \<inter> T = {}" and xzT: "open_segment x z \<inter> T = {}"
    for x y z
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. p y = p z
[PROOF STEP]
proof (cases "x \<in> T")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. x \<in> T \<Longrightarrow> p y = p z
 2. x \<notin> T \<Longrightarrow> p y = p z
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
x \<in> T

goal (2 subgoals):
 1. x \<in> T \<Longrightarrow> p y = p z
 2. x \<notin> T \<Longrightarrow> p y = p z
[PROOF STEP]
with that
[PROOF STATE]
proof (chain)
picking this:
y \<in> T
z \<in> T
open_segment x y \<inter> T = {}
open_segment x z \<inter> T = {}
x \<in> T
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
y \<in> T
z \<in> T
open_segment x y \<inter> T = {}
open_segment x z \<inter> T = {}
x \<in> T

goal (1 subgoal):
 1. p y = p z
[PROOF STEP]
by (metis \<open>\<phi> T\<close> \<phi>_def)
[PROOF STATE]
proof (state)
this:
p y = p z

goal (1 subgoal):
 1. x \<notin> T \<Longrightarrow> p y = p z
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. x \<notin> T \<Longrightarrow> p y = p z
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
x \<notin> T

goal (1 subgoal):
 1. x \<notin> T \<Longrightarrow> p y = p z
[PROOF STEP]
have "insert x (open_segment x y \<union> open_segment x z) \<inter> T = {}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. insert x (open_segment x y \<union> open_segment x z) \<inter> T = {}
[PROOF STEP]
by (metis False Int_Un_distrib2 Int_insert_left Un_empty_right xyT xzT)
[PROOF STATE]
proof (state)
this:
insert x (open_segment x y \<union> open_segment x z) \<inter> T = {}

goal (1 subgoal):
 1. x \<notin> T \<Longrightarrow> p y = p z
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
insert x (open_segment x y \<union> open_segment x z) \<inter> T = {}

goal (1 subgoal):
 1. x \<notin> T \<Longrightarrow> p y = p z
[PROOF STEP]
have "open_segment y z \<inter> T \<subseteq> insert x (open_segment x y \<union> open_segment x z) \<inter> T"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. open_segment y z \<inter> T \<subseteq> insert x (open_segment x y \<union> open_segment x z) \<inter> T
[PROOF STEP]
by (auto simp: open_segment_eq_real_ivl)
[PROOF STATE]
proof (state)
this:
open_segment y z \<inter> T \<subseteq> insert x (open_segment x y \<union> open_segment x z) \<inter> T

goal (1 subgoal):
 1. x \<notin> T \<Longrightarrow> p y = p z
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
insert x (open_segment x y \<union> open_segment x z) \<inter> T = {}
open_segment y z \<inter> T \<subseteq> insert x (open_segment x y \<union> open_segment x z) \<inter> T
[PROOF STEP]
have "open_segment y z \<inter> T = {}"
[PROOF STATE]
proof (prove)
using this:
insert x (open_segment x y \<union> open_segment x z) \<inter> T = {}
open_segment y z \<inter> T \<subseteq> insert x (open_segment x y \<union> open_segment x z) \<inter> T

goal (1 subgoal):
 1. open_segment y z \<inter> T = {}
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
open_segment y z \<inter> T = {}

goal (1 subgoal):
 1. x \<notin> T \<Longrightarrow> p y = p z
[PROOF STEP]
with that peq
[PROOF STATE]
proof (chain)
picking this:
y \<in> T
z \<in> T
open_segment x y \<inter> T = {}
open_segment x z \<inter> T = {}
\<lbrakk>?x \<in> T; ?y \<in> T; open_segment ?x ?y \<inter> T = {}\<rbrakk> \<Longrightarrow> p ?x = p ?y
open_segment y z \<inter> T = {}
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
y \<in> T
z \<in> T
open_segment x y \<inter> T = {}
open_segment x z \<inter> T = {}
\<lbrakk>?x \<in> T; ?y \<in> T; open_segment ?x ?y \<inter> T = {}\<rbrakk> \<Longrightarrow> p ?x = p ?y
open_segment y z \<inter> T = {}

goal (1 subgoal):
 1. p y = p z
[PROOF STEP]
by metis
[PROOF STATE]
proof (state)
this:
p y = p z

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<lbrakk>?y \<in> T; ?z \<in> T; open_segment ?x ?y \<inter> T = {}; open_segment ?x ?z \<inter> T = {}\<rbrakk> \<Longrightarrow> p ?y = p ?z

goal (1 subgoal):
 1. (\<And>q. \<lbrakk>arc q; path_image q \<subseteq> path_image p; pathstart q = a; pathfinish q = b\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<lbrakk>?y \<in> T; ?z \<in> T; open_segment ?x ?y \<inter> T = {}; open_segment ?x ?z \<inter> T = {}\<rbrakk> \<Longrightarrow> p ?y = p ?z
[PROOF STEP]
have h_eq_p_gen: "h x = p y" if "y \<in> T" "open_segment x y \<inter> T = {}" for x y
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>?y \<in> T; ?z \<in> T; open_segment ?x ?y \<inter> T = {}; open_segment ?x ?z \<inter> T = {}\<rbrakk> \<Longrightarrow> p ?y = p ?z

goal (1 subgoal):
 1. h x = p y
[PROOF STEP]
using that
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>?y \<in> T; ?z \<in> T; open_segment ?x ?y \<inter> T = {}; open_segment ?x ?z \<inter> T = {}\<rbrakk> \<Longrightarrow> p ?y = p ?z
y \<in> T
open_segment x y \<inter> T = {}

goal (1 subgoal):
 1. h x = p y
[PROOF STEP]
unfolding h_def
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>?y \<in> T; ?z \<in> T; open_segment ?x ?y \<inter> T = {}; open_segment ?x ?z \<inter> T = {}\<rbrakk> \<Longrightarrow> p ?y = p ?z
y \<in> T
open_segment x y \<inter> T = {}

goal (1 subgoal):
 1. p (SOME y. y \<in> T \<and> open_segment x y \<inter> T = {}) = p y
[PROOF STEP]
by (metis (mono_tags, lifting) some_eq_ex)
[PROOF STATE]
proof (state)
this:
\<lbrakk>?y \<in> T; open_segment ?x ?y \<inter> T = {}\<rbrakk> \<Longrightarrow> h ?x = p ?y

goal (1 subgoal):
 1. (\<And>q. \<lbrakk>arc q; path_image q \<subseteq> path_image p; pathstart q = a; pathfinish q = b\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<lbrakk>?y \<in> T; open_segment ?x ?y \<inter> T = {}\<rbrakk> \<Longrightarrow> h ?x = p ?y
[PROOF STEP]
have h_eq_p: "\<And>x. x \<in> T \<Longrightarrow> h x = p x"
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>?y \<in> T; open_segment ?x ?y \<inter> T = {}\<rbrakk> \<Longrightarrow> h ?x = p ?y

goal (1 subgoal):
 1. \<And>x. x \<in> T \<Longrightarrow> h x = p x
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
?x \<in> T \<Longrightarrow> h ?x = p ?x

goal (1 subgoal):
 1. (\<And>q. \<lbrakk>arc q; path_image q \<subseteq> path_image p; pathstart q = a; pathfinish q = b\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
have disjoint: "\<And>x. \<exists>y. y \<in> T \<and> open_segment x y \<inter> T = {}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>x. \<exists>y. y \<in> T \<and> open_segment x y \<inter> T = {}
[PROOF STEP]
by (meson \<open>T \<noteq> {}\<close> \<open>closed T\<close> segment_to_point_exists)
[PROOF STATE]
proof (state)
this:
\<exists>y. y \<in> T \<and> open_segment ?x y \<inter> T = {}

goal (1 subgoal):
 1. (\<And>q. \<lbrakk>arc q; path_image q \<subseteq> path_image p; pathstart q = a; pathfinish q = b\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
have heq: "h x = h x'" if "open_segment x x' \<inter> T = {}" for x x'
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. h x = h x'
[PROOF STEP]
proof (cases "x \<in> T \<or> x' \<in> T")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. x \<in> T \<or> x' \<in> T \<Longrightarrow> h x = h x'
 2. \<not> (x \<in> T \<or> x' \<in> T) \<Longrightarrow> h x = h x'
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
x \<in> T \<or> x' \<in> T

goal (2 subgoals):
 1. x \<in> T \<or> x' \<in> T \<Longrightarrow> h x = h x'
 2. \<not> (x \<in> T \<or> x' \<in> T) \<Longrightarrow> h x = h x'
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
x \<in> T \<or> x' \<in> T
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
x \<in> T \<or> x' \<in> T

goal (1 subgoal):
 1. h x = h x'
[PROOF STEP]
by (metis h_eq_p h_eq_p_gen open_segment_commute that)
[PROOF STATE]
proof (state)
this:
h x = h x'

goal (1 subgoal):
 1. \<not> (x \<in> T \<or> x' \<in> T) \<Longrightarrow> h x = h x'
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<not> (x \<in> T \<or> x' \<in> T) \<Longrightarrow> h x = h x'
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
\<not> (x \<in> T \<or> x' \<in> T)

goal (1 subgoal):
 1. \<not> (x \<in> T \<or> x' \<in> T) \<Longrightarrow> h x = h x'
[PROOF STEP]
obtain y y' where "y \<in> T" "open_segment x y \<inter> T = {}" "h x = p y"
      "y' \<in> T" "open_segment x' y' \<inter> T = {}" "h x' = p y'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>y y'. \<lbrakk>y \<in> T; open_segment x y \<inter> T = {}; h x = p y; y' \<in> T; open_segment x' y' \<inter> T = {}; h x' = p y'\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by (meson disjoint h_eq_p_gen)
[PROOF STATE]
proof (state)
this:
y \<in> T
open_segment x y \<inter> T = {}
h x = p y
y' \<in> T
open_segment x' y' \<inter> T = {}
h x' = p y'

goal (1 subgoal):
 1. \<not> (x \<in> T \<or> x' \<in> T) \<Longrightarrow> h x = h x'
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
y \<in> T
open_segment x y \<inter> T = {}
h x = p y
y' \<in> T
open_segment x' y' \<inter> T = {}
h x' = p y'

goal (1 subgoal):
 1. \<not> (x \<in> T \<or> x' \<in> T) \<Longrightarrow> h x = h x'
[PROOF STEP]
have "open_segment y y' \<subseteq> (insert x (insert x' (open_segment x y \<union> open_segment x' y' \<union> open_segment x x')))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. open_segment y y' \<subseteq> insert x (insert x' (open_segment x y \<union> open_segment x' y' \<union> open_segment x x'))
[PROOF STEP]
by (auto simp: open_segment_eq_real_ivl)
[PROOF STATE]
proof (state)
this:
open_segment y y' \<subseteq> insert x (insert x' (open_segment x y \<union> open_segment x' y' \<union> open_segment x x'))

goal (1 subgoal):
 1. \<not> (x \<in> T \<or> x' \<in> T) \<Longrightarrow> h x = h x'
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
y \<in> T
open_segment x y \<inter> T = {}
h x = p y
y' \<in> T
open_segment x' y' \<inter> T = {}
h x' = p y'
open_segment y y' \<subseteq> insert x (insert x' (open_segment x y \<union> open_segment x' y' \<union> open_segment x x'))
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
y \<in> T
open_segment x y \<inter> T = {}
h x = p y
y' \<in> T
open_segment x' y' \<inter> T = {}
h x' = p y'
open_segment y y' \<subseteq> insert x (insert x' (open_segment x y \<union> open_segment x' y' \<union> open_segment x x'))

goal (1 subgoal):
 1. h x = h x'
[PROOF STEP]
using False that
[PROOF STATE]
proof (prove)
using this:
y \<in> T
open_segment x y \<inter> T = {}
h x = p y
y' \<in> T
open_segment x' y' \<inter> T = {}
h x' = p y'
open_segment y y' \<subseteq> insert x (insert x' (open_segment x y \<union> open_segment x' y' \<union> open_segment x x'))
\<not> (x \<in> T \<or> x' \<in> T)
open_segment x x' \<inter> T = {}

goal (1 subgoal):
 1. h x = h x'
[PROOF STEP]
by (fastforce simp add: h_eq_p intro!: peq)
[PROOF STATE]
proof (state)
this:
h x = h x'

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
open_segment ?x ?x' \<inter> T = {} \<Longrightarrow> h ?x = h ?x'

goal (1 subgoal):
 1. (\<And>q. \<lbrakk>arc q; path_image q \<subseteq> path_image p; pathstart q = a; pathfinish q = b\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
have "h ` {0..1} homeomorphic {0..1::real}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. h ` {0..1} homeomorphic {0..1}
[PROOF STEP]
proof (rule homeomorphic_monotone_image_interval)
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. continuous_on {0..1} h
 2. \<And>y. connected ({0..1} \<inter> h -` {y})
 3. h 1 \<noteq> h 0
[PROOF STEP]
show "continuous_on {0..1} h"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. continuous_on {0..1} h
[PROOF STEP]
proof (clarsimp simp add: continuous_on_iff)
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x e. \<lbrakk>0 < e; 0 \<le> x; x \<le> 1\<rbrakk> \<Longrightarrow> \<exists>d>0. \<forall>x'\<in>{0..1}. dist x' x < d \<longrightarrow> dist (h x') (h x) < e
[PROOF STEP]
fix u \<epsilon>::real
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x e. \<lbrakk>0 < e; 0 \<le> x; x \<le> 1\<rbrakk> \<Longrightarrow> \<exists>d>0. \<forall>x'\<in>{0..1}. dist x' x < d \<longrightarrow> dist (h x') (h x) < e
[PROOF STEP]
assume "0 < \<epsilon>" "0 \<le> u" "u \<le> 1"
[PROOF STATE]
proof (state)
this:
0 < \<epsilon>
0 \<le> u
u \<le> 1

goal (1 subgoal):
 1. \<And>x e. \<lbrakk>0 < e; 0 \<le> x; x \<le> 1\<rbrakk> \<Longrightarrow> \<exists>d>0. \<forall>x'\<in>{0..1}. dist x' x < d \<longrightarrow> dist (h x') (h x) < e
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
0 < \<epsilon>
0 \<le> u
u \<le> 1
[PROOF STEP]
obtain \<delta> where "\<delta> > 0" and \<delta>: "\<And>v. v \<in> {0..1} \<Longrightarrow> dist v u < \<delta> \<longrightarrow> dist (p v) (p u) < \<epsilon> / 2"
[PROOF STATE]
proof (prove)
using this:
0 < \<epsilon>
0 \<le> u
u \<le> 1

goal (1 subgoal):
 1. (\<And>\<delta>. \<lbrakk>0 < \<delta>; \<And>v. v \<in> {0..1} \<Longrightarrow> dist v u < \<delta> \<longrightarrow> dist (p v) (p u) < \<epsilon> / 2\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
using ucont_p [unfolded uniformly_continuous_on_def]
[PROOF STATE]
proof (prove)
using this:
0 < \<epsilon>
0 \<le> u
u \<le> 1
\<forall>e>0. \<exists>d>0. \<forall>x\<in>{0..1}. \<forall>x'\<in>{0..1}. dist x' x < d \<longrightarrow> dist (p x') (p x) < e

goal (1 subgoal):
 1. (\<And>\<delta>. \<lbrakk>0 < \<delta>; \<And>v. v \<in> {0..1} \<Longrightarrow> dist v u < \<delta> \<longrightarrow> dist (p v) (p u) < \<epsilon> / 2\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by (metis atLeastAtMost_iff half_gt_zero_iff)
[PROOF STATE]
proof (state)
this:
0 < \<delta>
?v \<in> {0..1} \<Longrightarrow> dist ?v u < \<delta> \<longrightarrow> dist (p ?v) (p u) < \<epsilon> / 2

goal (1 subgoal):
 1. \<And>x e. \<lbrakk>0 < e; 0 \<le> x; x \<le> 1\<rbrakk> \<Longrightarrow> \<exists>d>0. \<forall>x'\<in>{0..1}. dist x' x < d \<longrightarrow> dist (h x') (h x) < e
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
0 < \<delta>
?v \<in> {0..1} \<Longrightarrow> dist ?v u < \<delta> \<longrightarrow> dist (p ?v) (p u) < \<epsilon> / 2
[PROOF STEP]
have "dist (h v) (h u) < \<epsilon>" if "v \<in> {0..1}" "dist v u < \<delta>" for v
[PROOF STATE]
proof (prove)
using this:
0 < \<delta>
?v \<in> {0..1} \<Longrightarrow> dist ?v u < \<delta> \<longrightarrow> dist (p ?v) (p u) < \<epsilon> / 2

goal (1 subgoal):
 1. dist (h v) (h u) < \<epsilon>
[PROOF STEP]
proof (cases "open_segment u v \<inter> T = {}")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>0 < \<delta>; \<And>v. v \<in> {0..1} \<Longrightarrow> dist v u < \<delta> \<longrightarrow> dist (p v) (p u) < \<epsilon> / 2; open_segment u v \<inter> T = {}\<rbrakk> \<Longrightarrow> dist (h v) (h u) < \<epsilon>
 2. \<lbrakk>0 < \<delta>; \<And>v. v \<in> {0..1} \<Longrightarrow> dist v u < \<delta> \<longrightarrow> dist (p v) (p u) < \<epsilon> / 2; open_segment u v \<inter> T \<noteq> {}\<rbrakk> \<Longrightarrow> dist (h v) (h u) < \<epsilon>
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
open_segment u v \<inter> T = {}

goal (2 subgoals):
 1. \<lbrakk>0 < \<delta>; \<And>v. v \<in> {0..1} \<Longrightarrow> dist v u < \<delta> \<longrightarrow> dist (p v) (p u) < \<epsilon> / 2; open_segment u v \<inter> T = {}\<rbrakk> \<Longrightarrow> dist (h v) (h u) < \<epsilon>
 2. \<lbrakk>0 < \<delta>; \<And>v. v \<in> {0..1} \<Longrightarrow> dist v u < \<delta> \<longrightarrow> dist (p v) (p u) < \<epsilon> / 2; open_segment u v \<inter> T \<noteq> {}\<rbrakk> \<Longrightarrow> dist (h v) (h u) < \<epsilon>
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
open_segment u v \<inter> T = {}
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
open_segment u v \<inter> T = {}

goal (1 subgoal):
 1. dist (h v) (h u) < \<epsilon>
[PROOF STEP]
using \<open>0 < \<epsilon>\<close> heq
[PROOF STATE]
proof (prove)
using this:
open_segment u v \<inter> T = {}
0 < \<epsilon>
open_segment ?x ?x' \<inter> T = {} \<Longrightarrow> h ?x = h ?x'

goal (1 subgoal):
 1. dist (h v) (h u) < \<epsilon>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
dist (h v) (h u) < \<epsilon>

goal (1 subgoal):
 1. \<lbrakk>0 < \<delta>; \<And>v. v \<in> {0..1} \<Longrightarrow> dist v u < \<delta> \<longrightarrow> dist (p v) (p u) < \<epsilon> / 2; open_segment u v \<inter> T \<noteq> {}\<rbrakk> \<Longrightarrow> dist (h v) (h u) < \<epsilon>
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>0 < \<delta>; \<And>v. v \<in> {0..1} \<Longrightarrow> dist v u < \<delta> \<longrightarrow> dist (p v) (p u) < \<epsilon> / 2; open_segment u v \<inter> T \<noteq> {}\<rbrakk> \<Longrightarrow> dist (h v) (h u) < \<epsilon>
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
open_segment u v \<inter> T \<noteq> {}

goal (1 subgoal):
 1. \<lbrakk>0 < \<delta>; \<And>v. v \<in> {0..1} \<Longrightarrow> dist v u < \<delta> \<longrightarrow> dist (p v) (p u) < \<epsilon> / 2; open_segment u v \<inter> T \<noteq> {}\<rbrakk> \<Longrightarrow> dist (h v) (h u) < \<epsilon>
[PROOF STEP]
have uvT: "closed (closed_segment u v \<inter> T)" "closed_segment u v \<inter> T \<noteq> {}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. closed (closed_segment u v \<inter> T) &&& closed_segment u v \<inter> T \<noteq> {}
[PROOF STEP]
using False open_closed_segment
[PROOF STATE]
proof (prove)
using this:
open_segment u v \<inter> T \<noteq> {}
?u \<in> open_segment ?w ?z \<Longrightarrow> ?u \<in> closed_segment ?w ?z

goal (1 subgoal):
 1. closed (closed_segment u v \<inter> T) &&& closed_segment u v \<inter> T \<noteq> {}
[PROOF STEP]
by (auto simp: \<open>closed T\<close> closed_Int)
[PROOF STATE]
proof (state)
this:
closed (closed_segment u v \<inter> T)
closed_segment u v \<inter> T \<noteq> {}

goal (1 subgoal):
 1. \<lbrakk>0 < \<delta>; \<And>v. v \<in> {0..1} \<Longrightarrow> dist v u < \<delta> \<longrightarrow> dist (p v) (p u) < \<epsilon> / 2; open_segment u v \<inter> T \<noteq> {}\<rbrakk> \<Longrightarrow> dist (h v) (h u) < \<epsilon>
[PROOF STEP]
obtain w where "w \<in> T" and w: "w \<in> closed_segment u v" "open_segment u w \<inter> T = {}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>w. \<lbrakk>w \<in> T; w \<in> closed_segment u v; open_segment u w \<inter> T = {}\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
proof (rule segment_to_point_exists [OF uvT])
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>b. \<lbrakk>\<And>w. \<lbrakk>w \<in> T; w \<in> closed_segment u v; open_segment u w \<inter> T = {}\<rbrakk> \<Longrightarrow> thesis; b \<in> closed_segment u v \<inter> T; open_segment ?a2 b \<inter> (closed_segment u v \<inter> T) = {}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
fix b
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>b. \<lbrakk>\<And>w. \<lbrakk>w \<in> T; w \<in> closed_segment u v; open_segment u w \<inter> T = {}\<rbrakk> \<Longrightarrow> thesis; b \<in> closed_segment u v \<inter> T; open_segment ?a2 b \<inter> (closed_segment u v \<inter> T) = {}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
assume "b \<in> closed_segment u v \<inter> T" "open_segment u b \<inter> (closed_segment u v \<inter> T) = {}"
[PROOF STATE]
proof (state)
this:
b \<in> closed_segment u v \<inter> T
open_segment u b \<inter> (closed_segment u v \<inter> T) = {}

goal (1 subgoal):
 1. \<And>b. \<lbrakk>\<And>w. \<lbrakk>w \<in> T; w \<in> closed_segment u v; open_segment u w \<inter> T = {}\<rbrakk> \<Longrightarrow> thesis; b \<in> closed_segment u v \<inter> T; open_segment ?a2 b \<inter> (closed_segment u v \<inter> T) = {}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
b \<in> closed_segment u v \<inter> T
open_segment u b \<inter> (closed_segment u v \<inter> T) = {}
[PROOF STEP]
show thesis
[PROOF STATE]
proof (prove)
using this:
b \<in> closed_segment u v \<inter> T
open_segment u b \<inter> (closed_segment u v \<inter> T) = {}

goal (1 subgoal):
 1. thesis
[PROOF STEP]
by (metis IntD1 IntD2 ends_in_segment(1) inf.orderE inf_assoc subset_oc_segment that)
[PROOF STATE]
proof (state)
this:
thesis

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
w \<in> T
w \<in> closed_segment u v
open_segment u w \<inter> T = {}

goal (1 subgoal):
 1. \<lbrakk>0 < \<delta>; \<And>v. v \<in> {0..1} \<Longrightarrow> dist v u < \<delta> \<longrightarrow> dist (p v) (p u) < \<epsilon> / 2; open_segment u v \<inter> T \<noteq> {}\<rbrakk> \<Longrightarrow> dist (h v) (h u) < \<epsilon>
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
w \<in> T
w \<in> closed_segment u v
open_segment u w \<inter> T = {}
[PROOF STEP]
have puw: "dist (p u) (p w) < \<epsilon> / 2"
[PROOF STATE]
proof (prove)
using this:
w \<in> T
w \<in> closed_segment u v
open_segment u w \<inter> T = {}

goal (1 subgoal):
 1. dist (p u) (p w) < \<epsilon> / 2
[PROOF STEP]
by (metis (no_types) \<open>T \<subseteq> {0..1}\<close> \<open>dist v u < \<delta>\<close> \<delta> dist_commute dist_in_closed_segment le_less_trans subsetCE)
[PROOF STATE]
proof (state)
this:
dist (p u) (p w) < \<epsilon> / 2

goal (1 subgoal):
 1. \<lbrakk>0 < \<delta>; \<And>v. v \<in> {0..1} \<Longrightarrow> dist v u < \<delta> \<longrightarrow> dist (p v) (p u) < \<epsilon> / 2; open_segment u v \<inter> T \<noteq> {}\<rbrakk> \<Longrightarrow> dist (h v) (h u) < \<epsilon>
[PROOF STEP]
obtain z where "z \<in> T" and z: "z \<in> closed_segment u v" "open_segment v z \<inter> T = {}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>z. \<lbrakk>z \<in> T; z \<in> closed_segment u v; open_segment v z \<inter> T = {}\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
proof (rule segment_to_point_exists [OF uvT])
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>b. \<lbrakk>\<And>z. \<lbrakk>z \<in> T; z \<in> closed_segment u v; open_segment v z \<inter> T = {}\<rbrakk> \<Longrightarrow> thesis; b \<in> closed_segment u v \<inter> T; open_segment ?a2 b \<inter> (closed_segment u v \<inter> T) = {}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
fix b
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>b. \<lbrakk>\<And>z. \<lbrakk>z \<in> T; z \<in> closed_segment u v; open_segment v z \<inter> T = {}\<rbrakk> \<Longrightarrow> thesis; b \<in> closed_segment u v \<inter> T; open_segment ?a2 b \<inter> (closed_segment u v \<inter> T) = {}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
assume "b \<in> closed_segment u v \<inter> T" "open_segment v b \<inter> (closed_segment u v \<inter> T) = {}"
[PROOF STATE]
proof (state)
this:
b \<in> closed_segment u v \<inter> T
open_segment v b \<inter> (closed_segment u v \<inter> T) = {}

goal (1 subgoal):
 1. \<And>b. \<lbrakk>\<And>z. \<lbrakk>z \<in> T; z \<in> closed_segment u v; open_segment v z \<inter> T = {}\<rbrakk> \<Longrightarrow> thesis; b \<in> closed_segment u v \<inter> T; open_segment ?a2 b \<inter> (closed_segment u v \<inter> T) = {}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
b \<in> closed_segment u v \<inter> T
open_segment v b \<inter> (closed_segment u v \<inter> T) = {}
[PROOF STEP]
show thesis
[PROOF STATE]
proof (prove)
using this:
b \<in> closed_segment u v \<inter> T
open_segment v b \<inter> (closed_segment u v \<inter> T) = {}

goal (1 subgoal):
 1. thesis
[PROOF STEP]
by (metis IntD1 IntD2 ends_in_segment(2) inf.orderE inf_assoc subset_oc_segment that)
[PROOF STATE]
proof (state)
this:
thesis

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
z \<in> T
z \<in> closed_segment u v
open_segment v z \<inter> T = {}

goal (1 subgoal):
 1. \<lbrakk>0 < \<delta>; \<And>v. v \<in> {0..1} \<Longrightarrow> dist v u < \<delta> \<longrightarrow> dist (p v) (p u) < \<epsilon> / 2; open_segment u v \<inter> T \<noteq> {}\<rbrakk> \<Longrightarrow> dist (h v) (h u) < \<epsilon>
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
z \<in> T
z \<in> closed_segment u v
open_segment v z \<inter> T = {}
[PROOF STEP]
have "dist (p u) (p z) < \<epsilon> / 2"
[PROOF STATE]
proof (prove)
using this:
z \<in> T
z \<in> closed_segment u v
open_segment v z \<inter> T = {}

goal (1 subgoal):
 1. dist (p u) (p z) < \<epsilon> / 2
[PROOF STEP]
by (metis \<open>T \<subseteq> {0..1}\<close> \<open>dist v u < \<delta>\<close> \<delta> dist_commute dist_in_closed_segment le_less_trans subsetCE)
[PROOF STATE]
proof (state)
this:
dist (p u) (p z) < \<epsilon> / 2

goal (1 subgoal):
 1. \<lbrakk>0 < \<delta>; \<And>v. v \<in> {0..1} \<Longrightarrow> dist v u < \<delta> \<longrightarrow> dist (p v) (p u) < \<epsilon> / 2; open_segment u v \<inter> T \<noteq> {}\<rbrakk> \<Longrightarrow> dist (h v) (h u) < \<epsilon>
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
dist (p u) (p z) < \<epsilon> / 2
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
dist (p u) (p z) < \<epsilon> / 2

goal (1 subgoal):
 1. dist (h v) (h u) < \<epsilon>
[PROOF STEP]
using puw
[PROOF STATE]
proof (prove)
using this:
dist (p u) (p z) < \<epsilon> / 2
dist (p u) (p w) < \<epsilon> / 2

goal (1 subgoal):
 1. dist (h v) (h u) < \<epsilon>
[PROOF STEP]
by (metis (no_types) \<open>w \<in> T\<close> \<open>z \<in> T\<close> dist_commute dist_triangle_half_l h_eq_p_gen w(2) z(2))
[PROOF STATE]
proof (state)
this:
dist (h v) (h u) < \<epsilon>

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<lbrakk>?v \<in> {0..1}; dist ?v u < \<delta>\<rbrakk> \<Longrightarrow> dist (h ?v) (h u) < \<epsilon>

goal (1 subgoal):
 1. \<And>x e. \<lbrakk>0 < e; 0 \<le> x; x \<le> 1\<rbrakk> \<Longrightarrow> \<exists>d>0. \<forall>x'\<in>{0..1}. dist x' x < d \<longrightarrow> dist (h x') (h x) < e
[PROOF STEP]
with \<open>0 < \<delta>\<close>
[PROOF STATE]
proof (chain)
picking this:
0 < \<delta>
\<lbrakk>?v \<in> {0..1}; dist ?v u < \<delta>\<rbrakk> \<Longrightarrow> dist (h ?v) (h u) < \<epsilon>
[PROOF STEP]
show "\<exists>\<delta>>0. \<forall>v\<in>{0..1}. dist v u < \<delta> \<longrightarrow> dist (h v) (h u) < \<epsilon>"
[PROOF STATE]
proof (prove)
using this:
0 < \<delta>
\<lbrakk>?v \<in> {0..1}; dist ?v u < \<delta>\<rbrakk> \<Longrightarrow> dist (h ?v) (h u) < \<epsilon>

goal (1 subgoal):
 1. \<exists>\<delta>>0. \<forall>v\<in>{0..1}. dist v u < \<delta> \<longrightarrow> dist (h v) (h u) < \<epsilon>
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<exists>\<delta>>0. \<forall>v\<in>{0..1}. dist v u < \<delta> \<longrightarrow> dist (h v) (h u) < \<epsilon>

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
continuous_on {0..1} h

goal (2 subgoals):
 1. \<And>y. connected ({0..1} \<inter> h -` {y})
 2. h 1 \<noteq> h 0
[PROOF STEP]
show "connected ({0..1} \<inter> h -` {z})" for z
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. connected ({0..1} \<inter> h -` {z})
[PROOF STEP]
proof (clarsimp simp add: connected_iff_connected_component)
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x y. \<lbrakk>z = h x; h y = h x; 0 \<le> x; x \<le> 1; 0 \<le> y; y \<le> 1\<rbrakk> \<Longrightarrow> connected_component ({0..1} \<inter> h -` {h x}) x y
[PROOF STEP]
fix u v
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x y. \<lbrakk>z = h x; h y = h x; 0 \<le> x; x \<le> 1; 0 \<le> y; y \<le> 1\<rbrakk> \<Longrightarrow> connected_component ({0..1} \<inter> h -` {h x}) x y
[PROOF STEP]
assume huv_eq: "h v = h u" and uv: "0 \<le> u" "u \<le> 1" "0 \<le> v" "v \<le> 1"
[PROOF STATE]
proof (state)
this:
h v = h u
0 \<le> u
u \<le> 1
0 \<le> v
v \<le> 1

goal (1 subgoal):
 1. \<And>x y. \<lbrakk>z = h x; h y = h x; 0 \<le> x; x \<le> 1; 0 \<le> y; y \<le> 1\<rbrakk> \<Longrightarrow> connected_component ({0..1} \<inter> h -` {h x}) x y
[PROOF STEP]
have "\<exists>T. connected T \<and> T \<subseteq> {0..1} \<and> T \<subseteq> h -` {h u} \<and> u \<in> T \<and> v \<in> T"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>T. connected T \<and> T \<subseteq> {0..1} \<and> T \<subseteq> h -` {h u} \<and> u \<in> T \<and> v \<in> T
[PROOF STEP]
proof (intro exI conjI)
[PROOF STATE]
proof (state)
goal (5 subgoals):
 1. connected ?T
 2. ?T \<subseteq> {0..1}
 3. ?T \<subseteq> h -` {h u}
 4. u \<in> ?T
 5. v \<in> ?T
[PROOF STEP]
show "connected (closed_segment u v)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. connected (closed_segment u v)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
connected (closed_segment u v)

goal (4 subgoals):
 1. closed_segment u v \<subseteq> {0..1}
 2. closed_segment u v \<subseteq> h -` {h u}
 3. u \<in> closed_segment u v
 4. v \<in> closed_segment u v
[PROOF STEP]
show "closed_segment u v \<subseteq> {0..1}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. closed_segment u v \<subseteq> {0..1}
[PROOF STEP]
by (simp add: uv closed_segment_eq_real_ivl)
[PROOF STATE]
proof (state)
this:
closed_segment u v \<subseteq> {0..1}

goal (3 subgoals):
 1. closed_segment u v \<subseteq> h -` {h u}
 2. u \<in> closed_segment u v
 3. v \<in> closed_segment u v
[PROOF STEP]
have pxy: "p x = p y"
          if "T \<subseteq> {0..1}" "0 \<in> T" "1 \<in> T" "x \<in> T" "y \<in> T"
          and disjT: "open_segment x y \<inter> (T - open_segment u v) = {}"
          and xynot: "x \<notin> open_segment u v" "y \<notin> open_segment u v"
          for x y
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. p x = p y
[PROOF STEP]
proof (cases "open_segment x y \<inter> open_segment u v = {}")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. open_segment x y \<inter> open_segment u v = {} \<Longrightarrow> p x = p y
 2. open_segment x y \<inter> open_segment u v \<noteq> {} \<Longrightarrow> p x = p y
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
open_segment x y \<inter> open_segment u v = {}

goal (2 subgoals):
 1. open_segment x y \<inter> open_segment u v = {} \<Longrightarrow> p x = p y
 2. open_segment x y \<inter> open_segment u v \<noteq> {} \<Longrightarrow> p x = p y
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
open_segment x y \<inter> open_segment u v = {}
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
open_segment x y \<inter> open_segment u v = {}

goal (1 subgoal):
 1. p x = p y
[PROOF STEP]
by (metis Diff_Int_distrib Diff_empty peq disjT \<open>x \<in> T\<close> \<open>y \<in> T\<close>)
[PROOF STATE]
proof (state)
this:
p x = p y

goal (1 subgoal):
 1. open_segment x y \<inter> open_segment u v \<noteq> {} \<Longrightarrow> p x = p y
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. open_segment x y \<inter> open_segment u v \<noteq> {} \<Longrightarrow> p x = p y
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
open_segment x y \<inter> open_segment u v \<noteq> {}

goal (1 subgoal):
 1. open_segment x y \<inter> open_segment u v \<noteq> {} \<Longrightarrow> p x = p y
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
open_segment x y \<inter> open_segment u v \<noteq> {}
[PROOF STEP]
have "open_segment x u \<union> open_segment y v \<subseteq> open_segment x y - open_segment u v \<or>
                     open_segment y u \<union> open_segment x v \<subseteq> open_segment x y - open_segment u v" (is "?xuyv \<or> ?yuxv")
[PROOF STATE]
proof (prove)
using this:
open_segment x y \<inter> open_segment u v \<noteq> {}

goal (1 subgoal):
 1. open_segment x u \<union> open_segment y v \<subseteq> open_segment x y - open_segment u v \<or> open_segment y u \<union> open_segment x v \<subseteq> open_segment x y - open_segment u v
[PROOF STEP]
using xynot
[PROOF STATE]
proof (prove)
using this:
open_segment x y \<inter> open_segment u v \<noteq> {}
x \<notin> open_segment u v
y \<notin> open_segment u v

goal (1 subgoal):
 1. open_segment x u \<union> open_segment y v \<subseteq> open_segment x y - open_segment u v \<or> open_segment y u \<union> open_segment x v \<subseteq> open_segment x y - open_segment u v
[PROOF STEP]
by (fastforce simp add: open_segment_eq_real_ivl not_le not_less split: if_split_asm)
[PROOF STATE]
proof (state)
this:
open_segment x u \<union> open_segment y v \<subseteq> open_segment x y - open_segment u v \<or> open_segment y u \<union> open_segment x v \<subseteq> open_segment x y - open_segment u v

goal (1 subgoal):
 1. open_segment x y \<inter> open_segment u v \<noteq> {} \<Longrightarrow> p x = p y
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
open_segment x u \<union> open_segment y v \<subseteq> open_segment x y - open_segment u v \<or> open_segment y u \<union> open_segment x v \<subseteq> open_segment x y - open_segment u v
[PROOF STEP]
show "p x = p y"
[PROOF STATE]
proof (prove)
using this:
open_segment x u \<union> open_segment y v \<subseteq> open_segment x y - open_segment u v \<or> open_segment y u \<union> open_segment x v \<subseteq> open_segment x y - open_segment u v

goal (1 subgoal):
 1. p x = p y
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. open_segment x u \<union> open_segment y v \<subseteq> open_segment x y - open_segment u v \<Longrightarrow> p x = p y
 2. open_segment y u \<union> open_segment x v \<subseteq> open_segment x y - open_segment u v \<Longrightarrow> p x = p y
[PROOF STEP]
assume "?xuyv"
[PROOF STATE]
proof (state)
this:
open_segment x u \<union> open_segment y v \<subseteq> open_segment x y - open_segment u v

goal (2 subgoals):
 1. open_segment x u \<union> open_segment y v \<subseteq> open_segment x y - open_segment u v \<Longrightarrow> p x = p y
 2. open_segment y u \<union> open_segment x v \<subseteq> open_segment x y - open_segment u v \<Longrightarrow> p x = p y
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
open_segment x u \<union> open_segment y v \<subseteq> open_segment x y - open_segment u v
[PROOF STEP]
have "open_segment x u \<inter> T = {}" "open_segment y v \<inter> T = {}"
[PROOF STATE]
proof (prove)
using this:
open_segment x u \<union> open_segment y v \<subseteq> open_segment x y - open_segment u v

goal (1 subgoal):
 1. open_segment x u \<inter> T = {} &&& open_segment y v \<inter> T = {}
[PROOF STEP]
using disjT
[PROOF STATE]
proof (prove)
using this:
open_segment x u \<union> open_segment y v \<subseteq> open_segment x y - open_segment u v
open_segment x y \<inter> (T - open_segment u v) = {}

goal (1 subgoal):
 1. open_segment x u \<inter> T = {} &&& open_segment y v \<inter> T = {}
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
open_segment x u \<inter> T = {}
open_segment y v \<inter> T = {}

goal (2 subgoals):
 1. open_segment x u \<union> open_segment y v \<subseteq> open_segment x y - open_segment u v \<Longrightarrow> p x = p y
 2. open_segment y u \<union> open_segment x v \<subseteq> open_segment x y - open_segment u v \<Longrightarrow> p x = p y
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
open_segment x u \<inter> T = {}
open_segment y v \<inter> T = {}
[PROOF STEP]
have "h x = h y"
[PROOF STATE]
proof (prove)
using this:
open_segment x u \<inter> T = {}
open_segment y v \<inter> T = {}

goal (1 subgoal):
 1. h x = h y
[PROOF STEP]
using heq huv_eq
[PROOF STATE]
proof (prove)
using this:
open_segment x u \<inter> T = {}
open_segment y v \<inter> T = {}
open_segment ?x ?x' \<inter> T = {} \<Longrightarrow> h ?x = h ?x'
h v = h u

goal (1 subgoal):
 1. h x = h y
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
h x = h y

goal (2 subgoals):
 1. open_segment x u \<union> open_segment y v \<subseteq> open_segment x y - open_segment u v \<Longrightarrow> p x = p y
 2. open_segment y u \<union> open_segment x v \<subseteq> open_segment x y - open_segment u v \<Longrightarrow> p x = p y
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
h x = h y
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
h x = h y

goal (1 subgoal):
 1. p x = p y
[PROOF STEP]
using h_eq_p \<open>x \<in> T\<close> \<open>y \<in> T\<close>
[PROOF STATE]
proof (prove)
using this:
h x = h y
?x \<in> T \<Longrightarrow> h ?x = p ?x
x \<in> T
y \<in> T

goal (1 subgoal):
 1. p x = p y
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
p x = p y

goal (1 subgoal):
 1. open_segment y u \<union> open_segment x v \<subseteq> open_segment x y - open_segment u v \<Longrightarrow> p x = p y
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. open_segment y u \<union> open_segment x v \<subseteq> open_segment x y - open_segment u v \<Longrightarrow> p x = p y
[PROOF STEP]
assume "?yuxv"
[PROOF STATE]
proof (state)
this:
open_segment y u \<union> open_segment x v \<subseteq> open_segment x y - open_segment u v

goal (1 subgoal):
 1. open_segment y u \<union> open_segment x v \<subseteq> open_segment x y - open_segment u v \<Longrightarrow> p x = p y
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
open_segment y u \<union> open_segment x v \<subseteq> open_segment x y - open_segment u v
[PROOF STEP]
have "open_segment y u \<inter> T = {}" "open_segment x v \<inter> T = {}"
[PROOF STATE]
proof (prove)
using this:
open_segment y u \<union> open_segment x v \<subseteq> open_segment x y - open_segment u v

goal (1 subgoal):
 1. open_segment y u \<inter> T = {} &&& open_segment x v \<inter> T = {}
[PROOF STEP]
using disjT
[PROOF STATE]
proof (prove)
using this:
open_segment y u \<union> open_segment x v \<subseteq> open_segment x y - open_segment u v
open_segment x y \<inter> (T - open_segment u v) = {}

goal (1 subgoal):
 1. open_segment y u \<inter> T = {} &&& open_segment x v \<inter> T = {}
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
open_segment y u \<inter> T = {}
open_segment x v \<inter> T = {}

goal (1 subgoal):
 1. open_segment y u \<union> open_segment x v \<subseteq> open_segment x y - open_segment u v \<Longrightarrow> p x = p y
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
open_segment y u \<inter> T = {}
open_segment x v \<inter> T = {}
[PROOF STEP]
have "h x = h y"
[PROOF STATE]
proof (prove)
using this:
open_segment y u \<inter> T = {}
open_segment x v \<inter> T = {}

goal (1 subgoal):
 1. h x = h y
[PROOF STEP]
using heq [of y u]  heq [of x v] huv_eq
[PROOF STATE]
proof (prove)
using this:
open_segment y u \<inter> T = {}
open_segment x v \<inter> T = {}
open_segment y u \<inter> T = {} \<Longrightarrow> h y = h u
open_segment x v \<inter> T = {} \<Longrightarrow> h x = h v
h v = h u

goal (1 subgoal):
 1. h x = h y
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
h x = h y

goal (1 subgoal):
 1. open_segment y u \<union> open_segment x v \<subseteq> open_segment x y - open_segment u v \<Longrightarrow> p x = p y
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
h x = h y
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
h x = h y

goal (1 subgoal):
 1. p x = p y
[PROOF STEP]
using h_eq_p \<open>x \<in> T\<close> \<open>y \<in> T\<close>
[PROOF STATE]
proof (prove)
using this:
h x = h y
?x \<in> T \<Longrightarrow> h ?x = p ?x
x \<in> T
y \<in> T

goal (1 subgoal):
 1. p x = p y
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
p x = p y

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
p x = p y

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<lbrakk>T \<subseteq> {0..1}; 0 \<in> T; 1 \<in> T; ?x \<in> T; ?y \<in> T; open_segment ?x ?y \<inter> (T - open_segment u v) = {}; ?x \<notin> open_segment u v; ?y \<notin> open_segment u v\<rbrakk> \<Longrightarrow> p ?x = p ?y

goal (3 subgoals):
 1. closed_segment u v \<subseteq> h -` {h u}
 2. u \<in> closed_segment u v
 3. v \<in> closed_segment u v
[PROOF STEP]
have "\<not> T - open_segment u v \<subset> T"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<not> T - open_segment u v \<subset> T
[PROOF STEP]
proof (rule T)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. closed (T - open_segment u v)
 2. \<phi> (T - open_segment u v)
[PROOF STEP]
show "closed (T - open_segment u v)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. closed (T - open_segment u v)
[PROOF STEP]
by (simp add: closed_Diff [OF \<open>closed T\<close>] open_segment_eq_real_ivl)
[PROOF STATE]
proof (state)
this:
closed (T - open_segment u v)

goal (1 subgoal):
 1. \<phi> (T - open_segment u v)
[PROOF STEP]
have "0 \<notin> open_segment u v" "1 \<notin> open_segment u v"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. 0 \<notin> open_segment u v &&& 1 \<notin> open_segment u v
[PROOF STEP]
using open_segment_eq_real_ivl uv
[PROOF STATE]
proof (prove)
using this:
open_segment ?a ?b = (if ?a \<le> ?b then {?a<..<?b} else {?b<..<?a})
0 \<le> u
u \<le> 1
0 \<le> v
v \<le> 1

goal (1 subgoal):
 1. 0 \<notin> open_segment u v &&& 1 \<notin> open_segment u v
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
0 \<notin> open_segment u v
1 \<notin> open_segment u v

goal (1 subgoal):
 1. \<phi> (T - open_segment u v)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
0 \<notin> open_segment u v
1 \<notin> open_segment u v
[PROOF STEP]
show "\<phi> (T - open_segment u v)"
[PROOF STATE]
proof (prove)
using this:
0 \<notin> open_segment u v
1 \<notin> open_segment u v

goal (1 subgoal):
 1. \<phi> (T - open_segment u v)
[PROOF STEP]
using \<open>T \<subseteq> {0..1}\<close> \<open>0 \<in> T\<close> \<open>1 \<in> T\<close>
[PROOF STATE]
proof (prove)
using this:
0 \<notin> open_segment u v
1 \<notin> open_segment u v
T \<subseteq> {0..1}
0 \<in> T
1 \<in> T

goal (1 subgoal):
 1. \<phi> (T - open_segment u v)
[PROOF STEP]
by (auto simp: \<phi>_def) (meson peq pxy)
[PROOF STATE]
proof (state)
this:
\<phi> (T - open_segment u v)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<not> T - open_segment u v \<subset> T

goal (3 subgoals):
 1. closed_segment u v \<subseteq> h -` {h u}
 2. u \<in> closed_segment u v
 3. v \<in> closed_segment u v
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<not> T - open_segment u v \<subset> T
[PROOF STEP]
have "open_segment u v \<inter> T = {}"
[PROOF STATE]
proof (prove)
using this:
\<not> T - open_segment u v \<subset> T

goal (1 subgoal):
 1. open_segment u v \<inter> T = {}
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
open_segment u v \<inter> T = {}

goal (3 subgoals):
 1. closed_segment u v \<subseteq> h -` {h u}
 2. u \<in> closed_segment u v
 3. v \<in> closed_segment u v
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
open_segment u v \<inter> T = {}
[PROOF STEP]
show "closed_segment u v \<subseteq> h -` {h u}"
[PROOF STATE]
proof (prove)
using this:
open_segment u v \<inter> T = {}

goal (1 subgoal):
 1. closed_segment u v \<subseteq> h -` {h u}
[PROOF STEP]
by (force intro: heq simp: open_segment_eq_real_ivl closed_segment_eq_real_ivl split: if_split_asm)+
[PROOF STATE]
proof (state)
this:
closed_segment u v \<subseteq> h -` {h u}

goal (2 subgoals):
 1. u \<in> closed_segment u v
 2. v \<in> closed_segment u v
[PROOF STEP]
qed auto
[PROOF STATE]
proof (state)
this:
\<exists>T. connected T \<and> T \<subseteq> {0..1} \<and> T \<subseteq> h -` {h u} \<and> u \<in> T \<and> v \<in> T

goal (1 subgoal):
 1. \<And>x y. \<lbrakk>z = h x; h y = h x; 0 \<le> x; x \<le> 1; 0 \<le> y; y \<le> 1\<rbrakk> \<Longrightarrow> connected_component ({0..1} \<inter> h -` {h x}) x y
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<exists>T. connected T \<and> T \<subseteq> {0..1} \<and> T \<subseteq> h -` {h u} \<and> u \<in> T \<and> v \<in> T
[PROOF STEP]
show "connected_component ({0..1} \<inter> h -` {h u}) u v"
[PROOF STATE]
proof (prove)
using this:
\<exists>T. connected T \<and> T \<subseteq> {0..1} \<and> T \<subseteq> h -` {h u} \<and> u \<in> T \<and> v \<in> T

goal (1 subgoal):
 1. connected_component ({0..1} \<inter> h -` {h u}) u v
[PROOF STEP]
by (simp add: connected_component_def)
[PROOF STATE]
proof (state)
this:
connected_component ({0..1} \<inter> h -` {h u}) u v

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
connected ({0..1} \<inter> h -` {?z})

goal (1 subgoal):
 1. h 1 \<noteq> h 0
[PROOF STEP]
show "h 1 \<noteq> h 0"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. h 1 \<noteq> h 0
[PROOF STEP]
by (metis \<open>\<phi> T\<close> \<phi>_def a \<open>a \<noteq> b\<close> b h_eq_p pathfinish_def pathstart_def)
[PROOF STATE]
proof (state)
this:
h 1 \<noteq> h 0

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
h ` {0..1} homeomorphic {0..1}

goal (1 subgoal):
 1. (\<And>q. \<lbrakk>arc q; path_image q \<subseteq> path_image p; pathstart q = a; pathfinish q = b\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
h ` {0..1} homeomorphic {0..1}
[PROOF STEP]
obtain f and g :: "real \<Rightarrow> 'a"
    where gfeq: "(\<forall>x\<in>h ` {0..1}. (g(f x) = x))" and fhim: "f ` h ` {0..1} = {0..1}" and contf: "continuous_on (h ` {0..1}) f"
      and fgeq: "(\<forall>y\<in>{0..1}. (f(g y) = y))" and pag: "path_image g = h ` {0..1}" and contg: "continuous_on {0..1} g"
[PROOF STATE]
proof (prove)
using this:
h ` {0..1} homeomorphic {0..1}

goal (1 subgoal):
 1. (\<And>g f. \<lbrakk>\<forall>x\<in>h ` {0..1}. g (f x) = x; f ` h ` {0..1} = {0..1}; continuous_on (h ` {0..1}) f; \<forall>y\<in>{0..1}. f (g y) = y; path_image g = h ` {0..1}; continuous_on {0..1} g\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by (auto simp: homeomorphic_def homeomorphism_def path_image_def)
[PROOF STATE]
proof (state)
this:
\<forall>x\<in>h ` {0..1}. g (f x) = x
f ` h ` {0..1} = {0..1}
continuous_on (h ` {0..1}) f
\<forall>y\<in>{0..1}. f (g y) = y
path_image g = h ` {0..1}
continuous_on {0..1} g

goal (1 subgoal):
 1. (\<And>q. \<lbrakk>arc q; path_image q \<subseteq> path_image p; pathstart q = a; pathfinish q = b\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<forall>x\<in>h ` {0..1}. g (f x) = x
f ` h ` {0..1} = {0..1}
continuous_on (h ` {0..1}) f
\<forall>y\<in>{0..1}. f (g y) = y
path_image g = h ` {0..1}
continuous_on {0..1} g
[PROOF STEP]
have "arc g"
[PROOF STATE]
proof (prove)
using this:
\<forall>x\<in>h ` {0..1}. g (f x) = x
f ` h ` {0..1} = {0..1}
continuous_on (h ` {0..1}) f
\<forall>y\<in>{0..1}. f (g y) = y
path_image g = h ` {0..1}
continuous_on {0..1} g

goal (1 subgoal):
 1. arc g
[PROOF STEP]
by (metis arc_def path_def inj_on_def)
[PROOF STATE]
proof (state)
this:
arc g

goal (1 subgoal):
 1. (\<And>q. \<lbrakk>arc q; path_image q \<subseteq> path_image p; pathstart q = a; pathfinish q = b\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
obtain u v where "u \<in> {0..1}" "a = g u" "v \<in> {0..1}" "b = g v"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>u v. \<lbrakk>u \<in> {0..1}; a = g u; v \<in> {0..1}; b = g v\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by (metis (mono_tags, opaque_lifting) \<open>\<phi> T\<close> \<phi>_def a b fhim gfeq h_eq_p imageI path_image_def pathfinish_def pathfinish_in_path_image pathstart_def pathstart_in_path_image)
[PROOF STATE]
proof (state)
this:
u \<in> {0..1}
a = g u
v \<in> {0..1}
b = g v

goal (1 subgoal):
 1. (\<And>q. \<lbrakk>arc q; path_image q \<subseteq> path_image p; pathstart q = a; pathfinish q = b\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
u \<in> {0..1}
a = g u
v \<in> {0..1}
b = g v
[PROOF STEP]
have "a \<in> path_image g" "b \<in> path_image g"
[PROOF STATE]
proof (prove)
using this:
u \<in> {0..1}
a = g u
v \<in> {0..1}
b = g v

goal (1 subgoal):
 1. a \<in> path_image g &&& b \<in> path_image g
[PROOF STEP]
using path_image_def
[PROOF STATE]
proof (prove)
using this:
u \<in> {0..1}
a = g u
v \<in> {0..1}
b = g v
path_image ?g = ?g ` {0..1}

goal (1 subgoal):
 1. a \<in> path_image g &&& b \<in> path_image g
[PROOF STEP]
by blast+
[PROOF STATE]
proof (state)
this:
a \<in> path_image g
b \<in> path_image g

goal (1 subgoal):
 1. (\<And>q. \<lbrakk>arc q; path_image q \<subseteq> path_image p; pathstart q = a; pathfinish q = b\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
have ph: "path_image h \<subseteq> path_image p"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. path_image h \<subseteq> path_image p
[PROOF STEP]
by (metis image_mono image_subset_iff path_image_def disjoint h_eq_p_gen \<open>T \<subseteq> {0..1}\<close>)
[PROOF STATE]
proof (state)
this:
path_image h \<subseteq> path_image p

goal (1 subgoal):
 1. (\<And>q. \<lbrakk>arc q; path_image q \<subseteq> path_image p; pathstart q = a; pathfinish q = b\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. thesis
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. arc ?q
 2. path_image ?q \<subseteq> path_image p
 3. pathstart ?q = a
 4. pathfinish ?q = b
[PROOF STEP]
show "pathstart (subpath u v g) = a" "pathfinish (subpath u v g) = b"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. pathstart (subpath u v g) = a &&& pathfinish (subpath u v g) = b
[PROOF STEP]
by (simp_all add: \<open>a = g u\<close> \<open>b = g v\<close>)
[PROOF STATE]
proof (state)
this:
pathstart (subpath u v g) = a
pathfinish (subpath u v g) = b

goal (2 subgoals):
 1. arc (subpath u v g)
 2. path_image (subpath u v g) \<subseteq> path_image p
[PROOF STEP]
show "path_image (subpath u v g) \<subseteq> path_image p"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. path_image (subpath u v g) \<subseteq> path_image p
[PROOF STEP]
by (metis \<open>u \<in> {0..1}\<close> \<open>v \<in> {0..1}\<close> order_trans pag path_image_def path_image_subpath_subset ph)
[PROOF STATE]
proof (state)
this:
path_image (subpath u v g) \<subseteq> path_image p

goal (1 subgoal):
 1. arc (subpath u v g)
[PROOF STEP]
show "arc (subpath u v g)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. arc (subpath u v g)
[PROOF STEP]
using \<open>arc g\<close> \<open>a = g u\<close> \<open>b = g v\<close> \<open>u \<in> {0..1}\<close> \<open>v \<in> {0..1}\<close> arc_subpath_arc \<open>a \<noteq> b\<close>
[PROOF STATE]
proof (prove)
using this:
arc g
a = g u
b = g v
u \<in> {0..1}
v \<in> {0..1}
\<lbrakk>arc ?g; ?u \<in> {0..1}; ?v \<in> {0..1}; ?u \<noteq> ?v\<rbrakk> \<Longrightarrow> arc (subpath ?u ?v ?g)
a \<noteq> b

goal (1 subgoal):
 1. arc (subpath u v g)
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
arc (subpath u v g)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
thesis

goal:
No subgoals!
[PROOF STEP]
qed