src/HOL/Analysis/Product_Topology.thy
author wenzelm
Mon, 21 Jul 2025 16:21:37 +0200
changeset 82892 45107da819fc
parent 78336 6bae28577994
permissions -rw-r--r--
eliminate odd Unicode characters (amending e9f3b94eb6a0, b69e4da2604b, 8f0b2daa7eaa, 8d1e295aab70);
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
     1
section\<open>The binary product topology\<close>
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
     2
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
     3
theory Product_Topology
77939
98879407d33c Two new theories containing material ported from HOL Light about abstract topology
paulson <lp15@cam.ac.uk>
parents: 77935
diff changeset
     4
  imports Function_Topology
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
     5
begin
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
     6
71200
3548d54ce3ee split off metric spaces part of Function_Topology: subsequent theories Product_Topology, T1_Spaces, Lindelof_Spaces are purely topological
immler
parents: 70178
diff changeset
     7
section \<open>Product Topology\<close>
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
     8
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
     9
subsection\<open>Definition\<close>
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    10
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    11
definition prod_topology :: "'a topology \<Rightarrow> 'b topology \<Rightarrow> ('a \<times> 'b) topology" where
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    12
 "prod_topology X Y \<equiv> topology (arbitrary union_of (\<lambda>U. U \<in> {S \<times> T |S T. openin X S \<and> openin Y T}))"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    13
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    14
lemma open_product_open:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    15
  assumes "open A"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    16
  shows "\<exists>\<U>. \<U> \<subseteq> {S \<times> T |S T. open S \<and> open T} \<and> \<Union> \<U> = A"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    17
proof -
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    18
  obtain f g where *: "\<And>u. u \<in> A \<Longrightarrow> open (f u) \<and> open (g u) \<and> u \<in> (f u) \<times> (g u) \<and> (f u) \<times> (g u) \<subseteq> A"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    19
    using open_prod_def [of A] assms by metis
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    20
  let ?\<U> = "(\<lambda>u. f u \<times> g u) ` A"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    21
  show ?thesis
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    22
    by (rule_tac x="?\<U>" in exI) (auto simp: dest: *)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    23
qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    24
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    25
lemma open_product_open_eq: "(arbitrary union_of (\<lambda>U. \<exists>S T. U = S \<times> T \<and> open S \<and> open T)) = open"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    26
  by (force simp: union_of_def arbitrary_def intro: open_product_open open_Times)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    27
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    28
lemma openin_prod_topology:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    29
   "openin (prod_topology X Y) = arbitrary union_of (\<lambda>U. U \<in> {S \<times> T |S T. openin X S \<and> openin Y T})"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    30
  unfolding prod_topology_def
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    31
proof (rule topology_inverse')
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    32
  show "istopology (arbitrary union_of (\<lambda>U. U \<in> {S \<times> T |S T. openin X S \<and> openin Y T}))"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    33
    apply (rule istopology_base, simp)
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
    34
    by (metis openin_Int Times_Int_Times)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    35
qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    36
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    37
lemma topspace_prod_topology [simp]:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    38
   "topspace (prod_topology X Y) = topspace X \<times> topspace Y"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    39
proof -
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    40
  have "topspace(prod_topology X Y) = \<Union> (Collect (openin (prod_topology X Y)))" (is "_ = ?Z")
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    41
    unfolding topspace_def ..
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    42
  also have "\<dots> = topspace X \<times> topspace Y"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    43
  proof
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    44
    show "?Z \<subseteq> topspace X \<times> topspace Y"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    45
      apply (auto simp: openin_prod_topology union_of_def arbitrary_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    46
      using openin_subset by force+
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    47
  next
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    48
    have *: "\<exists>A B. topspace X \<times> topspace Y = A \<times> B \<and> openin X A \<and> openin Y B"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    49
      by blast
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    50
    show "topspace X \<times> topspace Y \<subseteq> ?Z"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    51
      apply (rule Union_upper)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    52
      using * by (simp add: openin_prod_topology arbitrary_union_of_inc)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    53
  qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    54
  finally show ?thesis .
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    55
qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    56
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
    57
lemma prod_topology_trivial_iff [simp]:
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
    58
  "prod_topology X Y = trivial_topology \<longleftrightarrow> X = trivial_topology \<or> Y = trivial_topology"
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
    59
  by (metis (full_types) Sigma_empty1 null_topspace_iff_trivial subset_empty times_subset_iff topspace_prod_topology)
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
    60
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    61
lemma subtopology_Times:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    62
  shows "subtopology (prod_topology X Y) (S \<times> T) = prod_topology (subtopology X S) (subtopology Y T)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    63
proof -
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    64
  have "((\<lambda>U. \<exists>S T. U = S \<times> T \<and> openin X S \<and> openin Y T) relative_to S \<times> T) =
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    65
        (\<lambda>U. \<exists>S' T'. U = S' \<times> T' \<and> (openin X relative_to S) S' \<and> (openin Y relative_to T) T')"
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
    66
    by (auto simp: relative_to_def Times_Int_Times fun_eq_iff) metis
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    67
  then show ?thesis
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    68
    by (simp add: topology_eq openin_prod_topology arbitrary_union_of_relative_to flip: openin_relative_to)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    69
qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    70
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    71
lemma prod_topology_subtopology:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    72
    "prod_topology (subtopology X S) Y = subtopology (prod_topology X Y) (S \<times> topspace Y)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    73
    "prod_topology X (subtopology Y T) = subtopology (prod_topology X Y) (topspace X \<times> T)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    74
by (auto simp: subtopology_Times)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    75
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    76
lemma prod_topology_discrete_topology:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    77
     "discrete_topology (S \<times> T) = prod_topology (discrete_topology S) (discrete_topology T)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    78
  by (auto simp: discrete_topology_unique openin_prod_topology intro: arbitrary_union_of_inc)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    79
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    80
lemma prod_topology_euclidean [simp]: "prod_topology euclidean euclidean = euclidean"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    81
  by (simp add: prod_topology_def open_product_open_eq)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    82
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    83
lemma prod_topology_subtopology_eu [simp]:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    84
  "prod_topology (subtopology euclidean S) (subtopology euclidean T) = subtopology euclidean (S \<times> T)"
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
    85
  by (simp add: prod_topology_subtopology subtopology_subtopology Times_Int_Times)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    86
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    87
lemma openin_prod_topology_alt:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    88
     "openin (prod_topology X Y) S \<longleftrightarrow>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    89
      (\<forall>x y. (x,y) \<in> S \<longrightarrow> (\<exists>U V. openin X U \<and> openin Y V \<and> x \<in> U \<and> y \<in> V \<and> U \<times> V \<subseteq> S))"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    90
  apply (auto simp: openin_prod_topology arbitrary_union_of_alt, fastforce)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    91
  by (metis mem_Sigma_iff)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    92
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    93
lemma open_map_fst: "open_map (prod_topology X Y) X fst"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    94
  unfolding open_map_def openin_prod_topology_alt
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    95
  by (force simp: openin_subopen [of X "fst ` _"] intro: subset_fst_imageI)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    96
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    97
lemma open_map_snd: "open_map (prod_topology X Y) Y snd"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    98
  unfolding open_map_def openin_prod_topology_alt
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
    99
  by (force simp: openin_subopen [of Y "snd ` _"] intro: subset_snd_imageI)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   100
69986
f2d327275065 generalised homotopic_with to topologies; homotopic_with_canon is the old version
paulson <lp15@cam.ac.uk>
parents: 69945
diff changeset
   101
lemma openin_prod_Times_iff:
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   102
     "openin (prod_topology X Y) (S \<times> T) \<longleftrightarrow> S = {} \<or> T = {} \<or> openin X S \<and> openin Y T"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   103
proof (cases "S = {} \<or> T = {}")
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   104
  case False
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   105
  then show ?thesis
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   106
    apply (simp add: openin_prod_topology_alt openin_subopen [of X S] openin_subopen [of Y T] times_subset_iff, safe)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   107
      apply (meson|force)+
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   108
    done
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   109
qed force
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   110
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   111
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   112
lemma closure_of_Times:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   113
   "(prod_topology X Y) closure_of (S \<times> T) = (X closure_of S) \<times> (Y closure_of T)"  (is "?lhs = ?rhs")
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   114
proof
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   115
  show "?lhs \<subseteq> ?rhs"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   116
    by (clarsimp simp: closure_of_def openin_prod_topology_alt) blast
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   117
  show "?rhs \<subseteq> ?lhs"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   118
    by (clarsimp simp: closure_of_def openin_prod_topology_alt) (meson SigmaI subsetD)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   119
qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   120
69986
f2d327275065 generalised homotopic_with to topologies; homotopic_with_canon is the old version
paulson <lp15@cam.ac.uk>
parents: 69945
diff changeset
   121
lemma closedin_prod_Times_iff:
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   122
   "closedin (prod_topology X Y) (S \<times> T) \<longleftrightarrow> S = {} \<or> T = {} \<or> closedin X S \<and> closedin Y T"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   123
  by (auto simp: closure_of_Times times_eq_iff simp flip: closure_of_eq)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   124
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
   125
lemma interior_of_Times: "(prod_topology X Y) interior_of (S \<times> T) = (X interior_of S) \<times> (Y interior_of T)"
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   126
proof (rule interior_of_unique)
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   127
  show "(X interior_of S) \<times> Y interior_of T \<subseteq> S \<times> T"
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   128
    by (simp add: Sigma_mono interior_of_subset)
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   129
  show "openin (prod_topology X Y) ((X interior_of S) \<times> Y interior_of T)"
69986
f2d327275065 generalised homotopic_with to topologies; homotopic_with_canon is the old version
paulson <lp15@cam.ac.uk>
parents: 69945
diff changeset
   130
    by (simp add: openin_prod_Times_iff)
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
   131
next
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   132
  show "T' \<subseteq> (X interior_of S) \<times> Y interior_of T" if "T' \<subseteq> S \<times> T" "openin (prod_topology X Y) T'" for T'
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   133
  proof (clarsimp; intro conjI)
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   134
    fix a :: "'a" and b :: "'b"
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   135
    assume "(a, b) \<in> T'"
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   136
    with that obtain U V where UV: "openin X U" "openin Y V" "a \<in> U" "b \<in> V" "U \<times> V \<subseteq> T'"
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   137
      by (metis openin_prod_topology_alt)
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   138
    then show "a \<in> X interior_of S"
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   139
      using interior_of_maximal_eq that(1) by fastforce
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   140
    show "b \<in> Y interior_of T"
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   141
      using UV interior_of_maximal_eq that(1)
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   142
      by (metis SigmaI mem_Sigma_iff subset_eq)
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   143
  qed
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   144
qed
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   145
78093
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   146
text \<open>Missing the opposite direction. Does it hold? A converse is proved for proper maps, a stronger condition\<close>
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   147
lemma closed_map_prod:
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   148
  assumes "closed_map (prod_topology X Y) (prod_topology X' Y') (\<lambda>(x,y). (f x, g y))"
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   149
  shows "(prod_topology X Y) = trivial_topology \<or> closed_map X X' f \<and> closed_map Y Y' g"
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   150
proof (cases "(prod_topology X Y) = trivial_topology")
78093
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   151
  case False
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   152
  then have ne: "topspace X \<noteq> {}" "topspace Y \<noteq> {}"
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   153
    by (auto simp flip: null_topspace_iff_trivial)
78093
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   154
  have "closed_map X X' f"
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   155
    unfolding closed_map_def
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   156
  proof (intro strip)
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   157
    fix C
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   158
    assume "closedin X C"
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   159
    show "closedin X' (f ` C)"
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   160
    proof (cases "C={}")
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   161
      case False
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   162
      with assms have "closedin (prod_topology X' Y') ((\<lambda>(x,y). (f x, g y)) ` (C \<times> topspace Y))"
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   163
        by (simp add: \<open>closedin X C\<close> closed_map_def closedin_prod_Times_iff)
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   164
      with False ne show ?thesis
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   165
        by (simp add: image_paired_Times closedin_Times closedin_prod_Times_iff)
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   166
    qed auto
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   167
  qed
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   168
  moreover
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   169
  have "closed_map Y Y' g"
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   170
    unfolding closed_map_def
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   171
  proof (intro strip)
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   172
    fix C
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   173
    assume "closedin Y C"
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   174
    show "closedin Y' (g ` C)"
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   175
    proof (cases "C={}")
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   176
      case False
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   177
      with assms have "closedin (prod_topology X' Y') ((\<lambda>(x,y). (f x, g y)) ` (topspace X \<times> C))"
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   178
        by (simp add: \<open>closedin Y C\<close> closed_map_def closedin_prod_Times_iff)
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   179
      with False ne show ?thesis
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   180
        by (simp add: image_paired_Times closedin_Times closedin_prod_Times_iff)
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   181
    qed auto
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   182
  qed
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   183
  ultimately show ?thesis
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   184
    by (auto simp: False)
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   185
qed auto
cec875dcc59e Finally, the abstract metric space development
paulson <lp15@cam.ac.uk>
parents: 78037
diff changeset
   186
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
   187
subsection \<open>Continuity\<close>
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   188
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   189
lemma continuous_map_pairwise:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   190
   "continuous_map Z (prod_topology X Y) f \<longleftrightarrow> continuous_map Z X (fst \<circ> f) \<and> continuous_map Z Y (snd \<circ> f)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   191
   (is "?lhs = ?rhs")
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   192
proof -
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   193
  let ?g = "fst \<circ> f" and ?h = "snd \<circ> f"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   194
  have f: "f x = (?g x, ?h x)" for x
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   195
    by auto
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   196
  show ?thesis
78320
eb9a9690b8f5 cosmetic improvements, new lemmas, especially more uses of function space
paulson <lp15@cam.ac.uk>
parents: 78093
diff changeset
   197
  proof (cases "?g \<in> topspace Z \<rightarrow> topspace X \<and> ?h \<in> topspace Z \<rightarrow> topspace Y")
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   198
    case True
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   199
    show ?thesis
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   200
    proof safe
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   201
      assume "continuous_map Z (prod_topology X Y) f"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   202
      then have "openin Z {x \<in> topspace Z. fst (f x) \<in> U}" if "openin X U" for U
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   203
        unfolding continuous_map_def using True that
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   204
        apply clarify
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   205
        apply (drule_tac x="U \<times> topspace Y" in spec)
78320
eb9a9690b8f5 cosmetic improvements, new lemmas, especially more uses of function space
paulson <lp15@cam.ac.uk>
parents: 78093
diff changeset
   206
        by (auto simp: openin_prod_Times_iff mem_Times_iff Pi_iff cong: conj_cong)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   207
      with True show "continuous_map Z X (fst \<circ> f)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   208
        by (auto simp: continuous_map_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   209
    next
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   210
      assume "continuous_map Z (prod_topology X Y) f"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   211
      then have "openin Z {x \<in> topspace Z. snd (f x) \<in> V}" if "openin Y V" for V
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   212
        unfolding continuous_map_def using True that
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   213
        apply clarify
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   214
        apply (drule_tac x="topspace X \<times> V" in spec)
78320
eb9a9690b8f5 cosmetic improvements, new lemmas, especially more uses of function space
paulson <lp15@cam.ac.uk>
parents: 78093
diff changeset
   215
        by (simp add: openin_prod_Times_iff mem_Times_iff Pi_iff cong: conj_cong)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   216
      with True show "continuous_map Z Y (snd \<circ> f)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   217
        by (auto simp: continuous_map_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   218
    next
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   219
      assume Z: "continuous_map Z X (fst \<circ> f)" "continuous_map Z Y (snd \<circ> f)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   220
      have *: "openin Z {x \<in> topspace Z. f x \<in> W}"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   221
        if "\<And>w. w \<in> W \<Longrightarrow> \<exists>U V. openin X U \<and> openin Y V \<and> w \<in> U \<times> V \<and> U \<times> V \<subseteq> W" for W
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   222
      proof (subst openin_subopen, clarify)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   223
        fix x :: "'a"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   224
        assume "x \<in> topspace Z" and "f x \<in> W"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   225
        with that [OF \<open>f x \<in> W\<close>]
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   226
        obtain U V where UV: "openin X U" "openin Y V" "f x \<in> U \<times> V" "U \<times> V \<subseteq> W"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   227
          by auto
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   228
        with Z  UV show "\<exists>T. openin Z T \<and> x \<in> T \<and> T \<subseteq> {x \<in> topspace Z. f x \<in> W}"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   229
          apply (rule_tac x="{x \<in> topspace Z. ?g x \<in> U} \<inter> {x \<in> topspace Z. ?h x \<in> V}" in exI)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   230
          apply (auto simp: \<open>x \<in> topspace Z\<close> continuous_map_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   231
          done
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   232
      qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   233
      show "continuous_map Z (prod_topology X Y) f"
78320
eb9a9690b8f5 cosmetic improvements, new lemmas, especially more uses of function space
paulson <lp15@cam.ac.uk>
parents: 78093
diff changeset
   234
        using True by (force simp: continuous_map_def openin_prod_topology_alt mem_Times_iff *)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   235
    qed
78320
eb9a9690b8f5 cosmetic improvements, new lemmas, especially more uses of function space
paulson <lp15@cam.ac.uk>
parents: 78093
diff changeset
   236
  qed (force simp: continuous_map_def)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   237
qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   238
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   239
lemma continuous_map_paired:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   240
   "continuous_map Z (prod_topology X Y) (\<lambda>x. (f x,g x)) \<longleftrightarrow> continuous_map Z X f \<and> continuous_map Z Y g"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   241
  by (simp add: continuous_map_pairwise o_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   242
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   243
lemma continuous_map_pairedI [continuous_intros]:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   244
   "\<lbrakk>continuous_map Z X f; continuous_map Z Y g\<rbrakk> \<Longrightarrow> continuous_map Z (prod_topology X Y) (\<lambda>x. (f x,g x))"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   245
  by (simp add: continuous_map_pairwise o_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   246
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   247
lemma continuous_map_fst [continuous_intros]: "continuous_map (prod_topology X Y) X fst"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   248
  using continuous_map_pairwise [of "prod_topology X Y" X Y id]
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   249
  by (simp add: continuous_map_pairwise)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   250
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   251
lemma continuous_map_snd [continuous_intros]: "continuous_map (prod_topology X Y) Y snd"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   252
  using continuous_map_pairwise [of "prod_topology X Y" X Y id]
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   253
  by (simp add: continuous_map_pairwise)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   254
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   255
lemma continuous_map_fst_of [continuous_intros]:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   256
   "continuous_map Z (prod_topology X Y) f \<Longrightarrow> continuous_map Z X (fst \<circ> f)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   257
  by (simp add: continuous_map_pairwise)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   258
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   259
lemma continuous_map_snd_of [continuous_intros]:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   260
   "continuous_map Z (prod_topology X Y) f \<Longrightarrow> continuous_map Z Y (snd \<circ> f)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   261
  by (simp add: continuous_map_pairwise)
69994
cf7150ab1075 more stuff from HOL Light: Euclidean spaces and n-spheres, Hausdorff spaces, etc.
paulson <lp15@cam.ac.uk>
parents: 69986
diff changeset
   262
    
cf7150ab1075 more stuff from HOL Light: Euclidean spaces and n-spheres, Hausdorff spaces, etc.
paulson <lp15@cam.ac.uk>
parents: 69986
diff changeset
   263
lemma continuous_map_prod_fst: 
cf7150ab1075 more stuff from HOL Light: Euclidean spaces and n-spheres, Hausdorff spaces, etc.
paulson <lp15@cam.ac.uk>
parents: 69986
diff changeset
   264
  "i \<in> I \<Longrightarrow> continuous_map (prod_topology (product_topology (\<lambda>i. Y) I) X) Y (\<lambda>x. fst x i)"
cf7150ab1075 more stuff from HOL Light: Euclidean spaces and n-spheres, Hausdorff spaces, etc.
paulson <lp15@cam.ac.uk>
parents: 69986
diff changeset
   265
  using continuous_map_componentwise_UNIV continuous_map_fst by fastforce
cf7150ab1075 more stuff from HOL Light: Euclidean spaces and n-spheres, Hausdorff spaces, etc.
paulson <lp15@cam.ac.uk>
parents: 69986
diff changeset
   266
cf7150ab1075 more stuff from HOL Light: Euclidean spaces and n-spheres, Hausdorff spaces, etc.
paulson <lp15@cam.ac.uk>
parents: 69986
diff changeset
   267
lemma continuous_map_prod_snd: 
cf7150ab1075 more stuff from HOL Light: Euclidean spaces and n-spheres, Hausdorff spaces, etc.
paulson <lp15@cam.ac.uk>
parents: 69986
diff changeset
   268
  "i \<in> I \<Longrightarrow> continuous_map (prod_topology X (product_topology (\<lambda>i. Y) I)) Y (\<lambda>x. snd x i)"
cf7150ab1075 more stuff from HOL Light: Euclidean spaces and n-spheres, Hausdorff spaces, etc.
paulson <lp15@cam.ac.uk>
parents: 69986
diff changeset
   269
  using continuous_map_componentwise_UNIV continuous_map_snd by fastforce
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   270
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   271
lemma continuous_map_if_iff [simp]: "continuous_map X Y (\<lambda>x. if P then f x else g x) \<longleftrightarrow> continuous_map X Y (if P then f else g)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   272
  by simp
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   273
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   274
lemma continuous_map_if [continuous_intros]: "\<lbrakk>P \<Longrightarrow> continuous_map X Y f; ~P \<Longrightarrow> continuous_map X Y g\<rbrakk>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   275
      \<Longrightarrow> continuous_map X Y (\<lambda>x. if P then f x else g x)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   276
  by simp
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   277
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   278
lemma prod_topology_trivial1 [simp]: "prod_topology trivial_topology Y = trivial_topology"
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   279
  using continuous_map_fst continuous_map_on_empty2 by blast
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   280
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   281
lemma prod_topology_trivial2 [simp]: "prod_topology X trivial_topology = trivial_topology"
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   282
  using continuous_map_snd continuous_map_on_empty2 by blast
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   283
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   284
lemma continuous_map_subtopology_fst [continuous_intros]: "continuous_map (subtopology (prod_topology X Y) Z) X fst"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   285
      using continuous_map_from_subtopology continuous_map_fst by force
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   286
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   287
lemma continuous_map_subtopology_snd [continuous_intros]: "continuous_map (subtopology (prod_topology X Y) Z) Y snd"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   288
      using continuous_map_from_subtopology continuous_map_snd by force
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   289
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   290
lemma quotient_map_fst [simp]:
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   291
   "quotient_map(prod_topology X Y) X fst \<longleftrightarrow> (Y = trivial_topology \<longrightarrow> X = trivial_topology)"
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   292
  apply (simp add: continuous_open_quotient_map open_map_fst continuous_map_fst)
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   293
  by (metis null_topspace_iff_trivial)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   294
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   295
lemma quotient_map_snd [simp]:
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   296
   "quotient_map(prod_topology X Y) Y snd \<longleftrightarrow> (X = trivial_topology \<longrightarrow> Y = trivial_topology)"
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   297
  apply (simp add: continuous_open_quotient_map open_map_snd continuous_map_snd)
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   298
  by (metis null_topspace_iff_trivial)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   299
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   300
lemma retraction_map_fst:
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   301
   "retraction_map (prod_topology X Y) X fst \<longleftrightarrow> (Y = trivial_topology \<longrightarrow> X = trivial_topology)"
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   302
proof (cases "Y = trivial_topology")
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   303
  case True
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   304
  then show ?thesis
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   305
    using continuous_map_image_subset_topspace
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   306
    by (auto simp: retraction_map_def retraction_maps_def continuous_map_pairwise)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   307
next
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   308
  case False
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   309
  have "\<exists>g. continuous_map X (prod_topology X Y) g \<and> (\<forall>x\<in>topspace X. fst (g x) = x)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   310
    if y: "y \<in> topspace Y" for y
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   311
    by (rule_tac x="\<lambda>x. (x,y)" in exI) (auto simp: y continuous_map_paired)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   312
  with False have "retraction_map (prod_topology X Y) X fst"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   313
    by (fastforce simp: retraction_map_def retraction_maps_def continuous_map_fst)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   314
  with False show ?thesis
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   315
    by simp
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   316
qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   317
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   318
lemma retraction_map_snd:
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   319
   "retraction_map (prod_topology X Y) Y snd \<longleftrightarrow> (X = trivial_topology \<longrightarrow> Y = trivial_topology)"
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   320
proof (cases "X = trivial_topology")
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   321
  case True
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   322
  then show ?thesis
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   323
    using continuous_map_image_subset_topspace
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   324
    by (fastforce simp: retraction_map_def retraction_maps_def continuous_map_fst)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   325
next
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   326
  case False
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   327
  have "\<exists>g. continuous_map Y (prod_topology X Y) g \<and> (\<forall>y\<in>topspace Y. snd (g y) = y)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   328
    if x: "x \<in> topspace X" for x
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   329
    by (rule_tac x="\<lambda>y. (x,y)" in exI) (auto simp: x continuous_map_paired)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   330
  with False have "retraction_map (prod_topology X Y) Y snd"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   331
    by (fastforce simp: retraction_map_def retraction_maps_def continuous_map_snd)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   332
  with False show ?thesis
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   333
    by simp
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   334
qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   335
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   336
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   337
lemma continuous_map_of_fst:
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   338
   "continuous_map (prod_topology X Y) Z (f \<circ> fst) \<longleftrightarrow> Y = trivial_topology \<or> continuous_map X Z f"
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   339
proof (cases "Y = trivial_topology")
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   340
  case True
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   341
  then show ?thesis
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   342
    by (simp add: continuous_map_on_empty)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   343
next
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   344
  case False
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   345
  then show ?thesis
71633
07bec530f02e cleaned proofs
nipkow
parents: 71200
diff changeset
   346
    by (simp add: continuous_compose_quotient_map_eq)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   347
qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   348
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   349
lemma continuous_map_of_snd:
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   350
   "continuous_map (prod_topology X Y) Z (f \<circ> snd) \<longleftrightarrow> X = trivial_topology \<or> continuous_map Y Z f"
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   351
proof (cases "X = trivial_topology")
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   352
  case True
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   353
  then show ?thesis
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   354
    by (simp add: continuous_map_on_empty)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   355
next
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   356
  case False
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   357
  then show ?thesis
71633
07bec530f02e cleaned proofs
nipkow
parents: 71200
diff changeset
   358
    by (simp add: continuous_compose_quotient_map_eq)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   359
qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   360
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   361
lemma continuous_map_prod_top:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   362
   "continuous_map (prod_topology X Y) (prod_topology X' Y') (\<lambda>(x,y). (f x, g y)) \<longleftrightarrow>
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   363
    (prod_topology X Y) = trivial_topology \<or> continuous_map X X' f \<and> continuous_map Y Y' g"
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   364
proof (cases "(prod_topology X Y) = trivial_topology")
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   365
  case False
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   366
  then show ?thesis
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   367
    by (auto simp: continuous_map_paired case_prod_unfold 
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   368
               continuous_map_of_fst [unfolded o_def] continuous_map_of_snd [unfolded o_def])
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   369
qed auto
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   370
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   371
lemma in_prod_topology_closure_of:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   372
  assumes  "z \<in> (prod_topology X Y) closure_of S"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   373
  shows "fst z \<in> X closure_of (fst ` S)" "snd z \<in> Y closure_of (snd ` S)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   374
  using assms continuous_map_eq_image_closure_subset continuous_map_fst apply fastforce
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   375
  using assms continuous_map_eq_image_closure_subset continuous_map_snd apply fastforce
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   376
  done
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   377
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   378
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   379
proposition compact_space_prod_topology:
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   380
   "compact_space(prod_topology X Y) \<longleftrightarrow> (prod_topology X Y) = trivial_topology \<or> compact_space X \<and> compact_space Y"
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   381
proof (cases "(prod_topology X Y) = trivial_topology")
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   382
  case True
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   383
  then show ?thesis
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   384
    by fastforce
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   385
next
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   386
  case False
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   387
  then have non_mt: "topspace X \<noteq> {}" "topspace Y \<noteq> {}"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   388
    by auto
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   389
  have "compact_space X" "compact_space Y" if "compact_space(prod_topology X Y)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   390
  proof -
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   391
    have "compactin X (fst ` (topspace X \<times> topspace Y))"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   392
      by (metis compact_space_def continuous_map_fst image_compactin that topspace_prod_topology)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   393
    moreover
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   394
    have "compactin Y (snd ` (topspace X \<times> topspace Y))"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   395
      by (metis compact_space_def continuous_map_snd image_compactin that topspace_prod_topology)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   396
    ultimately show "compact_space X" "compact_space Y"
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   397
      using non_mt by (auto simp: compact_space_def)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   398
  qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   399
  moreover
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   400
  define \<X> where "\<X> \<equiv> (\<lambda>V. topspace X \<times> V) ` Collect (openin Y)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   401
  define \<Y> where "\<Y> \<equiv> (\<lambda>U. U \<times> topspace Y) ` Collect (openin X)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   402
  have "compact_space(prod_topology X Y)" if "compact_space X" "compact_space Y"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   403
  proof (rule Alexander_subbase_alt)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   404
    show toptop: "topspace X \<times> topspace Y \<subseteq> \<Union>(\<X> \<union> \<Y>)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   405
      unfolding \<X>_def \<Y>_def by auto
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   406
    fix \<C> :: "('a \<times> 'b) set set"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   407
    assume \<C>: "\<C> \<subseteq> \<X> \<union> \<Y>" "topspace X \<times> topspace Y \<subseteq> \<Union>\<C>"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   408
    then obtain \<X>' \<Y>' where XY: "\<X>' \<subseteq> \<X>" "\<Y>' \<subseteq> \<Y>" and \<C>eq: "\<C> = \<X>' \<union> \<Y>'"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   409
      using subset_UnE by metis
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   410
    then have sub: "topspace X \<times> topspace Y \<subseteq> \<Union>(\<X>' \<union> \<Y>')"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   411
      using \<C> by simp
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   412
    obtain \<U> \<V> where \<U>: "\<And>U. U \<in> \<U> \<Longrightarrow> openin X U" "\<Y>' = (\<lambda>U. U \<times> topspace Y) ` \<U>"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   413
      and \<V>: "\<And>V. V \<in> \<V> \<Longrightarrow> openin Y V" "\<X>' = (\<lambda>V. topspace X \<times> V) ` \<V>"
78320
eb9a9690b8f5 cosmetic improvements, new lemmas, especially more uses of function space
paulson <lp15@cam.ac.uk>
parents: 78093
diff changeset
   414
      using XY by (clarsimp simp add: \<X>_def \<Y>_def subset_image_iff) (force simp: subset_iff)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   415
    have "\<exists>\<D>. finite \<D> \<and> \<D> \<subseteq> \<X>' \<union> \<Y>' \<and> topspace X \<times> topspace Y \<subseteq> \<Union> \<D>"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   416
    proof -
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   417
      have "topspace X \<subseteq> \<Union>\<U> \<or> topspace Y \<subseteq> \<Union>\<V>"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   418
        using \<U> \<V> \<C> \<C>eq by auto
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   419
      then have *: "\<exists>\<D>. finite \<D> \<and>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   420
               (\<forall>x \<in> \<D>. x \<in> (\<lambda>V. topspace X \<times> V) ` \<V> \<or> x \<in> (\<lambda>U. U \<times> topspace Y) ` \<U>) \<and>
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   421
               (topspace X \<times> topspace Y \<subseteq> \<Union>\<D>)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   422
      proof
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   423
        assume "topspace X \<subseteq> \<Union>\<U>"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   424
        with \<open>compact_space X\<close> \<U> obtain \<F> where "finite \<F>" "\<F> \<subseteq> \<U>" "topspace X \<subseteq> \<Union>\<F>"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   425
          by (meson compact_space_alt)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   426
        with that show ?thesis
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   427
          by (rule_tac x="(\<lambda>D. D \<times> topspace Y) ` \<F>" in exI) auto
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   428
      next
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   429
        assume "topspace Y \<subseteq> \<Union>\<V>"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   430
        with \<open>compact_space Y\<close> \<V> obtain \<F> where "finite \<F>" "\<F> \<subseteq> \<V>" "topspace Y \<subseteq> \<Union>\<F>"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   431
          by (meson compact_space_alt)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   432
        with that show ?thesis
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   433
          by (rule_tac x="(\<lambda>C. topspace X \<times> C) ` \<F>" in exI) auto
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   434
      qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   435
      then show ?thesis
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   436
        using that \<U> \<V> by blast
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   437
    qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   438
    then show "\<exists>\<D>. finite \<D> \<and> \<D> \<subseteq> \<C> \<and> topspace X \<times> topspace Y \<subseteq> \<Union> \<D>"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   439
      using \<C> \<C>eq by blast
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   440
  next
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   441
    have "(finite intersection_of (\<lambda>x. x \<in> \<X> \<or> x \<in> \<Y>) relative_to topspace X \<times> topspace Y)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   442
           = (\<lambda>U. \<exists>S T. U = S \<times> T \<and> openin X S \<and> openin Y T)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   443
      (is "?lhs = ?rhs")
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   444
    proof -
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   445
      have "?rhs U" if "?lhs U" for U
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   446
      proof -
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   447
        have "topspace X \<times> topspace Y \<inter> \<Inter> T \<in> {A \<times> B |A B. A \<in> Collect (openin X) \<and> B \<in> Collect (openin Y)}"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   448
          if "finite T" "T \<subseteq> \<X> \<union> \<Y>" for T
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   449
          using that
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   450
        proof induction
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   451
          case (insert B \<B>)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   452
          then show ?case
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   453
            unfolding \<X>_def \<Y>_def
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   454
            apply (simp add: Int_ac subset_eq image_def)
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
   455
            apply (metis (no_types) openin_Int openin_topspace Times_Int_Times)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   456
            done
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   457
        qed auto
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   458
        then show ?thesis
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   459
          using that
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   460
          by (auto simp: subset_eq  elim!: relative_toE intersection_ofE)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   461
      qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   462
      moreover
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   463
      have "?lhs Z" if Z: "?rhs Z" for Z
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   464
      proof -
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   465
        obtain U V where "Z = U \<times> V" "openin X U" "openin Y V"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   466
          using Z by blast
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   467
        then have UV: "U \<times> V = (topspace X \<times> topspace Y) \<inter> (U \<times> V)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   468
          by (simp add: Sigma_mono inf_absorb2 openin_subset)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   469
        moreover
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   470
        have "?lhs ((topspace X \<times> topspace Y) \<inter> (U \<times> V))"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   471
        proof (rule relative_to_inc)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   472
          show "(finite intersection_of (\<lambda>x. x \<in> \<X> \<or> x \<in> \<Y>)) (U \<times> V)"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   473
            apply (simp add: intersection_of_def \<X>_def \<Y>_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   474
            apply (rule_tac x="{(U \<times> topspace Y),(topspace X \<times> V)}" in exI)
78320
eb9a9690b8f5 cosmetic improvements, new lemmas, especially more uses of function space
paulson <lp15@cam.ac.uk>
parents: 78093
diff changeset
   475
            using \<open>openin X U\<close> \<open>openin Y V\<close> openin_subset UV apply (fastforce simp:)
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   476
            done
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   477
        qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   478
        ultimately show ?thesis
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   479
          using \<open>Z = U \<times> V\<close> by auto
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   480
      qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   481
      ultimately show ?thesis
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   482
        by meson
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   483
    qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   484
    then show "topology (arbitrary union_of (finite intersection_of (\<lambda>x. x \<in> \<X> \<union> \<Y>)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   485
           relative_to (topspace X \<times> topspace Y))) =
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   486
        prod_topology X Y"
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   487
      by (simp add: prod_topology_def)
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   488
  qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   489
  ultimately show ?thesis
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   490
    using False by blast
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   491
qed
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   492
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   493
lemma compactin_Times:
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   494
   "compactin (prod_topology X Y) (S \<times> T) \<longleftrightarrow> S = {} \<or> T = {} \<or> compactin X S \<and> compactin Y T"
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   495
  by (auto simp: compactin_subspace subtopology_Times compact_space_prod_topology subtopology_trivial_iff)
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   496
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   497
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
   498
subsection\<open>Homeomorphic maps\<close>
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   499
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   500
lemma homeomorphic_maps_prod:
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   501
   "homeomorphic_maps (prod_topology X Y) (prod_topology X' Y') (\<lambda>(x,y). (f x, g y)) (\<lambda>(x,y). (f' x, g' y)) \<longleftrightarrow>
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   502
        (prod_topology X Y) = trivial_topology \<and> (prod_topology X' Y') = trivial_topology 
78320
eb9a9690b8f5 cosmetic improvements, new lemmas, especially more uses of function space
paulson <lp15@cam.ac.uk>
parents: 78093
diff changeset
   503
      \<or> homeomorphic_maps X X' f f' \<and> homeomorphic_maps Y Y' g g'"  (is "?lhs = ?rhs")
eb9a9690b8f5 cosmetic improvements, new lemmas, especially more uses of function space
paulson <lp15@cam.ac.uk>
parents: 78093
diff changeset
   504
proof
eb9a9690b8f5 cosmetic improvements, new lemmas, especially more uses of function space
paulson <lp15@cam.ac.uk>
parents: 78093
diff changeset
   505
  show "?lhs \<Longrightarrow> ?rhs"
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   506
    by (fastforce simp: homeomorphic_maps_def continuous_map_prod_top ball_conj_distrib)
78320
eb9a9690b8f5 cosmetic improvements, new lemmas, especially more uses of function space
paulson <lp15@cam.ac.uk>
parents: 78093
diff changeset
   507
next
eb9a9690b8f5 cosmetic improvements, new lemmas, especially more uses of function space
paulson <lp15@cam.ac.uk>
parents: 78093
diff changeset
   508
  show "?rhs \<Longrightarrow> ?lhs"
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   509
  by (auto simp: homeomorphic_maps_def continuous_map_prod_top)
78320
eb9a9690b8f5 cosmetic improvements, new lemmas, especially more uses of function space
paulson <lp15@cam.ac.uk>
parents: 78093
diff changeset
   510
qed
eb9a9690b8f5 cosmetic improvements, new lemmas, especially more uses of function space
paulson <lp15@cam.ac.uk>
parents: 78093
diff changeset
   511
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
   512
70178
4900351361b0 Lindelöf spaces and supporting material
paulson <lp15@cam.ac.uk>
parents: 69994
diff changeset
   513
lemma homeomorphic_maps_swap:
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   514
   "homeomorphic_maps (prod_topology X Y) (prod_topology Y X) (\<lambda>(x,y). (y,x)) (\<lambda>(y,x). (x,y))"
70178
4900351361b0 Lindelöf spaces and supporting material
paulson <lp15@cam.ac.uk>
parents: 69994
diff changeset
   515
  by (auto simp: homeomorphic_maps_def case_prod_unfold continuous_map_fst continuous_map_pairedI continuous_map_snd)
4900351361b0 Lindelöf spaces and supporting material
paulson <lp15@cam.ac.uk>
parents: 69994
diff changeset
   516
4900351361b0 Lindelöf spaces and supporting material
paulson <lp15@cam.ac.uk>
parents: 69994
diff changeset
   517
lemma homeomorphic_map_swap:
4900351361b0 Lindelöf spaces and supporting material
paulson <lp15@cam.ac.uk>
parents: 69994
diff changeset
   518
   "homeomorphic_map (prod_topology X Y) (prod_topology Y X) (\<lambda>(x,y). (y,x))"
4900351361b0 Lindelöf spaces and supporting material
paulson <lp15@cam.ac.uk>
parents: 69994
diff changeset
   519
  using homeomorphic_map_maps homeomorphic_maps_swap by metis
4900351361b0 Lindelöf spaces and supporting material
paulson <lp15@cam.ac.uk>
parents: 69994
diff changeset
   520
77935
7f240b0dabd9 More new theorems, and a necessary correction
paulson <lp15@cam.ac.uk>
parents: 71633
diff changeset
   521
lemma homeomorphic_space_prod_topology_swap:
7f240b0dabd9 More new theorems, and a necessary correction
paulson <lp15@cam.ac.uk>
parents: 71633
diff changeset
   522
   "(prod_topology X Y) homeomorphic_space (prod_topology Y X)"
7f240b0dabd9 More new theorems, and a necessary correction
paulson <lp15@cam.ac.uk>
parents: 71633
diff changeset
   523
  using homeomorphic_map_swap homeomorphic_space by blast
7f240b0dabd9 More new theorems, and a necessary correction
paulson <lp15@cam.ac.uk>
parents: 71633
diff changeset
   524
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
   525
lemma embedding_map_graph:
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   526
   "embedding_map X (prod_topology X Y) (\<lambda>x. (x, f x)) \<longleftrightarrow> continuous_map X Y f"
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   527
    (is "?lhs = ?rhs")
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   528
proof
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   529
  assume L: ?lhs
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   530
  have "snd \<circ> (\<lambda>x. (x, f x)) = f"
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   531
    by force
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   532
  moreover have "continuous_map X Y (snd \<circ> (\<lambda>x. (x, f x)))"
77935
7f240b0dabd9 More new theorems, and a necessary correction
paulson <lp15@cam.ac.uk>
parents: 71633
diff changeset
   533
    using L unfolding embedding_map_def
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
   534
    by (meson continuous_map_in_subtopology continuous_map_snd_of homeomorphic_imp_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
   535
  ultimately show ?rhs
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   536
    by simp
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   537
next
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   538
  assume R: ?rhs
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   539
  then show ?lhs
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   540
    unfolding homeomorphic_map_maps embedding_map_def homeomorphic_maps_def
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   541
    by (rule_tac x=fst in exI)
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   542
       (auto simp: continuous_map_in_subtopology continuous_map_paired continuous_map_from_subtopology
70178
4900351361b0 Lindelöf spaces and supporting material
paulson <lp15@cam.ac.uk>
parents: 69994
diff changeset
   543
                   continuous_map_fst)
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
   544
qed
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   545
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   546
lemma homeomorphic_space_prod_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
   547
   "\<lbrakk>X homeomorphic_space X''; Y homeomorphic_space Y'\<rbrakk>
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   548
        \<Longrightarrow> prod_topology X Y homeomorphic_space prod_topology X'' Y'"
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   549
using homeomorphic_maps_prod unfolding homeomorphic_space_def by blast
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   550
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   551
lemma prod_topology_homeomorphic_space_left:
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   552
   "Y = discrete_topology {b} \<Longrightarrow> prod_topology X Y homeomorphic_space 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
   553
  unfolding homeomorphic_space_def
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   554
  apply (rule_tac x=fst in exI)
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   555
  apply (simp add: homeomorphic_map_def inj_on_def discrete_topology_unique flip: homeomorphic_map_maps)
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   556
  done
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
   557
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   558
lemma prod_topology_homeomorphic_space_right:
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   559
   "X = discrete_topology {a} \<Longrightarrow> prod_topology X Y homeomorphic_space Y"
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
   560
  unfolding homeomorphic_space_def
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   561
  by (meson homeomorphic_space_def homeomorphic_space_prod_topology_swap homeomorphic_space_trans prod_topology_homeomorphic_space_left)
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
   562
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   563
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   564
lemma homeomorphic_space_prod_topology_sing1:
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   565
     "b \<in> topspace Y \<Longrightarrow> X homeomorphic_space (prod_topology X (subtopology Y {b}))"
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   566
  by (metis empty_subsetI homeomorphic_space_sym insert_subset prod_topology_homeomorphic_space_left subtopology_eq_discrete_topology_sing topspace_subtopology_subset)
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
   567
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   568
lemma homeomorphic_space_prod_topology_sing2:
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   569
     "a \<in> topspace X \<Longrightarrow> Y homeomorphic_space (prod_topology (subtopology X {a}) Y)"
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   570
  by (metis empty_subsetI homeomorphic_space_sym insert_subset prod_topology_homeomorphic_space_right subtopology_eq_discrete_topology_sing topspace_subtopology_subset)
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
   571
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   572
lemma topological_property_of_prod_component:
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   573
  assumes major: "P(prod_topology X Y)"
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   574
    and X: "\<And>x. \<lbrakk>x \<in> topspace X; P(prod_topology X Y)\<rbrakk> \<Longrightarrow> P(subtopology (prod_topology X Y) ({x} \<times> topspace Y))"
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   575
    and Y: "\<And>y. \<lbrakk>y \<in> topspace Y; P(prod_topology X Y)\<rbrakk> \<Longrightarrow> P(subtopology (prod_topology X Y) (topspace X \<times> {y}))"
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   576
    and PQ:  "\<And>X X'. X homeomorphic_space X' \<Longrightarrow> (P X \<longleftrightarrow> Q 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
   577
    and PR: "\<And>X X'. X homeomorphic_space X' \<Longrightarrow> (P X \<longleftrightarrow> R X')"
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   578
  shows "(prod_topology X Y) = trivial_topology \<or> Q X \<and> R Y"
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
   579
proof -
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   580
  have "Q X \<and> R Y" if "topspace(prod_topology X Y) \<noteq> {}"
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   581
  proof -
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   582
    from that obtain a b where a: "a \<in> topspace X" and b: "b \<in> topspace Y"
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   583
      by force
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   584
    show ?thesis
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   585
      using X [OF a major] and Y [OF b major] homeomorphic_space_prod_topology_sing1 [OF b, of X] homeomorphic_space_prod_topology_sing2 [OF a, of Y]
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   586
      by (simp add: subtopology_Times) (meson PQ PR homeomorphic_space_prod_topology_sing2 homeomorphic_space_sym)
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   587
  qed
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   588
  then show ?thesis by force
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
   589
qed
812ce526da33 new material on topology: products, etc. Some renamings, esp continuous_on_topo -> continuous_map
paulson <lp15@cam.ac.uk>
parents: 69922
diff changeset
   590
69945
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   591
lemma limitin_pairwise:
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   592
   "limitin (prod_topology X Y) f l F \<longleftrightarrow> limitin X (fst \<circ> f) (fst l) F \<and> limitin Y (snd \<circ> f) (snd l) F"
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   593
    (is "?lhs = ?rhs")
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   594
proof
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   595
  assume ?lhs
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   596
  then obtain a b where ev: "\<And>U. \<lbrakk>(a,b) \<in> U; openin (prod_topology X Y) U\<rbrakk> \<Longrightarrow> \<forall>\<^sub>F x in F. f x \<in> U"
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   597
                        and a: "a \<in> topspace X" and b: "b \<in> topspace Y" and l: "l = (a,b)"
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   598
    by (auto simp: limitin_def)
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   599
  moreover have "\<forall>\<^sub>F x in F. fst (f x) \<in> U" if "openin X U" "a \<in> U" for U
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   600
  proof -
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   601
    have "\<forall>\<^sub>F c in F. f c \<in> U \<times> topspace Y"
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   602
      using b that ev [of "U \<times> topspace Y"] by (auto simp: openin_prod_topology_alt)
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   603
    then show ?thesis
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   604
      by (rule eventually_mono) (metis (mono_tags, lifting) SigmaE2 prod.collapse)
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   605
  qed
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   606
  moreover have "\<forall>\<^sub>F x in F. snd (f x) \<in> U" if "openin Y U" "b \<in> U" for U
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   607
  proof -
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   608
    have "\<forall>\<^sub>F c in F. f c \<in> topspace X \<times> U"
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   609
      using a that ev [of "topspace X \<times> U"] by (auto simp: openin_prod_topology_alt)
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   610
    then show ?thesis
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   611
      by (rule eventually_mono) (metis (mono_tags, lifting) SigmaE2 prod.collapse)
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   612
  qed
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   613
  ultimately show ?rhs
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   614
    by (simp add: limitin_def)
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   615
next
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   616
  have "limitin (prod_topology X Y) f (a,b) F"
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   617
    if "limitin X (fst \<circ> f) a F" "limitin Y (snd \<circ> f) b F" for a b
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   618
    using that
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   619
  proof (clarsimp simp: limitin_def)
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   620
    fix Z :: "('a \<times> 'b) set"
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   621
    assume a: "a \<in> topspace X" "\<forall>U. openin X U \<and> a \<in> U \<longrightarrow> (\<forall>\<^sub>F x in F. fst (f x) \<in> U)"
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   622
      and b: "b \<in> topspace Y" "\<forall>U. openin Y U \<and> b \<in> U \<longrightarrow> (\<forall>\<^sub>F x in F. snd (f x) \<in> U)"
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   623
      and Z: "openin (prod_topology X Y) Z" "(a, b) \<in> Z"
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   624
    then obtain U V where "openin X U" "openin Y V" "a \<in> U" "b \<in> V" "U \<times> V \<subseteq> Z"
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   625
      using Z by (force simp: openin_prod_topology_alt)
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   626
    then have "\<forall>\<^sub>F x in F. fst (f x) \<in> U" "\<forall>\<^sub>F x in F. snd (f x) \<in> V"
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   627
      by (simp_all add: a b)
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   628
    then show "\<forall>\<^sub>F x in F. f x \<in> Z"
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   629
      by (rule eventually_elim2) (use \<open>U \<times> V \<subseteq> Z\<close> subsetD in auto)
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   630
  qed
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   631
  then show "?rhs \<Longrightarrow> ?lhs"
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   632
    by (metis prod.collapse)
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   633
qed
35ba13ac6e5c New abstract topological material
paulson <lp15@cam.ac.uk>
parents: 69939
diff changeset
   634
78037
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   635
proposition connected_space_prod_topology:
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   636
   "connected_space(prod_topology X Y) \<longleftrightarrow>
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   637
    (prod_topology X Y) = trivial_topology \<or> connected_space X \<and> connected_space Y" (is "?lhs=?rhs")
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   638
proof (cases "(prod_topology X Y) = trivial_topology")
78037
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   639
  case True
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   640
  then show ?thesis
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   641
    by auto
78037
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   642
next
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   643
  case False
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   644
  then have nonempty: "topspace X \<noteq> {}" "topspace Y \<noteq> {}"
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   645
    by force+
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   646
  show ?thesis 
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   647
  proof
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   648
    assume ?lhs
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   649
    then show ?rhs
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   650
      by (metis connected_space_quotient_map_image nonempty quotient_map_fst quotient_map_snd 
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   651
          subtopology_eq_discrete_topology_empty)
78037
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   652
  next
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   653
    assume ?rhs
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   654
    then have conX: "connected_space X" and conY: "connected_space Y"
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   655
      using False by blast+
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   656
    have False
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   657
      if "openin (prod_topology X Y) U" and "openin (prod_topology X Y) V"
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   658
        and UV: "topspace X \<times> topspace Y \<subseteq> U \<union> V" "U \<inter> V = {}" 
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   659
        and "U \<noteq> {}" and "V \<noteq> {}"
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   660
      for U V
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   661
    proof -
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   662
      have Usub: "U \<subseteq> topspace X \<times> topspace Y" and Vsub: "V \<subseteq> topspace X \<times> topspace Y"
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   663
        using that by (metis openin_subset topspace_prod_topology)+
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   664
      obtain a b where ab: "(a,b) \<in> U" and a: "a \<in> topspace X" and b: "b \<in> topspace Y"
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   665
        using \<open>U \<noteq> {}\<close> Usub by auto
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   666
      have "\<not> topspace X \<times> topspace Y \<subseteq> U"
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   667
        using Usub Vsub \<open>U \<inter> V = {}\<close> \<open>V \<noteq> {}\<close> by auto
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   668
      then obtain x y where x: "x \<in> topspace X" and y: "y \<in> topspace Y" and "(x,y) \<notin> U"
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   669
        by blast
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   670
      have oX: "openin X {x \<in> topspace X. (x,y) \<in> U}" "openin X {x \<in> topspace X. (x,y) \<in> V}"
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   671
       and oY: "openin Y {y \<in> topspace Y. (a,y) \<in> U}" "openin Y {y \<in> topspace Y. (a,y) \<in> V}"
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   672
        by (force intro: openin_continuous_map_preimage [where Y = "prod_topology X Y"] 
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   673
            simp: that continuous_map_pairwise o_def x y a)+
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   674
      have 1: "topspace Y \<subseteq> {y \<in> topspace Y. (a,y) \<in> U} \<union> {y \<in> topspace Y. (a,y) \<in> V}"
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   675
        using a that(3) by auto
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   676
      have 2: "{y \<in> topspace Y. (a,y) \<in> U} \<inter> {y \<in> topspace Y. (a,y) \<in> V} = {}"
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   677
        using that(4) by auto
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   678
      have 3: "{y \<in> topspace Y. (a,y) \<in> U} \<noteq> {}"
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   679
        using ab b by auto
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   680
      have 4: "{y \<in> topspace Y. (a,y) \<in> V} \<noteq> {}"
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   681
      proof -
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   682
        show ?thesis
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   683
          using connected_spaceD [OF conX oX] UV \<open>(x,y) \<notin> U\<close> a x y
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   684
                disjoint_iff_not_equal by blast
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   685
      qed
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   686
      show ?thesis
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   687
        using connected_spaceD [OF conY oY 1 2 3 4] by auto
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   688
    qed
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   689
    then show ?lhs
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   690
      unfolding connected_space_def topspace_prod_topology by blast 
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   691
  qed
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   692
qed
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   693
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   694
lemma connectedin_Times:
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   695
   "connectedin (prod_topology X Y) (S \<times> T) \<longleftrightarrow>
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   696
        S = {} \<or> T = {} \<or> connectedin X S \<and> connectedin Y T"
78336
6bae28577994 trivial_topology
paulson <lp15@cam.ac.uk>
parents: 78320
diff changeset
   697
  by (auto simp: connectedin_def subtopology_Times connected_space_prod_topology subtopology_trivial_iff)
78037
37894dff0111 More material from the HOL Light metric space library
paulson <lp15@cam.ac.uk>
parents: 77939
diff changeset
   698
69922
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   699
end
4a9167f377b0 new material about topology, etc.; also fixes for yesterday's
paulson <lp15@cam.ac.uk>
parents:
diff changeset
   700