src/HOL/Real/HahnBanach/HahnBanach.thy
author wenzelm
Mon, 29 Nov 1999 15:52:49 +0100
changeset 8039 a901bafe4578
parent 7978 1b99ee57d131
child 8084 c3790c6b4470
permissions -rw-r--r--
Goal: tuned pris;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7566
c5a3f980a7af accomodate refined facts handling;
wenzelm
parents: 7535
diff changeset
     1
(*  Title:      HOL/Real/HahnBanach/HahnBanach.thy
c5a3f980a7af accomodate refined facts handling;
wenzelm
parents: 7535
diff changeset
     2
    ID:         $Id$
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
     3
    Author:     Gertrud Bauer, TU Munich
7566
c5a3f980a7af accomodate refined facts handling;
wenzelm
parents: 7535
diff changeset
     4
*)
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
     5
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
     6
header {* The Hahn-Banach Theorem *};
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
     7
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
     8
theory HahnBanach
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
     9
     = HahnBanachSupLemmas + HahnBanachExtLemmas + ZornLemma:;
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    10
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    11
text {*
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    12
  We present the proof of two different versions of the Hahn-Banach 
7927
b50446a33c16 update by Gertrud Bauer;
wenzelm
parents: 7917
diff changeset
    13
  Theorem, closely following \cite[\S36]{Heuser:1986}.
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    14
*};
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    15
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    16
subsection {* The case of general linear spaces *};
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
    17
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
    18
text  {* Let $f$ be a linear form $f$ defined on a subspace $F$ 
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
    19
 of a norm vector space $E$. If $f$ is  
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
    20
 bounded by some seminorm $q$ on $E$, it can be extended 
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
    21
 to a function on $E$ in a norm-preserving way. *};
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    22
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    23
theorem HahnBanach: 
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
    24
  "[| is_vectorspace E; is_subspace F E; is_seminorm E p; 
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    25
  is_linearform F f; ALL x:F. f x <= p x |]
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    26
  ==> EX h. is_linearform E h
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    27
          & (ALL x:F. h x = f x)
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    28
          & (ALL x:E. h x <= p x)";
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    29
proof -;
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
    30
  assume "is_vectorspace E" "is_subspace F E" "is_seminorm E p"
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    31
         "is_linearform F f" "ALL x:F. f x <= p x";
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
    32
  
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    33
  txt{* We define $M$ to be the set of all linear extensions 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    34
  of $f$ to superspaces of $F$, which are bounded by $p$. *};
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    35
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
    36
  def M == "norm_pres_extensions E p F f";
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    37
  
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    38
  txt{* We show that $M$ is non-empty: *};
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    39
 
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
    40
  have aM: "graph F f : norm_pres_extensions E p F f";
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
    41
  proof (rule norm_pres_extensionI2);
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    42
    have "is_vectorspace F"; ..;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    43
    thus "is_subspace F F"; ..;
7566
c5a3f980a7af accomodate refined facts handling;
wenzelm
parents: 7535
diff changeset
    44
  qed (blast!)+;
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    45
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
    46
  subsubsect {* Existence of a limit function the norm-preserving
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    47
  extensions *}; 
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    48
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
    49
  txt {* For every non-empty chain of norm-preserving extensions
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
    50
  the union of all functions in the chain is again a norm-preserving
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
    51
  extension. (The union is an upper bound for all elements. 
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    52
  It is even the least upper bound, because every upper bound of $M$
7927
b50446a33c16 update by Gertrud Bauer;
wenzelm
parents: 7917
diff changeset
    53
  is also an upper bound for $\Union c$.) *};
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    54
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
    55
  {{;
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    56
    fix c; assume "c:chain M" "EX x. x:c";
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
    57
    have "Union c : M";
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    58
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
    59
    proof (unfold M_def, rule norm_pres_extensionI);
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    60
      show "EX (H::'a set) h::'a => real. graph H h = Union c
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    61
              & is_linearform H h 
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    62
              & is_subspace H E 
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    63
              & is_subspace F H 
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    64
              & graph F f <= graph H h
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    65
              & (ALL x::'a:H. h x <= p x)";
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
    66
      proof (intro exI conjI);
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    67
        let ?H = "domain (Union c)";
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
    68
        let ?h = "funct (Union c)";
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
    69
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
    70
        show a: "graph ?H ?h = Union c"; 
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
    71
        proof (rule graph_domain_funct);
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
    72
          fix x y z; assume "(x, y) : Union c" "(x, z) : Union c";
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    73
          show "z = y"; by (rule sup_definite);
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
    74
        qed;
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    75
            
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
    76
        show "is_linearform ?H ?h";  
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    77
          by (simp! add: sup_lf a);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    78
        show "is_subspace ?H E"; 
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
    79
          by (rule sup_subE, rule a) (simp!)+;
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    80
        show "is_subspace F ?H"; 
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
    81
          by (rule sup_supF, rule a) (simp!)+;
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    82
        show "graph F f <= graph ?H ?h"; 
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
    83
          by (rule sup_ext, rule a) (simp!)+;
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
    84
        show "ALL x::'a:?H. ?h x <= p x"; 
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
    85
          by (rule sup_norm_pres, rule a) (simp!)+;
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    86
      qed;
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    87
    qed;
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
    88
  }};
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
    89
 
7927
b50446a33c16 update by Gertrud Bauer;
wenzelm
parents: 7917
diff changeset
    90
  txt {* According to Zorn's Lemma there is
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    91
  a maximal norm-preserving extension $g\in M$. *};
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    92
  
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    93
  with aM; have bex_g: "EX g:M. ALL x:M. g <= x --> g = x";
7566
c5a3f980a7af accomodate refined facts handling;
wenzelm
parents: 7535
diff changeset
    94
    by (simp! add: Zorn's_Lemma);
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
    95
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    96
  thus ?thesis;
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    97
  proof;
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    98
    fix g; assume g: "g:M" "ALL x:M. g <= x --> g = x";
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    99
 
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   100
    have ex_Hh: 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   101
      "EX H h. graph H h = g 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   102
           & is_linearform H h 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   103
           & is_subspace H E 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   104
           & is_subspace F H
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   105
           & graph F f <= graph H h
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   106
           & (ALL x:H. h x <= p x) "; 
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
   107
      by (simp! add: norm_pres_extension_D);
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   108
    thus ?thesis;
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   109
    proof (elim exE conjE, intro exI);
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
   110
      fix H h; 
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   111
      assume "graph H h = g" "is_linearform (H::'a set) h" 
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   112
             "is_subspace H E" "is_subspace F H"
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   113
        and h_ext: "graph F f <= graph H h"
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   114
        and h_bound: "ALL x:H. h x <= p x";
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
   115
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   116
      have h: "is_vectorspace H"; ..;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   117
      have f: "is_vectorspace F"; ..;
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   118
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   119
subsubsect {* The domain of the limit function *};
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
   120
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   121
have eq: "H = E"; 
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   122
proof (rule classical);
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
   123
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   124
txt {* Assume that the domain of the supremum is not $E$, *};
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   125
;
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   126
  assume "H ~= E";
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   127
  have "H <= E"; ..;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   128
  hence "H < E"; ..;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   129
 
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   130
  txt{* then there exists an element $x_0$ in $E \ H$: *};
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
   131
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   132
  hence "EX x0:E. x0~:H"; 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   133
    by (rule set_less_imp_diff_not_empty);
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   134
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   135
  txt {* We get that $h$ can be extended  in a 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   136
  norm-preserving way to some $H_0$. *};
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   137
;  
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   138
  hence "EX H0 h0. g <= graph H0 h0 & g ~= graph H0 h0 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   139
                 & graph H0 h0 : M";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   140
  proof;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   141
    fix x0; assume "x0:E" "x0~:H";
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
   142
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   143
    have x0: "x0 ~= <0>";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   144
    proof (rule classical);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   145
      presume "x0 = <0>";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   146
      with h; have "x0:H"; by simp;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   147
      thus ?thesis; by contradiction;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   148
    qed blast;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   149
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   150
    txt {* Define $H_0$ as the (direct) sum of H and the 
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   151
    linear closure of $x_0$. \label{ex-xi-use}*};
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   152
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   153
    def H0 == "H + lin x0";
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   154
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   155
    from h; have xi: "EX xi. ALL y:H. - p (y + x0) - h y <= xi 
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   156
                                    & xi <= p (y + x0) - h y";
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   157
    proof (rule ex_xi);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   158
      fix u v; assume "u:H" "v:H";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   159
      from h; have "h v - h u = h (v - u)";
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   160
         by (simp! add: linearform_diff);
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   161
      also; from h_bound; have "... <= p (v - u)";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   162
        by (simp!);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   163
      also; have "v - u = x0 + - x0 + v + - u";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   164
        by (simp! add: diff_eq1);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   165
      also; have "... = v + x0 + - (u + x0)";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   166
        by (simp!);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   167
      also; have "... = (v + x0) - (u + x0)";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   168
        by (simp! add: diff_eq1);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   169
      also; have "p ... <= p (v + x0) + p (u + x0)";
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   170
         by (rule seminorm_diff_subadditive) (simp!)+;
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   171
      finally; have "h v - h u <= p (v + x0) + p (u + x0)"; .;
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   172
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   173
      thus "- p (u + x0) - h u <= p (v + x0) - h v";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   174
        by (rule real_diff_ineq_swap);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   175
    qed;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   176
    hence "EX h0. g <= graph H0 h0 & g ~= graph H0 h0
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   177
               & graph H0 h0 : M"; 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   178
    proof (elim exE, intro exI conjI);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   179
      fix xi; 
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   180
      assume a: "ALL y:H. - p (y + x0) - h y <= xi 
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   181
                        & xi <= p (y + x0) - h y";
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   182
     
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   183
      txt {* Define $h_0$ as the canonical linear extension 
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   184
      of $h$ on $H_0$:*};  
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   185
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   186
      def h0 ==
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   187
          "\<lambda>x. let (y,a) = SOME (y, a). x = y + a <*> x0 & y:H
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   188
               in (h y) + a * xi";
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   189
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   190
      txt {* We get that the graph of $h_0$ extend that of
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   191
      $h$. *};
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   192
        
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   193
      have  "graph H h <= graph H0 h0"; 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   194
      proof (rule graph_extI);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   195
        fix t; assume "t:H"; 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   196
        have "(SOME (y, a). t = y + a <*> x0 & y : H) = (t,0r)";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   197
          by (rule decomp_H0_H, rule x0); 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   198
        thus "h t = h0 t"; by (simp! add: Let_def);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   199
      next;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   200
        show "H <= H0";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   201
        proof (rule subspace_subset);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   202
	  show "is_subspace H H0";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   203
          proof (unfold H0_def, rule subspace_vs_sum1);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   204
       	    show "is_vectorspace H"; ..;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   205
            show "is_vectorspace (lin x0)"; ..;
7566
c5a3f980a7af accomodate refined facts handling;
wenzelm
parents: 7535
diff changeset
   206
          qed;
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   207
        qed;
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   208
      qed;
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   209
      thus "g <= graph H0 h0"; by (simp!);
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   210
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   211
      txt {* Apparently $h_0$ is not equal to $h$. *};
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   212
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   213
      have "graph H h ~= graph H0 h0";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   214
      proof;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   215
        assume e: "graph H h = graph H0 h0";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   216
        have "x0 : H0"; 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   217
        proof (unfold H0_def, rule vs_sumI);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   218
          show "x0 = <0> + x0"; by (simp!);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   219
          from h; show "<0> : H"; ..;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   220
          show "x0 : lin x0"; by (rule x_lin_x);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   221
        qed;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   222
        hence "(x0, h0 x0) : graph H0 h0"; ..;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   223
        with e; have "(x0, h0 x0) : graph H h"; by simp;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   224
        hence "x0 : H"; ..;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   225
        thus False; by contradiction;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   226
      qed;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   227
      thus "g ~= graph H0 h0"; by (simp!);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   228
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   229
      txt {* Furthermore  $h_0$ is a norm-preserving extension 
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   230
     of $f$. *};
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   231
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   232
      have "graph H0 h0 : norm_pres_extensions E p F f";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   233
      proof (rule norm_pres_extensionI2);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   234
        show "is_linearform H0 h0";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   235
          by (rule h0_lf, rule x0) (simp!)+;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   236
        show "is_subspace H0 E";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   237
          by (unfold H0_def, rule vs_sum_subspace, 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   238
             rule lin_subspace);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   239
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   240
        have "is_subspace F H"; .;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   241
        also; from h lin_vs; 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   242
	have [fold H0_def]: "is_subspace H (H + lin x0)"; ..;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   243
        finally (subspace_trans [OF _ h]); 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   244
	show f_h0: "is_subspace F H0"; .; (*** 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   245
        backwards:
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   246
        show f_h0: "is_subspace F H0"; .;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   247
        proof (rule subspace_trans [of F H H0]);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   248
          from h lin_vs; 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   249
          have "is_subspace H (H + lin x0)"; ..;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   250
          thus "is_subspace H H0"; by (unfold H0_def);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   251
        qed; ***)
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   252
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   253
        show "graph F f <= graph H0 h0";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   254
        proof (rule graph_extI);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   255
          fix x; assume "x:F";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   256
          have "f x = h x"; ..;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   257
          also; have " ... = h x + 0r * xi"; by simp;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   258
          also; have "... = (let (y,a) = (x, 0r) in h y + a * xi)";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   259
            by (simp add: Let_def);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   260
          also; have 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   261
            "(x, 0r) = (SOME (y, a). x = y + a <*> x0 & y : H)";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   262
            by (rule decomp_H0_H [RS sym], rule x0) (simp!)+;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   263
          also; have 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   264
            "(let (y,a) = (SOME (y,a). x = y + a <*> x0 & y : H)
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   265
              in h y + a * xi) 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   266
             = h0 x"; by (simp!);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   267
          finally; show "f x = h0 x"; .;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   268
        next;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   269
          from f_h0; show "F <= H0"; ..;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   270
        qed;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   271
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   272
        show "ALL x:H0. h0 x <= p x";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   273
          by (rule h0_norm_pres, rule x0) (assumption | (simp!))+;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   274
      qed;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   275
      thus "graph H0 h0 : M"; by (simp!);
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   276
    qed;
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   277
    thus ?thesis; ..;
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   278
  qed;
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   279
7927
b50446a33c16 update by Gertrud Bauer;
wenzelm
parents: 7917
diff changeset
   280
  txt {* We have shown that $h$ can still be extended to 
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   281
  some $h_0$, in contradiction to the assumption that 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   282
  $h$ is a maximal element. *};
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   283
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   284
  hence "EX x:M. g <= x & g ~= x"; 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   285
    by (elim exE conjE, intro bexI conjI);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   286
  hence "~ (ALL x:M. g <= x --> g = x)"; by simp;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   287
  thus ?thesis; by contradiction;
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   288
qed; 
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   289
7927
b50446a33c16 update by Gertrud Bauer;
wenzelm
parents: 7917
diff changeset
   290
txt{* It follows $H = E$, and the thesis can be shown. *};
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   291
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   292
show "is_linearform E h & (ALL x:F. h x = f x) 
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   293
     & (ALL x:E. h x <= p x)";
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   294
proof (intro conjI); 
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   295
  from eq; show "is_linearform E h"; by (simp!);
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   296
  show "ALL x:F. h x = f x"; 
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   297
  proof (intro ballI, rule sym);
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   298
    fix x; assume "x:F"; show "f x = h x "; ..;
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   299
  qed;
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   300
  from eq; show "ALL x:E. h x <= p x"; by (force!);
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   301
qed;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   302
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   303
qed;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   304
qed;
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   305
qed;
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   306
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   307
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   308
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   309
subsection  {* An alternative formulation of the theorem *};
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
   310
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   311
text {* The following alternative formulation of the Hahn-Banach
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   312
Theorem\label{rabs-HahnBanach} uses the fact that for real numbers the
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   313
following inequations are equivalent:\footnote{This was shown in lemma
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   314
$\idt{rabs{\dsh}ineq{\dsh}iff}$ (see page \pageref{rabs-ineq-iff}).}
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   315
\begin{matharray}{ll}
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   316
\forall x\in H.\ap |h\ap x|\leq p\ap x& {\rm and}\\
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   317
\forall x\in H.\ap h\ap x\leq p\ap x\\
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   318
\end{matharray}
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   319
*};
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   320
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   321
theorem rabs_HahnBanach:
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   322
  "[| is_vectorspace E; is_subspace F E; is_seminorm E p; 
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   323
  is_linearform F f; ALL x:F. rabs (f x) <= p x |]
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   324
  ==> EX g. is_linearform E g
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   325
          & (ALL x:F. g x = f x)
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   326
          & (ALL x:E. rabs (g x) <= p x)";
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   327
proof -; 
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   328
  assume e: "is_vectorspace E" "is_subspace F E" "is_seminorm E p" 
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   329
            "is_linearform F f"  "ALL x:F. rabs (f x) <= p x";
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   330
  have "ALL x:F. f x <= p x"; 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   331
    by (rule rabs_ineq_iff [RS iffD1]);
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   332
  hence "EX g. is_linearform E g & (ALL x:F. g x = f x) 
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   333
              & (ALL x:E. g x <= p x)";
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   334
    by (simp! only: HahnBanach);
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   335
  thus ?thesis;
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   336
  proof (elim exE conjE);
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   337
    fix g; assume "is_linearform E g" "ALL x:F. g x = f x" 
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   338
                  "ALL x:E. g x <= p x";
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   339
    show ?thesis;
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   340
    proof (intro exI conjI);
7566
c5a3f980a7af accomodate refined facts handling;
wenzelm
parents: 7535
diff changeset
   341
      from e; show "ALL x:E. rabs (g x) <= p x"; 
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   342
        by (simp! add: rabs_ineq_iff [OF subspace_refl]);
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   343
    qed;
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   344
  qed;
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   345
qed;
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   346
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   347
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   348
subsection {* The Hahn-Banach Theorem for normed spaces *};
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
   349
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   350
text {* Every continuous linear form $f$ on a subspace $F$ of a
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   351
norm space $E$, can be extended to a continuous linear form $g$ on
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   352
$E$ such that $\fnorm{f} = \fnorm {g}$. *};
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
   353
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   354
theorem norm_HahnBanach:
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   355
  "[| is_normed_vectorspace E norm; is_subspace F E; 
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   356
  is_linearform F f; is_continuous F norm f |] 
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   357
  ==> EX g. is_linearform E g
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   358
         & is_continuous E norm g 
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   359
         & (ALL x:F. g x = f x) 
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   360
         & function_norm E norm g = function_norm F norm f";
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   361
proof -;
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   362
  assume e_norm: "is_normed_vectorspace E norm";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   363
  assume f: "is_subspace F E" "is_linearform F f";
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   364
  assume f_cont: "is_continuous F norm f";
7566
c5a3f980a7af accomodate refined facts handling;
wenzelm
parents: 7535
diff changeset
   365
  have e: "is_vectorspace E"; ..;
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   366
  with _; have f_norm: "is_normed_vectorspace F norm"; ..;
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
   367
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   368
  txt{* We define the function $p$ on $E$ as follows:
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   369
  \begin{matharray}{l}
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   370
  p \ap x = \fnorm f \cdot \norm x\\
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   371
  \end{matharray}
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   372
  *};
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   373
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   374
  def p == "\<lambda>x. function_norm F norm f * norm x";
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   375
  
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   376
  txt{* $p$ is a seminorm on $E$: *};
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   377
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   378
  have q: "is_seminorm E p";
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   379
  proof;
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   380
    fix x y a; assume "x:E" "y:E";
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   381
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   382
    txt{* $p$ is positive definite: *};
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   383
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   384
    show "0r <= p x";
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   385
    proof (unfold p_def, rule real_le_mult_order);
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   386
      from _ f_norm; show "0r <= function_norm F norm f"; ..;
7566
c5a3f980a7af accomodate refined facts handling;
wenzelm
parents: 7535
diff changeset
   387
      show "0r <= norm x"; ..;
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   388
    qed;
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   389
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   390
    txt{* $p$ is absolutely homogenous: *};
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   391
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   392
    show "p (a <*> x) = rabs a * p x";
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   393
    proof -; 
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   394
      have "p (a <*> x) = function_norm F norm f * norm (a <*> x)";
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   395
        by (simp!);
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   396
      also; have "norm (a <*> x) = rabs a * norm x"; 
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   397
        by (rule normed_vs_norm_rabs_homogenous);
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   398
      also; have "function_norm F norm f * (rabs a * norm x) 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   399
        = rabs a * (function_norm F norm f * norm x)";
7566
c5a3f980a7af accomodate refined facts handling;
wenzelm
parents: 7535
diff changeset
   400
        by (simp! only: real_mult_left_commute);
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   401
      also; have "... = rabs a * p x"; by (simp!);
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   402
      finally; show ?thesis; .;
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   403
    qed;
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   404
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   405
    txt{* Furthermore, $p$ is subadditive: *};
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   406
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   407
    show "p (x + y) <= p x + p y";
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   408
    proof -;
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   409
      have "p (x + y) = function_norm F norm f * norm (x + y)";
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   410
        by (simp!);
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   411
      also; 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   412
      have "... <= function_norm F norm f * (norm x + norm y)";
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   413
      proof (rule real_mult_le_le_mono1);
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   414
        from _ f_norm; show "0r <= function_norm F norm f"; ..;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   415
        show "norm (x + y) <= norm x + norm y"; ..;
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   416
      qed;
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   417
      also; have "... = function_norm F norm f * norm x 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   418
                        + function_norm F norm f * norm y";
7566
c5a3f980a7af accomodate refined facts handling;
wenzelm
parents: 7535
diff changeset
   419
        by (simp! only: real_add_mult_distrib2);
c5a3f980a7af accomodate refined facts handling;
wenzelm
parents: 7535
diff changeset
   420
      finally; show ?thesis; by (simp!);
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   421
    qed;
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   422
  qed;
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   423
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   424
  txt{* $f$ is bounded by $p$. *}; 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   425
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   426
  have "ALL x:F. rabs (f x) <= p x";
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   427
  proof;
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   428
    fix x; assume "x:F";
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   429
     from f_norm; show "rabs (f x) <= p x"; 
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   430
       by (simp! add: norm_fx_le_norm_f_norm_x);
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   431
  qed;
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   432
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   433
  txt{* Using the fact that $p$ is a seminorm and 
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   434
  $f$ is bounded by $q$ we can apply the Hahn-Banach Theorem 
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   435
  for real vector spaces. 
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   436
  So $f$ can be extended in a norm-preserving way to some function
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   437
  $g$ on the whole vector space $E$. *};
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   438
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   439
  with e f q; 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   440
  have "EX g. is_linearform E g & (ALL x:F. g x = f x) 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   441
            & (ALL x:E. rabs (g x) <= p x)";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   442
    by (simp! add: rabs_HahnBanach);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   443
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   444
  thus ?thesis;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   445
  proof (elim exE conjE); 
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   446
    fix g;
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   447
    assume "is_linearform E g" and a: "ALL x:F. g x = f x" 
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   448
       and b: "ALL x:E. rabs (g x) <= p x";
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   449
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   450
    show "EX g. is_linearform E g 
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   451
            & is_continuous E norm g 
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   452
            & (ALL x:F. g x = f x) 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   453
            & function_norm E norm g = function_norm F norm f";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   454
    proof (intro exI conjI);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   455
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   456
    txt{* We futhermore have to show that 
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   457
    $g$ is also continuous: *};
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   458
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   459
      show g_cont: "is_continuous E norm g";
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   460
      proof;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   461
        fix x; assume "x:E";
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   462
        from b [RS bspec, OF this]; 
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   463
        show "rabs (g x) <= function_norm F norm f * norm x";
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   464
          by (unfold p_def);
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   465
      qed; 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   466
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   467
      txt {* To complete the proof, we show that 
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   468
      $\fnorm g = \fnorm f$. *};
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   469
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   470
      show "function_norm E norm g = function_norm F norm f"
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   471
        (is "?L = ?R");
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   472
      proof (rule order_antisym);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   473
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   474
        txt{* First we show $\fnorm g \leq \fnorm f$.  The function norm
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   475
        $\fnorm g$ is defined as the smallest $c\in\bbbR$ such that
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   476
        \begin{matharray}{l}
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   477
        \All {x\in E} {|g\ap x| \leq c \cdot \norm x}
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   478
        \end{matharray}
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   479
        Furthermore holds
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   480
        \begin{matharray}{l}
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   481
        \All {x\in E} {|g\ap x| \leq \fnorm f \cdot \norm x}
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   482
        \end{matharray}
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   483
        *};
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   484
 
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   485
        have "ALL x:E. rabs (g x) <= function_norm F norm f * norm x";
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   486
        proof;
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   487
          fix x; assume "x:E"; 
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   488
          show "rabs (g x) <= function_norm F norm f * norm x";
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   489
            by (simp!);
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   490
        qed;
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   491
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   492
        with _ g_cont; show "?L <= ?R";
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   493
        proof (rule fnorm_le_ub);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   494
          from f_cont f_norm; show "0r <= function_norm F norm f"; ..;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   495
        qed;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   496
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   497
        txt{* The other direction is achieved by a similar 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   498
        argument. *};
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   499
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   500
        have "ALL x:F. rabs (f x) <= function_norm E norm g * norm x";
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   501
        proof;
7566
c5a3f980a7af accomodate refined facts handling;
wenzelm
parents: 7535
diff changeset
   502
          fix x; assume "x : F"; 
c5a3f980a7af accomodate refined facts handling;
wenzelm
parents: 7535
diff changeset
   503
          from a; have "g x = f x"; ..;
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   504
          hence "rabs (f x) = rabs (g x)"; by simp;
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   505
          also; from _ _ g_cont; 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   506
          have "... <= function_norm E norm g * norm x";
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   507
            by (rule norm_fx_le_norm_f_norm_x) (simp!)+;
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   508
          finally; 
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   509
          show "rabs (f x) <= function_norm E norm g * norm x"; .;
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   510
        qed;
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   511
  
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   512
        with f_norm f_cont; show "?R <= ?L"; 
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   513
        proof (rule fnorm_le_ub);
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   514
          from g_cont; show "0r <= function_norm E norm g"; ..;
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   515
        qed;
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   516
      qed;
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   517
    qed;
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   518
  qed;
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   519
qed;
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   520
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   521
end;