src/HOL/Real/HahnBanach/HahnBanachSupLemmas.thy
changeset 13515 a6a7025fd7e8
parent 10687 c186279eecea
child 13547 bf399f3bd7dc
equal deleted inserted replaced
13514:cc3bbaf1b8d3 13515:a6a7025fd7e8
    11   This section contains some lemmas that will be used in the proof of
    11   This section contains some lemmas that will be used in the proof of
    12   the Hahn-Banach Theorem.  In this section the following context is
    12   the Hahn-Banach Theorem.  In this section the following context is
    13   presumed.  Let @{text E} be a real vector space with a seminorm
    13   presumed.  Let @{text E} be a real vector space with a seminorm
    14   @{text p} on @{text E}.  @{text F} is a subspace of @{text E} and
    14   @{text p} on @{text E}.  @{text F} is a subspace of @{text E} and
    15   @{text f} a linear form on @{text F}. We consider a chain @{text c}
    15   @{text f} a linear form on @{text F}. We consider a chain @{text c}
    16   of norm-preserving extensions of @{text f}, such that
    16   of norm-preserving extensions of @{text f}, such that @{text "\<Union>c =
    17   @{text "\<Union>c = graph H h"}.  We will show some properties about the
    17   graph H h"}.  We will show some properties about the limit function
    18   limit function @{text h}, i.e.\ the supremum of the chain @{text c}.
    18   @{text h}, i.e.\ the supremum of the chain @{text c}.
    19 *}
    19 
    20 
    20   \medskip Let @{text c} be a chain of norm-preserving extensions of
    21 text {*
    21   the function @{text f} and let @{text "graph H h"} be the supremum
    22   Let @{text c} be a chain of norm-preserving extensions of the
    22   of @{text c}.  Every element in @{text H} is member of one of the
    23   function @{text f} and let @{text "graph H h"} be the supremum of
       
    24   @{text c}.  Every element in @{text H} is member of one of the
       
    25   elements of the chain.
    23   elements of the chain.
    26 *}
    24 *}
    27 
    25 
    28 lemma some_H'h't:
    26 lemma some_H'h't:
    29   "M = norm_pres_extensions E p F f \<Longrightarrow> c \<in> chain M \<Longrightarrow>
    27   assumes M: "M = norm_pres_extensions E p F f"
    30   graph H h = \<Union>c \<Longrightarrow> x \<in> H
    28     and cM: "c \<in> chain M"
    31    \<Longrightarrow> \<exists>H' h'. graph H' h' \<in> c \<and> (x, h x) \<in> graph H' h'
    29     and u: "graph H h = \<Union>c"
    32        \<and> is_linearform H' h' \<and> is_subspace H' E
    30     and x: "x \<in> H"
    33        \<and> is_subspace F H' \<and> graph F f \<subseteq> graph H' h'
    31   shows "\<exists>H' h'. graph H' h' \<in> c
    34        \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
    32     \<and> (x, h x) \<in> graph H' h'
       
    33     \<and> linearform H' h' \<and> H' \<unlhd> E
       
    34     \<and> F \<unlhd> H' \<and> graph F f \<subseteq> graph H' h'
       
    35     \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
    35 proof -
    36 proof -
    36   assume m: "M = norm_pres_extensions E p F f" and "c \<in> chain M"
    37   from x have "(x, h x) \<in> graph H h" ..
    37      and u: "graph H h = \<Union>c"  "x \<in> H"
    38   also from u have "\<dots> = \<Union>c" .
    38 
    39   finally obtain g where gc: "g \<in> c" and gh: "(x, h x) \<in> g" by blast
    39   have h: "(x, h x) \<in> graph H h" ..
    40 
    40   with u have "(x, h x) \<in> \<Union>c" by simp
    41   from cM have "c \<subseteq> M" ..
    41   hence ex1: "\<exists>g \<in> c. (x, h x) \<in> g"
    42   with gc have "g \<in> M" ..
    42     by (simp only: Union_iff)
    43   also from M have "\<dots> = norm_pres_extensions E p F f" .
    43   thus ?thesis
    44   finally obtain H' and h' where g: "g = graph H' h'"
    44   proof (elim bexE)
    45     and * : "linearform H' h'"  "H' \<unlhd> E"  "F \<unlhd> H'"
    45     fix g assume g: "g \<in> c"  "(x, h x) \<in> g"
    46       "graph F f \<subseteq> graph H' h'"  "\<forall>x \<in> H'. h' x \<le> p x" ..
    46     have "c \<subseteq> M" by (rule chainD2)
    47 
    47     hence "g \<in> M" ..
    48   from gc and g have "graph H' h' \<in> c" by (simp only:)
    48     hence "g \<in> norm_pres_extensions E p F f" by (simp only: m)
    49   moreover from gh and g have "(x, h x) \<in> graph H' h'" by (simp only:)
    49     hence "\<exists>H' h'. graph H' h' = g
    50   ultimately show ?thesis using * by blast
    50                   \<and> is_linearform H' h'
    51 qed
    51                   \<and> is_subspace H' E
       
    52                   \<and> is_subspace F H'
       
    53                   \<and> graph F f \<subseteq> graph H' h'
       
    54                   \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
       
    55       by (rule norm_pres_extension_D)
       
    56     thus ?thesis
       
    57     proof (elim exE conjE)
       
    58       fix H' h'
       
    59       assume "graph H' h' = g"  "is_linearform H' h'"
       
    60         "is_subspace H' E"  "is_subspace F H'"
       
    61         "graph F f \<subseteq> graph H' h'"  "\<forall>x \<in> H'. h' x \<le> p x"
       
    62       show ?thesis
       
    63       proof (intro exI conjI)
       
    64         show "graph H' h' \<in> c" by (simp!)
       
    65         show "(x, h x) \<in> graph H' h'" by (simp!)
       
    66       qed
       
    67     qed
       
    68   qed
       
    69 qed
       
    70 
       
    71 
    52 
    72 text {*
    53 text {*
    73   \medskip Let @{text c} be a chain of norm-preserving extensions of
    54   \medskip Let @{text c} be a chain of norm-preserving extensions of
    74   the function @{text f} and let @{text "graph H h"} be the supremum
    55   the function @{text f} and let @{text "graph H h"} be the supremum
    75   of @{text c}.  Every element in the domain @{text H} of the supremum
    56   of @{text c}.  Every element in the domain @{text H} of the supremum
    76   function is member of the domain @{text H'} of some function @{text
    57   function is member of the domain @{text H'} of some function @{text
    77   h'}, such that @{text h} extends @{text h'}.
    58   h'}, such that @{text h} extends @{text h'}.
    78 *}
    59 *}
    79 
    60 
    80 lemma some_H'h':
    61 lemma some_H'h':
    81   "M = norm_pres_extensions E p F f \<Longrightarrow> c \<in> chain M \<Longrightarrow>
    62   assumes M: "M = norm_pres_extensions E p F f"
    82   graph H h = \<Union>c \<Longrightarrow> x \<in> H
    63     and cM: "c \<in> chain M"
    83   \<Longrightarrow> \<exists>H' h'. x \<in> H' \<and> graph H' h' \<subseteq> graph H h
    64     and u: "graph H h = \<Union>c"
    84       \<and> is_linearform H' h' \<and> is_subspace H' E \<and> is_subspace F H'
    65     and x: "x \<in> H"
    85       \<and> graph F f \<subseteq> graph H' h' \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
    66   shows "\<exists>H' h'. x \<in> H' \<and> graph H' h' \<subseteq> graph H h
       
    67     \<and> linearform H' h' \<and> H' \<unlhd> E \<and> F \<unlhd> H'
       
    68     \<and> graph F f \<subseteq> graph H' h' \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
    86 proof -
    69 proof -
    87   assume "M = norm_pres_extensions E p F f" and cM: "c \<in> chain M"
    70   from M cM u x obtain H' h' where
    88      and u: "graph H h = \<Union>c"  "x \<in> H"
    71       x_hx: "(x, h x) \<in> graph H' h'"
    89 
    72     and c: "graph H' h' \<in> c"
    90   have "\<exists>H' h'. graph H' h' \<in> c \<and> (x, h x) \<in> graph H' h'
    73     and * : "linearform H' h'"  "H' \<unlhd> E"  "F \<unlhd> H'"
    91        \<and> is_linearform H' h' \<and> is_subspace H' E
       
    92        \<and> is_subspace F H' \<and> graph F f \<subseteq> graph H' h'
       
    93        \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
       
    94     by (rule some_H'h't)
       
    95   thus ?thesis
       
    96   proof (elim exE conjE)
       
    97     fix H' h' assume "(x, h x) \<in> graph H' h'"  "graph H' h' \<in> c"
       
    98       "is_linearform H' h'"  "is_subspace H' E"  "is_subspace F H'"
       
    99       "graph F f \<subseteq> graph H' h'"  "\<forall>x \<in> H'. h' x \<le> p x"
    74       "graph F f \<subseteq> graph H' h'"  "\<forall>x \<in> H'. h' x \<le> p x"
   100     show ?thesis
    75     by (rule some_H'h't [elim_format]) blast
   101     proof (intro exI conjI)
    76   from x_hx have "x \<in> H'" ..
   102       show "x \<in> H'" by (rule graphD1)
    77   moreover from cM u c have "graph H' h' \<subseteq> graph H h"
   103       from cM u show "graph H' h' \<subseteq> graph H h"
    78     by (simp only: chain_ball_Union_upper)
   104         by (simp! only: chain_ball_Union_upper)
    79   ultimately show ?thesis using * by blast
   105     qed
    80 qed
   106   qed
       
   107 qed
       
   108 
       
   109 
    81 
   110 text {*
    82 text {*
   111   \medskip Any two elements @{text x} and @{text y} in the domain
    83   \medskip Any two elements @{text x} and @{text y} in the domain
   112   @{text H} of the supremum function @{text h} are both in the domain
    84   @{text H} of the supremum function @{text h} are both in the domain
   113   @{text H'} of some function @{text h'}, such that @{text h} extends
    85   @{text H'} of some function @{text h'}, such that @{text h} extends
   114   @{text h'}.
    86   @{text h'}.
   115 *}
    87 *}
   116 
    88 
   117 lemma some_H'h'2:
    89 lemma some_H'h'2:
   118   "M = norm_pres_extensions E p F f \<Longrightarrow> c \<in> chain M \<Longrightarrow>
    90   assumes M: "M = norm_pres_extensions E p F f"
   119   graph H h = \<Union>c \<Longrightarrow> x \<in> H \<Longrightarrow> y \<in> H
    91     and cM: "c \<in> chain M"
   120   \<Longrightarrow> \<exists>H' h'. x \<in> H' \<and> y \<in> H' \<and> graph H' h' \<subseteq> graph H h
    92     and u: "graph H h = \<Union>c"
   121       \<and> is_linearform H' h' \<and> is_subspace H' E \<and> is_subspace F H'
    93     and x: "x \<in> H"
   122       \<and> graph F f \<subseteq> graph H' h' \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
    94     and y: "y \<in> H"
       
    95   shows "\<exists>H' h'. x \<in> H' \<and> y \<in> H'
       
    96     \<and> graph H' h' \<subseteq> graph H h
       
    97     \<and> linearform H' h' \<and> H' \<unlhd> E \<and> F \<unlhd> H'
       
    98     \<and> graph F f \<subseteq> graph H' h' \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
   123 proof -
    99 proof -
   124   assume "M = norm_pres_extensions E p F f"  "c \<in> chain M"
       
   125          "graph H h = \<Union>c"  "x \<in> H"  "y \<in> H"
       
   126 
       
   127   txt {*
       
   128     @{text x} is in the domain @{text H'} of some function @{text h'},
       
   129     such that @{text h} extends @{text h'}. *}
       
   130 
       
   131   have e1: "\<exists>H' h'. graph H' h' \<in> c \<and> (x, h x) \<in> graph H' h'
       
   132        \<and> is_linearform H' h' \<and> is_subspace H' E
       
   133        \<and> is_subspace F H' \<and> graph F f \<subseteq> graph H' h'
       
   134        \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
       
   135     by (rule some_H'h't)
       
   136 
       
   137   txt {* @{text y} is in the domain @{text H''} of some function @{text h''},
   100   txt {* @{text y} is in the domain @{text H''} of some function @{text h''},
   138   such that @{text h} extends @{text h''}. *}
   101   such that @{text h} extends @{text h''}. *}
   139 
   102 
   140   have e2: "\<exists>H'' h''. graph H'' h'' \<in> c \<and> (y, h y) \<in> graph H'' h''
   103   from M cM u and y obtain H' h' where
   141        \<and> is_linearform H'' h'' \<and> is_subspace H'' E
   104       y_hy: "(y, h y) \<in> graph H' h'"
   142        \<and> is_subspace F H'' \<and> graph F f \<subseteq> graph H'' h''
   105     and c': "graph H' h' \<in> c"
   143        \<and> (\<forall>x \<in> H''. h'' x \<le> p x)"
   106     and * :
   144     by (rule some_H'h't)
   107       "linearform H' h'"  "H' \<unlhd> E"  "F \<unlhd> H'"
   145 
       
   146   from e1 e2 show ?thesis
       
   147   proof (elim exE conjE)
       
   148     fix H' h' assume "(y, h y) \<in> graph H' h'"  "graph H' h' \<in> c"
       
   149       "is_linearform H' h'"  "is_subspace H' E"  "is_subspace F H'"
       
   150       "graph F f \<subseteq> graph H' h'"  "\<forall>x \<in> H'. h' x \<le> p x"
   108       "graph F f \<subseteq> graph H' h'"  "\<forall>x \<in> H'. h' x \<le> p x"
   151 
   109     by (rule some_H'h't [elim_format]) blast
   152     fix H'' h'' assume "(x, h x) \<in> graph H'' h''"  "graph H'' h'' \<in> c"
   110 
   153       "is_linearform H'' h''"  "is_subspace H'' E"  "is_subspace F H''"
   111   txt {* @{text x} is in the domain @{text H'} of some function @{text h'},
       
   112     such that @{text h} extends @{text h'}. *}
       
   113 
       
   114   from M cM u and x obtain H'' h'' where
       
   115       x_hx: "(x, h x) \<in> graph H'' h''"
       
   116     and c'': "graph H'' h'' \<in> c"
       
   117     and ** :
       
   118       "linearform H'' h''"  "H'' \<unlhd> E"  "F \<unlhd> H''"
   154       "graph F f \<subseteq> graph H'' h''"  "\<forall>x \<in> H''. h'' x \<le> p x"
   119       "graph F f \<subseteq> graph H'' h''"  "\<forall>x \<in> H''. h'' x \<le> p x"
   155 
   120     by (rule some_H'h't [elim_format]) blast
   156    txt {* Since both @{text h'} and @{text h''} are elements of the chain,
   121 
   157    @{text h''} is an extension of @{text h'} or vice versa. Thus both
   122   txt {* Since both @{text h'} and @{text h''} are elements of the chain,
   158    @{text x} and @{text y} are contained in the greater one. \label{cases1}*}
   123     @{text h''} is an extension of @{text h'} or vice versa. Thus both
   159 
   124     @{text x} and @{text y} are contained in the greater
   160     have "graph H'' h'' \<subseteq> graph H' h' \<or> graph H' h' \<subseteq> graph H'' h''"
   125     one. \label{cases1}*}
   161       (is "?case1 \<or> ?case2")
   126 
   162       by (rule chainD)
   127   from cM have "graph H'' h'' \<subseteq> graph H' h' \<or> graph H' h' \<subseteq> graph H'' h''"
   163     thus ?thesis
   128     (is "?case1 \<or> ?case2") ..
   164     proof
   129   then show ?thesis
   165       assume ?case1
   130   proof
   166       show ?thesis
   131     assume ?case1
   167       proof (intro exI conjI)
   132     have "(x, h x) \<in> graph H'' h''" .
   168         have "(x, h x) \<in> graph H'' h''" .
   133     also have "... \<subseteq> graph H' h'" .
   169         also have "... \<subseteq> graph H' h'" .
   134     finally have xh:"(x, h x) \<in> graph H' h'" .
   170         finally have xh:"(x, h x) \<in> graph H' h'" .
   135     then have "x \<in> H'" ..
   171         thus x: "x \<in> H'" ..
   136     moreover from y_hy have "y \<in> H'" ..
   172         show y: "y \<in> H'" ..
   137     moreover from cM u and c' have "graph H' h' \<subseteq> graph H h"
   173         show "graph H' h' \<subseteq> graph H h"
   138       by (simp only: chain_ball_Union_upper)
   174           by (simp! only: chain_ball_Union_upper)
   139     ultimately show ?thesis using * by blast
   175       qed
   140   next
   176     next
   141     assume ?case2
   177       assume ?case2
   142     from x_hx have "x \<in> H''" ..
   178       show ?thesis
   143     moreover {
   179       proof (intro exI conjI)
   144       from y_hy have "(y, h y) \<in> graph H' h'" .
   180         show x: "x \<in> H''" ..
   145       also have "\<dots> \<subseteq> graph H'' h''" .
   181         have "(y, h y) \<in> graph H' h'" by (simp!)
   146       finally have "(y, h y) \<in> graph H'' h''" .
   182         also have "... \<subseteq> graph H'' h''" .
   147     } then have "y \<in> H''" ..
   183         finally have yh: "(y, h y) \<in> graph H'' h''" .
   148     moreover from cM u and c'' have "graph H'' h'' \<subseteq> graph H h"
   184         thus y: "y \<in> H''" ..
   149       by (simp only: chain_ball_Union_upper)
   185         show "graph H'' h'' \<subseteq> graph H h"
   150     ultimately show ?thesis using ** by blast
   186           by (simp! only: chain_ball_Union_upper)
   151   qed
   187       qed
   152 qed
   188     qed
       
   189   qed
       
   190 qed
       
   191 
       
   192 
       
   193 
   153 
   194 text {*
   154 text {*
   195   \medskip The relation induced by the graph of the supremum of a
   155   \medskip The relation induced by the graph of the supremum of a
   196   chain @{text c} is definite, i.~e.~t is the graph of a function. *}
   156   chain @{text c} is definite, i.~e.~t is the graph of a function.
       
   157 *}
   197 
   158 
   198 lemma sup_definite:
   159 lemma sup_definite:
   199   "M \<equiv> norm_pres_extensions E p F f \<Longrightarrow> c \<in> chain M \<Longrightarrow>
   160   assumes M_def: "M \<equiv> norm_pres_extensions E p F f"
   200   (x, y) \<in> \<Union>c \<Longrightarrow> (x, z) \<in> \<Union>c \<Longrightarrow> z = y"
   161     and cM: "c \<in> chain M"
       
   162     and xy: "(x, y) \<in> \<Union>c"
       
   163     and xz: "(x, z) \<in> \<Union>c"
       
   164   shows "z = y"
   201 proof -
   165 proof -
   202   assume "c \<in> chain M"  "M \<equiv> norm_pres_extensions E p F f"
   166   from cM have c: "c \<subseteq> M" ..
   203     "(x, y) \<in> \<Union>c"  "(x, z) \<in> \<Union>c"
   167   from xy obtain G1 where xy': "(x, y) \<in> G1" and G1: "G1 \<in> c" ..
   204   thus ?thesis
   168   from xz obtain G2 where xz': "(x, z) \<in> G2" and G2: "G2 \<in> c" ..
   205   proof (elim UnionE chainE2)
   169 
   206 
   170   from G1 c have "G1 \<in> M" ..
   207     txt {* Since both @{text "(x, y) \<in> \<Union>c"} and @{text "(x, z) \<in> \<Union>c"}
   171   then obtain H1 h1 where G1_rep: "G1 = graph H1 h1"
   208     they are members of some graphs @{text "G\<^sub>1"} and @{text
   172     by (unfold M_def) blast
   209     "G\<^sub>2"}, resp., such that both @{text "G\<^sub>1"} and @{text
   173 
   210     "G\<^sub>2"} are members of @{text c}.*}
   174   from G2 c have "G2 \<in> M" ..
   211 
   175   then obtain H2 h2 where G2_rep: "G2 = graph H2 h2"
   212     fix G1 G2 assume
   176     by (unfold M_def) blast
   213       "(x, y) \<in> G1"  "G1 \<in> c"  "(x, z) \<in> G2"  "G2 \<in> c"  "c \<subseteq> M"
   177 
   214 
   178   txt {* @{text "G\<^sub>1"} is contained in @{text "G\<^sub>2"}
   215     have "G1 \<in> M" ..
   179     or vice versa, since both @{text "G\<^sub>1"} and @{text
   216     hence e1: "\<exists>H1 h1. graph H1 h1 = G1"
   180     "G\<^sub>2"} are members of @{text c}. \label{cases2}*}
   217       by (blast! dest: norm_pres_extension_D)
   181 
   218     have "G2 \<in> M" ..
   182   from cM G1 G2 have "G1 \<subseteq> G2 \<or> G2 \<subseteq> G1" (is "?case1 \<or> ?case2") ..
   219     hence e2: "\<exists>H2 h2. graph H2 h2 = G2"
   183   then show ?thesis
   220       by (blast! dest: norm_pres_extension_D)
   184   proof
   221     from e1 e2 show ?thesis
   185     assume ?case1
   222     proof (elim exE)
   186     with xy' G2_rep have "(x, y) \<in> graph H2 h2" by blast
   223       fix H1 h1 H2 h2
   187     hence "y = h2 x" ..
   224       assume "graph H1 h1 = G1"  "graph H2 h2 = G2"
   188     also
   225 
   189     from xz' G2_rep have "(x, z) \<in> graph H2 h2" by (simp only:)
   226       txt {* @{text "G\<^sub>1"} is contained in @{text "G\<^sub>2"}
   190     hence "z = h2 x" ..
   227       or vice versa, since both @{text "G\<^sub>1"} and @{text
   191     finally show ?thesis .
   228       "G\<^sub>2"} are members of @{text c}. \label{cases2}*}
   192   next
   229 
   193     assume ?case2
   230       have "G1 \<subseteq> G2 \<or> G2 \<subseteq> G1" (is "?case1 \<or> ?case2") ..
   194     with xz' G1_rep have "(x, z) \<in> graph H1 h1" by blast
   231       thus ?thesis
   195     hence "z = h1 x" ..
   232       proof
   196     also
   233         assume ?case1
   197     from xy' G1_rep have "(x, y) \<in> graph H1 h1" by (simp only:)
   234         have "(x, y) \<in> graph H2 h2" by (blast!)
   198     hence "y = h1 x" ..
   235         hence "y = h2 x" ..
   199     finally show ?thesis ..
   236         also have "(x, z) \<in> graph H2 h2" by (simp!)
       
   237         hence "z = h2 x" ..
       
   238         finally show ?thesis .
       
   239       next
       
   240         assume ?case2
       
   241         have "(x, y) \<in> graph H1 h1" by (simp!)
       
   242         hence "y = h1 x" ..
       
   243         also have "(x, z) \<in> graph H1 h1" by (blast!)
       
   244         hence "z = h1 x" ..
       
   245         finally show ?thesis .
       
   246       qed
       
   247     qed
       
   248   qed
   200   qed
   249 qed
   201 qed
   250 
   202 
   251 text {*
   203 text {*
   252   \medskip The limit function @{text h} is linear. Every element
   204   \medskip The limit function @{text h} is linear. Every element
   256   @{text x} are identical for @{text h'} and @{text h}.  Finally, the
   208   @{text x} are identical for @{text h'} and @{text h}.  Finally, the
   257   function @{text h'} is linear by construction of @{text M}.
   209   function @{text h'} is linear by construction of @{text M}.
   258 *}
   210 *}
   259 
   211 
   260 lemma sup_lf:
   212 lemma sup_lf:
   261   "M = norm_pres_extensions E p F f \<Longrightarrow> c \<in> chain M \<Longrightarrow>
   213   assumes M: "M = norm_pres_extensions E p F f"
   262   graph H h = \<Union>c \<Longrightarrow> is_linearform H h"
   214     and cM: "c \<in> chain M"
   263 proof -
   215     and u: "graph H h = \<Union>c"
   264   assume "M = norm_pres_extensions E p F f"  "c \<in> chain M"
   216   shows "linearform H h"
   265          "graph H h = \<Union>c"
   217 proof
   266 
   218   fix x y assume x: "x \<in> H" and y: "y \<in> H"
   267   show "is_linearform H h"
   219   with M cM u obtain H' h' where
   268   proof
   220         x': "x \<in> H'" and y': "y \<in> H'"
   269     fix x y assume "x \<in> H"  "y \<in> H"
   221       and b: "graph H' h' \<subseteq> graph H h"
   270     have "\<exists>H' h'. x \<in> H' \<and> y \<in> H' \<and> graph H' h' \<subseteq> graph H h
   222       and linearform: "linearform H' h'"
   271             \<and> is_linearform H' h' \<and> is_subspace H' E
   223       and subspace: "H' \<unlhd> E"
   272             \<and> is_subspace F H' \<and> graph F f \<subseteq> graph H' h'
   224     by (rule some_H'h'2 [elim_format]) blast
   273             \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
   225 
   274       by (rule some_H'h'2)
   226   show "h (x + y) = h x + h y"
   275 
   227   proof -
   276     txt {* We have to show that @{text h} is additive. *}
   228     from linearform x' y' have "h' (x + y) = h' x + h' y"
   277 
   229       by (rule linearform.add)
   278     thus "h (x + y) = h x + h y"
   230     also from b x' have "h' x = h x" ..
   279     proof (elim exE conjE)
   231     also from b y' have "h' y = h y" ..
   280       fix H' h' assume "x \<in> H'"  "y \<in> H'"
   232     also from subspace x' y' have "x + y \<in> H'"
   281         and b: "graph H' h' \<subseteq> graph H h"
   233       by (rule subspace.add_closed)
   282         and "is_linearform H' h'"  "is_subspace H' E"
   234     with b have "h' (x + y) = h (x + y)" ..
   283       have "h' (x + y) = h' x + h' y"
   235     finally show ?thesis .
   284         by (rule linearform_add)
   236   qed
   285       also have "h' x = h x" ..
   237 next
   286       also have "h' y = h y" ..
   238   fix x a assume x: "x \<in> H"
   287       also have "x + y \<in> H'" ..
   239   with M cM u obtain H' h' where
   288       with b have "h' (x + y) = h (x + y)" ..
   240         x': "x \<in> H'"
   289       finally show ?thesis .
   241       and b: "graph H' h' \<subseteq> graph H h"
   290     qed
   242       and linearform: "linearform H' h'"
   291   next
   243       and subspace: "H' \<unlhd> E"
   292     fix a x assume "x \<in> H"
   244     by (rule some_H'h' [elim_format]) blast
   293     have "\<exists>H' h'. x \<in> H' \<and> graph H' h' \<subseteq> graph H h
   245 
   294             \<and> is_linearform H' h' \<and> is_subspace H' E
   246   show "h (a \<cdot> x) = a * h x"
   295             \<and> is_subspace F H' \<and> graph F f \<subseteq> graph H' h'
   247   proof -
   296             \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
   248     from linearform x' have "h' (a \<cdot> x) = a * h' x"
   297       by (rule some_H'h')
   249       by (rule linearform.mult)
   298 
   250     also from b x' have "h' x = h x" ..
   299     txt{* We have to show that @{text h} is multiplicative. *}
   251     also from subspace x' have "a \<cdot> x \<in> H'"
   300 
   252       by (rule subspace.mult_closed)
   301     thus "h (a \<cdot> x) = a * h x"
   253     with b have "h' (a \<cdot> x) = h (a \<cdot> x)" ..
   302     proof (elim exE conjE)
   254     finally show ?thesis .
   303       fix H' h' assume "x \<in> H'"
       
   304         and b: "graph H' h' \<subseteq> graph H h"
       
   305         and "is_linearform H' h'"  "is_subspace H' E"
       
   306       have "h' (a \<cdot> x) = a * h' x"
       
   307         by (rule linearform_mult)
       
   308       also have "h' x = h x" ..
       
   309       also have "a \<cdot> x \<in> H'" ..
       
   310       with b have "h' (a \<cdot> x) = h (a \<cdot> x)" ..
       
   311       finally show ?thesis .
       
   312     qed
       
   313   qed
   255   qed
   314 qed
   256 qed
   315 
   257 
   316 text {*
   258 text {*
   317   \medskip The limit of a non-empty chain of norm preserving
   259   \medskip The limit of a non-empty chain of norm preserving
   319   element of the chain is an extension of @{text f} and the supremum
   261   element of the chain is an extension of @{text f} and the supremum
   320   is an extension for every element of the chain.
   262   is an extension for every element of the chain.
   321 *}
   263 *}
   322 
   264 
   323 lemma sup_ext:
   265 lemma sup_ext:
   324   "graph H h = \<Union>c \<Longrightarrow> M = norm_pres_extensions E p F f \<Longrightarrow>
   266   assumes graph: "graph H h = \<Union>c"
   325   c \<in> chain M \<Longrightarrow> \<exists>x. x \<in> c \<Longrightarrow> graph F f \<subseteq> graph H h"
   267     and M: "M = norm_pres_extensions E p F f"
       
   268     and cM: "c \<in> chain M"
       
   269     and ex: "\<exists>x. x \<in> c"
       
   270   shows "graph F f \<subseteq> graph H h"
   326 proof -
   271 proof -
   327   assume "M = norm_pres_extensions E p F f"  "c \<in> chain M"
   272   from ex obtain x where xc: "x \<in> c" ..
   328          "graph H h = \<Union>c"
   273   from cM have "c \<subseteq> M" ..
   329   assume "\<exists>x. x \<in> c"
   274   with xc have "x \<in> M" ..
   330   thus ?thesis
   275   with M have "x \<in> norm_pres_extensions E p F f"
   331   proof
   276     by (simp only:)
   332     fix x assume "x \<in> c"
   277   then obtain G g where "x = graph G g" and "graph F f \<subseteq> graph G g" ..
   333     have "c \<subseteq> M" by (rule chainD2)
   278   then have "graph F f \<subseteq> x" by (simp only:)
   334     hence "x \<in> M" ..
   279   also from xc have "\<dots> \<subseteq> \<Union>c" by blast
   335     hence "x \<in> norm_pres_extensions E p F f" by (simp!)
   280   also from graph have "\<dots> = graph H h" ..
   336 
   281   finally show ?thesis .
   337     hence "\<exists>G g. graph G g = x
       
   338              \<and> is_linearform G g
       
   339              \<and> is_subspace G E
       
   340              \<and> is_subspace F G
       
   341              \<and> graph F f \<subseteq> graph G g
       
   342              \<and> (\<forall>x \<in> G. g x \<le> p x)"
       
   343       by (simp! add: norm_pres_extension_D)
       
   344 
       
   345     thus ?thesis
       
   346     proof (elim exE conjE)
       
   347       fix G g assume "graph F f \<subseteq> graph G g"
       
   348       also assume "graph G g = x"
       
   349       also have "... \<in> c" .
       
   350       hence "x \<subseteq> \<Union>c" by fast
       
   351       also have [symmetric]: "graph H h = \<Union>c" .
       
   352       finally show ?thesis .
       
   353     qed
       
   354   qed
       
   355 qed
   282 qed
   356 
   283 
   357 text {*
   284 text {*
   358   \medskip The domain @{text H} of the limit function is a superspace
   285   \medskip The domain @{text H} of the limit function is a superspace
   359   of @{text F}, since @{text F} is a subset of @{text H}. The
   286   of @{text F}, since @{text F} is a subset of @{text H}. The
   360   existence of the @{text 0} element in @{text F} and the closure
   287   existence of the @{text 0} element in @{text F} and the closure
   361   properties follow from the fact that @{text F} is a vector space.
   288   properties follow from the fact that @{text F} is a vector space.
   362 *}
   289 *}
   363 
   290 
   364 lemma sup_supF:
   291 lemma sup_supF:
   365   "graph H h = \<Union>c \<Longrightarrow> M = norm_pres_extensions E p F f \<Longrightarrow>
   292   assumes graph: "graph H h = \<Union>c"
   366   c \<in> chain M \<Longrightarrow> \<exists>x. x \<in> c \<Longrightarrow> is_subspace F E \<Longrightarrow> is_vectorspace E
   293     and M: "M = norm_pres_extensions E p F f"
   367   \<Longrightarrow> is_subspace F H"
   294     and cM: "c \<in> chain M"
   368 proof -
   295     and ex: "\<exists>x. x \<in> c"
   369   assume "M = norm_pres_extensions E p F f"  "c \<in> chain M"  "\<exists>x. x \<in> c"
   296     and FE: "F \<unlhd> E"
   370     "graph H h = \<Union>c"  "is_subspace F E"  "is_vectorspace E"
   297   shows "F \<unlhd> H"
   371 
   298 proof
   372   show ?thesis
   299   from FE show "F \<noteq> {}" by (rule subspace.non_empty)
   373   proof
   300   from graph M cM ex have "graph F f \<subseteq> graph H h" by (rule sup_ext)
   374     show "0 \<in> F" ..
   301   then show "F \<subseteq> H" ..
   375     show "F \<subseteq> H"
   302   fix x y assume "x \<in> F" and "y \<in> F"
   376     proof (rule graph_extD2)
   303   with FE show "x + y \<in> F" by (rule subspace.add_closed)
   377       show "graph F f \<subseteq> graph H h"
   304 next
   378         by (rule sup_ext)
   305   fix x a assume "x \<in> F"
   379     qed
   306   with FE show "a \<cdot> x \<in> F" by (rule subspace.mult_closed)
   380     show "\<forall>x \<in> F. \<forall>y \<in> F. x + y \<in> F"
       
   381     proof (intro ballI)
       
   382       fix x y assume "x \<in> F"  "y \<in> F"
       
   383       show "x + y \<in> F" by (simp!)
       
   384     qed
       
   385     show "\<forall>x \<in> F. \<forall>a. a \<cdot> x \<in> F"
       
   386     proof (intro ballI allI)
       
   387       fix x a assume "x\<in>F"
       
   388       show "a \<cdot> x \<in> F" by (simp!)
       
   389     qed
       
   390   qed
       
   391 qed
   307 qed
   392 
   308 
   393 text {*
   309 text {*
   394   \medskip The domain @{text H} of the limit function is a subspace of
   310   \medskip The domain @{text H} of the limit function is a subspace of
   395   @{text E}.
   311   @{text E}.
   396 *}
   312 *}
   397 
   313 
   398 lemma sup_subE:
   314 lemma sup_subE:
   399   "graph H h = \<Union>c \<Longrightarrow> M = norm_pres_extensions E p F f \<Longrightarrow>
   315   assumes graph: "graph H h = \<Union>c"
   400   c \<in> chain M \<Longrightarrow> \<exists>x. x \<in> c \<Longrightarrow> is_subspace F E \<Longrightarrow> is_vectorspace E
   316     and M: "M = norm_pres_extensions E p F f"
   401   \<Longrightarrow> is_subspace H E"
   317     and cM: "c \<in> chain M"
   402 proof -
   318     and ex: "\<exists>x. x \<in> c"
   403   assume "M = norm_pres_extensions E p F f"  "c \<in> chain M"  "\<exists>x. x \<in> c"
   319     and FE: "F \<unlhd> E"
   404     "graph H h = \<Union>c"  "is_subspace F E"  "is_vectorspace E"
   320     and E: "vectorspace E"
   405   show ?thesis
   321   shows "H \<unlhd> E"
       
   322 proof
       
   323   show "H \<noteq> {}"
       
   324   proof -
       
   325     from FE E have "0 \<in> F" by (rule subvectorspace.zero)
       
   326     also from graph M cM ex FE have "F \<unlhd> H" by (rule sup_supF)
       
   327     then have "F \<subseteq> H" ..
       
   328     finally show ?thesis by blast
       
   329   qed
       
   330   show "H \<subseteq> E"
   406   proof
   331   proof
   407 
   332     fix x assume "x \<in> H"
   408     txt {* The @{text 0} element is in @{text H}, as @{text F} is a
   333     with M cM graph
   409     subset of @{text H}: *}
   334     obtain H' h' where x: "x \<in> H'" and H'E: "H' \<unlhd> E"
   410 
   335       by (rule some_H'h' [elim_format]) blast
   411     have "0 \<in> F" ..
   336     from H'E have "H' \<subseteq> E" ..
   412     also have "is_subspace F H" by (rule sup_supF)
   337     with x show "x \<in> E" ..
   413     hence "F \<subseteq> H" ..
   338   qed
   414     finally show "0 \<in> H" .
   339   fix x y assume x: "x \<in> H" and y: "y \<in> H"
   415 
   340   show "x + y \<in> H"
   416     txt {* @{text H} is a subset of @{text E}: *}
   341   proof -
   417 
   342     from M cM graph x y obtain H' h' where
   418     show "H \<subseteq> E"
   343           x': "x \<in> H'" and y': "y \<in> H'" and H'E: "H' \<unlhd> E"
   419     proof
   344         and graphs: "graph H' h' \<subseteq> graph H h"
   420       fix x assume "x \<in> H"
   345       by (rule some_H'h'2 [elim_format]) blast
   421       have "\<exists>H' h'. x \<in> H' \<and> graph H' h' \<subseteq> graph H h
   346     from H'E x' y' have "x + y \<in> H'"
   422               \<and> is_linearform H' h' \<and> is_subspace H' E
   347       by (rule subspace.add_closed)
   423               \<and> is_subspace F H' \<and> graph F f \<subseteq> graph H' h'
   348     also from graphs have "H' \<subseteq> H" ..
   424               \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
   349     finally show ?thesis .
   425         by (rule some_H'h')
   350   qed
   426       thus "x \<in> E"
   351 next
   427       proof (elim exE conjE)
   352   fix x a assume x: "x \<in> H"
   428         fix H' h' assume "x \<in> H'"  "is_subspace H' E"
   353   show "a \<cdot> x \<in> H"
   429         have "H' \<subseteq> E" ..
   354   proof -
   430         thus "x \<in> E" ..
   355     from M cM graph x
   431       qed
   356     obtain H' h' where x': "x \<in> H'" and H'E: "H' \<unlhd> E"
   432     qed
   357         and graphs: "graph H' h' \<subseteq> graph H h"
   433 
   358       by (rule some_H'h' [elim_format]) blast
   434     txt {* @{text H} is closed under addition: *}
   359     from H'E x' have "a \<cdot> x \<in> H'" by (rule subspace.mult_closed)
   435 
   360     also from graphs have "H' \<subseteq> H" ..
   436     show "\<forall>x \<in> H. \<forall>y \<in> H. x + y \<in> H"
   361     finally show ?thesis .
   437     proof (intro ballI)
       
   438       fix x y assume "x \<in> H"  "y \<in> H"
       
   439       have "\<exists>H' h'. x \<in> H' \<and> y \<in> H' \<and> graph H' h' \<subseteq> graph H h
       
   440               \<and> is_linearform H' h' \<and> is_subspace H' E
       
   441               \<and> is_subspace F H' \<and> graph F f \<subseteq> graph H' h'
       
   442               \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
       
   443         by (rule some_H'h'2)
       
   444       thus "x + y \<in> H"
       
   445       proof (elim exE conjE)
       
   446         fix H' h'
       
   447         assume "x \<in> H'"  "y \<in> H'"  "is_subspace H' E"
       
   448           "graph H' h' \<subseteq> graph H h"
       
   449         have "x + y \<in> H'" ..
       
   450         also have "H' \<subseteq> H" ..
       
   451         finally show ?thesis .
       
   452       qed
       
   453     qed
       
   454 
       
   455     txt {* @{text H} is closed under scalar multiplication: *}
       
   456 
       
   457     show "\<forall>x \<in> H. \<forall>a. a \<cdot> x \<in> H"
       
   458     proof (intro ballI allI)
       
   459       fix x a assume "x \<in> H"
       
   460       have "\<exists>H' h'. x \<in> H' \<and> graph H' h' \<subseteq> graph H h
       
   461               \<and> is_linearform H' h' \<and> is_subspace H' E
       
   462               \<and> is_subspace F H' \<and> graph F f \<subseteq> graph H' h'
       
   463               \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
       
   464         by (rule some_H'h')
       
   465       thus "a \<cdot> x \<in> H"
       
   466       proof (elim exE conjE)
       
   467         fix H' h'
       
   468         assume "x \<in> H'"  "is_subspace H' E"  "graph H' h' \<subseteq> graph H h"
       
   469         have "a \<cdot> x \<in> H'" ..
       
   470         also have "H' \<subseteq> H" ..
       
   471         finally show ?thesis .
       
   472       qed
       
   473     qed
       
   474   qed
   362   qed
   475 qed
   363 qed
   476 
   364 
   477 text {*
   365 text {*
   478   \medskip The limit function is bounded by the norm @{text p} as
   366   \medskip The limit function is bounded by the norm @{text p} as
   479   well, since all elements in the chain are bounded by @{text p}.
   367   well, since all elements in the chain are bounded by @{text p}.
   480 *}
   368 *}
   481 
   369 
   482 lemma sup_norm_pres:
   370 lemma sup_norm_pres:
   483   "graph H h = \<Union>c \<Longrightarrow> M = norm_pres_extensions E p F f \<Longrightarrow>
   371   assumes graph: "graph H h = \<Union>c"
   484   c \<in> chain M \<Longrightarrow> \<forall>x \<in> H. h x \<le> p x"
   372     and M: "M = norm_pres_extensions E p F f"
       
   373     and cM: "c \<in> chain M"
       
   374   shows "\<forall>x \<in> H. h x \<le> p x"
   485 proof
   375 proof
   486   assume "M = norm_pres_extensions E p F f"  "c \<in> chain M"
       
   487          "graph H h = \<Union>c"
       
   488   fix x assume "x \<in> H"
   376   fix x assume "x \<in> H"
   489   have "\<exists>H' h'. x \<in> H' \<and> graph H' h' \<subseteq> graph H h
   377   with M cM graph obtain H' h' where x': "x \<in> H'"
   490           \<and> is_linearform H' h' \<and> is_subspace H' E \<and> is_subspace F H'
   378       and graphs: "graph H' h' \<subseteq> graph H h"
   491           \<and> graph F f \<subseteq> graph H' h' \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
       
   492     by (rule some_H'h')
       
   493   thus "h x \<le> p x"
       
   494   proof (elim exE conjE)
       
   495     fix H' h'
       
   496     assume "x \<in> H'"  "graph H' h' \<subseteq> graph H h"
       
   497       and a: "\<forall>x \<in> H'. h' x \<le> p x"
   379       and a: "\<forall>x \<in> H'. h' x \<le> p x"
   498     have [symmetric]: "h' x = h x" ..
   380     by (rule some_H'h' [elim_format]) blast
   499     also from a have "h' x \<le> p x " ..
   381   from graphs x' have [symmetric]: "h' x = h x" ..
   500     finally show ?thesis .
   382   also from a x' have "h' x \<le> p x " ..
   501   qed
   383   finally show "h x \<le> p x" .
   502 qed
   384 qed
   503 
       
   504 
   385 
   505 text {*
   386 text {*
   506   \medskip The following lemma is a property of linear forms on real
   387   \medskip The following lemma is a property of linear forms on real
   507   vector spaces. It will be used for the lemma @{text abs_HahnBanach}
   388   vector spaces. It will be used for the lemma @{text abs_HahnBanach}
   508   (see page \pageref{abs-HahnBanach}). \label{abs-ineq-iff} For real
   389   (see page \pageref{abs-HahnBanach}). \label{abs-ineq-iff} For real
   514   \end{tabular}
   395   \end{tabular}
   515   \end{center}
   396   \end{center}
   516 *}
   397 *}
   517 
   398 
   518 lemma abs_ineq_iff:
   399 lemma abs_ineq_iff:
   519   "is_subspace H E \<Longrightarrow> is_vectorspace E \<Longrightarrow> is_seminorm E p \<Longrightarrow>
   400   includes subvectorspace H E + seminorm E p + linearform H h
   520   is_linearform H h
   401   shows "(\<forall>x \<in> H. \<bar>h x\<bar> \<le> p x) = (\<forall>x \<in> H. h x \<le> p x)" (is "?L = ?R")
   521   \<Longrightarrow> (\<forall>x \<in> H. \<bar>h x\<bar> \<le> p x) = (\<forall>x \<in> H. h x \<le> p x)"
   402 proof
   522   (concl is "?L = ?R")
   403   have h: "vectorspace H" by (rule vectorspace)
   523 proof -
   404   {
   524   assume "is_subspace H E"  "is_vectorspace E"  "is_seminorm E p"
       
   525          "is_linearform H h"
       
   526   have h: "is_vectorspace H" ..
       
   527   show ?thesis
       
   528   proof
       
   529     assume l: ?L
   405     assume l: ?L
   530     show ?R
   406     show ?R
   531     proof
   407     proof
   532       fix x assume x: "x \<in> H"
   408       fix x assume x: "x \<in> H"
   533       have "h x \<le> \<bar>h x\<bar>" by (rule abs_ge_self)
   409       have "h x \<le> \<bar>h x\<bar>" by arith
   534       also from l have "... \<le> p x" ..
   410       also from l x have "\<dots> \<le> p x" ..
   535       finally show "h x \<le> p x" .
   411       finally show "h x \<le> p x" .
   536     qed
   412     qed
   537   next
   413   next
   538     assume r: ?R
   414     assume r: ?R
   539     show ?L
   415     show ?L
   540     proof
   416     proof
   541       fix x assume "x \<in> H"
   417       fix x assume x: "x \<in> H"
   542       show "\<And>a b :: real. - a \<le> b \<Longrightarrow> b \<le> a \<Longrightarrow> \<bar>b\<bar> \<le> a"
   418       show "\<And>a b :: real. - a \<le> b \<Longrightarrow> b \<le> a \<Longrightarrow> \<bar>b\<bar> \<le> a"
   543         by arith
   419         by arith
   544       show "- p x \<le> h x"
   420       show "- p x \<le> h x"
   545       proof (rule real_minus_le)
   421       proof (rule real_minus_le)
   546         from h have "- h x = h (- x)"
   422         have "linearform H h" .
   547           by (rule linearform_neg [symmetric])
   423         from h this x have "- h x = h (- x)"
   548         also from r have "... \<le> p (- x)" by (simp!)
   424           by (rule vectorspace_linearform.neg [symmetric])
   549         also have "... = p x"
   425         also from r x have "\<dots> \<le> p (- x)" by simp
   550         proof (rule seminorm_minus)
   426         also have "\<dots> = p x"
       
   427         proof (rule seminorm_vectorspace.minus)
   551           show "x \<in> E" ..
   428           show "x \<in> E" ..
   552         qed
   429         qed
   553         finally show "- h x \<le> p x" .
   430         finally show "- h x \<le> p x" .
   554       qed
   431       qed
   555       from r show "h x \<le> p x" ..
   432       from r x show "h x \<le> p x" ..
   556     qed
   433     qed
   557   qed
   434   }
   558 qed
   435 qed
   559 
   436 
   560 end
   437 end