src/HOL/Hahn_Banach/Hahn_Banach.thy
changeset 81464 2575f1bd226b
parent 80914 d97fdabd9e2b
equal deleted inserted replaced
81463:d8f77c1c9703 81464:2575f1bd226b
    57   interpret linearform F f by fact
    57   interpret linearform F f by fact
    58   define M where "M = norm_pres_extensions E p F f"
    58   define M where "M = norm_pres_extensions E p F f"
    59   then have M: "M = \<dots>" by (simp only:)
    59   then have M: "M = \<dots>" by (simp only:)
    60   from E have F: "vectorspace F" ..
    60   from E have F: "vectorspace F" ..
    61   note FE = \<open>F \<unlhd> E\<close>
    61   note FE = \<open>F \<unlhd> E\<close>
    62   {
    62   have "\<Union>c \<in> M" if cM: "c \<in> chains M" and ex: "\<exists>x. x \<in> c" for c
    63     fix c assume cM: "c \<in> chains M" and ex: "\<exists>x. x \<in> c"
    63     \<comment> \<open>Show that every non-empty chain \<open>c\<close> of \<open>M\<close> has an upper bound in \<open>M\<close>:\<close>
    64     have "\<Union>c \<in> M"
    64     \<comment> \<open>\<open>\<Union>c\<close> is greater than any element of the chain \<open>c\<close>, so it suffices to show \<open>\<Union>c \<in> M\<close>.\<close>
    65       \<comment> \<open>Show that every non-empty chain \<open>c\<close> of \<open>M\<close> has an upper bound in \<open>M\<close>:\<close>
    65     unfolding M_def
    66       \<comment> \<open>\<open>\<Union>c\<close> is greater than any element of the chain \<open>c\<close>, so it suffices to show \<open>\<Union>c \<in> M\<close>.\<close>
    66   proof (rule norm_pres_extensionI)
    67       unfolding M_def
    67     let ?H = "domain (\<Union>c)"
    68     proof (rule norm_pres_extensionI)
    68     let ?h = "funct (\<Union>c)"
    69       let ?H = "domain (\<Union>c)"
    69 
    70       let ?h = "funct (\<Union>c)"
    70     have a: "graph ?H ?h = \<Union>c"
    71 
    71     proof (rule graph_domain_funct)
    72       have a: "graph ?H ?h = \<Union>c"
    72       fix x y z assume "(x, y) \<in> \<Union>c" and "(x, z) \<in> \<Union>c"
    73       proof (rule graph_domain_funct)
    73       with M_def cM show "z = y" by (rule sup_definite)
    74         fix x y z assume "(x, y) \<in> \<Union>c" and "(x, z) \<in> \<Union>c"
    74     qed
    75         with M_def cM show "z = y" by (rule sup_definite)
    75     moreover from M cM a have "linearform ?H ?h"
    76       qed
    76       by (rule sup_lf)
    77       moreover from M cM a have "linearform ?H ?h"
    77     moreover from a M cM ex FE E have "?H \<unlhd> E"
    78         by (rule sup_lf)
    78       by (rule sup_subE)
    79       moreover from a M cM ex FE E have "?H \<unlhd> E"
    79     moreover from a M cM ex FE have "F \<unlhd> ?H"
    80         by (rule sup_subE)
    80       by (rule sup_supF)
    81       moreover from a M cM ex FE have "F \<unlhd> ?H"
    81     moreover from a M cM ex have "graph F f \<subseteq> graph ?H ?h"
    82         by (rule sup_supF)
    82       by (rule sup_ext)
    83       moreover from a M cM ex have "graph F f \<subseteq> graph ?H ?h"
    83     moreover from a M cM have "\<forall>x \<in> ?H. ?h x \<le> p x"
    84         by (rule sup_ext)
    84       by (rule sup_norm_pres)
    85       moreover from a M cM have "\<forall>x \<in> ?H. ?h x \<le> p x"
    85     ultimately show "\<exists>H h. \<Union>c = graph H h
    86         by (rule sup_norm_pres)
    86         \<and> linearform H h
    87       ultimately show "\<exists>H h. \<Union>c = graph H h
    87         \<and> H \<unlhd> E
    88           \<and> linearform H h
    88         \<and> F \<unlhd> H
    89           \<and> H \<unlhd> E
    89         \<and> graph F f \<subseteq> graph H h
    90           \<and> F \<unlhd> H
    90         \<and> (\<forall>x \<in> H. h x \<le> p x)" by blast
    91           \<and> graph F f \<subseteq> graph H h
    91   qed
    92           \<and> (\<forall>x \<in> H. h x \<le> p x)" by blast
       
    93     qed
       
    94   }
       
    95   then have "\<exists>g \<in> M. \<forall>x \<in> M. g \<subseteq> x \<longrightarrow> x = g"
    92   then have "\<exists>g \<in> M. \<forall>x \<in> M. g \<subseteq> x \<longrightarrow> x = g"
    96   \<comment> \<open>With Zorn's Lemma we can conclude that there is a maximal element in \<open>M\<close>. \<^smallskip>\<close>
    93   \<comment> \<open>With Zorn's Lemma we can conclude that there is a maximal element in \<open>M\<close>. \<^smallskip>\<close>
    97   proof (rule Zorn's_Lemma)
    94   proof (rule Zorn's_Lemma)
    98       \<comment> \<open>We show that \<open>M\<close> is non-empty:\<close>
    95       \<comment> \<open>We show that \<open>M\<close> is non-empty:\<close>
    99     show "graph F f \<in> M"
    96     show "graph F f \<in> M"
   369 
   366 
   370   txt \<open>\<open>p\<close> is a seminorm on \<open>E\<close>:\<close>
   367   txt \<open>\<open>p\<close> is a seminorm on \<open>E\<close>:\<close>
   371   have q: "seminorm E p"
   368   have q: "seminorm E p"
   372   proof
   369   proof
   373     fix x y a assume x: "x \<in> E" and y: "y \<in> E"
   370     fix x y a assume x: "x \<in> E" and y: "y \<in> E"
   374     
   371 
   375     txt \<open>\<open>p\<close> is positive definite:\<close>
   372     txt \<open>\<open>p\<close> is positive definite:\<close>
   376     have "0 \<le> \<parallel>f\<parallel>\<hyphen>F" by (rule ge_zero)
   373     have "0 \<le> \<parallel>f\<parallel>\<hyphen>F" by (rule ge_zero)
   377     moreover from x have "0 \<le> \<parallel>x\<parallel>" ..
   374     moreover from x have "0 \<le> \<parallel>x\<parallel>" ..
   378     ultimately show "0 \<le> p x"  
   375     ultimately show "0 \<le> p x"
   379       by (simp add: p_def zero_le_mult_iff)
   376       by (simp add: p_def zero_le_mult_iff)
   380 
   377 
   381     txt \<open>\<open>p\<close> is absolutely homogeneous:\<close>
   378     txt \<open>\<open>p\<close> is absolutely homogeneous:\<close>
   382 
   379 
   383     show "p (a \<cdot> x) = \<bar>a\<bar> * p x"
   380     show "p (a \<cdot> x) = \<bar>a\<bar> * p x"