src/HOL/Hahn_Banach/Hahn_Banach_Sup_Lemmas.thy
author blanchet
Thu Sep 11 18:54:36 2014 +0200 (2014-09-11)
changeset 58306 117ba6cbe414
parent 52183 667961fa6a60
child 58744 c434e37f290e
permissions -rw-r--r--
renamed 'rep_datatype' to 'old_rep_datatype' (HOL)
wenzelm@31795
     1
(*  Title:      HOL/Hahn_Banach/Hahn_Banach_Sup_Lemmas.thy
wenzelm@7917
     2
    Author:     Gertrud Bauer, TU Munich
wenzelm@7917
     3
*)
wenzelm@7917
     4
bauerg@9261
     5
header {* The supremum w.r.t.~the function order *}
wenzelm@7917
     6
wenzelm@31795
     7
theory Hahn_Banach_Sup_Lemmas
wenzelm@31795
     8
imports Function_Norm Zorn_Lemma
wenzelm@27612
     9
begin
bauerg@9256
    10
wenzelm@10687
    11
text {*
wenzelm@10687
    12
  This section contains some lemmas that will be used in the proof of
wenzelm@10687
    13
  the Hahn-Banach Theorem.  In this section the following context is
wenzelm@10687
    14
  presumed.  Let @{text E} be a real vector space with a seminorm
wenzelm@10687
    15
  @{text p} on @{text E}.  @{text F} is a subspace of @{text E} and
wenzelm@10687
    16
  @{text f} a linear form on @{text F}. We consider a chain @{text c}
wenzelm@13515
    17
  of norm-preserving extensions of @{text f}, such that @{text "\<Union>c =
wenzelm@13515
    18
  graph H h"}.  We will show some properties about the limit function
wenzelm@13515
    19
  @{text h}, i.e.\ the supremum of the chain @{text c}.
wenzelm@7917
    20
wenzelm@13515
    21
  \medskip Let @{text c} be a chain of norm-preserving extensions of
wenzelm@13515
    22
  the function @{text f} and let @{text "graph H h"} be the supremum
wenzelm@13515
    23
  of @{text c}.  Every element in @{text H} is member of one of the
wenzelm@10687
    24
  elements of the chain.
wenzelm@10687
    25
*}
popescua@52183
    26
lemmas [dest?] = chainsD
popescua@52183
    27
lemmas chainsE2 [elim?] = chainsD2 [elim_format]
wenzelm@7917
    28
wenzelm@7917
    29
lemma some_H'h't:
wenzelm@13515
    30
  assumes M: "M = norm_pres_extensions E p F f"
popescua@52183
    31
    and cM: "c \<in> chains M"
wenzelm@13515
    32
    and u: "graph H h = \<Union>c"
wenzelm@13515
    33
    and x: "x \<in> H"
wenzelm@13515
    34
  shows "\<exists>H' h'. graph H' h' \<in> c
wenzelm@13515
    35
    \<and> (x, h x) \<in> graph H' h'
wenzelm@13515
    36
    \<and> linearform H' h' \<and> H' \<unlhd> E
wenzelm@13515
    37
    \<and> F \<unlhd> H' \<and> graph F f \<subseteq> graph H' h'
wenzelm@13515
    38
    \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
bauerg@9261
    39
proof -
wenzelm@13515
    40
  from x have "(x, h x) \<in> graph H h" ..
wenzelm@13515
    41
  also from u have "\<dots> = \<Union>c" .
wenzelm@13515
    42
  finally obtain g where gc: "g \<in> c" and gh: "(x, h x) \<in> g" by blast
wenzelm@7917
    43
wenzelm@13515
    44
  from cM have "c \<subseteq> M" ..
wenzelm@13515
    45
  with gc have "g \<in> M" ..
wenzelm@13515
    46
  also from M have "\<dots> = norm_pres_extensions E p F f" .
wenzelm@13515
    47
  finally obtain H' and h' where g: "g = graph H' h'"
wenzelm@13515
    48
    and * : "linearform H' h'"  "H' \<unlhd> E"  "F \<unlhd> H'"
wenzelm@13515
    49
      "graph F f \<subseteq> graph H' h'"  "\<forall>x \<in> H'. h' x \<le> p x" ..
wenzelm@13515
    50
wenzelm@13515
    51
  from gc and g have "graph H' h' \<in> c" by (simp only:)
wenzelm@13515
    52
  moreover from gh and g have "(x, h x) \<in> graph H' h'" by (simp only:)
wenzelm@13515
    53
  ultimately show ?thesis using * by blast
bauerg@9261
    54
qed
wenzelm@7917
    55
wenzelm@10687
    56
text {*
wenzelm@10687
    57
  \medskip Let @{text c} be a chain of norm-preserving extensions of
wenzelm@10687
    58
  the function @{text f} and let @{text "graph H h"} be the supremum
wenzelm@10687
    59
  of @{text c}.  Every element in the domain @{text H} of the supremum
wenzelm@10687
    60
  function is member of the domain @{text H'} of some function @{text
wenzelm@10687
    61
  h'}, such that @{text h} extends @{text h'}.
bauerg@9261
    62
*}
wenzelm@7917
    63
wenzelm@10687
    64
lemma some_H'h':
wenzelm@13515
    65
  assumes M: "M = norm_pres_extensions E p F f"
popescua@52183
    66
    and cM: "c \<in> chains M"
wenzelm@13515
    67
    and u: "graph H h = \<Union>c"
wenzelm@13515
    68
    and x: "x \<in> H"
wenzelm@13515
    69
  shows "\<exists>H' h'. x \<in> H' \<and> graph H' h' \<subseteq> graph H h
wenzelm@13515
    70
    \<and> linearform H' h' \<and> H' \<unlhd> E \<and> F \<unlhd> H'
wenzelm@13515
    71
    \<and> graph F f \<subseteq> graph H' h' \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
bauerg@9261
    72
proof -
wenzelm@13515
    73
  from M cM u x obtain H' h' where
wenzelm@13515
    74
      x_hx: "(x, h x) \<in> graph H' h'"
wenzelm@13515
    75
    and c: "graph H' h' \<in> c"
wenzelm@13515
    76
    and * : "linearform H' h'"  "H' \<unlhd> E"  "F \<unlhd> H'"
wenzelm@10687
    77
      "graph F f \<subseteq> graph H' h'"  "\<forall>x \<in> H'. h' x \<le> p x"
wenzelm@13515
    78
    by (rule some_H'h't [elim_format]) blast
wenzelm@13515
    79
  from x_hx have "x \<in> H'" ..
popescua@52183
    80
  moreover from cM u c have "graph H' h' \<subseteq> graph H h" by blast
wenzelm@13515
    81
  ultimately show ?thesis using * by blast
bauerg@9261
    82
qed
wenzelm@7917
    83
wenzelm@10687
    84
text {*
wenzelm@10687
    85
  \medskip Any two elements @{text x} and @{text y} in the domain
wenzelm@10687
    86
  @{text H} of the supremum function @{text h} are both in the domain
wenzelm@10687
    87
  @{text H'} of some function @{text h'}, such that @{text h} extends
wenzelm@10687
    88
  @{text h'}.
wenzelm@10687
    89
*}
wenzelm@7917
    90
wenzelm@10687
    91
lemma some_H'h'2:
wenzelm@13515
    92
  assumes M: "M = norm_pres_extensions E p F f"
popescua@52183
    93
    and cM: "c \<in> chains M"
wenzelm@13515
    94
    and u: "graph H h = \<Union>c"
wenzelm@13515
    95
    and x: "x \<in> H"
wenzelm@13515
    96
    and y: "y \<in> H"
wenzelm@13515
    97
  shows "\<exists>H' h'. x \<in> H' \<and> y \<in> H'
wenzelm@13515
    98
    \<and> graph H' h' \<subseteq> graph H h
wenzelm@13515
    99
    \<and> linearform H' h' \<and> H' \<unlhd> E \<and> F \<unlhd> H'
wenzelm@13515
   100
    \<and> graph F f \<subseteq> graph H' h' \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
bauerg@9261
   101
proof -
wenzelm@10687
   102
  txt {* @{text y} is in the domain @{text H''} of some function @{text h''},
wenzelm@10687
   103
  such that @{text h} extends @{text h''}. *}
wenzelm@7917
   104
wenzelm@13515
   105
  from M cM u and y obtain H' h' where
wenzelm@13515
   106
      y_hy: "(y, h y) \<in> graph H' h'"
wenzelm@13515
   107
    and c': "graph H' h' \<in> c"
wenzelm@13515
   108
    and * :
wenzelm@13515
   109
      "linearform H' h'"  "H' \<unlhd> E"  "F \<unlhd> H'"
wenzelm@13515
   110
      "graph F f \<subseteq> graph H' h'"  "\<forall>x \<in> H'. h' x \<le> p x"
wenzelm@13515
   111
    by (rule some_H'h't [elim_format]) blast
wenzelm@13515
   112
wenzelm@13515
   113
  txt {* @{text x} is in the domain @{text H'} of some function @{text h'},
wenzelm@13515
   114
    such that @{text h} extends @{text h'}. *}
wenzelm@7917
   115
wenzelm@13515
   116
  from M cM u and x obtain H'' h'' where
wenzelm@13515
   117
      x_hx: "(x, h x) \<in> graph H'' h''"
wenzelm@13515
   118
    and c'': "graph H'' h'' \<in> c"
wenzelm@13515
   119
    and ** :
wenzelm@13515
   120
      "linearform H'' h''"  "H'' \<unlhd> E"  "F \<unlhd> H''"
wenzelm@13515
   121
      "graph F f \<subseteq> graph H'' h''"  "\<forall>x \<in> H''. h'' x \<le> p x"
wenzelm@13515
   122
    by (rule some_H'h't [elim_format]) blast
wenzelm@7917
   123
wenzelm@13515
   124
  txt {* Since both @{text h'} and @{text h''} are elements of the chain,
wenzelm@13515
   125
    @{text h''} is an extension of @{text h'} or vice versa. Thus both
wenzelm@13515
   126
    @{text x} and @{text y} are contained in the greater
wenzelm@13515
   127
    one. \label{cases1}*}
wenzelm@7917
   128
wenzelm@23378
   129
  from cM c'' c' have "graph H'' h'' \<subseteq> graph H' h' \<or> graph H' h' \<subseteq> graph H'' h''"
wenzelm@13515
   130
    (is "?case1 \<or> ?case2") ..
wenzelm@13515
   131
  then show ?thesis
wenzelm@13515
   132
  proof
wenzelm@13515
   133
    assume ?case1
wenzelm@23378
   134
    have "(x, h x) \<in> graph H'' h''" by fact
wenzelm@27612
   135
    also have "\<dots> \<subseteq> graph H' h'" by fact
wenzelm@13515
   136
    finally have xh:"(x, h x) \<in> graph H' h'" .
wenzelm@13515
   137
    then have "x \<in> H'" ..
wenzelm@13515
   138
    moreover from y_hy have "y \<in> H'" ..
popescua@52183
   139
    moreover from cM u and c' have "graph H' h' \<subseteq> graph H h" by blast
wenzelm@13515
   140
    ultimately show ?thesis using * by blast
wenzelm@13515
   141
  next
wenzelm@13515
   142
    assume ?case2
wenzelm@13515
   143
    from x_hx have "x \<in> H''" ..
wenzelm@13515
   144
    moreover {
wenzelm@23378
   145
      have "(y, h y) \<in> graph H' h'" by (rule y_hy)
wenzelm@23378
   146
      also have "\<dots> \<subseteq> graph H'' h''" by fact
wenzelm@13515
   147
      finally have "(y, h y) \<in> graph H'' h''" .
wenzelm@13515
   148
    } then have "y \<in> H''" ..
popescua@52183
   149
    moreover from cM u and c'' have "graph H'' h'' \<subseteq> graph H h" by blast
wenzelm@13515
   150
    ultimately show ?thesis using ** by blast
bauerg@9261
   151
  qed
bauerg@9261
   152
qed
wenzelm@7917
   153
wenzelm@10687
   154
text {*
wenzelm@10687
   155
  \medskip The relation induced by the graph of the supremum of a
wenzelm@13515
   156
  chain @{text c} is definite, i.~e.~t is the graph of a function.
wenzelm@13515
   157
*}
wenzelm@7917
   158
wenzelm@10687
   159
lemma sup_definite:
wenzelm@13515
   160
  assumes M_def: "M \<equiv> norm_pres_extensions E p F f"
popescua@52183
   161
    and cM: "c \<in> chains M"
wenzelm@13515
   162
    and xy: "(x, y) \<in> \<Union>c"
wenzelm@13515
   163
    and xz: "(x, z) \<in> \<Union>c"
wenzelm@13515
   164
  shows "z = y"
wenzelm@10687
   165
proof -
wenzelm@13515
   166
  from cM have c: "c \<subseteq> M" ..
wenzelm@13515
   167
  from xy obtain G1 where xy': "(x, y) \<in> G1" and G1: "G1 \<in> c" ..
wenzelm@13515
   168
  from xz obtain G2 where xz': "(x, z) \<in> G2" and G2: "G2 \<in> c" ..
wenzelm@7917
   169
wenzelm@13515
   170
  from G1 c have "G1 \<in> M" ..
wenzelm@13515
   171
  then obtain H1 h1 where G1_rep: "G1 = graph H1 h1"
wenzelm@27612
   172
    unfolding M_def by blast
wenzelm@7917
   173
wenzelm@13515
   174
  from G2 c have "G2 \<in> M" ..
wenzelm@13515
   175
  then obtain H2 h2 where G2_rep: "G2 = graph H2 h2"
wenzelm@27612
   176
    unfolding M_def by blast
wenzelm@7917
   177
wenzelm@13515
   178
  txt {* @{text "G\<^sub>1"} is contained in @{text "G\<^sub>2"}
wenzelm@13515
   179
    or vice versa, since both @{text "G\<^sub>1"} and @{text
wenzelm@13515
   180
    "G\<^sub>2"} are members of @{text c}. \label{cases2}*}
wenzelm@7917
   181
wenzelm@13515
   182
  from cM G1 G2 have "G1 \<subseteq> G2 \<or> G2 \<subseteq> G1" (is "?case1 \<or> ?case2") ..
wenzelm@13515
   183
  then show ?thesis
wenzelm@13515
   184
  proof
wenzelm@13515
   185
    assume ?case1
wenzelm@13515
   186
    with xy' G2_rep have "(x, y) \<in> graph H2 h2" by blast
wenzelm@27612
   187
    then have "y = h2 x" ..
wenzelm@13515
   188
    also
wenzelm@13515
   189
    from xz' G2_rep have "(x, z) \<in> graph H2 h2" by (simp only:)
wenzelm@27612
   190
    then have "z = h2 x" ..
wenzelm@13515
   191
    finally show ?thesis .
wenzelm@13515
   192
  next
wenzelm@13515
   193
    assume ?case2
wenzelm@13515
   194
    with xz' G1_rep have "(x, z) \<in> graph H1 h1" by blast
wenzelm@27612
   195
    then have "z = h1 x" ..
wenzelm@13515
   196
    also
wenzelm@13515
   197
    from xy' G1_rep have "(x, y) \<in> graph H1 h1" by (simp only:)
wenzelm@27612
   198
    then have "y = h1 x" ..
wenzelm@13515
   199
    finally show ?thesis ..
bauerg@9261
   200
  qed
bauerg@9261
   201
qed
wenzelm@7917
   202
wenzelm@10687
   203
text {*
wenzelm@10687
   204
  \medskip The limit function @{text h} is linear. Every element
wenzelm@10687
   205
  @{text x} in the domain of @{text h} is in the domain of a function
wenzelm@10687
   206
  @{text h'} in the chain of norm preserving extensions.  Furthermore,
wenzelm@10687
   207
  @{text h} is an extension of @{text h'} so the function values of
wenzelm@10687
   208
  @{text x} are identical for @{text h'} and @{text h}.  Finally, the
wenzelm@10687
   209
  function @{text h'} is linear by construction of @{text M}.
wenzelm@10687
   210
*}
wenzelm@7917
   211
wenzelm@10687
   212
lemma sup_lf:
wenzelm@13515
   213
  assumes M: "M = norm_pres_extensions E p F f"
popescua@52183
   214
    and cM: "c \<in> chains M"
wenzelm@13515
   215
    and u: "graph H h = \<Union>c"
wenzelm@13515
   216
  shows "linearform H h"
wenzelm@13515
   217
proof
wenzelm@13515
   218
  fix x y assume x: "x \<in> H" and y: "y \<in> H"
wenzelm@13515
   219
  with M cM u obtain H' h' where
wenzelm@13515
   220
        x': "x \<in> H'" and y': "y \<in> H'"
wenzelm@13515
   221
      and b: "graph H' h' \<subseteq> graph H h"
wenzelm@13515
   222
      and linearform: "linearform H' h'"
wenzelm@13515
   223
      and subspace: "H' \<unlhd> E"
wenzelm@13515
   224
    by (rule some_H'h'2 [elim_format]) blast
wenzelm@7917
   225
wenzelm@13515
   226
  show "h (x + y) = h x + h y"
wenzelm@13515
   227
  proof -
wenzelm@13515
   228
    from linearform x' y' have "h' (x + y) = h' x + h' y"
wenzelm@13515
   229
      by (rule linearform.add)
wenzelm@13515
   230
    also from b x' have "h' x = h x" ..
wenzelm@13515
   231
    also from b y' have "h' y = h y" ..
wenzelm@13515
   232
    also from subspace x' y' have "x + y \<in> H'"
wenzelm@13515
   233
      by (rule subspace.add_closed)
wenzelm@13515
   234
    with b have "h' (x + y) = h (x + y)" ..
wenzelm@13515
   235
    finally show ?thesis .
wenzelm@13515
   236
  qed
wenzelm@13515
   237
next
wenzelm@13515
   238
  fix x a assume x: "x \<in> H"
wenzelm@13515
   239
  with M cM u obtain H' h' where
wenzelm@13515
   240
        x': "x \<in> H'"
wenzelm@13515
   241
      and b: "graph H' h' \<subseteq> graph H h"
wenzelm@13515
   242
      and linearform: "linearform H' h'"
wenzelm@13515
   243
      and subspace: "H' \<unlhd> E"
wenzelm@13515
   244
    by (rule some_H'h' [elim_format]) blast
wenzelm@7917
   245
wenzelm@13515
   246
  show "h (a \<cdot> x) = a * h x"
wenzelm@13515
   247
  proof -
wenzelm@13515
   248
    from linearform x' have "h' (a \<cdot> x) = a * h' x"
wenzelm@13515
   249
      by (rule linearform.mult)
wenzelm@13515
   250
    also from b x' have "h' x = h x" ..
wenzelm@13515
   251
    also from subspace x' have "a \<cdot> x \<in> H'"
wenzelm@13515
   252
      by (rule subspace.mult_closed)
wenzelm@13515
   253
    with b have "h' (a \<cdot> x) = h (a \<cdot> x)" ..
wenzelm@13515
   254
    finally show ?thesis .
bauerg@9261
   255
  qed
bauerg@9261
   256
qed
wenzelm@7917
   257
wenzelm@10687
   258
text {*
wenzelm@10687
   259
  \medskip The limit of a non-empty chain of norm preserving
wenzelm@10687
   260
  extensions of @{text f} is an extension of @{text f}, since every
wenzelm@10687
   261
  element of the chain is an extension of @{text f} and the supremum
wenzelm@10687
   262
  is an extension for every element of the chain.
wenzelm@10687
   263
*}
wenzelm@7917
   264
wenzelm@7917
   265
lemma sup_ext:
wenzelm@13515
   266
  assumes graph: "graph H h = \<Union>c"
wenzelm@13515
   267
    and M: "M = norm_pres_extensions E p F f"
popescua@52183
   268
    and cM: "c \<in> chains M"
wenzelm@13515
   269
    and ex: "\<exists>x. x \<in> c"
wenzelm@13515
   270
  shows "graph F f \<subseteq> graph H h"
bauerg@9261
   271
proof -
wenzelm@13515
   272
  from ex obtain x where xc: "x \<in> c" ..
wenzelm@13515
   273
  from cM have "c \<subseteq> M" ..
wenzelm@13515
   274
  with xc have "x \<in> M" ..
wenzelm@13515
   275
  with M have "x \<in> norm_pres_extensions E p F f"
wenzelm@13515
   276
    by (simp only:)
wenzelm@13515
   277
  then obtain G g where "x = graph G g" and "graph F f \<subseteq> graph G g" ..
wenzelm@13515
   278
  then have "graph F f \<subseteq> x" by (simp only:)
wenzelm@13515
   279
  also from xc have "\<dots> \<subseteq> \<Union>c" by blast
wenzelm@13515
   280
  also from graph have "\<dots> = graph H h" ..
wenzelm@13515
   281
  finally show ?thesis .
bauerg@9261
   282
qed
wenzelm@7917
   283
wenzelm@10687
   284
text {*
wenzelm@10687
   285
  \medskip The domain @{text H} of the limit function is a superspace
wenzelm@10687
   286
  of @{text F}, since @{text F} is a subset of @{text H}. The
wenzelm@10687
   287
  existence of the @{text 0} element in @{text F} and the closure
wenzelm@10687
   288
  properties follow from the fact that @{text F} is a vector space.
wenzelm@10687
   289
*}
wenzelm@7917
   290
wenzelm@10687
   291
lemma sup_supF:
wenzelm@13515
   292
  assumes graph: "graph H h = \<Union>c"
wenzelm@13515
   293
    and M: "M = norm_pres_extensions E p F f"
popescua@52183
   294
    and cM: "c \<in> chains M"
wenzelm@13515
   295
    and ex: "\<exists>x. x \<in> c"
wenzelm@13515
   296
    and FE: "F \<unlhd> E"
wenzelm@13515
   297
  shows "F \<unlhd> H"
wenzelm@13515
   298
proof
wenzelm@13515
   299
  from FE show "F \<noteq> {}" by (rule subspace.non_empty)
wenzelm@13515
   300
  from graph M cM ex have "graph F f \<subseteq> graph H h" by (rule sup_ext)
wenzelm@13515
   301
  then show "F \<subseteq> H" ..
wenzelm@13515
   302
  fix x y assume "x \<in> F" and "y \<in> F"
wenzelm@13515
   303
  with FE show "x + y \<in> F" by (rule subspace.add_closed)
wenzelm@13515
   304
next
wenzelm@13515
   305
  fix x a assume "x \<in> F"
wenzelm@13515
   306
  with FE show "a \<cdot> x \<in> F" by (rule subspace.mult_closed)
bauerg@9261
   307
qed
wenzelm@7917
   308
wenzelm@10687
   309
text {*
wenzelm@10687
   310
  \medskip The domain @{text H} of the limit function is a subspace of
wenzelm@10687
   311
  @{text E}.
wenzelm@10687
   312
*}
wenzelm@7917
   313
wenzelm@10687
   314
lemma sup_subE:
wenzelm@13515
   315
  assumes graph: "graph H h = \<Union>c"
wenzelm@13515
   316
    and M: "M = norm_pres_extensions E p F f"
popescua@52183
   317
    and cM: "c \<in> chains M"
wenzelm@13515
   318
    and ex: "\<exists>x. x \<in> c"
wenzelm@13515
   319
    and FE: "F \<unlhd> E"
wenzelm@13515
   320
    and E: "vectorspace E"
wenzelm@13515
   321
  shows "H \<unlhd> E"
wenzelm@13515
   322
proof
wenzelm@13515
   323
  show "H \<noteq> {}"
wenzelm@13515
   324
  proof -
wenzelm@13547
   325
    from FE E have "0 \<in> F" by (rule subspace.zero)
wenzelm@13515
   326
    also from graph M cM ex FE have "F \<unlhd> H" by (rule sup_supF)
wenzelm@13515
   327
    then have "F \<subseteq> H" ..
wenzelm@13515
   328
    finally show ?thesis by blast
wenzelm@13515
   329
  qed
wenzelm@13515
   330
  show "H \<subseteq> E"
bauerg@9261
   331
  proof
wenzelm@13515
   332
    fix x assume "x \<in> H"
wenzelm@13515
   333
    with M cM graph
wenzelm@44887
   334
    obtain H' where x: "x \<in> H'" and H'E: "H' \<unlhd> E"
wenzelm@13515
   335
      by (rule some_H'h' [elim_format]) blast
wenzelm@13515
   336
    from H'E have "H' \<subseteq> E" ..
wenzelm@13515
   337
    with x show "x \<in> E" ..
wenzelm@13515
   338
  qed
wenzelm@13515
   339
  fix x y assume x: "x \<in> H" and y: "y \<in> H"
wenzelm@13515
   340
  show "x + y \<in> H"
wenzelm@13515
   341
  proof -
wenzelm@13515
   342
    from M cM graph x y obtain H' h' where
wenzelm@13515
   343
          x': "x \<in> H'" and y': "y \<in> H'" and H'E: "H' \<unlhd> E"
wenzelm@13515
   344
        and graphs: "graph H' h' \<subseteq> graph H h"
wenzelm@13515
   345
      by (rule some_H'h'2 [elim_format]) blast
wenzelm@13515
   346
    from H'E x' y' have "x + y \<in> H'"
wenzelm@13515
   347
      by (rule subspace.add_closed)
wenzelm@13515
   348
    also from graphs have "H' \<subseteq> H" ..
wenzelm@13515
   349
    finally show ?thesis .
wenzelm@13515
   350
  qed
wenzelm@13515
   351
next
wenzelm@13515
   352
  fix x a assume x: "x \<in> H"
wenzelm@13515
   353
  show "a \<cdot> x \<in> H"
wenzelm@13515
   354
  proof -
wenzelm@13515
   355
    from M cM graph x
wenzelm@13515
   356
    obtain H' h' where x': "x \<in> H'" and H'E: "H' \<unlhd> E"
wenzelm@13515
   357
        and graphs: "graph H' h' \<subseteq> graph H h"
wenzelm@13515
   358
      by (rule some_H'h' [elim_format]) blast
wenzelm@13515
   359
    from H'E x' have "a \<cdot> x \<in> H'" by (rule subspace.mult_closed)
wenzelm@13515
   360
    also from graphs have "H' \<subseteq> H" ..
wenzelm@13515
   361
    finally show ?thesis .
bauerg@9261
   362
  qed
bauerg@9261
   363
qed
wenzelm@7917
   364
wenzelm@10687
   365
text {*
wenzelm@10687
   366
  \medskip The limit function is bounded by the norm @{text p} as
wenzelm@10687
   367
  well, since all elements in the chain are bounded by @{text p}.
bauerg@9261
   368
*}
wenzelm@7917
   369
bauerg@9374
   370
lemma sup_norm_pres:
wenzelm@13515
   371
  assumes graph: "graph H h = \<Union>c"
wenzelm@13515
   372
    and M: "M = norm_pres_extensions E p F f"
popescua@52183
   373
    and cM: "c \<in> chains M"
wenzelm@13515
   374
  shows "\<forall>x \<in> H. h x \<le> p x"
bauerg@9261
   375
proof
wenzelm@9503
   376
  fix x assume "x \<in> H"
wenzelm@13515
   377
  with M cM graph obtain H' h' where x': "x \<in> H'"
wenzelm@13515
   378
      and graphs: "graph H' h' \<subseteq> graph H h"
wenzelm@10687
   379
      and a: "\<forall>x \<in> H'. h' x \<le> p x"
wenzelm@13515
   380
    by (rule some_H'h' [elim_format]) blast
wenzelm@13515
   381
  from graphs x' have [symmetric]: "h' x = h x" ..
wenzelm@13515
   382
  also from a x' have "h' x \<le> p x " ..
wenzelm@13515
   383
  finally show "h x \<le> p x" .
bauerg@9261
   384
qed
wenzelm@7917
   385
wenzelm@10687
   386
text {*
wenzelm@10687
   387
  \medskip The following lemma is a property of linear forms on real
wenzelm@31795
   388
  vector spaces. It will be used for the lemma @{text abs_Hahn_Banach}
wenzelm@31795
   389
  (see page \pageref{abs-Hahn_Banach}). \label{abs-ineq-iff} For real
wenzelm@10687
   390
  vector spaces the following inequations are equivalent:
wenzelm@10687
   391
  \begin{center}
wenzelm@10687
   392
  \begin{tabular}{lll}
wenzelm@10687
   393
  @{text "\<forall>x \<in> H. \<bar>h x\<bar> \<le> p x"} & and &
wenzelm@10687
   394
  @{text "\<forall>x \<in> H. h x \<le> p x"} \\
wenzelm@10687
   395
  \end{tabular}
wenzelm@10687
   396
  \end{center}
bauerg@9261
   397
*}
wenzelm@7917
   398
wenzelm@10687
   399
lemma abs_ineq_iff:
ballarin@27611
   400
  assumes "subspace H E" and "vectorspace E" and "seminorm E p"
ballarin@27611
   401
    and "linearform H h"
wenzelm@13515
   402
  shows "(\<forall>x \<in> H. \<bar>h x\<bar> \<le> p x) = (\<forall>x \<in> H. h x \<le> p x)" (is "?L = ?R")
wenzelm@13515
   403
proof
ballarin@29234
   404
  interpret subspace H E by fact
ballarin@29234
   405
  interpret vectorspace E by fact
ballarin@29234
   406
  interpret seminorm E p by fact
ballarin@29234
   407
  interpret linearform H h by fact
wenzelm@23378
   408
  have H: "vectorspace H" using `vectorspace E` ..
wenzelm@13515
   409
  {
bauerg@9261
   410
    assume l: ?L
bauerg@9261
   411
    show ?R
bauerg@9261
   412
    proof
wenzelm@9503
   413
      fix x assume x: "x \<in> H"
wenzelm@13515
   414
      have "h x \<le> \<bar>h x\<bar>" by arith
wenzelm@13515
   415
      also from l x have "\<dots> \<le> p x" ..
wenzelm@10687
   416
      finally show "h x \<le> p x" .
bauerg@9261
   417
    qed
bauerg@9261
   418
  next
bauerg@9261
   419
    assume r: ?R
bauerg@9261
   420
    show ?L
wenzelm@10687
   421
    proof
wenzelm@13515
   422
      fix x assume x: "x \<in> H"
wenzelm@10687
   423
      show "\<And>a b :: real. - a \<le> b \<Longrightarrow> b \<le> a \<Longrightarrow> \<bar>b\<bar> \<le> a"
bauerg@9261
   424
        by arith
wenzelm@23378
   425
      from `linearform H h` and H x
wenzelm@23378
   426
      have "- h x = h (- x)" by (rule linearform.neg [symmetric])
bauerg@14710
   427
      also
bauerg@14710
   428
      from H x have "- x \<in> H" by (rule vectorspace.neg_closed)
bauerg@14710
   429
      with r have "h (- x) \<le> p (- x)" ..
bauerg@14710
   430
      also have "\<dots> = p x"
wenzelm@32960
   431
        using `seminorm E p` `vectorspace E`
bauerg@14710
   432
      proof (rule seminorm.minus)
bauerg@14710
   433
        from x show "x \<in> E" ..
bauerg@9261
   434
      qed
bauerg@14710
   435
      finally have "- h x \<le> p x" .
bauerg@14710
   436
      then show "- p x \<le> h x" by simp
wenzelm@13515
   437
      from r x show "h x \<le> p x" ..
bauerg@9261
   438
    qed
wenzelm@13515
   439
  }
wenzelm@10687
   440
qed
wenzelm@7917
   441
wenzelm@10687
   442
end