src/HOL/Analysis/Abstract_Topology_2.thy
author paulson <lp15@cam.ac.uk>
Thu, 17 Apr 2025 22:57:26 +0100
changeset 82522 62afd98e3f3e
parent 82520 1b17f0a41aa3
permissions -rw-r--r--
more tidying
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
     1
(*  Author:     L C Paulson, University of Cambridge
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
     2
    Author:     Amine Chaieb, University of Cambridge
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
     3
    Author:     Robert Himmelmann, TU Muenchen
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
     4
    Author:     Brian Huffman, Portland State University
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
     5
*)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
     6
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
     7
section \<open>Abstract Topology 2\<close>
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
     8
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
     9
theory Abstract_Topology_2
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    10
  imports
78256
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
    11
    Elementary_Topology Abstract_Topology Continuum_Not_Denumerable
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    12
    "HOL-Library.Indicator_Function"
78250
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
    13
    "HOL-Library.Equipollence"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    14
begin
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    15
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    16
text \<open>Combination of Elementary and Abstract Topology\<close>
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    17
72225
341b15d092f2 quite a bit of tidying
paulson <lp15@cam.ac.uk>
parents: 71842
diff changeset
    18
lemma approachable_lt_le2: 
78685
07c35dec9dac A few new or simplified proofs
paulson <lp15@cam.ac.uk>
parents: 78336
diff changeset
    19
  "(\<exists>(d::real) > 0. \<forall>x. Q x \<longrightarrow> f x < d \<longrightarrow> P x) \<longleftrightarrow> (\<exists>d>0. \<forall>x. f x \<le> d \<longrightarrow> Q x \<longrightarrow> P x)"
07c35dec9dac A few new or simplified proofs
paulson <lp15@cam.ac.uk>
parents: 78336
diff changeset
    20
  by (meson dense less_eq_real_def order_le_less_trans)
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    21
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    22
lemma triangle_lemma:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    23
  fixes x y z :: real
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    24
  assumes x: "0 \<le> x"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    25
    and y: "0 \<le> y"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    26
    and z: "0 \<le> z"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    27
    and xy: "x\<^sup>2 \<le> y\<^sup>2 + z\<^sup>2"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    28
  shows "x \<le> y + z"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    29
proof -
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    30
  have "y\<^sup>2 + z\<^sup>2 \<le> y\<^sup>2 + 2 * y * z + z\<^sup>2"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    31
    using z y by simp
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    32
  with xy have th: "x\<^sup>2 \<le> (y + z)\<^sup>2"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    33
    by (simp add: power2_eq_square field_simps)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    34
  from y z have yz: "y + z \<ge> 0"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    35
    by arith
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    36
  from power2_le_imp_le[OF th yz] show ?thesis .
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    37
qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    38
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    39
lemma isCont_indicator:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    40
  fixes x :: "'a::t2_space"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    41
  shows "isCont (indicator A :: 'a \<Rightarrow> real) x = (x \<notin> frontier A)"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    42
proof auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    43
  fix x
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    44
  assume cts_at: "isCont (indicator A :: 'a \<Rightarrow> real) x" and fr: "x \<in> frontier A"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    45
  with continuous_at_open have 1: "\<forall>V::real set. open V \<and> indicator A x \<in> V \<longrightarrow>
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    46
    (\<exists>U::'a set. open U \<and> x \<in> U \<and> (\<forall>y\<in>U. indicator A y \<in> V))" by auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    47
  show False
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    48
  proof (cases "x \<in> A")
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    49
    assume x: "x \<in> A"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    50
    hence "indicator A x \<in> ({0<..<2} :: real set)" by simp
74362
0135a0c77b64 tuned proofs --- avoid 'guess';
wenzelm
parents: 73932
diff changeset
    51
    with 1 obtain U where U: "open U" "x \<in> U" "\<forall>y\<in>U. indicator A y \<in> ({0<..<2} :: real set)"
0135a0c77b64 tuned proofs --- avoid 'guess';
wenzelm
parents: 73932
diff changeset
    52
      using open_greaterThanLessThan by metis
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    53
    hence "\<forall>y\<in>U. indicator A y > (0::real)"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    54
      unfolding greaterThanLessThan_def by auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    55
    hence "U \<subseteq> A" using indicator_eq_0_iff by force
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    56
    hence "x \<in> interior A" using U interiorI by auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    57
    thus ?thesis using fr unfolding frontier_def by simp
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    58
  next
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    59
    assume x: "x \<notin> A"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    60
    hence "indicator A x \<in> ({-1<..<1} :: real set)" by simp
74362
0135a0c77b64 tuned proofs --- avoid 'guess';
wenzelm
parents: 73932
diff changeset
    61
    with 1 obtain U where U: "open U" "x \<in> U" "\<forall>y\<in>U. indicator A y \<in> ({-1<..<1} :: real set)"
0135a0c77b64 tuned proofs --- avoid 'guess';
wenzelm
parents: 73932
diff changeset
    62
      using 1 open_greaterThanLessThan by metis
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    63
    hence "\<forall>y\<in>U. indicator A y < (1::real)"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    64
      unfolding greaterThanLessThan_def by auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    65
    hence "U \<subseteq> -A" by auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    66
    hence "x \<in> interior (-A)" using U interiorI by auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    67
    thus ?thesis using fr interior_complement unfolding frontier_def by auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    68
  qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    69
next
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    70
  assume nfr: "x \<notin> frontier A"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    71
  hence "x \<in> interior A \<or> x \<in> interior (-A)"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    72
    by (auto simp: frontier_def closure_interior)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    73
  thus "isCont ((indicator A)::'a \<Rightarrow> real) x"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    74
  proof
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    75
    assume int: "x \<in> interior A"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    76
    then obtain U where U: "open U" "x \<in> U" "U \<subseteq> A" unfolding interior_def by auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    77
    hence "\<forall>y\<in>U. indicator A y = (1::real)" unfolding indicator_def by auto
71172
nipkow
parents: 70178
diff changeset
    78
    hence "continuous_on U (indicator A)" by (simp add: indicator_eq_1_iff)
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    79
    thus ?thesis using U continuous_on_eq_continuous_at by auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    80
  next
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    81
    assume ext: "x \<in> interior (-A)"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    82
    then obtain U where U: "open U" "x \<in> U" "U \<subseteq> -A" unfolding interior_def by auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    83
    then have "continuous_on U (indicator A)"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    84
      using continuous_on_topological by (auto simp: subset_iff)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    85
    thus ?thesis using U continuous_on_eq_continuous_at by auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    86
  qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    87
qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    88
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
    89
lemma islimpt_closure:
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
    90
  "\<lbrakk>S \<subseteq> T; \<And>x. \<lbrakk>x islimpt S; x \<in> T\<rbrakk> \<Longrightarrow> x \<in> S\<rbrakk> \<Longrightarrow> S = T \<inter> closure S"
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
    91
  using closure_def by fastforce
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
    92
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
    93
lemma closedin_limpt:
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
    94
  "closedin (top_of_set T) S \<longleftrightarrow> S \<subseteq> T \<and> (\<forall>x. x islimpt S \<and> x \<in> T \<longrightarrow> x \<in> S)"
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
    95
proof -
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
    96
  have "\<And>U x. \<lbrakk>closed U; S = T \<inter> U; x islimpt S; x \<in> T\<rbrakk> \<Longrightarrow> x \<in> S"
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
    97
    by (meson IntI closed_limpt inf_le2 islimpt_subset)
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
    98
  then show ?thesis
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
    99
    by (metis closed_closure closedin_closed closedin_imp_subset islimpt_closure)
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   100
qed
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   101
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   102
lemma closedin_closed_eq: "closed S \<Longrightarrow> closedin (top_of_set S) T \<longleftrightarrow> closed T \<and> T \<subseteq> S"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   103
  by (meson closedin_limpt closed_subset closedin_closed_trans)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   104
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   105
lemma connected_closed_set:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   106
   "closed S
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   107
    \<Longrightarrow> connected S \<longleftrightarrow> (\<nexists>A B. closed A \<and> closed B \<and> A \<noteq> {} \<and> B \<noteq> {} \<and> A \<union> B = S \<and> A \<inter> B = {})"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   108
  unfolding connected_closedin_eq closedin_closed_eq connected_closedin_eq by blast
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   109
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   110
text \<open>If a connnected set is written as the union of two nonempty closed sets, 
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   111
  then these sets have to intersect.\<close>
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   112
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   113
lemma connected_as_closed_union:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   114
  assumes "connected C" "C = A \<union> B" "closed A" "closed B" "A \<noteq> {}" "B \<noteq> {}"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   115
  shows "A \<inter> B \<noteq> {}"
78685
07c35dec9dac A few new or simplified proofs
paulson <lp15@cam.ac.uk>
parents: 78336
diff changeset
   116
  by (metis assms closed_Un connected_closed_set)
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   117
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   118
lemma closedin_subset_trans:
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   119
  "closedin (top_of_set U) S \<Longrightarrow> S \<subseteq> T \<Longrightarrow> T \<subseteq> U \<Longrightarrow>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   120
    closedin (top_of_set T) S"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   121
  by (meson closedin_limpt subset_iff)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   122
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   123
lemma openin_subset_trans:
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   124
  "openin (top_of_set U) S \<Longrightarrow> S \<subseteq> T \<Longrightarrow> T \<subseteq> U \<Longrightarrow>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   125
    openin (top_of_set T) S"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   126
  by (auto simp: openin_open)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   127
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   128
lemma closedin_compact:
78685
07c35dec9dac A few new or simplified proofs
paulson <lp15@cam.ac.uk>
parents: 78336
diff changeset
   129
  "\<lbrakk>compact S; closedin (top_of_set S) T\<rbrakk> \<Longrightarrow> compact T"
07c35dec9dac A few new or simplified proofs
paulson <lp15@cam.ac.uk>
parents: 78336
diff changeset
   130
  by (metis closedin_closed compact_Int_closed)
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   131
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   132
lemma closedin_compact_eq:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   133
  fixes S :: "'a::t2_space set"
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   134
  shows "compact S \<Longrightarrow> (closedin (top_of_set S) T \<longleftrightarrow> compact T \<and> T \<subseteq> S)"
78685
07c35dec9dac A few new or simplified proofs
paulson <lp15@cam.ac.uk>
parents: 78336
diff changeset
   135
  by (metis closedin_imp_subset closedin_compact closed_subset compact_imp_closed)
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   136
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   137
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   138
subsection \<open>Closure\<close>
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   139
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   140
lemma euclidean_closure_of [simp]: "euclidean closure_of S = closure S"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   141
  by (auto simp: closure_of_def closure_def islimpt_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   142
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   143
lemma closure_openin_Int_closure:
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   144
  assumes ope: "openin (top_of_set U) S" and "T \<subseteq> U"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   145
  shows "closure(S \<inter> closure T) = closure(S \<inter> T)"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   146
proof
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   147
  obtain V where "open V" and S: "S = U \<inter> V"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   148
    using ope using openin_open by metis
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   149
  show "closure (S \<inter> closure T) \<subseteq> closure (S \<inter> T)"
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   150
    unfolding S
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   151
  proof
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   152
      fix x
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   153
      assume "x \<in> closure (U \<inter> V \<inter> closure T)"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   154
      then have "V \<inter> closure T \<subseteq> A \<Longrightarrow> x \<in> closure A" for A
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   155
          by (metis closure_mono subsetD inf.coboundedI2 inf_assoc)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   156
      then have "x \<in> closure (T \<inter> V)"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   157
         by (metis \<open>open V\<close> closure_closure inf_commute open_Int_closure_subset)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   158
      then show "x \<in> closure (U \<inter> V \<inter> T)"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   159
        by (metis \<open>T \<subseteq> U\<close> inf.absorb_iff2 inf_assoc inf_commute)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   160
    qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   161
next
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   162
  show "closure (S \<inter> T) \<subseteq> closure (S \<inter> closure T)"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   163
    by (meson Int_mono closure_mono closure_subset order_refl)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   164
qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   165
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   166
corollary infinite_openin:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   167
  fixes S :: "'a :: t1_space set"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   168
  shows "\<lbrakk>openin (top_of_set U) S; x \<in> S; x islimpt U\<rbrakk> \<Longrightarrow> infinite S"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   169
  by (clarsimp simp add: openin_open islimpt_eq_acc_point inf_commute)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   170
69622
003475955593 moved generalized lemmas
immler
parents: 69616
diff changeset
   171
lemma closure_Int_ballI:
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   172
  assumes "\<And>U. \<lbrakk>openin (top_of_set S) U; U \<noteq> {}\<rbrakk> \<Longrightarrow> T \<inter> U \<noteq> {}"
69622
003475955593 moved generalized lemmas
immler
parents: 69616
diff changeset
   173
  shows "S \<subseteq> closure T"
003475955593 moved generalized lemmas
immler
parents: 69616
diff changeset
   174
proof (clarsimp simp: closure_iff_nhds_not_empty)
003475955593 moved generalized lemmas
immler
parents: 69616
diff changeset
   175
  fix x and A and V
003475955593 moved generalized lemmas
immler
parents: 69616
diff changeset
   176
  assume "x \<in> S" "V \<subseteq> A" "open V" "x \<in> V" "T \<inter> A = {}"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   177
  then have "openin (top_of_set S) (A \<inter> V \<inter> S)"
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   178
    by (simp add: inf_absorb2 openin_subtopology_Int)
69622
003475955593 moved generalized lemmas
immler
parents: 69616
diff changeset
   179
  moreover have "A \<inter> V \<inter> S \<noteq> {}" using \<open>x \<in> V\<close> \<open>V \<subseteq> A\<close> \<open>x \<in> S\<close>
003475955593 moved generalized lemmas
immler
parents: 69616
diff changeset
   180
    by auto
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   181
  ultimately show False
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   182
    using \<open>T \<inter> A = {}\<close> assms by fastforce
69622
003475955593 moved generalized lemmas
immler
parents: 69616
diff changeset
   183
qed
003475955593 moved generalized lemmas
immler
parents: 69616
diff changeset
   184
003475955593 moved generalized lemmas
immler
parents: 69616
diff changeset
   185
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   186
subsection \<open>Frontier\<close>
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   187
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   188
lemma euclidean_interior_of [simp]: "euclidean interior_of S = interior S"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   189
  by (auto simp: interior_of_def interior_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   190
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   191
lemma euclidean_frontier_of [simp]: "euclidean frontier_of S = frontier S"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   192
  by (auto simp: frontier_of_def frontier_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   193
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   194
lemma connected_Int_frontier:
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   195
  assumes "connected S"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   196
      and "S \<inter> T \<noteq> {}"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   197
      and "S - T \<noteq> {}"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   198
    shows "S \<inter> frontier T \<noteq> {}"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   199
proof -
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   200
  have "openin (top_of_set S) (S \<inter> interior T)"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   201
       "openin (top_of_set S) (S \<inter> interior (-T))"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   202
    by blast+
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   203
  then show ?thesis
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   204
    using \<open>connected S\<close> [unfolded connected_openin]
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   205
    by (metis assms connectedin_Int_frontier_of connectedin_iff_connected euclidean_frontier_of)
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   206
qed
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   207
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   208
subsection \<open>Compactness\<close>
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   209
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   210
lemma openin_delete:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   211
  fixes a :: "'a :: t1_space"
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   212
  shows "openin (top_of_set u) S \<Longrightarrow> openin (top_of_set u) (S - {a})"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   213
by (metis Int_Diff open_delete openin_open)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   214
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   215
lemma compact_eq_openin_cover:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   216
  "compact S \<longleftrightarrow>
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   217
    (\<forall>C. (\<forall>c\<in>C. openin (top_of_set S) c) \<and> S \<subseteq> \<Union>C \<longrightarrow>
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   218
      (\<exists>D\<subseteq>C. finite D \<and> S \<subseteq> \<Union>D))"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   219
proof safe
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   220
  fix C
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   221
  assume "compact S" and "\<forall>c\<in>C. openin (top_of_set S) c" and "S \<subseteq> \<Union>C"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   222
  then have "\<forall>c\<in>{T. open T \<and> S \<inter> T \<in> C}. open c" and "S \<subseteq> \<Union>{T. open T \<and> S \<inter> T \<in> C}"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   223
    unfolding openin_open by force+
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   224
  with \<open>compact S\<close> obtain D where "D \<subseteq> {T. open T \<and> S \<inter> T \<in> C}" and "finite D" and "S \<subseteq> \<Union>D"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   225
    by (meson compactE)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   226
  then have "image (\<lambda>T. S \<inter> T) D \<subseteq> C \<and> finite (image (\<lambda>T. S \<inter> T) D) \<and> S \<subseteq> \<Union>(image (\<lambda>T. S \<inter> T) D)"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   227
    by auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   228
  then show "\<exists>D\<subseteq>C. finite D \<and> S \<subseteq> \<Union>D" ..
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   229
next
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   230
  assume 1: "\<forall>C. (\<forall>c\<in>C. openin (top_of_set S) c) \<and> S \<subseteq> \<Union>C \<longrightarrow>
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   231
        (\<exists>D\<subseteq>C. finite D \<and> S \<subseteq> \<Union>D)"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   232
  show "compact S"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   233
  proof (rule compactI)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   234
    fix C
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   235
    let ?C = "image (\<lambda>T. S \<inter> T) C"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   236
    assume "\<forall>t\<in>C. open t" and "S \<subseteq> \<Union>C"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   237
    then have "(\<forall>c\<in>?C. openin (top_of_set S) c) \<and> S \<subseteq> \<Union>?C"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   238
      unfolding openin_open by auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   239
    with 1 obtain D where "D \<subseteq> ?C" and "finite D" and "S \<subseteq> \<Union>D"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   240
      by metis
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   241
    let ?D = "inv_into C (\<lambda>T. S \<inter> T) ` D"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   242
    have "?D \<subseteq> C \<and> finite ?D \<and> S \<subseteq> \<Union>?D"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   243
    proof (intro conjI)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   244
      from \<open>D \<subseteq> ?C\<close> show "?D \<subseteq> C"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   245
        by (fast intro: inv_into_into)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   246
      from \<open>finite D\<close> show "finite ?D"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   247
        by (rule finite_imageI)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   248
      from \<open>S \<subseteq> \<Union>D\<close> show "S \<subseteq> \<Union>?D"
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   249
        by (metis \<open>D \<subseteq> (\<inter>) S ` C\<close> image_inv_into_cancel inf_Sup le_infE)
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   250
    qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   251
    then show "\<exists>D\<subseteq>C. finite D \<and> S \<subseteq> \<Union>D" ..
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   252
  qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   253
qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   254
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   255
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   256
subsection \<open>Continuity\<close>
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   257
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   258
lemma interior_image_subset:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   259
  assumes "inj f" "\<And>x. continuous (at x) f"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   260
  shows "interior (f ` S) \<subseteq> f ` (interior S)"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   261
proof
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   262
  fix x assume "x \<in> interior (f ` S)"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   263
  then obtain T where as: "open T" "x \<in> T" "T \<subseteq> f ` S" ..
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   264
  then have "x \<in> f ` S" by auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   265
  then obtain y where y: "y \<in> S" "x = f y" by auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   266
  have "open (f -` T)"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   267
    using assms \<open>open T\<close> by (simp add: continuous_at_imp_continuous_on open_vimage)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   268
  moreover have "y \<in> vimage f T"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   269
    using \<open>x = f y\<close> \<open>x \<in> T\<close> by simp
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   270
  moreover have "vimage f T \<subseteq> S"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   271
    using \<open>T \<subseteq> image f S\<close> \<open>inj f\<close> unfolding inj_on_def subset_eq by auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   272
  ultimately have "y \<in> interior S" ..
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   273
  with \<open>x = f y\<close> show "x \<in> f ` interior S" ..
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   274
qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   275
70136
f03a01a18c6e modernized tags: default scope excludes proof;
wenzelm
parents: 69939
diff changeset
   276
subsection\<^marker>\<open>tag unimportant\<close> \<open>Equality of continuous functions on closure and related results\<close>
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   277
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   278
lemma continuous_closedin_preimage_constant:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   279
  fixes f :: "_ \<Rightarrow> 'b::t1_space"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   280
  shows "continuous_on S f \<Longrightarrow> closedin (top_of_set S) {x \<in> S. f x = a}"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   281
  using continuous_closedin_preimage[of S f "{a}"] by (simp add: vimage_def Collect_conj_eq)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   282
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   283
lemma continuous_closed_preimage_constant:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   284
  fixes f :: "_ \<Rightarrow> 'b::t1_space"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   285
  shows "continuous_on S f \<Longrightarrow> closed S \<Longrightarrow> closed {x \<in> S. f x = a}"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   286
  using continuous_closed_preimage[of S f "{a}"] by (simp add: vimage_def Collect_conj_eq)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   287
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   288
lemma continuous_constant_on_closure:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   289
  fixes f :: "_ \<Rightarrow> 'b::t1_space"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   290
  assumes "continuous_on (closure S) f"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   291
      and "\<And>x. x \<in> S \<Longrightarrow> f x = a"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   292
      and "x \<in> closure S"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   293
  shows "f x = a"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   294
    using continuous_closed_preimage_constant[of "closure S" f a]
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   295
      assms closure_minimal[of S "{x \<in> closure S. f x = a}"] closure_subset
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   296
    by auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   297
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   298
lemma image_closure_subset:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   299
  assumes contf: "continuous_on (closure S) f"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   300
    and "closed T"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   301
    and "(f ` S) \<subseteq> T"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   302
  shows "f ` (closure S) \<subseteq> T"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   303
proof -
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   304
  have "S \<subseteq> {x \<in> closure S. f x \<in> T}"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   305
    using assms(3) closure_subset by auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   306
  moreover have "closed (closure S \<inter> f -` T)"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   307
    using continuous_closed_preimage[OF contf] \<open>closed T\<close> by auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   308
  ultimately have "closure S = (closure S \<inter> f -` T)"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   309
    using closure_minimal[of S "(closure S \<inter> f -` T)"] by auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   310
  then show ?thesis by auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   311
qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   312
78685
07c35dec9dac A few new or simplified proofs
paulson <lp15@cam.ac.uk>
parents: 78336
diff changeset
   313
lemma continuous_image_closure_subset:
07c35dec9dac A few new or simplified proofs
paulson <lp15@cam.ac.uk>
parents: 78336
diff changeset
   314
  assumes "continuous_on A f" "closure B \<subseteq> A"
07c35dec9dac A few new or simplified proofs
paulson <lp15@cam.ac.uk>
parents: 78336
diff changeset
   315
  shows   "f ` closure B \<subseteq> closure (f ` B)"
07c35dec9dac A few new or simplified proofs
paulson <lp15@cam.ac.uk>
parents: 78336
diff changeset
   316
  using assms by (meson closed_closure closure_subset continuous_on_subset image_closure_subset)
07c35dec9dac A few new or simplified proofs
paulson <lp15@cam.ac.uk>
parents: 78336
diff changeset
   317
70136
f03a01a18c6e modernized tags: default scope excludes proof;
wenzelm
parents: 69939
diff changeset
   318
subsection\<^marker>\<open>tag unimportant\<close> \<open>A function constant on a set\<close>
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   319
80914
d97fdabd9e2b standardize mixfix annotations via "isabelle update -a -u mixfix_cartouches" --- to simplify systematic editing;
wenzelm
parents: 78685
diff changeset
   320
definition constant_on  (infixl \<open>(constant'_on)\<close> 50)
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   321
  where "f constant_on A \<equiv> \<exists>y. \<forall>x\<in>A. f x = y"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   322
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   323
lemma constant_on_subset: "\<lbrakk>f constant_on A; B \<subseteq> A\<rbrakk> \<Longrightarrow> f constant_on B"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   324
  unfolding constant_on_def by blast
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   325
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   326
lemma injective_not_constant:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   327
  fixes S :: "'a::{perfect_space} set"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   328
  shows "\<lbrakk>open S; inj_on f S; f constant_on S\<rbrakk> \<Longrightarrow> S = {}"
78256
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
   329
  unfolding constant_on_def
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
   330
  by (metis equals0I inj_on_contraD islimpt_UNIV islimpt_def)
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   331
77138
c8597292cd41 Moved in a large number of highly useful library lemmas, mostly due to Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 76894
diff changeset
   332
lemma constant_on_compose:
c8597292cd41 Moved in a large number of highly useful library lemmas, mostly due to Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 76894
diff changeset
   333
  assumes "f constant_on A"
c8597292cd41 Moved in a large number of highly useful library lemmas, mostly due to Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 76894
diff changeset
   334
  shows   "g \<circ> f constant_on A"
c8597292cd41 Moved in a large number of highly useful library lemmas, mostly due to Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 76894
diff changeset
   335
  using assms by (auto simp: constant_on_def)
c8597292cd41 Moved in a large number of highly useful library lemmas, mostly due to Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 76894
diff changeset
   336
c8597292cd41 Moved in a large number of highly useful library lemmas, mostly due to Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 76894
diff changeset
   337
lemma not_constant_onI:
c8597292cd41 Moved in a large number of highly useful library lemmas, mostly due to Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 76894
diff changeset
   338
  "f x \<noteq> f y \<Longrightarrow> x \<in> A \<Longrightarrow> y \<in> A \<Longrightarrow> \<not>f constant_on A"
c8597292cd41 Moved in a large number of highly useful library lemmas, mostly due to Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 76894
diff changeset
   339
  unfolding constant_on_def by metis
c8597292cd41 Moved in a large number of highly useful library lemmas, mostly due to Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 76894
diff changeset
   340
c8597292cd41 Moved in a large number of highly useful library lemmas, mostly due to Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 76894
diff changeset
   341
lemma constant_onE:
c8597292cd41 Moved in a large number of highly useful library lemmas, mostly due to Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 76894
diff changeset
   342
  assumes "f constant_on S" and "\<And>x. x\<in>S \<Longrightarrow> f x = g x"
c8597292cd41 Moved in a large number of highly useful library lemmas, mostly due to Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 76894
diff changeset
   343
  shows "g constant_on S"
c8597292cd41 Moved in a large number of highly useful library lemmas, mostly due to Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 76894
diff changeset
   344
  using assms unfolding constant_on_def by simp
c8597292cd41 Moved in a large number of highly useful library lemmas, mostly due to Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 76894
diff changeset
   345
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   346
lemma constant_on_closureI:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   347
  fixes f :: "_ \<Rightarrow> 'b::t1_space"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   348
  assumes cof: "f constant_on S" and contf: "continuous_on (closure S) f"
77138
c8597292cd41 Moved in a large number of highly useful library lemmas, mostly due to Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 76894
diff changeset
   349
  shows "f constant_on (closure S)"
c8597292cd41 Moved in a large number of highly useful library lemmas, mostly due to Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 76894
diff changeset
   350
  using continuous_constant_on_closure [OF contf] cof unfolding constant_on_def
c8597292cd41 Moved in a large number of highly useful library lemmas, mostly due to Manuel Eberl
paulson <lp15@cam.ac.uk>
parents: 76894
diff changeset
   351
  by metis
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   352
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   353
70136
f03a01a18c6e modernized tags: default scope excludes proof;
wenzelm
parents: 69939
diff changeset
   354
subsection\<^marker>\<open>tag unimportant\<close> \<open>Continuity relative to a union.\<close>
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   355
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   356
lemma continuous_on_Un_local:
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   357
    "\<lbrakk>closedin (top_of_set (S \<union> T)) S; closedin (top_of_set (S \<union> T)) T;
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   358
      continuous_on S f; continuous_on T f\<rbrakk>
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   359
     \<Longrightarrow> continuous_on (S \<union> T) f"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   360
  unfolding continuous_on closedin_limpt
77943
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
   361
  by (metis Lim_trivial_limit Lim_within_Un Un_iff trivial_limit_within)
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   362
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   363
lemma continuous_on_cases_local:
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   364
     "\<lbrakk>closedin (top_of_set (S \<union> T)) S; closedin (top_of_set (S \<union> T)) T;
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   365
       continuous_on S f; continuous_on T g;
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   366
       \<And>x. \<lbrakk>x \<in> S \<and> \<not>P x \<or> x \<in> T \<and> P x\<rbrakk> \<Longrightarrow> f x = g x\<rbrakk>
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   367
      \<Longrightarrow> continuous_on (S \<union> T) (\<lambda>x. if P x then f x else g x)"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   368
  by (rule continuous_on_Un_local) (auto intro: continuous_on_eq)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   369
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   370
lemma continuous_on_cases_le:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   371
  fixes h :: "'a :: topological_space \<Rightarrow> real"
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   372
  assumes "continuous_on {x \<in> S. h x \<le> a} f"
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   373
      and "continuous_on {x \<in> S. a \<le> h x} g"
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   374
      and h: "continuous_on S h"
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   375
      and "\<And>x. \<lbrakk>x \<in> S; h x = a\<rbrakk> \<Longrightarrow> f x = g x"
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   376
    shows "continuous_on S (\<lambda>x. if h x \<le> a then f(x) else g(x))"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   377
proof -
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   378
  have S: "S = (S \<inter> h -` atMost a) \<union> (S \<inter> h -` atLeast a)"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   379
    by force
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   380
  have 1: "closedin (top_of_set S) (S \<inter> h -` atMost a)"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   381
    by (rule continuous_closedin_preimage [OF h closed_atMost])
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   382
  have 2: "closedin (top_of_set S) (S \<inter> h -` atLeast a)"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   383
    by (rule continuous_closedin_preimage [OF h closed_atLeast])
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   384
  have [simp]: "S \<inter> h -` {..a} = {x \<in> S. h x \<le> a}" "S \<inter> h -` {a..} = {x \<in> S. a \<le> h x}"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   385
    by auto
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   386
  have "continuous_on (S \<inter> h -` {..a} \<union> S \<inter> h -` {a..}) (\<lambda>x. if h x \<le> a then f x else g x)"
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   387
    by (intro continuous_on_cases_local) (use 1 2 S assms in auto)
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   388
  then show ?thesis
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   389
    using S by force
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   390
qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   391
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   392
lemma continuous_on_cases_1:
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   393
  fixes S :: "real set"
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   394
  assumes "continuous_on {t \<in> S. t \<le> a} f"
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   395
      and "continuous_on {t \<in> S. a \<le> t} g"
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   396
      and "a \<in> S \<Longrightarrow> f a = g a"
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   397
    shows "continuous_on S (\<lambda>t. if t \<le> a then f(t) else g(t))"
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   398
  using assms
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   399
  by (auto intro: continuous_on_cases_le [where h = id, simplified])
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   400
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   401
70136
f03a01a18c6e modernized tags: default scope excludes proof;
wenzelm
parents: 69939
diff changeset
   402
subsection\<^marker>\<open>tag unimportant\<close>\<open>Inverse function property for open/closed maps\<close>
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   403
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   404
lemma continuous_on_inverse_open_map:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   405
  assumes contf: "continuous_on S f"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   406
    and imf: "f ` S = T"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   407
    and injf: "\<And>x. x \<in> S \<Longrightarrow> g (f x) = x"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   408
    and oo: "\<And>U. openin (top_of_set S) U \<Longrightarrow> openin (top_of_set T) (f ` U)"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   409
  shows "continuous_on T g"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   410
proof -
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   411
  from imf injf have gTS: "g ` T = S"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   412
    by force
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   413
  from imf injf have fU: "U \<subseteq> S \<Longrightarrow> (f ` U) = T \<inter> g -` U" for U
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   414
    by force
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   415
  show ?thesis
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   416
    by (simp add: continuous_on_open [of T g] gTS) (metis openin_imp_subset fU oo)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   417
qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   418
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   419
lemma continuous_on_inverse_closed_map:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   420
  assumes contf: "continuous_on S f"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   421
    and imf: "f ` S = T"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   422
    and injf: "\<And>x. x \<in> S \<Longrightarrow> g(f x) = x"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   423
    and oo: "\<And>U. closedin (top_of_set S) U \<Longrightarrow> closedin (top_of_set T) (f ` U)"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   424
  shows "continuous_on T g"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   425
proof -
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   426
  from imf injf have gTS: "g ` T = S"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   427
    by force
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   428
  from imf injf have fU: "U \<subseteq> S \<Longrightarrow> (f ` U) = T \<inter> g -` U" for U
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   429
    by force
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   430
  show ?thesis
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   431
    by (simp add: continuous_on_closed [of T g] gTS) (metis closedin_imp_subset fU oo)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   432
qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   433
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   434
lemma homeomorphism_injective_open_map:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   435
  assumes contf: "continuous_on S f"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   436
    and imf: "f ` S = T"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   437
    and injf: "inj_on f S"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   438
    and oo: "\<And>U. openin (top_of_set S) U \<Longrightarrow> openin (top_of_set T) (f ` U)"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   439
  obtains g where "homeomorphism S T f g"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   440
proof
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   441
  have "continuous_on T (inv_into S f)"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   442
    by (metis contf continuous_on_inverse_open_map imf injf inv_into_f_f oo)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   443
  with imf injf contf show "homeomorphism S T f (inv_into S f)"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   444
    by (auto simp: homeomorphism_def)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   445
qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   446
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   447
lemma homeomorphism_injective_closed_map:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   448
  assumes contf: "continuous_on S f"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   449
    and imf: "f ` S = T"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   450
    and injf: "inj_on f S"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   451
    and oo: "\<And>U. closedin (top_of_set S) U \<Longrightarrow> closedin (top_of_set T) (f ` U)"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   452
  obtains g where "homeomorphism S T f g"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   453
proof
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   454
  have "continuous_on T (inv_into S f)"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   455
    by (metis contf continuous_on_inverse_closed_map imf injf inv_into_f_f oo)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   456
  with imf injf contf show "homeomorphism S T f (inv_into S f)"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   457
    by (auto simp: homeomorphism_def)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   458
qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   459
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   460
lemma homeomorphism_imp_open_map:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   461
  assumes hom: "homeomorphism S T f g"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   462
    and oo: "openin (top_of_set S) U"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   463
  shows "openin (top_of_set T) (f ` U)"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   464
proof -
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   465
  from hom oo have [simp]: "f ` U = T \<inter> g -` U"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   466
    using openin_subset by (fastforce simp: homeomorphism_def rev_image_eqI)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   467
  from hom have "continuous_on T g"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   468
    unfolding homeomorphism_def by blast
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   469
  moreover have "g ` T = S"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   470
    by (metis hom homeomorphism_def)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   471
  ultimately show ?thesis
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   472
    by (simp add: continuous_on_open oo)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   473
qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   474
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   475
lemma homeomorphism_imp_closed_map:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   476
  assumes hom: "homeomorphism S T f g"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   477
    and oo: "closedin (top_of_set S) U"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   478
  shows "closedin (top_of_set T) (f ` U)"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   479
proof -
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   480
  from hom oo have [simp]: "f ` U = T \<inter> g -` U"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   481
    using closedin_subset by (fastforce simp: homeomorphism_def rev_image_eqI)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   482
  from hom have "continuous_on T g"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   483
    unfolding homeomorphism_def by blast
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   484
  moreover have "g ` T = S"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   485
    by (metis hom homeomorphism_def)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   486
  ultimately show ?thesis
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   487
    by (simp add: continuous_on_closed oo)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   488
qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   489
70136
f03a01a18c6e modernized tags: default scope excludes proof;
wenzelm
parents: 69939
diff changeset
   490
subsection\<^marker>\<open>tag unimportant\<close> \<open>Seperability\<close>
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   491
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   492
lemma subset_second_countable:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   493
  obtains \<B> :: "'a:: second_countable_topology set set"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   494
    where "countable \<B>"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   495
          "{} \<notin> \<B>"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   496
          "\<And>C. C \<in> \<B> \<Longrightarrow> openin(top_of_set S) C"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   497
          "\<And>T. openin(top_of_set S) T \<Longrightarrow> \<exists>\<U>. \<U> \<subseteq> \<B> \<and> T = \<Union>\<U>"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   498
proof -
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   499
  obtain \<B> :: "'a set set"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   500
    where "countable \<B>"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   501
      and opeB: "\<And>C. C \<in> \<B> \<Longrightarrow> openin(top_of_set S) C"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   502
      and \<B>:    "\<And>T. openin(top_of_set S) T \<Longrightarrow> \<exists>\<U>. \<U> \<subseteq> \<B> \<and> T = \<Union>\<U>"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   503
  proof -
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   504
    obtain \<C> :: "'a set set"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   505
      where "countable \<C>" and ope: "\<And>C. C \<in> \<C> \<Longrightarrow> open C"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   506
        and \<C>: "\<And>S. open S \<Longrightarrow> \<exists>U. U \<subseteq> \<C> \<and> S = \<Union>U"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   507
      by (metis univ_second_countable that)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   508
    show ?thesis
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   509
    proof
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   510
      show "countable ((\<lambda>C. S \<inter> C) ` \<C>)"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   511
        by (simp add: \<open>countable \<C>\<close>)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   512
      show "\<And>C. C \<in> (\<inter>) S ` \<C> \<Longrightarrow> openin (top_of_set S) C"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   513
        using ope by auto
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   514
      show "\<And>T. openin (top_of_set S) T \<Longrightarrow> \<exists>\<U>\<subseteq>(\<inter>) S ` \<C>. T = \<Union>\<U>"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   515
        by (metis \<C> image_mono inf_Sup openin_open)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   516
    qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   517
  qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   518
  show ?thesis
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   519
  proof
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   520
    show "countable (\<B> - {{}})"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   521
      using \<open>countable \<B>\<close> by blast
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   522
    show "\<And>C. \<lbrakk>C \<in> \<B> - {{}}\<rbrakk> \<Longrightarrow> openin (top_of_set S) C"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   523
      by (simp add: \<open>\<And>C. C \<in> \<B> \<Longrightarrow> openin (top_of_set S) C\<close>)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   524
    show "\<exists>\<U>\<subseteq>\<B> - {{}}. T = \<Union>\<U>" if "openin (top_of_set S) T" for T
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   525
      using \<B> [OF that]
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   526
      by (metis Int_Diff Int_lower2 Union_insert inf.orderE insert_Diff_single sup_bot_left)
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   527
  qed auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   528
qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   529
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   530
lemma Lindelof_openin:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   531
  fixes \<F> :: "'a::second_countable_topology set set"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   532
  assumes "\<And>S. S \<in> \<F> \<Longrightarrow> openin (top_of_set U) S"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   533
  obtains \<F>' where "\<F>' \<subseteq> \<F>" "countable \<F>'" "\<Union>\<F>' = \<Union>\<F>"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   534
proof -
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   535
  have "\<And>S. S \<in> \<F> \<Longrightarrow> \<exists>T. open T \<and> S = U \<inter> T"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   536
    using assms by (simp add: openin_open)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   537
  then obtain tf where tf: "\<And>S. S \<in> \<F> \<Longrightarrow> open (tf S) \<and> (S = U \<inter> tf S)"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   538
    by metis
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   539
  have [simp]: "\<And>\<F>'. \<F>' \<subseteq> \<F> \<Longrightarrow> \<Union>\<F>' = U \<inter> \<Union>(tf ` \<F>')"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   540
    using tf by fastforce
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   541
  obtain \<G> where "countable \<G> \<and> \<G> \<subseteq> tf ` \<F>" "\<Union>\<G> = \<Union>(tf ` \<F>)"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   542
    using tf by (force intro: Lindelof [of "tf ` \<F>"])
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   543
  then obtain \<F>' where \<F>': "\<F>' \<subseteq> \<F>" "countable \<F>'" "\<Union>\<F>' = \<Union>\<F>"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   544
    by (clarsimp simp add: countable_subset_image)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   545
  then show ?thesis ..
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   546
qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   547
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   548
70136
f03a01a18c6e modernized tags: default scope excludes proof;
wenzelm
parents: 69939
diff changeset
   549
subsection\<^marker>\<open>tag unimportant\<close>\<open>Closed Maps\<close>
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   550
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   551
lemma continuous_imp_closed_map:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   552
  fixes f :: "'a::t2_space \<Rightarrow> 'b::t2_space"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   553
  assumes "closedin (top_of_set S) U"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   554
          "continuous_on S f" "f ` S = T" "compact S"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   555
    shows "closedin (top_of_set T) (f ` U)"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   556
  by (metis assms closedin_compact_eq compact_continuous_image continuous_on_subset subset_image_iff)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   557
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   558
lemma closed_map_restrict:
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   559
  assumes cloU: "closedin (top_of_set (S \<inter> f -` T')) U"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   560
    and cc: "\<And>U. closedin (top_of_set S) U \<Longrightarrow> closedin (top_of_set T) (f ` U)"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   561
    and "T' \<subseteq> T"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   562
  shows "closedin (top_of_set T') (f ` U)"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   563
proof -
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   564
  obtain V where "closed V" "U = S \<inter> f -` T' \<inter> V"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   565
    using cloU by (auto simp: closedin_closed)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   566
  with cc [of "S \<inter> V"] \<open>T' \<subseteq> T\<close> show ?thesis
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   567
    by (fastforce simp add: closedin_closed)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   568
qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   569
70136
f03a01a18c6e modernized tags: default scope excludes proof;
wenzelm
parents: 69939
diff changeset
   570
subsection\<^marker>\<open>tag unimportant\<close>\<open>Open Maps\<close>
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   571
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   572
lemma open_map_restrict:
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   573
  assumes opeU: "openin (top_of_set (S \<inter> f -` T')) U"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   574
    and oo: "\<And>U. openin (top_of_set S) U \<Longrightarrow> openin (top_of_set T) (f ` U)"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   575
    and "T' \<subseteq> T"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   576
  shows "openin (top_of_set T') (f ` U)"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   577
proof -
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   578
  obtain V where "open V" "U = S \<inter> f -` T' \<inter> V"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   579
    using opeU by (auto simp: openin_open)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   580
  with oo [of "S \<inter> V"] \<open>T' \<subseteq> T\<close> show ?thesis
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   581
    by (fastforce simp add: openin_open)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   582
qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   583
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   584
70136
f03a01a18c6e modernized tags: default scope excludes proof;
wenzelm
parents: 69939
diff changeset
   585
subsection\<^marker>\<open>tag unimportant\<close>\<open>Quotient maps\<close>
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   586
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   587
lemma quotient_map_imp_continuous_open:
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
   588
  assumes T: "f \<in> S \<rightarrow> T"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   589
      and ope: "\<And>U. U \<subseteq> T
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   590
              \<Longrightarrow> (openin (top_of_set S) (S \<inter> f -` U) \<longleftrightarrow> openin (top_of_set T) U)"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   591
    shows "continuous_on S f"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   592
proof -
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   593
  have [simp]: "S \<inter> f -` f ` S = S" by auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   594
  show ?thesis
72225
341b15d092f2 quite a bit of tidying
paulson <lp15@cam.ac.uk>
parents: 71842
diff changeset
   595
    by (meson T continuous_on_open_gen ope openin_imp_subset)
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   596
qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   597
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   598
lemma quotient_map_imp_continuous_closed:
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
   599
  assumes T: "f \<in> S \<rightarrow> T"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   600
      and ope: "\<And>U. U \<subseteq> T
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   601
                  \<Longrightarrow> (closedin (top_of_set S) (S \<inter> f -` U) \<longleftrightarrow>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   602
                       closedin (top_of_set T) U)"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   603
    shows "continuous_on S f"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   604
proof -
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   605
  have [simp]: "S \<inter> f -` f ` S = S" by auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   606
  show ?thesis
72225
341b15d092f2 quite a bit of tidying
paulson <lp15@cam.ac.uk>
parents: 71842
diff changeset
   607
    by (meson T closedin_imp_subset continuous_on_closed_gen ope)
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   608
qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   609
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   610
lemma open_map_imp_quotient_map:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   611
  assumes contf: "continuous_on S f"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   612
      and T: "T \<subseteq> f ` S"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   613
      and ope: "\<And>T. openin (top_of_set S) T
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   614
                   \<Longrightarrow> openin (top_of_set (f ` S)) (f ` T)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   615
    shows "openin (top_of_set S) (S \<inter> f -` T) =
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   616
           openin (top_of_set (f ` S)) T"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   617
proof -
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   618
  have "T = f ` (S \<inter> f -` T)"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   619
    using T by blast
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   620
  then show ?thesis
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   621
    using "ope" contf continuous_on_open by metis
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   622
qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   623
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   624
lemma closed_map_imp_quotient_map:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   625
  assumes contf: "continuous_on S f"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   626
      and T: "T \<subseteq> f ` S"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   627
      and ope: "\<And>T. closedin (top_of_set S) T
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   628
              \<Longrightarrow> closedin (top_of_set (f ` S)) (f ` T)"
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   629
    shows "openin (top_of_set S) (S \<inter> f -` T) \<longleftrightarrow> openin (top_of_set (f ` S)) T"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   630
          (is "?lhs = ?rhs")
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   631
proof
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   632
  assume ?lhs
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   633
  then have *: "closedin (top_of_set S) (S - (S \<inter> f -` T))"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   634
    using closedin_diff by fastforce
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   635
  have [simp]: "(f ` S - f ` (S - (S \<inter> f -` T))) = T"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   636
    using T by blast
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   637
  show ?rhs
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   638
    using ope [OF *, unfolded closedin_def] by auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   639
next
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   640
  assume ?rhs
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   641
  with contf show ?lhs
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   642
    by (auto simp: continuous_on_open)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   643
qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   644
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   645
lemma continuous_right_inverse_imp_quotient_map:
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
   646
  assumes contf: "continuous_on S f" and imf: "f \<in> S \<rightarrow> T"
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
   647
      and contg: "continuous_on T g" and img: "g \<in> T \<rightarrow> S"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   648
      and fg [simp]: "\<And>y. y \<in> T \<Longrightarrow> f(g y) = y"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   649
      and U: "U \<subseteq> T"
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   650
    shows "openin (top_of_set S) (S \<inter> f -` U) \<longleftrightarrow> openin (top_of_set T) U"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   651
          (is "?lhs = ?rhs")
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   652
proof -
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   653
  have f: "\<And>Z. openin (top_of_set (f ` S)) Z \<Longrightarrow>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   654
                openin (top_of_set S) (S \<inter> f -` Z)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   655
  and  g: "\<And>Z. openin (top_of_set (g ` T)) Z \<Longrightarrow>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   656
                openin (top_of_set T) (T \<inter> g -` Z)"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   657
    using contf contg by (auto simp: continuous_on_open)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   658
  show ?thesis
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   659
  proof
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   660
    have "T \<inter> g -` (g ` T \<inter> (S \<inter> f -` U)) = {x \<in> T. f (g x) \<in> U}"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   661
      using imf img by blast
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   662
    also have "... = U"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   663
      using U by auto
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   664
    finally have eq: "T \<inter> g -` (g ` T \<inter> (S \<inter> f -` U)) = U" .
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   665
    assume ?lhs
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   666
    then have *: "openin (top_of_set (g ` T)) (g ` T \<inter> (S \<inter> f -` U))"
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   667
      by (metis image_subset_iff_funcset img inf_left_idem openin_subtopology_Int_subset)
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   668
    show ?rhs
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   669
      using g [OF *] eq by auto
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   670
  qed (use assms continuous_openin_preimage in blast)
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   671
qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   672
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   673
lemma continuous_left_inverse_imp_quotient_map:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   674
  assumes "continuous_on S f"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   675
      and "continuous_on (f ` S) g"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   676
      and  "\<And>x. x \<in> S \<Longrightarrow> g(f x) = x"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   677
      and "U \<subseteq> f ` S"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   678
    shows "openin (top_of_set S) (S \<inter> f -` U) \<longleftrightarrow>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   679
           openin (top_of_set (f ` S)) U"
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   680
  using assms 
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   681
  by (intro continuous_right_inverse_imp_quotient_map) auto
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   682
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   683
lemma continuous_imp_quotient_map:
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   684
  fixes f :: "'a::t2_space \<Rightarrow> 'b::t2_space"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   685
  assumes "continuous_on S f" "f ` S = T" "compact S" "U \<subseteq> T"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   686
    shows "openin (top_of_set S) (S \<inter> f -` U) \<longleftrightarrow>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   687
           openin (top_of_set T) U"
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   688
  by (simp add: assms closed_map_imp_quotient_map continuous_imp_closed_map)
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   689
70136
f03a01a18c6e modernized tags: default scope excludes proof;
wenzelm
parents: 69939
diff changeset
   690
subsection\<^marker>\<open>tag unimportant\<close>\<open>Pasting lemmas for functions, for of casewise definitions\<close>
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   691
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   692
subsubsection\<open>on open sets\<close>
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   693
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   694
lemma pasting_lemma:
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   695
  assumes ope: "\<And>i. i \<in> I \<Longrightarrow> openin X (T i)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   696
      and cont: "\<And>i. i \<in> I \<Longrightarrow> continuous_map(subtopology X (T i)) Y (f i)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   697
      and f: "\<And>i j x. \<lbrakk>i \<in> I; j \<in> I; x \<in> topspace X \<inter> T i \<inter> T j\<rbrakk> \<Longrightarrow> f i x = f j x"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   698
      and g: "\<And>x. x \<in> topspace X \<Longrightarrow> \<exists>j. j \<in> I \<and> x \<in> T j \<and> g x = f j x"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   699
    shows "continuous_map X Y g"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   700
  unfolding continuous_map_openin_preimage_eq
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   701
proof (intro conjI allI impI)
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
   702
  show "g \<in> topspace X \<rightarrow> topspace Y"
71174
nipkow
parents: 71172
diff changeset
   703
    using g cont continuous_map_image_subset_topspace by fastforce
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   704
next
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   705
  fix U
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   706
  assume Y: "openin Y U"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   707
  have T: "T i \<subseteq> topspace X" if "i \<in> I" for i
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   708
    using ope by (simp add: openin_subset that)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   709
  have *: "topspace X \<inter> g -` U = (\<Union>i \<in> I. T i \<inter> f i -` U)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   710
    using f g T by fastforce
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   711
  have "\<And>i. i \<in> I \<Longrightarrow> openin X (T i \<inter> f i -` U)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   712
    using cont unfolding continuous_map_openin_preimage_eq
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   713
    by (metis Y T inf.commute inf_absorb1 ope topspace_subtopology openin_trans_full)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   714
  then show "openin X (topspace X \<inter> g -` U)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   715
    by (auto simp: *)
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   716
qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   717
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   718
lemma pasting_lemma_exists:
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   719
  assumes X: "topspace X \<subseteq> (\<Union>i \<in> I. T i)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   720
      and ope: "\<And>i. i \<in> I \<Longrightarrow> openin X (T i)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   721
      and cont: "\<And>i. i \<in> I \<Longrightarrow> continuous_map (subtopology X (T i)) Y (f i)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   722
      and f: "\<And>i j x. \<lbrakk>i \<in> I; j \<in> I; x \<in> topspace X \<inter> T i \<inter> T j\<rbrakk> \<Longrightarrow> f i x = f j x"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   723
    obtains g where "continuous_map X Y g" "\<And>x i. \<lbrakk>i \<in> I; x \<in> topspace X \<inter> T i\<rbrakk> \<Longrightarrow> g x = f i x"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   724
proof
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   725
  let ?h = "\<lambda>x. f (SOME i. i \<in> I \<and> x \<in> T i) x"
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   726
  have "\<And>x. x \<in> topspace X \<Longrightarrow>
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   727
         \<exists>j. j \<in> I \<and> x \<in> T j \<and> f (SOME i. i \<in> I \<and> x \<in> T i) x = f j x"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   728
    by (metis (no_types, lifting) UN_E X subsetD someI_ex)
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   729
  with f show "continuous_map X Y ?h"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   730
    by (smt (verit, best) cont ope pasting_lemma)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   731
  show "f (SOME i. i \<in> I \<and> x \<in> T i) x = f i x" if "i \<in> I" "x \<in> topspace X \<inter> T i" for i x
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   732
    by (metis (no_types, lifting) IntD2 IntI f someI_ex that)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   733
qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   734
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   735
lemma pasting_lemma_locally_finite:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   736
  assumes fin: "\<And>x. x \<in> topspace X \<Longrightarrow> \<exists>V. openin X V \<and> x \<in> V \<and> finite {i \<in> I. T i \<inter> V \<noteq> {}}"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   737
    and clo: "\<And>i. i \<in> I \<Longrightarrow> closedin X (T i)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   738
    and cont:  "\<And>i. i \<in> I \<Longrightarrow> continuous_map(subtopology X (T i)) Y (f i)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   739
    and f: "\<And>i j x. \<lbrakk>i \<in> I; j \<in> I; x \<in> topspace X \<inter> T i \<inter> T j\<rbrakk> \<Longrightarrow> f i x = f j x"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   740
    and g: "\<And>x. x \<in> topspace X \<Longrightarrow> \<exists>j. j \<in> I \<and> x \<in> T j \<and> g x = f j x"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   741
  shows "continuous_map X Y g"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   742
  unfolding continuous_map_closedin_preimage_eq
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   743
proof (intro conjI allI impI)
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
   744
  show "g \<in> topspace X \<rightarrow> topspace Y"
71174
nipkow
parents: 71172
diff changeset
   745
    using g cont continuous_map_image_subset_topspace by fastforce
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   746
next
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   747
  fix U
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   748
  assume Y: "closedin Y U"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   749
  have T: "T i \<subseteq> topspace X" if "i \<in> I" for i
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   750
    using clo by (simp add: closedin_subset that)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   751
  have *: "topspace X \<inter> g -` U = (\<Union>i \<in> I. T i \<inter> f i -` U)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   752
    using f g T by fastforce
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   753
  have cTf: "\<And>i. i \<in> I \<Longrightarrow> closedin X (T i \<inter> f i -` U)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   754
    using cont unfolding continuous_map_closedin_preimage_eq topspace_subtopology
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   755
    by (simp add: Int_absorb1 T Y clo closedin_closed_subtopology)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   756
  have sub: "{Z \<in> (\<lambda>i. T i \<inter> f i -` U) ` I. Z \<inter> V \<noteq> {}}
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   757
           \<subseteq> (\<lambda>i. T i \<inter> f i -` U) ` {i \<in> I. T i \<inter> V \<noteq> {}}" for V
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   758
    by auto
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   759
  have 1: "(\<Union>i\<in>I. T i \<inter> f i -` U) \<subseteq> topspace X"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   760
    using T by blast
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   761
  then have "locally_finite_in X ((\<lambda>i. T i \<inter> f i -` U) ` I)"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   762
    unfolding locally_finite_in_def
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   763
    using finite_subset [OF sub] fin by force
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   764
  then show "closedin X (topspace X \<inter> g -` U)"
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   765
    by (smt (verit, best) * cTf closedin_locally_finite_Union image_iff)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   766
qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   767
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   768
subsubsection\<open>Likewise on closed sets, with a finiteness assumption\<close>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   769
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   770
lemma pasting_lemma_closed:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   771
  assumes fin: "finite I"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   772
    and clo: "\<And>i. i \<in> I \<Longrightarrow> closedin X (T i)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   773
    and cont:  "\<And>i. i \<in> I \<Longrightarrow> continuous_map(subtopology X (T i)) Y (f i)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   774
    and f: "\<And>i j x. \<lbrakk>i \<in> I; j \<in> I; x \<in> topspace X \<inter> T i \<inter> T j\<rbrakk> \<Longrightarrow> f i x = f j x"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   775
    and g: "\<And>x. x \<in> topspace X \<Longrightarrow> \<exists>j. j \<in> I \<and> x \<in> T j \<and> g x = f j x"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   776
  shows "continuous_map X Y g"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   777
  using pasting_lemma_locally_finite [OF _ clo cont f g] fin by auto
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   778
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   779
lemma pasting_lemma_exists_locally_finite:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   780
  assumes fin: "\<And>x. x \<in> topspace X \<Longrightarrow> \<exists>V. openin X V \<and> x \<in> V \<and> finite {i \<in> I. T i \<inter> V \<noteq> {}}"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   781
    and X: "topspace X \<subseteq> \<Union>(T ` I)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   782
    and clo: "\<And>i. i \<in> I \<Longrightarrow> closedin X (T i)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   783
    and cont:  "\<And>i. i \<in> I \<Longrightarrow> continuous_map(subtopology X (T i)) Y (f i)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   784
    and f: "\<And>i j x. \<lbrakk>i \<in> I; j \<in> I; x \<in> topspace X \<inter> T i \<inter> T j\<rbrakk> \<Longrightarrow> f i x = f j x"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   785
    and g: "\<And>x. x \<in> topspace X \<Longrightarrow> \<exists>j. j \<in> I \<and> x \<in> T j \<and> g x = f j x"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   786
  obtains g where "continuous_map X Y g" "\<And>x i. \<lbrakk>i \<in> I; x \<in> topspace X \<inter> T i\<rbrakk> \<Longrightarrow> g x = f i x"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   787
proof
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   788
  have "\<And>x. x \<in> topspace X \<Longrightarrow>
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   789
         \<exists>j. j \<in> I \<and> x \<in> T j \<and> f (SOME i. i \<in> I \<and> x \<in> T i) x = f j x"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   790
    by (metis (no_types, lifting) UN_E X subsetD someI_ex)
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   791
  then show "continuous_map X Y (\<lambda>x. f(@i. i \<in> I \<and> x \<in> T i) x)"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   792
    by (smt (verit, best) clo cont f pasting_lemma_locally_finite [OF fin])
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   793
next
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   794
  fix x i
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   795
  assume "i \<in> I" and "x \<in> topspace X \<inter> T i"
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   796
  then show "f (SOME i. i \<in> I \<and> x \<in> T i) x = f i x"
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   797
    by (metis (mono_tags, lifting) IntE IntI f someI2)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   798
qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   799
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   800
lemma pasting_lemma_exists_closed:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   801
  assumes fin: "finite I"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   802
    and X: "topspace X \<subseteq> \<Union>(T ` I)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   803
    and clo: "\<And>i. i \<in> I \<Longrightarrow> closedin X (T i)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   804
    and cont:  "\<And>i. i \<in> I \<Longrightarrow> continuous_map(subtopology X (T i)) Y (f i)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   805
    and f: "\<And>i j x. \<lbrakk>i \<in> I; j \<in> I; x \<in> topspace X \<inter> T i \<inter> T j\<rbrakk> \<Longrightarrow> f i x = f j x"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   806
  obtains g where "continuous_map X Y g" "\<And>x i. \<lbrakk>i \<in> I; x \<in> topspace X \<inter> T i\<rbrakk> \<Longrightarrow> g x = f i x"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   807
proof
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   808
  have "\<And>x. x \<in> topspace X \<Longrightarrow>
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   809
         \<exists>j. j \<in> I \<and> x \<in> T j \<and> f (SOME i. i \<in> I \<and> x \<in> T i) x = f j x"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   810
    by (metis (mono_tags, lifting) UN_iff X someI_ex subset_iff)
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   811
  with pasting_lemma_closed [OF \<open>finite I\<close> clo cont]
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   812
  show "continuous_map X Y (\<lambda>x. f (SOME i. i \<in> I \<and> x \<in> T i) x)"
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   813
    by (simp add: f)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   814
next
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   815
  fix x i
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   816
  assume "i \<in> I" "x \<in> topspace X \<inter> T i"
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   817
  then show "f (SOME i. i \<in> I \<and> x \<in> T i) x = f i x"
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   818
    by (metis (no_types, lifting) IntD2 IntI f someI_ex)
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   819
qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   820
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   821
lemma continuous_map_cases:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   822
  assumes f: "continuous_map (subtopology X (X closure_of {x. P x})) Y f"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   823
      and g: "continuous_map (subtopology X (X closure_of {x. \<not> P x})) Y g"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   824
      and fg: "\<And>x. x \<in> X frontier_of {x. P x} \<Longrightarrow> f x = g x"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   825
  shows "continuous_map X Y (\<lambda>x. if P x then f x else g x)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   826
proof (rule pasting_lemma_closed)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   827
  let ?f = "\<lambda>b. if b then f else g"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   828
  let ?g = "\<lambda>x. if P x then f x else g x"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   829
  let ?T = "\<lambda>b. if b then X closure_of {x. P x} else X closure_of {x. ~P x}"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   830
  show "finite {True,False}" by auto
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   831
  have eq: "topspace X - Collect P = topspace X \<inter> {x. \<not> P x}"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   832
    by blast
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   833
  show "?f i x = ?f j x"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   834
    if "i \<in> {True,False}" "j \<in> {True,False}" and x: "x \<in> topspace X \<inter> ?T i \<inter> ?T j" for i j x
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   835
  proof -
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   836
    have "f x = g x" if "i" "\<not> j"
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   837
      by (smt (verit, best) Diff_Diff_Int closure_of_interior_of closure_of_restrict eq fg 
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   838
          frontier_of_closures interior_of_complement that x)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   839
    moreover
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   840
    have "g x = f x"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   841
      if "x \<in> X closure_of {x. \<not> P x}" "x \<in> X closure_of Collect P" "\<not> i" "j" for x
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   842
      by (metis IntI closure_of_restrict eq fg frontier_of_closures that)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   843
    ultimately show ?thesis
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   844
      using that by (auto simp flip: closure_of_restrict)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   845
  qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   846
  show "\<exists>j. j \<in> {True,False} \<and> x \<in> ?T j \<and> (if P x then f x else g x) = ?f j x"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   847
    if "x \<in> topspace X" for x
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
   848
    by simp (metis in_closure_of mem_Collect_eq that)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   849
qed (auto simp: f g)
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   850
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   851
lemma continuous_map_cases_alt:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   852
  assumes f: "continuous_map (subtopology X (X closure_of {x \<in> topspace X. P x})) Y f"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   853
      and g: "continuous_map (subtopology X (X closure_of {x \<in> topspace X. ~P x})) Y g"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   854
      and fg: "\<And>x. x \<in> X frontier_of {x \<in> topspace X. P x} \<Longrightarrow> f x = g x"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   855
    shows "continuous_map X Y (\<lambda>x. if P x then f x else g x)"
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   856
proof (rule continuous_map_cases)
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   857
  show "continuous_map (subtopology X (X closure_of {x. P x})) Y f"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   858
    by (metis Collect_conj_eq Collect_mem_eq closure_of_restrict f)
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   859
next
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   860
  show "continuous_map (subtopology X (X closure_of {x. \<not> P x})) Y g"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   861
    by (metis Collect_conj_eq Collect_mem_eq closure_of_restrict g)
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   862
next
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   863
  fix x
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   864
  assume "x \<in> X frontier_of {x. P x}"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   865
  then show "f x = g x"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   866
    by (metis Collect_conj_eq Collect_mem_eq fg frontier_of_restrict)
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   867
qed
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   868
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   869
lemma continuous_map_cases_function:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   870
  assumes contp: "continuous_map X Z p"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   871
    and contf: "continuous_map (subtopology X {x \<in> topspace X. p x \<in> Z closure_of U}) Y f"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   872
    and contg: "continuous_map (subtopology X {x \<in> topspace X. p x \<in> Z closure_of (topspace Z - U)}) Y g"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   873
    and fg: "\<And>x. \<lbrakk>x \<in> topspace X; p x \<in> Z frontier_of U\<rbrakk> \<Longrightarrow> f x = g x"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   874
  shows "continuous_map X Y (\<lambda>x. if p x \<in> U then f x else g x)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   875
proof (rule continuous_map_cases_alt)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   876
  show "continuous_map (subtopology X (X closure_of {x \<in> topspace X. p x \<in> U})) Y f"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   877
  proof (rule continuous_map_from_subtopology_mono)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   878
    let ?T = "{x \<in> topspace X. p x \<in> Z closure_of U}"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   879
    show "continuous_map (subtopology X ?T) Y f"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   880
      by (simp add: contf)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   881
    show "X closure_of {x \<in> topspace X. p x \<in> U} \<subseteq> ?T"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   882
      by (rule continuous_map_closure_preimage_subset [OF contp])
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   883
  qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   884
  show "continuous_map (subtopology X (X closure_of {x \<in> topspace X. p x \<notin> U})) Y g"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   885
  proof (rule continuous_map_from_subtopology_mono)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   886
    let ?T = "{x \<in> topspace X. p x \<in> Z closure_of (topspace Z - U)}"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   887
    show "continuous_map (subtopology X ?T) Y g"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   888
      by (simp add: contg)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   889
    have "X closure_of {x \<in> topspace X. p x \<notin> U} \<subseteq> X closure_of {x \<in> topspace X. p x \<in> topspace Z - U}"
78320
eb9a9690b8f5 cosmetic improvements, new lemmas, especially more uses of function space
paulson <lp15@cam.ac.uk>
parents: 78256
diff changeset
   890
      by (smt (verit) Collect_mono_iff DiffI closure_of_mono continuous_map contp image_subset_iff)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   891
    then show "X closure_of {x \<in> topspace X. p x \<notin> U} \<subseteq> ?T"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   892
      by (rule order_trans [OF _ continuous_map_closure_preimage_subset [OF contp]])
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   893
  qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   894
next
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   895
  show "f x = g x" if "x \<in> X frontier_of {x \<in> topspace X. p x \<in> U}" for x
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
   896
    using that continuous_map_frontier_frontier_preimage_subset [OF contp, of U] fg by blast
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   897
qed
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
   898
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   899
subsection \<open>Retractions\<close>
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   900
70136
f03a01a18c6e modernized tags: default scope excludes proof;
wenzelm
parents: 69939
diff changeset
   901
definition\<^marker>\<open>tag important\<close> retraction :: "('a::topological_space) set \<Rightarrow> 'a set \<Rightarrow> ('a \<Rightarrow> 'a) \<Rightarrow> bool"
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   902
where "retraction S T r \<longleftrightarrow>
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
   903
  T \<subseteq> S \<and> continuous_on S r \<and> r \<in> S \<rightarrow> T \<and> (\<forall>x\<in>T. r x = x)"
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   904
80914
d97fdabd9e2b standardize mixfix annotations via "isabelle update -a -u mixfix_cartouches" --- to simplify systematic editing;
wenzelm
parents: 78685
diff changeset
   905
definition\<^marker>\<open>tag important\<close> retract_of (infixl \<open>retract'_of\<close> 50) where
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   906
"T retract_of S  \<longleftrightarrow>  (\<exists>r. retraction S T r)"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   907
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   908
lemma retraction_idempotent: "retraction S T r \<Longrightarrow> x \<in> S \<Longrightarrow>  r (r x) = r x"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   909
  unfolding retraction_def by auto
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   910
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   911
text \<open>Preservation of fixpoints under (more general notion of) retraction\<close>
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   912
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   913
lemma invertible_fixpoint_property:
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   914
  fixes S :: "'a::topological_space set"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   915
    and T :: "'b::topological_space set"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   916
  assumes contt: "continuous_on T i"
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
   917
    and "i \<in> T \<rightarrow> S"
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   918
    and contr: "continuous_on S r"
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
   919
    and "r \<in> S \<rightarrow> T"
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   920
    and ri: "\<And>y. y \<in> T \<Longrightarrow> r (i y) = y"
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
   921
    and FP: "\<And>f. \<lbrakk>continuous_on S f; f \<in> S \<rightarrow> S\<rbrakk> \<Longrightarrow> \<exists>x\<in>S. f x = x"
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   922
    and contg: "continuous_on T g"
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
   923
    and "g \<in> T \<rightarrow> T"
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   924
  obtains y where "y \<in> T" and "g y = y"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   925
proof -
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   926
  have "\<exists>x\<in>S. (i \<circ> g \<circ> r) x = x"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   927
  proof (rule FP)
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   928
    show "continuous_on S (i \<circ> g \<circ> r)"
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
   929
      by (metis assms(4) assms(8) contg continuous_on_compose continuous_on_subset contr contt funcset_image)
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
   930
    show "(i \<circ> g \<circ> r) \<in> S \<rightarrow> S"
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   931
      using assms(2,4,8) by force
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   932
  qed
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   933
  then obtain x where x: "x \<in> S" "(i \<circ> g \<circ> r) x = x" ..
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   934
  then have *: "g (r x) \<in> T"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   935
    using assms(4,8) by auto
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   936
  have "r ((i \<circ> g \<circ> r) x) = r x"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   937
    using x by auto
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   938
  then show ?thesis
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   939
    using "*" ri that by auto
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   940
qed
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   941
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   942
lemma homeomorphic_fixpoint_property:
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   943
  fixes S :: "'a::topological_space set"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   944
    and T :: "'b::topological_space set"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   945
  assumes "S homeomorphic T"
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
   946
  shows "(\<forall>f. continuous_on S f \<and> f \<in> S \<rightarrow> S \<longrightarrow> (\<exists>x\<in>S. f x = x)) \<longleftrightarrow>
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
   947
         (\<forall>g. continuous_on T g \<and> g \<in> T \<rightarrow> T \<longrightarrow> (\<exists>y\<in>T. g y = y))"
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   948
         (is "?lhs = ?rhs")
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   949
proof -
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   950
  obtain r i where r:
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   951
      "\<forall>x\<in>S. i (r x) = x" "r ` S = T" "continuous_on S r"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   952
      "\<forall>y\<in>T. r (i y) = y" "i ` T = S" "continuous_on T i"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   953
    using assms unfolding homeomorphic_def homeomorphism_def  by blast
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   954
  show ?thesis
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   955
  proof
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   956
    assume ?lhs
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   957
    with r show ?rhs
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   958
      by (metis Pi_I' imageI invertible_fixpoint_property[of T i S r])
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   959
  next
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   960
    assume ?rhs
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   961
    with r show ?lhs
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   962
      using invertible_fixpoint_property[of S r T i]
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
   963
      by (metis image_subset_iff_funcset subset_refl)
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   964
  qed
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   965
qed
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   966
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   967
lemma retract_fixpoint_property:
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   968
  fixes f :: "'a::topological_space \<Rightarrow> 'b::topological_space"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   969
    and S :: "'a set"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   970
  assumes "T retract_of S"
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
   971
    and FP: "\<And>f. \<lbrakk>continuous_on S f; f \<in> S \<rightarrow> S\<rbrakk> \<Longrightarrow> \<exists>x\<in>S. f x = x"
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   972
    and contg: "continuous_on T g"
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
   973
    and "g \<in> T \<rightarrow> T"
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   974
  obtains y where "y \<in> T" and "g y = y"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   975
proof -
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   976
  obtain h where "retraction S T h"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   977
    using assms(1) unfolding retract_of_def ..
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   978
  then show ?thesis
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   979
    unfolding retraction_def
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   980
    using invertible_fixpoint_property[OF continuous_on_id _ _ _ _ FP]
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
   981
    by (smt (verit, del_insts) Pi_iff assms(4) contg subsetD that)
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   982
qed
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   983
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   984
lemma retraction:
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
   985
  "retraction S T r \<longleftrightarrow> T \<subseteq> S \<and> continuous_on S r \<and> r ` S = T \<and> (\<forall>x \<in> T. r x = x)"
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
   986
  by (force simp: retraction_def simp flip: image_subset_iff_funcset)
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   987
69753
9a3b4cca6d0b eliminated suspicious Unicode;
wenzelm
parents: 69750
diff changeset
   988
lemma retractionE: \<comment> \<open>yields properties normalized wrt. simp -- less likely to loop\<close>
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   989
  assumes "retraction S T r"
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
   990
  obtains "T = r ` S" "r \<in> S \<rightarrow> S" "continuous_on S r" "\<And>x. x \<in> S \<Longrightarrow> r (r x) = r x"
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   991
proof (rule that)
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   992
  from retraction [of S T r] assms
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   993
  have "T \<subseteq> S" "continuous_on S r" "r ` S = T" and "\<forall>x \<in> T. r x = x"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   994
    by simp_all
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
   995
  then show  "r \<in> S \<rightarrow> S" "continuous_on S r"
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
   996
    by auto
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
   997
  then show "T = r ` S"
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
   998
    using \<open>r ` S = T\<close> by blast
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
   999
  from \<open>\<forall>x \<in> T. r x = x\<close> have "r x = x" if "x \<in> T" for x
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1000
    using that by simp
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1001
  with \<open>r ` S = T\<close> show "r (r x) = r x" if "x \<in> S" for x
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1002
    using that by auto
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1003
qed
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1004
69753
9a3b4cca6d0b eliminated suspicious Unicode;
wenzelm
parents: 69750
diff changeset
  1005
lemma retract_ofE: \<comment> \<open>yields properties normalized wrt. simp -- less likely to loop\<close>
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1006
  assumes "T retract_of S"
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
  1007
  obtains r where "T = r ` S" "r \<in> S \<rightarrow> S" "continuous_on S r" "\<And>x. x \<in> S \<Longrightarrow> r (r x) = r x"
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1008
proof -
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1009
  from assms obtain r where "retraction S T r"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1010
    by (auto simp add: retract_of_def)
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1011
  with that show thesis
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1012
    by (auto elim: retractionE)
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1013
qed
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1014
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1015
lemma retract_of_imp_extensible:
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
  1016
  assumes "S retract_of T" and "continuous_on S f" and "f \<in> S \<rightarrow> U"
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
  1017
  obtains g where "continuous_on T g" "g \<in> T \<rightarrow> U" "\<And>x. x \<in> S \<Longrightarrow> g x = f x"
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1018
proof -
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1019
  from \<open>S retract_of T\<close> obtain r where r: "retraction T S r"
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1020
    by (auto simp add: retract_of_def)
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1021
  show thesis
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1022
  proof
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1023
    show "continuous_on T (f \<circ> r)"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1024
      by (metis assms(2) continuous_on_compose retraction r)
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1025
    show "f \<circ> r \<in> T \<rightarrow> U"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1026
      by (metis \<open>f \<in> S \<rightarrow> U\<close> image_comp image_subset_iff_funcset r retractionE)
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1027
    show "\<And>x. x \<in> S \<Longrightarrow> (f \<circ> r) x = f x"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1028
      by (metis comp_apply r retraction)
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1029
  qed
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1030
qed
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1031
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1032
lemma idempotent_imp_retraction:
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
  1033
  assumes "continuous_on S f" and "f \<in> S \<rightarrow> S" and "\<And>x. x \<in> S \<Longrightarrow> f(f x) = f x"
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1034
    shows "retraction S (f ` S) f"
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
  1035
  by (simp add: assms funcset_image retraction)
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1036
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1037
lemma retraction_subset:
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
  1038
  assumes "retraction S T r" and "T \<subseteq> S'" and "S' \<subseteq> S"
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
  1039
  shows "retraction S' T r"
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1040
  unfolding retraction_def
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
  1041
  by (metis assms continuous_on_subset image_mono image_subset_iff_funcset retraction)
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1042
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1043
lemma retract_of_subset:
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
  1044
  assumes "T retract_of S" and "T \<subseteq> S'" and "S' \<subseteq> S"
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
  1045
    shows "T retract_of S'"
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1046
by (meson assms retract_of_def retraction_subset)
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1047
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1048
lemma retraction_refl [simp]: "retraction S S (\<lambda>x. x)"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1049
by (simp add: retraction)
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1050
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1051
lemma retract_of_refl [iff]: "S retract_of S"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1052
  unfolding retract_of_def retraction_def
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1053
  using continuous_on_id by blast
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1054
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1055
lemma retract_of_imp_subset:
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1056
  "S retract_of T \<Longrightarrow> S \<subseteq> T"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1057
  by (simp add: retract_of_def retraction_def)
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1058
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1059
lemma retract_of_empty [simp]:
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1060
  "({} retract_of S) \<longleftrightarrow> S = {}"  "(S retract_of {}) \<longleftrightarrow> S = {}"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1061
  by (auto simp: retract_of_def retraction_def)
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1062
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1063
lemma retract_of_singleton [iff]: "({x} retract_of S) \<longleftrightarrow> x \<in> S"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1064
  unfolding retract_of_def retraction_def by force
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1065
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1066
lemma retraction_comp:
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1067
   "\<lbrakk>retraction S T f; retraction T U g\<rbrakk> \<Longrightarrow> retraction S U (g \<circ> f)"
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1068
  apply (simp add: retraction )
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1069
  by (metis subset_eq continuous_on_compose2 image_image)
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1070
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1071
lemma retract_of_trans [trans]:
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1072
  assumes "S retract_of T" and "T retract_of U"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1073
    shows "S retract_of U"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1074
using assms by (auto simp: retract_of_def intro: retraction_comp)
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1075
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1076
lemma closedin_retract:
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1077
  fixes S :: "'a :: t2_space set"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1078
  assumes "S retract_of T"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1079
    shows "closedin (top_of_set T) S"
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1080
proof -
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
  1081
  obtain r where r: "S \<subseteq> T" "continuous_on T r" "r \<in> T \<rightarrow> S" "\<And>x. x \<in> S \<Longrightarrow> r x = x"
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1082
    using assms by (auto simp: retract_of_def retraction_def)
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1083
  have "S = {x\<in>T. x = r x}"
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
  1084
    using r by force
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1085
  also have "\<dots> = T \<inter> ((\<lambda>x. (x, r x)) -` ({y. \<exists>x. y = (x, x)}))"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1086
    unfolding vimage_def mem_Times_iff fst_conv snd_conv
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1087
    using r by auto
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1088
  also have "closedin (top_of_set T) \<dots>"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1089
    by (rule continuous_closedin_preimage) (auto intro!: closed_diagonal continuous_on_Pair r)
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1090
  finally show ?thesis .
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1091
qed
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1092
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1093
lemma closedin_self [simp]: "closedin (top_of_set S) S"
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1094
  by simp
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1095
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1096
lemma retract_of_closed:
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1097
    fixes S :: "'a :: t2_space set"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1098
    shows "\<lbrakk>closed T; S retract_of T\<rbrakk> \<Longrightarrow> closed S"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1099
  by (metis closedin_retract closedin_closed_eq)
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1100
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1101
lemma retract_of_compact:
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1102
     "\<lbrakk>compact T; S retract_of T\<rbrakk> \<Longrightarrow> compact S"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1103
  by (metis compact_continuous_image retract_of_def retraction)
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1104
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1105
lemma retract_of_connected:
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1106
    "\<lbrakk>connected T; S retract_of T\<rbrakk> \<Longrightarrow> connected S"
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1107
  by (metis Topological_Spaces.connected_continuous_image retract_of_def retraction)
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1108
70178
4900351361b0 Lindelöf spaces and supporting material
paulson <lp15@cam.ac.uk>
parents: 70136
diff changeset
  1109
lemma retraction_openin_vimage_iff:
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1110
  assumes r: "retraction S T r" and "U \<subseteq> T"
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1111
  shows "openin (top_of_set S) (S \<inter> r -` U) \<longleftrightarrow> openin (top_of_set T) U" (is "?lhs = ?rhs")
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1112
proof
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1113
  assume L: ?lhs
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1114
  have "openin (top_of_set T) (T \<inter> r -` U) = openin (top_of_set (r ` T)) U"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1115
    using continuous_left_inverse_imp_quotient_map [of T r r U]
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1116
    by (metis (no_types, opaque_lifting) \<open>U \<subseteq> T\<close> equalityD1 r retraction
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1117
        retraction_subset)
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1118
  with L show "?rhs"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1119
    by (metis openin_subtopology_Int_subset order_refl r retraction retraction_subset)
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1120
next
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1121
  show "?rhs \<Longrightarrow> ?lhs"
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
  1122
    by (metis continuous_on_open r retraction)
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1123
qed
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1124
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1125
lemma retract_of_Times:
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1126
  "\<lbrakk>S retract_of S'; T retract_of T'\<rbrakk> \<Longrightarrow> (S \<times> T) retract_of (S' \<times> T')"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1127
  apply (simp add: retract_of_def retraction_def Sigma_mono, clarify)
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1128
  apply (rename_tac f g)
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1129
  apply (rule_tac x="\<lambda>z. ((f \<circ> fst) z, (g \<circ> snd) z)" in exI)
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1130
  apply (rule conjI continuous_intros | erule continuous_on_subset | force)+
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1131
  done
69750
7d83b0abbfd7 moved generalized material
nipkow
parents: 69622
diff changeset
  1132
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1133
subsection\<open>Retractions on a topological space\<close>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1134
80914
d97fdabd9e2b standardize mixfix annotations via "isabelle update -a -u mixfix_cartouches" --- to simplify systematic editing;
wenzelm
parents: 78685
diff changeset
  1135
definition retract_of_space :: "'a set \<Rightarrow> 'a topology \<Rightarrow> bool" (infix \<open>retract'_of'_space\<close> 50)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1136
  where "S retract_of_space X
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1137
         \<equiv> S \<subseteq> topspace X \<and> (\<exists>r. continuous_map X (subtopology X S) r \<and> (\<forall>x \<in> S. r x = x))"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1138
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1139
lemma retract_of_space_retraction_maps:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1140
   "S retract_of_space X \<longleftrightarrow> S \<subseteq> topspace X \<and> (\<exists>r. retraction_maps X (subtopology X S) r id)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1141
  by (auto simp: retract_of_space_def retraction_maps_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1142
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1143
lemma retract_of_space_section_map:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1144
   "S retract_of_space X \<longleftrightarrow> S \<subseteq> topspace X \<and> section_map (subtopology X S) X id"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1145
  unfolding retract_of_space_def retraction_maps_def section_map_def
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1146
  by (auto simp: continuous_map_from_subtopology)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1147
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1148
lemma retract_of_space_imp_subset:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1149
   "S retract_of_space X \<Longrightarrow> S \<subseteq> topspace X"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1150
  by (simp add: retract_of_space_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1151
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1152
lemma retract_of_space_topspace:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1153
   "topspace X retract_of_space X"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1154
  using retract_of_space_def by force
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1155
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1156
lemma retract_of_space_empty [simp]:
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
  1157
   "{} retract_of_space X \<longleftrightarrow> X = trivial_topology"
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
  1158
  by (auto simp: retract_of_space_def)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1159
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1160
lemma retract_of_space_singleton [simp]:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1161
  "{a} retract_of_space X \<longleftrightarrow> a \<in> topspace X"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1162
proof -
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1163
  have "continuous_map X (subtopology X {a}) (\<lambda>x. a) \<and> (\<lambda>x. a) a = a" if "a \<in> topspace X"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1164
    using that by simp
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1165
  then show ?thesis
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1166
    by (force simp: retract_of_space_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1167
qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1168
77934
01c88cf514fc A few new theorems
paulson <lp15@cam.ac.uk>
parents: 77138
diff changeset
  1169
lemma retract_of_space_trans:
01c88cf514fc A few new theorems
paulson <lp15@cam.ac.uk>
parents: 77138
diff changeset
  1170
  assumes "S retract_of_space X"  "T retract_of_space subtopology X S"
01c88cf514fc A few new theorems
paulson <lp15@cam.ac.uk>
parents: 77138
diff changeset
  1171
  shows "T retract_of_space X"
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1172
  using assms unfolding retract_of_space_retraction_maps
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1173
  by (metis comp_id inf.absorb_iff2 retraction_maps_compose subtopology_subtopology
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1174
      topspace_subtopology)
77934
01c88cf514fc A few new theorems
paulson <lp15@cam.ac.uk>
parents: 77138
diff changeset
  1175
01c88cf514fc A few new theorems
paulson <lp15@cam.ac.uk>
parents: 77138
diff changeset
  1176
lemma retract_of_space_subtopology:
01c88cf514fc A few new theorems
paulson <lp15@cam.ac.uk>
parents: 77138
diff changeset
  1177
  assumes "S retract_of_space X"  "S \<subseteq> U"
01c88cf514fc A few new theorems
paulson <lp15@cam.ac.uk>
parents: 77138
diff changeset
  1178
  shows "S retract_of_space subtopology X U"
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1179
  using assms unfolding retract_of_space_def
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1180
  by (metis continuous_map_from_subtopology inf.absorb_iff2 subtopology_subtopology
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1181
      topspace_subtopology)
77934
01c88cf514fc A few new theorems
paulson <lp15@cam.ac.uk>
parents: 77138
diff changeset
  1182
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1183
lemma retract_of_space_clopen:
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
  1184
  assumes "openin X S" "closedin X S" "S = {} \<Longrightarrow> X = trivial_topology"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1185
  shows "S retract_of_space X"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1186
proof (cases "S = {}")
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1187
  case False
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1188
  then obtain a where "a \<in> S"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1189
    by blast
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1190
  show ?thesis
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1191
    unfolding retract_of_space_def
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1192
  proof (intro exI conjI)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1193
    show "S \<subseteq> topspace X"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1194
      by (simp add: assms closedin_subset)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1195
    have "continuous_map X X (\<lambda>x. if x \<in> S then x else a)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1196
    proof (rule continuous_map_cases)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1197
      show "continuous_map (subtopology X (X closure_of {x. x \<in> S})) X (\<lambda>x. x)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1198
        by (simp add: continuous_map_from_subtopology)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1199
      show "continuous_map (subtopology X (X closure_of {x. x \<notin> S})) X (\<lambda>x. a)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1200
        using \<open>S \<subseteq> topspace X\<close> \<open>a \<in> S\<close> by force
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1201
      show "x = a" if "x \<in> X frontier_of {x. x \<in> S}" for x
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1202
        using assms that clopenin_eq_frontier_of by fastforce
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1203
    qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1204
    then show "continuous_map X (subtopology X S) (\<lambda>x. if x \<in> S then x else a)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1205
      using \<open>S \<subseteq> topspace X\<close> \<open>a \<in> S\<close>  by (auto simp: continuous_map_in_subtopology)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1206
  qed auto
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1207
qed (use assms in auto)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1208
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1209
lemma retract_of_space_disjoint_union:
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
  1210
  assumes "openin X S" "openin X T" and ST: "disjnt S T" "S \<union> T = topspace X" and "S = {} \<Longrightarrow> X = trivial_topology"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1211
  shows "S retract_of_space X"
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1212
  by (metis assms retract_of_space_clopen separatedin_open_sets
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1213
      separation_closedin_Un_gen subtopology_topspace)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1214
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1215
lemma retraction_maps_section_image1:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1216
  assumes "retraction_maps X Y r s"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1217
  shows "s ` (topspace Y) retract_of_space X"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1218
  unfolding retract_of_space_section_map
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1219
proof
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1220
  show "s ` topspace Y \<subseteq> topspace X"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1221
    using assms continuous_map_image_subset_topspace retraction_maps_def by blast
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1222
  show "section_map (subtopology X (s ` topspace Y)) X id"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1223
    unfolding section_map_def
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1224
    using assms retraction_maps_to_retract_maps by blast
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1225
qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1226
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1227
lemma retraction_maps_section_image2:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1228
   "retraction_maps X Y r s
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1229
        \<Longrightarrow> subtopology X (s ` (topspace Y)) homeomorphic_space Y"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1230
  using embedding_map_imp_homeomorphic_space homeomorphic_space_sym section_imp_embedding_map
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1231
        section_map_def by blast
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1232
77934
01c88cf514fc A few new theorems
paulson <lp15@cam.ac.uk>
parents: 77138
diff changeset
  1233
lemma hereditary_imp_retractive_property:
01c88cf514fc A few new theorems
paulson <lp15@cam.ac.uk>
parents: 77138
diff changeset
  1234
  assumes "\<And>X S. P X \<Longrightarrow> P(subtopology X S)" 
01c88cf514fc A few new theorems
paulson <lp15@cam.ac.uk>
parents: 77138
diff changeset
  1235
          "\<And>X X'. X homeomorphic_space X' \<Longrightarrow> (P X \<longleftrightarrow> Q X')"
01c88cf514fc A few new theorems
paulson <lp15@cam.ac.uk>
parents: 77138
diff changeset
  1236
  assumes "retraction_map X X' r" "P X"
01c88cf514fc A few new theorems
paulson <lp15@cam.ac.uk>
parents: 77138
diff changeset
  1237
  shows "Q X'"
01c88cf514fc A few new theorems
paulson <lp15@cam.ac.uk>
parents: 77138
diff changeset
  1238
  by (meson assms retraction_map_def retraction_maps_section_image2)
01c88cf514fc A few new theorems
paulson <lp15@cam.ac.uk>
parents: 77138
diff changeset
  1239
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1240
subsection\<open>Paths and path-connectedness\<close>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1241
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1242
definition pathin :: "'a topology \<Rightarrow> (real \<Rightarrow> 'a) \<Rightarrow> bool" where
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1243
   "pathin X g \<equiv> continuous_map (subtopology euclideanreal {0..1}) X g"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1244
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1245
lemma pathin_compose:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1246
     "\<lbrakk>pathin X g; continuous_map X Y f\<rbrakk> \<Longrightarrow> pathin Y (f \<circ> g)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1247
   by (simp add: continuous_map_compose pathin_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1248
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1249
lemma pathin_subtopology:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1250
     "pathin (subtopology X S) g \<longleftrightarrow> pathin X g \<and> (\<forall>x \<in> {0..1}. g x \<in> S)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1251
  by (auto simp: pathin_def continuous_map_in_subtopology)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1252
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
  1253
lemma pathin_const [simp]: "pathin X (\<lambda>x. a) \<longleftrightarrow> a \<in> topspace X"
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
  1254
  using pathin_subtopology by (fastforce simp add: pathin_def)
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
  1255
69939
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
  1256
lemma path_start_in_topspace: "pathin X g \<Longrightarrow> g 0 \<in> topspace X"
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
  1257
  by (force simp: pathin_def continuous_map)
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
  1258
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
  1259
lemma path_finish_in_topspace: "pathin X g \<Longrightarrow> g 1 \<in> topspace X"
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
  1260
  by (force simp: pathin_def continuous_map)
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
  1261
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
  1262
lemma path_image_subset_topspace: "pathin X g \<Longrightarrow> g \<in> ({0..1}) \<rightarrow> topspace X"
69939
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
  1263
  by (force simp: pathin_def continuous_map)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1264
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1265
definition path_connected_space :: "'a topology \<Rightarrow> bool"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1266
  where "path_connected_space X \<equiv> \<forall>x \<in> topspace X. \<forall> y \<in> topspace X. \<exists>g. pathin X g \<and> g 0 = x \<and> g 1 = y"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1267
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1268
definition path_connectedin :: "'a topology \<Rightarrow> 'a set \<Rightarrow> bool"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1269
  where "path_connectedin X S \<equiv> S \<subseteq> topspace X \<and> path_connected_space(subtopology X S)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1270
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1271
lemma path_connectedin_absolute [simp]:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1272
     "path_connectedin (subtopology X S) S \<longleftrightarrow> path_connectedin X S"
71172
nipkow
parents: 70178
diff changeset
  1273
  by (simp add: path_connectedin_def subtopology_subtopology)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1274
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1275
lemma path_connectedin_subset_topspace:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1276
     "path_connectedin X S \<Longrightarrow> S \<subseteq> topspace X"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1277
  by (simp add: path_connectedin_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1278
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1279
lemma path_connectedin_subtopology:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1280
     "path_connectedin (subtopology X S) T \<longleftrightarrow> path_connectedin X T \<and> T \<subseteq> S"
71172
nipkow
parents: 70178
diff changeset
  1281
  by (auto simp: path_connectedin_def subtopology_subtopology inf.absorb2)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1282
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1283
lemma path_connectedin:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1284
     "path_connectedin X S \<longleftrightarrow>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1285
        S \<subseteq> topspace X \<and>
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
  1286
        (\<forall>x \<in> S. \<forall>y \<in> S. \<exists>g. pathin X g \<and> g \<in> {0..1} \<rightarrow> S \<and> g 0 = x \<and> g 1 = y)"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1287
  unfolding path_connectedin_def path_connected_space_def pathin_def continuous_map_in_subtopology
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
  1288
  by (intro conj_cong refl ball_cong) (simp_all add: inf.absorb_iff2 flip: image_subset_iff_funcset)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1289
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1290
lemma path_connectedin_topspace:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1291
     "path_connectedin X (topspace X) \<longleftrightarrow> path_connected_space X"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1292
  by (simp add: path_connectedin_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1293
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1294
lemma path_connected_imp_connected_space:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1295
  assumes "path_connected_space X"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1296
  shows "connected_space X"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1297
proof -
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1298
  have *: "\<exists>S. connectedin X S \<and> g 0 \<in> S \<and> g 1 \<in> S" if "pathin X g" for g
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1299
  proof (intro exI conjI)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1300
    have "continuous_map (subtopology euclideanreal {0..1}) X g"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1301
      using connectedin_absolute that by (simp add: pathin_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1302
    then show "connectedin X (g ` {0..1})"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1303
      by (rule connectedin_continuous_map_image) auto
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1304
  qed auto
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1305
  show ?thesis
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1306
    using assms
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1307
    by (metis "*" connected_space_subconnected path_connected_space_def)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1308
qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1309
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1310
lemma path_connectedin_imp_connectedin:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1311
     "path_connectedin X S \<Longrightarrow> connectedin X S"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1312
  by (simp add: connectedin_def path_connected_imp_connected_space path_connectedin_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1313
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1314
lemma path_connected_space_topspace_empty:
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
  1315
     "path_connected_space trivial_topology"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1316
  by (simp add: path_connected_space_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1317
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1318
lemma path_connectedin_empty [simp]: "path_connectedin X {}"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1319
  by (simp add: path_connectedin)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1320
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1321
lemma path_connectedin_singleton [simp]: "path_connectedin X {a} \<longleftrightarrow> a \<in> topspace X"
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1322
  using pathin_const by (force simp: path_connectedin)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1323
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1324
lemma path_connectedin_continuous_map_image:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1325
  assumes f: "continuous_map X Y f" and S: "path_connectedin X S"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1326
  shows "path_connectedin Y (f ` S)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1327
proof -
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
  1328
  have fX: "f \<in> (topspace X) \<rightarrow> topspace Y"
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
  1329
    using continuous_map_def f by fastforce
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1330
  show ?thesis
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1331
    unfolding path_connectedin
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1332
  proof (intro conjI ballI; clarify?)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1333
    fix x
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1334
    assume "x \<in> S"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1335
    show "f x \<in> topspace Y"
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
  1336
      using S \<open>x \<in> S\<close> fX path_connectedin_subset_topspace by fastforce
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1337
  next
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1338
    fix x y
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1339
    assume "x \<in> S" and "y \<in> S"
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
  1340
    then obtain g where g: "pathin X g" "g \<in> {0..1} \<rightarrow> S" "g 0 = x" "g 1 = y"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1341
      using S  by (force simp: path_connectedin)
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
  1342
    show "\<exists>g. pathin Y g \<and> g \<in> {0..1} \<rightarrow> f ` S \<and> g 0 = f x \<and> g 1 = f y"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1343
    proof (intro exI conjI)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1344
      show "pathin Y (f \<circ> g)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1345
        using \<open>pathin X g\<close> f pathin_compose by auto
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1346
    qed (use g in auto)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1347
  qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1348
qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1349
69939
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
  1350
lemma path_connectedin_discrete_topology:
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1351
  "path_connectedin (discrete_topology U) S \<longleftrightarrow> S \<subseteq> U \<and> (\<exists>a. S \<subseteq> {a})" (is "?lhs = ?rhs")
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1352
proof
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1353
  show "?lhs \<Longrightarrow> ?rhs"
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1354
    by (meson connectedin_discrete_topology path_connectedin_imp_connectedin)
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1355
  show "?rhs \<Longrightarrow> ?lhs"
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1356
    using subset_singletonD by fastforce
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1357
qed
69939
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
  1358
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
  1359
lemma path_connected_space_discrete_topology:
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
  1360
   "path_connected_space (discrete_topology U) \<longleftrightarrow> (\<exists>a. U \<subseteq> {a})"
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
  1361
  by (metis path_connectedin_discrete_topology path_connectedin_topspace path_connected_space_topspace_empty
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
  1362
            subset_singletonD topspace_discrete_topology)
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
  1363
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
  1364
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1365
lemma homeomorphic_path_connected_space_imp:
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1366
  assumes "path_connected_space X"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1367
    and "X homeomorphic_space Y"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1368
  shows "path_connected_space Y"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1369
    using assms homeomorphic_space_unfold path_connectedin_continuous_map_image
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1370
    by (metis homeomorphic_eq_everything_map path_connectedin_topspace)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1371
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1372
lemma homeomorphic_path_connected_space:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1373
   "X homeomorphic_space Y \<Longrightarrow> path_connected_space X \<longleftrightarrow> path_connected_space Y"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1374
  by (meson homeomorphic_path_connected_space_imp homeomorphic_space_sym)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1375
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1376
lemma homeomorphic_map_path_connectedness:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1377
  assumes "homeomorphic_map X Y f" "U \<subseteq> topspace X"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1378
  shows "path_connectedin Y (f ` U) \<longleftrightarrow> path_connectedin X U"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1379
  unfolding path_connectedin_def
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1380
proof (intro conj_cong homeomorphic_path_connected_space)
78248
740b23f1138a EXPERIMENTAL replacement of f ` A <= B by f : A -> B in Analysis
paulson <lp15@cam.ac.uk>
parents: 78200
diff changeset
  1381
  show "f ` U \<subseteq> topspace Y \<longleftrightarrow> (U \<subseteq> topspace X)"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1382
    using assms homeomorphic_imp_surjective_map by blast
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1383
next
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1384
  show "subtopology Y (f ` U) homeomorphic_space subtopology X U"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1385
    using assms unfolding homeomorphic_eq_everything_map
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1386
    by (metis Int_absorb1 assms(1) homeomorphic_map_subtopologies homeomorphic_space 
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1387
        homeomorphic_space_sym subset_image_inj subset_inj_on)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1388
qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1389
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1390
lemma homeomorphic_map_path_connectedness_eq:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1391
   "homeomorphic_map X Y f \<Longrightarrow> path_connectedin X U \<longleftrightarrow> U \<subseteq> topspace X \<and> path_connectedin Y (f ` U)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1392
  by (meson homeomorphic_map_path_connectedness path_connectedin_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1393
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1394
subsection\<open>Connected components\<close>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1395
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1396
definition connected_component_of :: "'a topology \<Rightarrow> 'a \<Rightarrow> 'a \<Rightarrow> bool"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1397
  where "connected_component_of X x y \<equiv>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1398
        \<exists>T. connectedin X T \<and> x \<in> T \<and> y \<in> T"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1399
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1400
abbreviation connected_component_of_set
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1401
  where "connected_component_of_set X x \<equiv> Collect (connected_component_of X x)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1402
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1403
definition connected_components_of :: "'a topology \<Rightarrow> ('a set) set"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1404
  where "connected_components_of X \<equiv> connected_component_of_set X ` topspace X"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1405
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1406
lemma connected_component_in_topspace:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1407
   "connected_component_of X x y \<Longrightarrow> x \<in> topspace X \<and> y \<in> topspace X"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1408
  by (meson connected_component_of_def connectedin_subset_topspace in_mono)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1409
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1410
lemma connected_component_of_refl:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1411
   "connected_component_of X x x \<longleftrightarrow> x \<in> topspace X"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1412
  by (meson connected_component_in_topspace connected_component_of_def connectedin_sing insertI1)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1413
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1414
lemma connected_component_of_sym:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1415
   "connected_component_of X x y \<longleftrightarrow> connected_component_of X y x"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1416
  by (meson connected_component_of_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1417
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1418
lemma connected_component_of_trans:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1419
   "\<lbrakk>connected_component_of X x y; connected_component_of X y z\<rbrakk>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1420
        \<Longrightarrow> connected_component_of X x z"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1421
  unfolding connected_component_of_def
71842
db120661dded new HOL simproc: eliminate_false_implies
Manuel Eberl <eberlm@in.tum.de>
parents: 71174
diff changeset
  1422
  using connectedin_Un by blast
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1423
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1424
lemma connected_component_of_mono:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1425
   "\<lbrakk>connected_component_of (subtopology X S) x y; S \<subseteq> T\<rbrakk>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1426
        \<Longrightarrow> connected_component_of (subtopology X T) x y"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1427
  by (metis connected_component_of_def connectedin_subtopology inf.absorb_iff2 subtopology_subtopology)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1428
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1429
lemma connected_component_of_set:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1430
   "connected_component_of_set X x = {y. \<exists>T. connectedin X T \<and> x \<in> T \<and> y \<in> T}"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1431
  by (meson connected_component_of_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1432
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1433
lemma connected_component_of_subset_topspace:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1434
   "connected_component_of_set X x \<subseteq> topspace X"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1435
  using connected_component_in_topspace by force
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1436
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1437
lemma connected_component_of_eq_empty:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1438
   "connected_component_of_set X x = {} \<longleftrightarrow> (x \<notin> topspace X)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1439
  using connected_component_in_topspace connected_component_of_refl by fastforce
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1440
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1441
lemma connected_space_iff_connected_component:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1442
   "connected_space X \<longleftrightarrow> (\<forall>x \<in> topspace X. \<forall>y \<in> topspace X. connected_component_of X x y)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1443
  by (simp add: connected_component_of_def connected_space_subconnected)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1444
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1445
lemma connected_space_imp_connected_component_of:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1446
   "\<lbrakk>connected_space X; a \<in> topspace X; b \<in> topspace X\<rbrakk>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1447
    \<Longrightarrow> connected_component_of X a b"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1448
  by (simp add: connected_space_iff_connected_component)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1449
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1450
lemma connected_space_connected_component_set:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1451
   "connected_space X \<longleftrightarrow> (\<forall>x \<in> topspace X. connected_component_of_set X x = topspace X)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1452
  using connected_component_of_subset_topspace connected_space_iff_connected_component by fastforce
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1453
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1454
lemma connected_component_of_maximal:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1455
   "\<lbrakk>connectedin X S; x \<in> S\<rbrakk> \<Longrightarrow> S \<subseteq> connected_component_of_set X x"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1456
  by (meson Ball_Collect connected_component_of_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1457
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1458
lemma connected_component_of_equiv:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1459
   "connected_component_of X x y \<longleftrightarrow>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1460
    x \<in> topspace X \<and> y \<in> topspace X \<and> connected_component_of X x = connected_component_of X y"
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1461
  unfolding connected_component_in_topspace fun_eq_iff
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1462
  by (meson connected_component_of_refl connected_component_of_sym connected_component_of_trans)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1463
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1464
lemma connected_component_of_disjoint:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1465
   "disjnt (connected_component_of_set X x) (connected_component_of_set X y)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1466
    \<longleftrightarrow> ~(connected_component_of X x y)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1467
  using connected_component_of_equiv unfolding disjnt_iff by force
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1468
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1469
lemma connected_component_of_eq:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1470
   "connected_component_of X x = connected_component_of X y \<longleftrightarrow>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1471
        (x \<notin> topspace X) \<and> (y \<notin> topspace X) \<or>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1472
        x \<in> topspace X \<and> y \<in> topspace X \<and>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1473
        connected_component_of X x y"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1474
  by (metis Collect_empty_eq_bot connected_component_of_eq_empty connected_component_of_equiv)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1475
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1476
lemma connectedin_connected_component_of:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1477
   "connectedin X (connected_component_of_set X x)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1478
proof -
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1479
  have "connected_component_of_set X x = \<Union> {T. connectedin X T \<and> x \<in> T}"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1480
    by (auto simp: connected_component_of_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1481
  then show ?thesis
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1482
    by (metis (no_types, lifting) InterI connectedin_Union emptyE mem_Collect_eq)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1483
qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1484
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1485
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1486
lemma Union_connected_components_of:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1487
   "\<Union>(connected_components_of X) = topspace X"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1488
  unfolding connected_components_of_def
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1489
  using connected_component_in_topspace connected_component_of_refl by fastforce
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1490
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1491
lemma connected_components_of_maximal:
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1492
   "\<lbrakk>C \<in> connected_components_of X; connectedin X S; \<not> disjnt C S\<rbrakk> \<Longrightarrow> S \<subseteq> C"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1493
  unfolding connected_components_of_def disjnt_def
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1494
  apply clarify
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1495
  by (metis Int_emptyI connected_component_of_def connected_component_of_trans mem_Collect_eq)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1496
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1497
lemma pairwise_disjoint_connected_components_of:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1498
   "pairwise disjnt (connected_components_of X)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1499
  unfolding connected_components_of_def pairwise_def
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1500
  by (smt (verit, best) connected_component_of_disjoint connected_component_of_eq imageE)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1501
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1502
lemma complement_connected_components_of_Union:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1503
   "C \<in> connected_components_of X
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1504
      \<Longrightarrow> topspace X - C = \<Union> (connected_components_of X - {C})"
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1505
  by (metis Union_connected_components_of bot.extremum ccpo_Sup_singleton diff_Union_pairwise_disjoint
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1506
      insert_subset pairwise_disjoint_connected_components_of)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1507
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1508
lemma nonempty_connected_components_of:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1509
   "C \<in> connected_components_of X \<Longrightarrow> C \<noteq> {}"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1510
  unfolding connected_components_of_def
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1511
  by (metis (no_types, lifting) connected_component_of_eq_empty imageE)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1512
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1513
lemma connected_components_of_subset:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1514
   "C \<in> connected_components_of X \<Longrightarrow> C \<subseteq> topspace X"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1515
  using Union_connected_components_of by fastforce
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1516
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1517
lemma connectedin_connected_components_of:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1518
  assumes "C \<in> connected_components_of X"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1519
  shows "connectedin X C"
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1520
  by (metis (no_types, lifting) assms connected_components_of_def
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1521
      connectedin_connected_component_of image_iff)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1522
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1523
lemma connected_component_in_connected_components_of:
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1524
  "connected_component_of_set X a \<in> connected_components_of X \<longleftrightarrow> a \<in> topspace X"
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1525
  by (metis (no_types, lifting) connected_component_of_eq_empty connected_components_of_def image_iff)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1526
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1527
lemma connected_space_iff_components_eq:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1528
   "connected_space X \<longleftrightarrow> (\<forall>C \<in> connected_components_of X. \<forall>C' \<in> connected_components_of X. C = C')"
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1529
          (is "?lhs = ?rhs")
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1530
proof
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1531
  show "?lhs \<Longrightarrow> ?rhs"
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1532
    by (simp add: connected_components_of_def connected_space_connected_component_set)
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1533
  show "?rhs \<Longrightarrow> ?lhs"
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1534
    by (metis Union_connected_components_of Union_iff connected_space_subconnected connectedin_connected_components_of)
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1535
qed
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1536
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1537
lemma connected_components_of_eq_empty:
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
  1538
   "connected_components_of X = {} \<longleftrightarrow> X = trivial_topology"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1539
  by (simp add: connected_components_of_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1540
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1541
lemma connected_components_of_empty_space:
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
  1542
   "connected_components_of trivial_topology = {}"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1543
  by (simp add: connected_components_of_eq_empty)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1544
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1545
lemma connected_components_of_subset_sing:
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
  1546
   "connected_components_of X \<subseteq> {S} \<longleftrightarrow> connected_space X \<and> (X = trivial_topology \<or> topspace X = S)"
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
  1547
proof (cases "X = trivial_topology")
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1548
  case True
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1549
  then show ?thesis
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
  1550
    by (simp add: connected_components_of_empty_space)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1551
next
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1552
  case False
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1553
  then have "\<lbrakk>connected_components_of X \<subseteq> {S}\<rbrakk> \<Longrightarrow> topspace X = S"
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
  1554
    using Union_connected_components_of connected_components_of_eq_empty by fastforce
76894
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1555
  with False show ?thesis
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1556
    unfolding connected_components_of_def
23f819af2d9f More tidying of proofs
paulson <lp15@cam.ac.uk>
parents: 74362
diff changeset
  1557
    by (metis connected_space_connected_component_set empty_iff image_subset_iff insert_iff)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1558
qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1559
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1560
lemma connected_space_iff_components_subset_singleton:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1561
   "connected_space X \<longleftrightarrow> (\<exists>a. connected_components_of X \<subseteq> {a})"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1562
  by (simp add: connected_components_of_subset_sing)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1563
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1564
lemma connected_components_of_eq_singleton:
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
  1565
   "connected_components_of X = {S} \<longleftrightarrow> connected_space X \<and> X \<noteq> trivial_topology \<and> S = topspace X"
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
  1566
  by (metis connected_components_of_eq_empty connected_components_of_subset_sing insert_not_empty subset_singleton_iff)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1567
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1568
lemma connected_components_of_connected_space:
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
  1569
   "connected_space X \<Longrightarrow> connected_components_of X = (if X = trivial_topology then {} else {topspace X})"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1570
  by (simp add: connected_components_of_eq_empty connected_components_of_eq_singleton)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1571
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1572
lemma exists_connected_component_of_superset:
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
  1573
  assumes "connectedin X S" and ne: "X \<noteq> trivial_topology"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1574
  shows "\<exists>C. C \<in> connected_components_of X \<and> S \<subseteq> C"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1575
proof (cases "S = {}")
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1576
  case True
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1577
  then show ?thesis
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
  1578
    using ne connected_components_of_eq_empty by fastforce
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1579
next
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1580
  case False
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1581
  then show ?thesis
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1582
    using assms(1) connected_component_in_connected_components_of
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1583
      connected_component_of_maximal connectedin_subset_topspace by fastforce
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1584
qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1585
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1586
lemma closedin_connected_components_of:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1587
  assumes "C \<in> connected_components_of X"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1588
  shows   "closedin X C"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1589
proof -
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1590
  obtain x where "x \<in> topspace X" and x: "C = connected_component_of_set X x"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1591
    using assms by (auto simp: connected_components_of_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1592
  have "connected_component_of_set X x \<subseteq> topspace X"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1593
    by (simp add: connected_component_of_subset_topspace)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1594
  moreover have "X closure_of connected_component_of_set X x \<subseteq> connected_component_of_set X x"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1595
  proof (rule connected_component_of_maximal)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1596
    show "connectedin X (X closure_of connected_component_of_set X x)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1597
      by (simp add: connectedin_closure_of connectedin_connected_component_of)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1598
    show "x \<in> X closure_of connected_component_of_set X x"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1599
      by (simp add: \<open>x \<in> topspace X\<close> closure_of connected_component_of_refl)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1600
  qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1601
  ultimately
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1602
  show ?thesis
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1603
    using closure_of_subset_eq x by auto
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1604
qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1605
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1606
lemma closedin_connected_component_of: "closedin X (connected_component_of_set X x)"
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1607
  by (metis closedin_connected_components_of closedin_empty connected_component_of_eq_empty connected_components_of_def imageI)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1608
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1609
lemma connected_component_of_eq_overlap:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1610
   "connected_component_of_set X x = connected_component_of_set X y \<longleftrightarrow>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1611
      (x \<notin> topspace X) \<and> (y \<notin> topspace X) \<or>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1612
      ~(connected_component_of_set X x \<inter> connected_component_of_set X y = {})"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1613
  using connected_component_of_equiv by fastforce
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1614
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1615
lemma connected_component_of_nonoverlap:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1616
   "connected_component_of_set X x \<inter> connected_component_of_set X y = {} \<longleftrightarrow>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1617
     (x \<notin> topspace X) \<or> (y \<notin> topspace X) \<or>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1618
     ~(connected_component_of_set X x = connected_component_of_set X y)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1619
  by (metis connected_component_of_eq_empty connected_component_of_eq_overlap inf.idem)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1620
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1621
lemma connected_component_of_overlap:
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1622
   "connected_component_of_set X x \<inter> connected_component_of_set X y \<noteq> {} \<longleftrightarrow>
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1623
    x \<in> topspace X \<and> y \<in> topspace X \<and> connected_component_of_set X x = connected_component_of_set X y"
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1624
  by (meson connected_component_of_nonoverlap)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents: 69753
diff changeset
  1625
77943
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1626
subsection\<open>Combining theorems for continuous functions into the reals\<close>
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1627
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1628
text \<open>The homeomorphism between the real line and the open interval $(-1,1)$\<close>
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1629
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1630
lemma continuous_map_real_shrink:
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1631
  "continuous_map euclideanreal (top_of_set {-1<..<1}) (\<lambda>x. x / (1 + \<bar>x\<bar>))"
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1632
proof -
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1633
  have "continuous_on UNIV (\<lambda>x::real. x / (1 + \<bar>x\<bar>))"
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1634
    by (intro continuous_intros) auto
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1635
  then show ?thesis
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1636
    by (auto simp: continuous_map_in_subtopology divide_simps)
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1637
qed
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1638
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1639
lemma continuous_on_real_grow:
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1640
  "continuous_on {-1<..<1} (\<lambda>x::real. x / (1 - \<bar>x\<bar>))"
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1641
  by (intro continuous_intros) auto
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1642
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1643
lemma real_grow_shrink:
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1644
  fixes x::real 
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1645
  shows "x / (1 + \<bar>x\<bar>) / (1 - \<bar>x / (1 + \<bar>x\<bar>)\<bar>) = x"
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1646
  by (force simp: divide_simps)
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1647
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1648
lemma homeomorphic_maps_real_shrink:
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1649
  "homeomorphic_maps euclideanreal (subtopology euclideanreal {-1<..<1}) 
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1650
     (\<lambda>x. x / (1 + \<bar>x\<bar>))  (\<lambda>y. y / (1 - \<bar>y\<bar>))"
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1651
  by (force simp: homeomorphic_maps_def continuous_map_real_shrink continuous_on_real_grow divide_simps)
ffdad62bc235 Importation of additional lemmas from metric.ml
paulson <lp15@cam.ac.uk>
parents: 77934
diff changeset
  1652
78037
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1653
lemma real_shrink_Galois:
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1654
  fixes x::real
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1655
  shows "(x / (1 + \<bar>x\<bar>) = y) \<longleftrightarrow> (\<bar>y\<bar> < 1 \<and> y / (1 - \<bar>y\<bar>) = x)"
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1656
  using real_grow_shrink by (fastforce simp add: distrib_left)
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1657
78200
264f2b69d09c New and generalised analysis lemmas
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
  1658
lemma real_shrink_eq:
264f2b69d09c New and generalised analysis lemmas
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
  1659
  fixes x y::real
264f2b69d09c New and generalised analysis lemmas
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
  1660
  shows "(x / (1 + \<bar>x\<bar>) = y / (1 + \<bar>y\<bar>)) \<longleftrightarrow> x = y"
264f2b69d09c New and generalised analysis lemmas
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
  1661
  by (metis real_shrink_Galois)
264f2b69d09c New and generalised analysis lemmas
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
  1662
78037
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1663
lemma real_shrink_lt:
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1664
  fixes x::real
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1665
  shows "x / (1 + \<bar>x\<bar>) < y / (1 + \<bar>y\<bar>) \<longleftrightarrow> x < y"
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1666
  using zero_less_mult_iff [of x y] by (auto simp: field_simps abs_if not_less)
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1667
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1668
lemma real_shrink_le:
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1669
  fixes x::real
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1670
  shows "x / (1 + \<bar>x\<bar>) \<le> y / (1 + \<bar>y\<bar>) \<longleftrightarrow> x \<le> y"
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1671
  by (meson linorder_not_le real_shrink_lt)
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1672
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1673
lemma real_shrink_grow:
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1674
  fixes x::real
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1675
  shows "\<bar>x\<bar> < 1 \<Longrightarrow> x / (1 - \<bar>x\<bar>) / (1 + \<bar>x / (1 - \<bar>x\<bar>)\<bar>) = x"
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1676
  using real_shrink_Galois by blast
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1677
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1678
lemma continuous_shrink:
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1679
  "continuous_on UNIV (\<lambda>x::real. x / (1 + \<bar>x\<bar>))"
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1680
  by (intro continuous_intros) auto
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1681
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1682
lemma strict_mono_shrink:
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1683
  "strict_mono (\<lambda>x::real. x / (1 + \<bar>x\<bar>))"
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1684
  by (simp add: monotoneI real_shrink_lt)
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1685
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1686
lemma shrink_range: "(\<lambda>x::real. x / (1 + \<bar>x\<bar>)) ` S \<subseteq> {-1<..<1}"
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1687
  by (auto simp: divide_simps)
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1688
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1689
text \<open>Note: connected sets of real numbers are the same thing as intervals\<close>
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1690
lemma connected_shrink:
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1691
  fixes S :: "real set"
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1692
  shows "connected ((\<lambda>x. x / (1 + \<bar>x\<bar>)) ` S) \<longleftrightarrow> connected S"  (is "?lhs = ?rhs")
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1693
proof 
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1694
  assume "?lhs"
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1695
  then have "connected ((\<lambda>x. x / (1 - \<bar>x\<bar>)) ` (\<lambda>x. x / (1 + \<bar>x\<bar>)) ` S)"
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1696
    by (metis continuous_on_real_grow shrink_range connected_continuous_image 
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1697
               continuous_on_subset)
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1698
  then show "?rhs"
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1699
    using real_grow_shrink by (force simp add: image_comp)
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1700
next
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1701
  assume ?rhs
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1702
  then show ?lhs
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1703
    by (metis connected_continuous_image continuous_on_subset continuous_shrink subset_UNIV)
78037
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1704
qed
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77943
diff changeset
  1705
78256
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1706
subsection \<open>A few cardinality results\<close>
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1707
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1708
lemma eqpoll_real_subset:
78250
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
  1709
  fixes a b::real
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
  1710
  assumes "a < b" and S: "\<And>x. \<lbrakk>a < x; x < b\<rbrakk> \<Longrightarrow> x \<in> S"
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
  1711
  shows "S \<approx> (UNIV::real set)"
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
  1712
proof (rule lepoll_antisym)
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
  1713
  show "S \<lesssim> (UNIV::real set)"
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
  1714
    by (simp add: subset_imp_lepoll)
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
  1715
  define f where "f \<equiv> \<lambda>x. (a+b) / 2 + (b-a) / 2 * (x / (1 + \<bar>x\<bar>))"
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
  1716
  show "(UNIV::real set) \<lesssim> S"
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
  1717
    unfolding lepoll_def
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
  1718
  proof (intro exI conjI)
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
  1719
    show "inj f"
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
  1720
      unfolding inj_on_def f_def
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
  1721
      by (smt (verit, ccfv_SIG) real_shrink_eq \<open>a<b\<close> divide_eq_0_iff mult_cancel_left times_divide_eq_right)
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
  1722
    have pos: "(b-a) / 2 > 0"
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
  1723
      using \<open>a<b\<close> by auto
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
  1724
    have *: "a < (a + b) / 2 + (b - a) / 2 * x \<longleftrightarrow> (b - a) > (b - a) * -x"
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
  1725
            "(a + b) / 2 + (b - a) / 2 * x < b \<longleftrightarrow> (b - a) * x < (b - a)" for x
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
  1726
      by (auto simp: field_simps)
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
  1727
    show "range f \<subseteq> S"
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
  1728
      using shrink_range [of UNIV] \<open>a < b\<close>
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
  1729
      unfolding subset_iff f_def greaterThanLessThan_iff image_iff
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
  1730
      by (smt (verit, best) S * mult_less_cancel_left2 mult_minus_right)
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
  1731
  qed
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
  1732
qed
400aecdfd71f Another tranche of HOL Light material on metric and topological spaces
paulson <lp15@cam.ac.uk>
parents: 78248
diff changeset
  1733
78256
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1734
lemma reals01_lepoll_nat_sets: "{0..<1::real} \<lesssim> (UNIV::nat set set)"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1735
proof -
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1736
  define nxt where "nxt \<equiv> \<lambda>x::real. if x < 1/2 then (True, 2*x) else (False, 2*x - 1)"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1737
  have nxt_fun: "nxt \<in> {0..<1} \<rightarrow> UNIV \<times> {0..<1}"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1738
    by (simp add: nxt_def Pi_iff)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1739
  define \<sigma> where "\<sigma> \<equiv> \<lambda>x. rec_nat (True, x) (\<lambda>n (b,y). nxt y)"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1740
  have \<sigma>Suc [simp]: "\<sigma> x (Suc k) = nxt (snd (\<sigma> x k))" for k x
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1741
    by (simp add: \<sigma>_def case_prod_beta')
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1742
  have \<sigma>01: "x \<in> {0..<1} \<Longrightarrow> \<sigma> x n \<in> UNIV \<times> {0..<1}" for x n
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1743
  proof (induction n)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1744
    case 0
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1745
    then show ?case                                           
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1746
      by (simp add: \<sigma>_def)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1747
   next
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1748
    case (Suc n)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1749
    with nxt_fun show ?case
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1750
      by (force simp add: Pi_iff split: prod.split)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1751
  qed
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1752
  define f where "f \<equiv> \<lambda>x. {n. fst (\<sigma> x (Suc n))}"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1753
  have snd_nxt: "snd (nxt y) - snd (nxt x) = 2 * (y-x)" 
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1754
    if "fst (nxt x) = fst (nxt y)" for x y
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1755
    using that by (simp add: nxt_def split: if_split_asm)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1756
  have False if "f x = f y" "x < y" "0 \<le> x" "x < 1" "0 \<le> y" "y < 1" for x y :: real
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1757
  proof -
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1758
    have "\<And>k. fst (\<sigma> x (Suc k)) = fst (\<sigma> y (Suc k))"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1759
      using that by (force simp add: f_def)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1760
    then have eq: "\<And>k. fst (nxt (snd (\<sigma> x k))) = fst (nxt (snd (\<sigma> y k)))"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1761
      by (metis \<sigma>_def case_prod_beta' rec_nat_Suc_imp)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1762
    have *: "snd (\<sigma> y k) - snd (\<sigma> x k) = 2 ^ k * (y-x)" for k
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1763
    proof (induction k)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1764
      case 0
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1765
      then show ?case
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1766
        by (simp add: \<sigma>_def)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1767
    next
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1768
      case (Suc k)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1769
      then show ?case
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1770
        by (simp add: eq snd_nxt)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1771
    qed
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1772
    define n where "n \<equiv> nat (\<lceil>log 2 (1 / (y - x))\<rceil>)"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1773
    have "2^n \<ge> 1 / (y - x)"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1774
      by (simp add: n_def power_of_nat_log_ge)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1775
    then have "2^n * (y-x) \<ge> 1"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1776
      using \<open>x < y\<close> by (simp add: n_def field_simps)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1777
    with * have "snd (\<sigma> y n) - snd (\<sigma> x n) \<ge> 1"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1778
      by presburger
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1779
    moreover have "snd (\<sigma> x n) \<in> {0..<1}" "snd (\<sigma> y n) \<in> {0..<1}"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1780
      using that by (meson \<sigma>01 atLeastLessThan_iff mem_Times_iff)+
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1781
    ultimately show False by simp
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1782
  qed
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1783
  then have "inj_on f {0..<1}"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1784
    by (meson atLeastLessThan_iff linorder_inj_onI')
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1785
  then show ?thesis
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1786
    unfolding lepoll_def by blast
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1787
qed
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1788
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1789
lemma nat_sets_lepoll_reals01: "(UNIV::nat set set) \<lesssim> {0..<1::real}"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1790
proof -
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1791
  define F where "F \<equiv> \<lambda>S i. if i\<in>S then (inverse 3::real) ^ i else 0"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1792
  have Fge0: "F S i \<ge> 0" for S i
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1793
    by (simp add: F_def)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1794
  have F: "summable (F S)" for S
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1795
    unfolding F_def by (force intro: summable_comparison_test_ev [where g = "power (inverse 3)"])
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1796
  have "sum (F S) {..<n} \<le> 3/2" for n S
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1797
  proof (cases n)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1798
    case (Suc n')
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1799
    have "sum (F S) {..<n} \<le> (\<Sum>i<n. inverse 3 ^ i)"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1800
      by (simp add: F_def sum_mono)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1801
    also have "\<dots> = (\<Sum>i=0..n'. inverse 3 ^ i)"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1802
      using Suc atLeast0AtMost lessThan_Suc_atMost by presburger
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1803
    also have "\<dots> = (3/2) * (1 - inverse 3 ^ n)"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1804
      using sum_gp_multiplied [of 0 n' "inverse (3::real)"] by (simp add: Suc field_simps)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1805
    also have "\<dots> \<le> 3/2"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1806
      by (simp add: field_simps)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1807
    finally show ?thesis .
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1808
  qed auto
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1809
  then have F32: "suminf (F S) \<le> 3/2" for S
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1810
    using F suminf_le_const by blast
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1811
  define f where "f \<equiv> \<lambda>S. suminf (F S) / 2"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1812
  have monoF: "F S n \<le> F T n" if "S \<subseteq> T" for S T n
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1813
    using F_def that by auto
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1814
  then have monof: "f S \<le> f T" if "S \<subseteq> T" for S T
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1815
    using that F by (simp add: f_def suminf_le)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1816
  have "f S \<in> {0..<1::real}" for S
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1817
  proof -
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1818
    have "0 \<le> suminf (F S)"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1819
      using F by (simp add: F_def suminf_nonneg)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1820
    with F32[of S] show ?thesis
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1821
      by (auto simp: f_def)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1822
  qed
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1823
  moreover have "inj f"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1824
  proof
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1825
    fix S T
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1826
    assume "f S = f T" 
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1827
    show "S = T"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1828
    proof (rule ccontr)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1829
      assume "S \<noteq> T"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1830
      then have ST_ne: "(S-T) \<union> (T-S) \<noteq> {}"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1831
        by blast
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1832
      define n where "n \<equiv> LEAST n. n \<in> (S-T) \<union> (T-S)"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1833
      have sum_split: "suminf (F U) = sum (F U) {..<Suc n} + (\<Sum>k. F U (k + Suc n))"  for U
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1834
        by (metis F add.commute suminf_split_initial_segment)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1835
      have yes: "f U \<ge> (sum (F U) {..<n} + (inverse 3::real) ^ n) / 2" 
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1836
        if "n \<in> U" for U
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1837
      proof -
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1838
        have "0 \<le> (\<Sum>k. F U (k + Suc n))"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1839
          by (metis F Fge0 suminf_nonneg summable_iff_shift)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1840
        moreover have "F U n = (1/3) ^ n"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1841
          by (simp add: F_def that)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1842
        ultimately show ?thesis
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1843
          by (simp add: sum_split f_def)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1844
      qed
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1845
      have *: "(\<Sum>k. F UNIV (k + n)) = (\<Sum>k. F UNIV k) * (inverse 3::real) ^ n" for n
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1846
        by (simp add: F_def power_add suminf_mult2)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1847
      have no: "f U < (sum (F U) {..<n} + (inverse 3::real) ^ n) / 2" 
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1848
        if "n \<notin> U" for U
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1849
      proof -
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1850
        have [simp]: "F U n = 0"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1851
          by (simp add: F_def that)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1852
        have "(\<Sum>k. F U (k + Suc n)) \<le> (\<Sum>k. F UNIV (k + Suc n))"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1853
          by (metis F monoF subset_UNIV suminf_le summable_ignore_initial_segment)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1854
        then have "suminf (F U) \<le> (\<Sum>k. F UNIV (k + Suc n)) + (\<Sum>i<n. F U i)"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1855
          by (simp add: sum_split)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1856
        also have "\<dots> < (inverse 3::real) ^ n + (\<Sum>i<n. F U i)"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1857
          unfolding * using F32[of UNIV] by simp
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1858
        finally have "suminf (F U) < inverse 3 ^ n + sum (F U) {..<n}" .
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1859
        then show ?thesis
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1860
          by (simp add: f_def)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1861
      qed
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1862
      have "S \<inter> {..<n} = T \<inter> {..<n}"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1863
        using not_less_Least by (fastforce simp add: n_def)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1864
      then have "sum (F S) {..<n} = sum (F T) {..<n}"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1865
        by (metis (no_types, lifting) F_def Int_iff sum.cong)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1866
      moreover consider "n \<in> S-T" | "n \<in> T-S"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1867
        by (metis LeastI_ex ST_ne UnE ex_in_conv n_def)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1868
      ultimately show False
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1869
        by (smt (verit, best) Diff_iff \<open>f S = f T\<close> yes no)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1870
    qed
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1871
  qed
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1872
  ultimately show ?thesis
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1873
    by (meson image_subsetI lepoll_def)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1874
qed
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1875
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1876
lemma open_interval_eqpoll_reals:
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1877
  fixes a b::real
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1878
  shows "{a<..<b} \<approx> (UNIV::real set) \<longleftrightarrow> a<b"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1879
  using bij_betw_tan bij_betw_open_intervals eqpoll_def
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1880
  by (smt (verit, best) UNIV_I eqpoll_real_subset eqpoll_iff_bijections greaterThanLessThan_iff)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1881
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1882
lemma closed_interval_eqpoll_reals:
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1883
  fixes a b::real
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1884
  shows "{a..b} \<approx> (UNIV::real set) \<longleftrightarrow> a < b"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1885
proof
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1886
  show "{a..b} \<approx> (UNIV::real set) \<Longrightarrow> a < b"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1887
    using eqpoll_finite_iff infinite_Icc_iff infinite_UNIV_char_0 by blast
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1888
qed (auto simp: eqpoll_real_subset)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1889
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1890
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1891
lemma reals_lepoll_reals01: "(UNIV::real set) \<lesssim> {0..<1::real}"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1892
proof -
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1893
  have "(UNIV::real set) \<approx> {0<..<1::real}"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1894
    by (simp add: open_interval_eqpoll_reals eqpoll_sym)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1895
  also have "\<dots> \<lesssim> {0..<1::real}"
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1896
    by (simp add: greaterThanLessThan_subseteq_atLeastLessThan_iff subset_imp_lepoll)
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1897
  finally show ?thesis .
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1898
qed
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1899
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1900
lemma nat_sets_eqpoll_reals: "(UNIV::nat set set) \<approx> (UNIV::real set)"
82520
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1901
  by (meson eqpoll_trans lepoll_antisym nat_sets_lepoll_reals01 reals01_lepoll_nat_sets
1b17f0a41aa3 tidied more proofs
paulson <lp15@cam.ac.uk>
parents: 80914
diff changeset
  1902
      reals_lepoll_reals01 subset_UNIV subset_imp_lepoll)
78256
71e1aa0d9421 A couple of new lemmas involving cardinality
paulson <lp15@cam.ac.uk>
parents: 78250
diff changeset
  1903
69616
d18dc9c5c456 split off theory combining Elementary_Topology and Abstract_Topology
immler
parents:
diff changeset
  1904
end