tuned HOL/Real/HahnBanach;
authorwenzelm
Sat Dec 16 21:41:51 2000 +0100 (2000-12-16)
changeset 10687c186279eecea
parent 10686 60c795d6bd9e
child 10688 4cf4bbc25267
tuned HOL/Real/HahnBanach;
src/HOL/IsaMakefile
src/HOL/Real/HahnBanach/Aux.thy
src/HOL/Real/HahnBanach/Bounds.thy
src/HOL/Real/HahnBanach/FunctionNorm.thy
src/HOL/Real/HahnBanach/FunctionOrder.thy
src/HOL/Real/HahnBanach/HahnBanach.thy
src/HOL/Real/HahnBanach/HahnBanachExtLemmas.thy
src/HOL/Real/HahnBanach/HahnBanachLemmas.thy
src/HOL/Real/HahnBanach/HahnBanachSupLemmas.thy
src/HOL/Real/HahnBanach/Linearform.thy
src/HOL/Real/HahnBanach/NormedSpace.thy
src/HOL/Real/HahnBanach/Subspace.thy
src/HOL/Real/HahnBanach/VectorSpace.thy
src/HOL/Real/HahnBanach/ZornLemma.thy
src/HOL/Real/HahnBanach/document/bbb.sty
src/HOL/Real/HahnBanach/document/notation.tex
src/HOL/Real/HahnBanach/document/root.tex
     1.1 --- a/src/HOL/IsaMakefile	Sat Dec 16 21:41:14 2000 +0100
     1.2 +++ b/src/HOL/IsaMakefile	Sat Dec 16 21:41:51 2000 +0100
     1.3 @@ -152,10 +152,8 @@
     1.4    Real/HahnBanach/Linearform.thy Real/HahnBanach/NormedSpace.thy \
     1.5    Real/HahnBanach/README.html Real/HahnBanach/ROOT.ML \
     1.6    Real/HahnBanach/Subspace.thy Real/HahnBanach/VectorSpace.thy \
     1.7 -  Real/HahnBanach/ZornLemma.thy Real/HahnBanach/document/notation.tex \
     1.8 -  Real/HahnBanach/document/bbb.sty Real/HahnBanach/document/root.bib \
     1.9 -  Real/HahnBanach/document/root.tex \
    1.10 -  Real/HahnBanach/document/notation.tex
    1.11 +  Real/HahnBanach/ZornLemma.thy Real/HahnBanach/document/root.bib \
    1.12 +  Real/HahnBanach/document/root.tex
    1.13  	@cd Real; $(ISATOOL) usedir $(OUT)/HOL-Real HahnBanach
    1.14  
    1.15  
     2.1 --- a/src/HOL/Real/HahnBanach/Aux.thy	Sat Dec 16 21:41:14 2000 +0100
     2.2 +++ b/src/HOL/Real/HahnBanach/Aux.thy	Sat Dec 16 21:41:51 2000 +0100
     2.3 @@ -11,139 +11,141 @@
     2.4  or elimination rules, respectively. *}
     2.5  
     2.6  lemmas [intro?] = isLub_isUb
     2.7 -lemmas [intro?] = chainD 
     2.8 +lemmas [intro?] = chainD
     2.9  lemmas chainE2 = chainD2 [elim_format, standard]
    2.10  
    2.11 -text_raw {* \medskip *}
    2.12 -text{* Lemmas about sets. *}
    2.13  
    2.14 -lemma Int_singletonD: "[| A \<inter> B = {v}; x \<in> A; x \<in> B |] ==> x = v"
    2.15 +text {* \medskip Lemmas about sets. *}
    2.16 +
    2.17 +lemma Int_singletonD: "A \<inter> B = {v} \<Longrightarrow> x \<in> A \<Longrightarrow> x \<in> B \<Longrightarrow> x = v"
    2.18    by (fast elim: equalityE)
    2.19  
    2.20 -lemma set_less_imp_diff_not_empty: "H < E ==> \<exists>x0 \<in> E. x0 \<notin> H"
    2.21 -  by (force simp add: psubset_eq)
    2.22 +lemma set_less_imp_diff_not_empty: "H < E \<Longrightarrow> \<exists>x0 \<in> E. x0 \<notin> H"
    2.23 +  by (auto simp add: psubset_eq)
    2.24 +
    2.25  
    2.26 -text_raw {* \medskip *}
    2.27 -text{* Some lemmas about orders. *}
    2.28 +text{* \medskip Some lemmas about orders. *}
    2.29  
    2.30 -lemma lt_imp_not_eq: "x < (y::'a::order) ==> x \<noteq> y"
    2.31 +lemma lt_imp_not_eq: "x < (y::'a::order) \<Longrightarrow> x \<noteq> y"
    2.32    by (simp add: order_less_le)
    2.33  
    2.34 -lemma le_noteq_imp_less: 
    2.35 -  "[| x <= (r::'a::order); x \<noteq> r |] ==> x < r"
    2.36 +lemma le_noteq_imp_less:
    2.37 +  "x \<le> (r::'a::order) \<Longrightarrow> x \<noteq> r \<Longrightarrow> x < r"
    2.38  proof -
    2.39 -  assume "x <= r" and ne:"x \<noteq> r"
    2.40 -  hence "x < r | x = r" by (simp add: order_le_less)
    2.41 +  assume "x \<le> r" and ne:"x \<noteq> r"
    2.42 +  hence "x < r \<or> x = r" by (simp add: order_le_less)
    2.43    with ne show ?thesis by simp
    2.44  qed
    2.45  
    2.46 -text_raw {* \medskip *}
    2.47 -text{* Some lemmas for the reals. *}
    2.48  
    2.49 -lemma real_add_minus_eq: "x - y = (#0::real) ==> x = y"
    2.50 +text {* \medskip Some lemmas for the reals. *}
    2.51 +
    2.52 +lemma real_add_minus_eq: "x - y = (#0::real) \<Longrightarrow> x = y"
    2.53    by simp
    2.54  
    2.55 -lemma abs_minus_one: "abs (- (#1::real)) = #1" 
    2.56 +lemma abs_minus_one: "abs (- (#1::real)) = #1"
    2.57    by simp
    2.58  
    2.59 -lemma real_mult_le_le_mono1a: 
    2.60 -  "[| (#0::real) <= z; x <= y |] ==> z * x  <= z * y"
    2.61 +lemma real_mult_le_le_mono1a:
    2.62 +  "(#0::real) \<le> z \<Longrightarrow> x \<le> y \<Longrightarrow> z * x  \<le> z * y"
    2.63  proof -
    2.64 -  assume z: "(#0::real) <= z" and "x <= y"
    2.65 -  hence "x < y | x = y" by (force simp add: order_le_less)
    2.66 +  assume z: "(#0::real) \<le> z" and "x \<le> y"
    2.67 +  hence "x < y \<or> x = y" by (auto simp add: order_le_less)
    2.68    thus ?thesis
    2.69 -  proof (elim disjE) 
    2.70 +  proof
    2.71      assume "x < y" show ?thesis by  (rule real_mult_le_less_mono2) simp
    2.72 -  next 
    2.73 +  next
    2.74      assume "x = y" thus ?thesis by simp
    2.75    qed
    2.76  qed
    2.77  
    2.78 -lemma real_mult_le_le_mono2: 
    2.79 -  "[| (#0::real) <= z; x <= y |] ==> x * z <= y * z"
    2.80 +lemma real_mult_le_le_mono2:
    2.81 +  "(#0::real) \<le> z \<Longrightarrow> x \<le> y \<Longrightarrow> x * z \<le> y * z"
    2.82  proof -
    2.83 -  assume "(#0::real) <= z" "x <= y"
    2.84 -  hence "x < y | x = y" by (force simp add: order_le_less)
    2.85 +  assume "(#0::real) \<le> z"  "x \<le> y"
    2.86 +  hence "x < y \<or> x = y" by (auto simp add: order_le_less)
    2.87    thus ?thesis
    2.88 -  proof (elim disjE) 
    2.89 -    assume "x < y" show ?thesis by (rule real_mult_le_less_mono1) simp
    2.90 -  next 
    2.91 -    assume "x = y" thus ?thesis by simp
    2.92 +  proof
    2.93 +    assume "x < y"
    2.94 +    show ?thesis by (rule real_mult_le_less_mono1) (simp!)
    2.95 +  next
    2.96 +    assume "x = y"
    2.97 +    thus ?thesis by simp
    2.98    qed
    2.99  qed
   2.100  
   2.101 -lemma real_mult_less_le_anti: 
   2.102 -  "[| z < (#0::real); x <= y |] ==> z * y <= z * x"
   2.103 +lemma real_mult_less_le_anti:
   2.104 +  "z < (#0::real) \<Longrightarrow> x \<le> y \<Longrightarrow> z * y \<le> z * x"
   2.105  proof -
   2.106 -  assume "z < #0" "x <= y"
   2.107 +  assume "z < #0"  "x \<le> y"
   2.108    hence "#0 < - z" by simp
   2.109 -  hence "#0 <= - z" by (rule real_less_imp_le)
   2.110 -  hence "x * (- z) <= y * (- z)" 
   2.111 +  hence "#0 \<le> - z" by (rule real_less_imp_le)
   2.112 +  hence "x * (- z) \<le> y * (- z)"
   2.113      by (rule real_mult_le_le_mono2)
   2.114 -  hence  "- (x * z) <= - (y * z)" 
   2.115 +  hence  "- (x * z) \<le> - (y * z)"
   2.116      by (simp only: real_minus_mult_eq2)
   2.117    thus ?thesis by (simp only: real_mult_commute)
   2.118  qed
   2.119  
   2.120 -lemma real_mult_less_le_mono: 
   2.121 -  "[| (#0::real) < z; x <= y |] ==> z * x <= z * y"
   2.122 -proof - 
   2.123 -  assume "#0 < z" "x <= y"
   2.124 -  have "#0 <= z" by (rule real_less_imp_le)
   2.125 -  hence "x * z <= y * z" 
   2.126 +lemma real_mult_less_le_mono:
   2.127 +  "(#0::real) < z \<Longrightarrow> x \<le> y \<Longrightarrow> z * x \<le> z * y"
   2.128 +proof -
   2.129 +  assume "#0 < z"  "x \<le> y"
   2.130 +  have "#0 \<le> z" by (rule real_less_imp_le)
   2.131 +  hence "x * z \<le> y * z"
   2.132      by (rule real_mult_le_le_mono2)
   2.133    thus ?thesis by (simp only: real_mult_commute)
   2.134  qed
   2.135  
   2.136 -lemma real_inverse_gt_zero1: "#0 < (x::real) ==> #0 < inverse x"
   2.137 -proof - 
   2.138 +lemma real_inverse_gt_zero1: "#0 < (x::real) \<Longrightarrow> #0 < inverse x"
   2.139 +proof -
   2.140    assume "#0 < x"
   2.141    have "0 < x" by simp
   2.142    hence "0 < inverse x" by (rule real_inverse_gt_zero)
   2.143    thus ?thesis by simp
   2.144  qed
   2.145  
   2.146 -lemma real_mult_inv_right1: "(x::real) \<noteq> #0 ==> x * inverse x = #1"
   2.147 +lemma real_mult_inv_right1: "(x::real) \<noteq> #0 \<Longrightarrow> x * inverse x = #1"
   2.148    by simp
   2.149  
   2.150 -lemma real_mult_inv_left1: "(x::real) \<noteq> #0 ==> inverse x * x = #1"
   2.151 +lemma real_mult_inv_left1: "(x::real) \<noteq> #0 \<Longrightarrow> inverse x * x = #1"
   2.152    by simp
   2.153  
   2.154 -lemma real_le_mult_order1a: 
   2.155 -  "[| (#0::real) <= x; #0 <= y |] ==> #0 <= x * y"
   2.156 +lemma real_le_mult_order1a:
   2.157 +  "(#0::real) \<le> x \<Longrightarrow> #0 \<le> y \<Longrightarrow> #0 \<le> x * y"
   2.158  proof -
   2.159 -  assume "#0 <= x" "#0 <= y"
   2.160 -  have "[|0 <= x; 0 <= y|] ==> 0 <= x * y"  
   2.161 +  assume "#0 \<le> x"  "#0 \<le> y"
   2.162 +  have "0 \<le> x \<Longrightarrow> 0 \<le> y \<Longrightarrow> 0 \<le> x * y"
   2.163      by (rule real_le_mult_order)
   2.164    thus ?thesis by (simp!)
   2.165  qed
   2.166  
   2.167 -lemma real_mult_diff_distrib: 
   2.168 +lemma real_mult_diff_distrib:
   2.169    "a * (- x - (y::real)) = - a * x - a * y"
   2.170  proof -
   2.171    have "- x - y = - x + - y" by simp
   2.172 -  also have "a * ... = a * - x + a * - y" 
   2.173 +  also have "a * ... = a * - x + a * - y"
   2.174      by (simp only: real_add_mult_distrib2)
   2.175 -  also have "... = - a * x - a * y" 
   2.176 +  also have "... = - a * x - a * y"
   2.177      by simp
   2.178    finally show ?thesis .
   2.179  qed
   2.180  
   2.181  lemma real_mult_diff_distrib2: "a * (x - (y::real)) = a * x - a * y"
   2.182 -proof - 
   2.183 +proof -
   2.184    have "x - y = x + - y" by simp
   2.185 -  also have "a * ... = a * x + a * - y" 
   2.186 +  also have "a * ... = a * x + a * - y"
   2.187      by (simp only: real_add_mult_distrib2)
   2.188 -  also have "... = a * x - a * y"   
   2.189 +  also have "... = a * x - a * y"
   2.190      by simp
   2.191    finally show ?thesis .
   2.192  qed
   2.193  
   2.194 -lemma real_minus_le: "- (x::real) <= y ==> - y <= x"
   2.195 +lemma real_minus_le: "- (x::real) \<le> y \<Longrightarrow> - y \<le> x"
   2.196    by simp
   2.197  
   2.198 -lemma real_diff_ineq_swap: 
   2.199 -    "(d::real) - b <= c + a ==> - a - b <= c - d"
   2.200 +lemma real_diff_ineq_swap:
   2.201 +    "(d::real) - b \<le> c + a \<Longrightarrow> - a - b \<le> c - d"
   2.202    by simp
   2.203  
   2.204 -end
   2.205 \ No newline at end of file
   2.206 +end
     3.1 --- a/src/HOL/Real/HahnBanach/Bounds.thy	Sat Dec 16 21:41:14 2000 +0100
     3.2 +++ b/src/HOL/Real/HahnBanach/Bounds.thy	Sat Dec 16 21:41:51 2000 +0100
     3.3 @@ -6,128 +6,48 @@
     3.4  header {* Bounds *}
     3.5  
     3.6  theory Bounds = Main + Real:
     3.7 -(*<*)
     3.8 -subsection {* The sets of lower and upper bounds *}
     3.9  
    3.10 -constdefs
    3.11 -  is_LowerBound :: "('a::order) set => 'a set => 'a => bool"
    3.12 -  "is_LowerBound A B == \<lambda>x. x \<in> A \<and> (\<forall>y \<in> B. x <= y)"
    3.13 +text {*
    3.14 +  A supremum\footnote{The definition of the supremum is based on one
    3.15 +  in \url{http://isabelle.in.tum.de/library/HOL/HOL-Real/Lubs.html}}
    3.16 +  of an ordered set @{text B} w.~r.~t. @{text A} is defined as a least
    3.17 +  upper bound of @{text B}, which lies in @{text A}.
    3.18 +*}
    3.19     
    3.20 -  LowerBounds :: "('a::order) set => 'a set => 'a set"
    3.21 -  "LowerBounds A B == Collect (is_LowerBound A B)"
    3.22 -
    3.23 -  is_UpperBound :: "('a::order) set => 'a set => 'a => bool"
    3.24 -  "is_UpperBound A B == \<lambda>x. x \<in> A \<and> (\<forall>y \<in> B. y <= x)"
    3.25 - 
    3.26 -  UpperBounds :: "('a::order) set => 'a set => 'a set"
    3.27 -  "UpperBounds A B == Collect (is_UpperBound A B)"
    3.28 -
    3.29 -syntax
    3.30 -  "_UPPERS" :: "[pttrn, 'a set, 'a => bool] => 'a set"     
    3.31 -    ("(3UPPER'_BOUNDS _:_./ _)" 10)
    3.32 -  "_UPPERS_U" :: "[pttrn, 'a => bool] => 'a set"           
    3.33 -    ("(3UPPER'_BOUNDS _./ _)" 10)
    3.34 -  "_LOWERS" :: "[pttrn, 'a set, 'a => bool] => 'a set"     
    3.35 -    ("(3LOWER'_BOUNDS _:_./ _)" 10)
    3.36 -  "_LOWERS_U" :: "[pttrn, 'a => bool] => 'a set"           
    3.37 -    ("(3LOWER'_BOUNDS _./ _)" 10)
    3.38 -
    3.39 -translations
    3.40 -  "UPPER_BOUNDS x:A. P" == "UpperBounds A (Collect (\<lambda>x. P))"
    3.41 -  "UPPER_BOUNDS x. P" == "UPPER_BOUNDS x:UNIV. P"
    3.42 -  "LOWER_BOUNDS x:A. P" == "LowerBounds A (Collect (\<lambda>x. P))"
    3.43 -  "LOWER_BOUNDS x. P" == "LOWER_BOUNDS x:UNIV. P"
    3.44 -
    3.45 -
    3.46 -subsection {* Least and greatest elements *}
    3.47 +text {*
    3.48 +  If a supremum exists, then @{text "Sup A B"} is equal to the
    3.49 +  supremum. *}
    3.50  
    3.51  constdefs
    3.52 -  is_Least :: "('a::order) set => 'a => bool"
    3.53 -  "is_Least B == is_LowerBound B B"
    3.54 -
    3.55 -  Least :: "('a::order) set => 'a"
    3.56 -  "Least B == Eps (is_Least B)"
    3.57 -
    3.58 -  is_Greatest :: "('a::order) set => 'a => bool"
    3.59 -  "is_Greatest B == is_UpperBound B B"
    3.60 -
    3.61 -  Greatest :: "('a::order) set => 'a" 
    3.62 -  "Greatest B == Eps (is_Greatest B)"
    3.63 +  is_Sup :: "('a::order) set \<Rightarrow> 'a set \<Rightarrow> 'a \<Rightarrow> bool"
    3.64 +  "is_Sup A B x \<equiv> isLub A B x"
    3.65  
    3.66 -syntax
    3.67 -  "_LEAST"    :: "[pttrn, 'a => bool] => 'a"  
    3.68 -    ("(3LLEAST _./ _)" 10)
    3.69 -  "_GREATEST" :: "[pttrn, 'a => bool] => 'a"  
    3.70 -    ("(3GREATEST _./ _)" 10)
    3.71 -
    3.72 -translations
    3.73 -  "LLEAST x. P" == "Least {x. P}"
    3.74 -  "GREATEST x. P" == "Greatest {x. P}"
    3.75 -
    3.76 -
    3.77 -subsection {* Infimum and Supremum *}
    3.78 -(*>*)
    3.79 -text {*
    3.80 - A supremum\footnote{The definition of the supremum is based on one in
    3.81 - \url{http://isabelle.in.tum.de/library/HOL/HOL-Real/Lubs.html}}  of
    3.82 - an ordered set $B$ w.~r.~t. $A$ is defined as a least upper bound of
    3.83 - $B$, which lies in $A$.
    3.84 -*}
    3.85 -   
    3.86 -text{* If a supremum exists, then $\idt{Sup}\ap A\ap B$
    3.87 -is equal to the supremum. *}
    3.88 +  Sup :: "('a::order) set \<Rightarrow> 'a set \<Rightarrow> 'a"
    3.89 +  "Sup A B \<equiv> Eps (is_Sup A B)"
    3.90  
    3.91 -constdefs
    3.92 -  is_Sup :: "('a::order) set => 'a set => 'a => bool"
    3.93 -  "is_Sup A B x == isLub A B x"
    3.94 -
    3.95 -  Sup :: "('a::order) set => 'a set => 'a"
    3.96 -  "Sup A B == Eps (is_Sup A B)"
    3.97 -(*<*)
    3.98 -constdefs
    3.99 -  is_Inf :: "('a::order) set => 'a set => 'a => bool"
   3.100 -  "is_Inf A B x == x \<in> A \<and>  is_Greatest (LowerBounds A B) x"
   3.101 -
   3.102 -  Inf :: "('a::order) set => 'a set => 'a"
   3.103 -  "Inf A B == Eps (is_Inf A B)"
   3.104 +text {*
   3.105 +  The supremum of @{text B} is less than any upper bound of
   3.106 +  @{text B}. *}
   3.107  
   3.108 -syntax
   3.109 -  "_SUP" :: "[pttrn, 'a set, 'a => bool] => 'a set"
   3.110 -    ("(3SUP _:_./ _)" 10)
   3.111 -  "_SUP_U" :: "[pttrn, 'a => bool] => 'a set"
   3.112 -    ("(3SUP _./ _)" 10)
   3.113 -  "_INF" :: "[pttrn, 'a set, 'a => bool] => 'a set"
   3.114 -    ("(3INF _:_./ _)" 10)
   3.115 -  "_INF_U" :: "[pttrn, 'a => bool] => 'a set"
   3.116 -    ("(3INF _./ _)" 10)
   3.117 -
   3.118 -translations
   3.119 -  "SUP x:A. P" == "Sup A (Collect (\<lambda>x. P))"
   3.120 -  "SUP x. P" == "SUP x:UNIV. P"
   3.121 -  "INF x:A. P" == "Inf A (Collect (\<lambda>x. P))"
   3.122 -  "INF x. P" == "INF x:UNIV. P"
   3.123 -(*>*)
   3.124 -text{* The supremum of $B$ is less than any upper bound
   3.125 -of $B$.*}
   3.126 -
   3.127 -lemma sup_le_ub: "isUb A B y ==> is_Sup A B s ==> s <= y"
   3.128 +lemma sup_le_ub: "isUb A B y \<Longrightarrow> is_Sup A B s \<Longrightarrow> s \<le> y"
   3.129    by (unfold is_Sup_def, rule isLub_le_isUb)
   3.130  
   3.131 -text {* The supremum $B$ is an upper bound for $B$. *}
   3.132 +text {* The supremum @{text B} is an upper bound for @{text B}. *}
   3.133  
   3.134 -lemma sup_ub: "y \<in> B ==> is_Sup A B s ==> y <= s"
   3.135 +lemma sup_ub: "y \<in> B \<Longrightarrow> is_Sup A B s \<Longrightarrow> y \<le> s"
   3.136    by (unfold is_Sup_def, rule isLubD2)
   3.137  
   3.138 -text{* The supremum of a non-empty set $B$ is greater
   3.139 -than a lower bound of $B$. *}
   3.140 +text {*
   3.141 +  The supremum of a non-empty set @{text B} is greater than a lower
   3.142 +  bound of @{text B}. *}
   3.143  
   3.144  lemma sup_ub1: 
   3.145 -  "[| \<forall>y \<in> B. a <= y; is_Sup A B s; x \<in> B |] ==> a <= s"
   3.146 +  "\<forall>y \<in> B. a \<le> y \<Longrightarrow> is_Sup A B s \<Longrightarrow> x \<in> B \<Longrightarrow> a \<le> s"
   3.147  proof - 
   3.148 -  assume "\<forall>y \<in> B. a <= y" "is_Sup A B s" "x \<in> B"
   3.149 -  have "a <= x" by (rule bspec)
   3.150 -  also have "x <= s" by (rule sup_ub)
   3.151 -  finally show "a <= s" .
   3.152 +  assume "\<forall>y \<in> B. a \<le> y"  "is_Sup A B s"  "x \<in> B"
   3.153 +  have "a \<le> x" by (rule bspec)
   3.154 +  also have "x \<le> s" by (rule sup_ub)
   3.155 +  finally show "a \<le> s" .
   3.156  qed
   3.157    
   3.158 -end
   3.159 \ No newline at end of file
   3.160 +end
     4.1 --- a/src/HOL/Real/HahnBanach/FunctionNorm.thy	Sat Dec 16 21:41:14 2000 +0100
     4.2 +++ b/src/HOL/Real/HahnBanach/FunctionNorm.thy	Sat Dec 16 21:41:51 2000 +0100
     4.3 @@ -9,377 +9,374 @@
     4.4  
     4.5  subsection {* Continuous linear forms*}
     4.6  
     4.7 -text{* A linear form $f$ on a normed vector space $(V, \norm{\cdot})$
     4.8 -is \emph{continuous}, iff it is bounded, i.~e.
     4.9 -\[\Ex {c\in R}{\All {x\in V} {|f\ap x| \leq c \cdot \norm x}}\]
    4.10 -In our application no other functions than linear forms are considered,
    4.11 -so we can define continuous linear forms as bounded linear forms:
    4.12 +text {*
    4.13 +  A linear form @{text f} on a normed vector space @{text "(V, \<parallel>\<cdot>\<parallel>)"}
    4.14 +  is \emph{continuous}, iff it is bounded, i.~e.
    4.15 +  \begin{center}
    4.16 +  @{text "\<exists>c \<in> R. \<forall>x \<in> V. \<bar>f x\<bar> \<le> c \<cdot> \<parallel>x\<parallel>"}
    4.17 +  \end{center}
    4.18 +  In our application no other functions than linear forms are
    4.19 +  considered, so we can define continuous linear forms as bounded
    4.20 +  linear forms:
    4.21  *}
    4.22  
    4.23  constdefs
    4.24    is_continuous ::
    4.25 -  "['a::{plus, minus, zero} set, 'a => real, 'a => real] => bool" 
    4.26 -  "is_continuous V norm f == 
    4.27 -    is_linearform V f \<and> (\<exists>c. \<forall>x \<in> V. |f x| <= c * norm x)"
    4.28 +  "'a::{plus, minus, zero} set \<Rightarrow> ('a \<Rightarrow> real) \<Rightarrow> ('a \<Rightarrow> real) \<Rightarrow> bool"
    4.29 +  "is_continuous V norm f \<equiv>
    4.30 +    is_linearform V f \<and> (\<exists>c. \<forall>x \<in> V. \<bar>f x\<bar> \<le> c * norm x)"
    4.31  
    4.32 -lemma continuousI [intro]: 
    4.33 -  "[| is_linearform V f; !! x. x \<in> V ==> |f x| <= c * norm x |] 
    4.34 -  ==> is_continuous V norm f"
    4.35 +lemma continuousI [intro]:
    4.36 +  "is_linearform V f \<Longrightarrow> (\<And>x. x \<in> V \<Longrightarrow> \<bar>f x\<bar> \<le> c * norm x)
    4.37 +  \<Longrightarrow> is_continuous V norm f"
    4.38  proof (unfold is_continuous_def, intro exI conjI ballI)
    4.39 -  assume r: "!! x. x \<in> V ==> |f x| <= c * norm x" 
    4.40 -  fix x assume "x \<in> V" show "|f x| <= c * norm x" by (rule r)
    4.41 +  assume r: "\<And>x. x \<in> V \<Longrightarrow> \<bar>f x\<bar> \<le> c * norm x"
    4.42 +  fix x assume "x \<in> V" show "\<bar>f x\<bar> \<le> c * norm x" by (rule r)
    4.43  qed
    4.44 -  
    4.45 -lemma continuous_linearform [intro?]: 
    4.46 -  "is_continuous V norm f ==> is_linearform V f"
    4.47 -  by (unfold is_continuous_def) force
    4.48 +
    4.49 +lemma continuous_linearform [intro?]:
    4.50 +  "is_continuous V norm f \<Longrightarrow> is_linearform V f"
    4.51 +  by (unfold is_continuous_def) blast
    4.52  
    4.53  lemma continuous_bounded [intro?]:
    4.54 -  "is_continuous V norm f 
    4.55 -  ==> \<exists>c. \<forall>x \<in> V. |f x| <= c * norm x"
    4.56 -  by (unfold is_continuous_def) force
    4.57 +  "is_continuous V norm f
    4.58 +  \<Longrightarrow> \<exists>c. \<forall>x \<in> V. \<bar>f x\<bar> \<le> c * norm x"
    4.59 +  by (unfold is_continuous_def) blast
    4.60  
    4.61  subsection{* The norm of a linear form *}
    4.62  
    4.63  
    4.64 -text{* The least real number $c$ for which holds
    4.65 -\[\All {x\in V}{|f\ap x| \leq c \cdot \norm x}\]
    4.66 -is called the \emph{norm} of $f$.
    4.67 +text {*
    4.68 +  The least real number @{text c} for which holds
    4.69 +  \begin{center}
    4.70 +  @{text "\<forall>x \<in> V. \<bar>f x\<bar> \<le> c \<cdot> \<parallel>x\<parallel>"}
    4.71 +  \end{center}
    4.72 +  is called the \emph{norm} of @{text f}.
    4.73  
    4.74 -For non-trivial vector spaces $V \neq \{\zero\}$ the norm can be defined as 
    4.75 -\[\fnorm {f} =\sup_{x\neq\zero}\frac{|f\ap x|}{\norm x} \] 
    4.76 +  For non-trivial vector spaces @{text "V \<noteq> {0}"} the norm can be
    4.77 +  defined as
    4.78 +  \begin{center}
    4.79 +  @{text "\<parallel>f\<parallel> = \<sup>x \<noteq> 0. \<bar>f x\<bar> / \<parallel>x\<parallel>"}
    4.80 +  \end{center}
    4.81  
    4.82 -For the case $V = \{\zero\}$ the supremum would be taken from an
    4.83 -empty set. Since $\bbbR$ is unbounded, there would be no supremum.  To
    4.84 -avoid this situation it must be guaranteed that there is an element in
    4.85 -this set. This element must be ${} \ge 0$ so that
    4.86 -$\idt{function{\dsh}norm}$ has the norm properties. Furthermore it
    4.87 -does not have to change the norm in all other cases, so it must be
    4.88 -$0$, as all other elements of are ${} \ge 0$.
    4.89 +  For the case @{text "V = {0}"} the supremum would be taken from an
    4.90 +  empty set. Since @{text \<real>} is unbounded, there would be no supremum.
    4.91 +  To avoid this situation it must be guaranteed that there is an
    4.92 +  element in this set. This element must be @{text "{} \<ge> 0"} so that
    4.93 +  @{text function_norm} has the norm properties. Furthermore
    4.94 +  it does not have to change the norm in all other cases, so it must
    4.95 +  be @{text 0}, as all other elements of are @{text "{} \<ge> 0"}.
    4.96  
    4.97 -Thus we define the set $B$ the supremum is taken from as
    4.98 -\[
    4.99 -\{ 0 \} \Union \left\{ \frac{|f\ap x|}{\norm x} \dt x\neq \zero \And x\in F\right\}
   4.100 - \]
   4.101 +  Thus we define the set @{text B} the supremum is taken from as
   4.102 +  \begin{center}
   4.103 +  @{text "{0} \<union> {\<bar>f x\<bar> / \<parallel>x\<parallel>. x \<noteq> 0 \<and> x \<in> F}"}
   4.104 +  \end{center}
   4.105 +*}
   4.106 +
   4.107 +constdefs
   4.108 +  B :: "'a set \<Rightarrow> ('a \<Rightarrow> real) \<Rightarrow> ('a::{plus, minus, zero} \<Rightarrow> real) \<Rightarrow> real set"
   4.109 +  "B V norm f \<equiv>
   4.110 +  {#0} \<union> {\<bar>f x\<bar> * inverse (norm x) | x. x \<noteq> 0 \<and> x \<in> V}"
   4.111 +
   4.112 +text {*
   4.113 +  @{text n} is the function norm of @{text f}, iff @{text n} is the
   4.114 +  supremum of @{text B}.
   4.115  *}
   4.116  
   4.117  constdefs
   4.118 -  B :: "[ 'a set, 'a => real, 'a::{plus, minus, zero} => real ] => real set"
   4.119 -  "B V norm f == 
   4.120 -  {#0} \<union> {|f x| * inverse (norm x) | x. x \<noteq> 0 \<and> x \<in> V}"
   4.121 +  is_function_norm ::
   4.122 +  "('a::{minus,plus,zero} \<Rightarrow> real) \<Rightarrow> 'a set \<Rightarrow> ('a \<Rightarrow> real) \<Rightarrow> real \<Rightarrow> bool"
   4.123 +  "is_function_norm f V norm fn \<equiv> is_Sup UNIV (B V norm f) fn"
   4.124  
   4.125 -text{* $n$ is the function norm of $f$, iff 
   4.126 -$n$ is the supremum of $B$. 
   4.127 +text {*
   4.128 +  @{text function_norm} is equal to the supremum of @{text B}, if the
   4.129 +  supremum exists. Otherwise it is undefined.
   4.130  *}
   4.131  
   4.132 -constdefs 
   4.133 -  is_function_norm :: 
   4.134 -  " ['a::{minus,plus,zero}  => real, 'a set, 'a => real] => real => bool"
   4.135 -  "is_function_norm f V norm fn == is_Sup UNIV (B V norm f) fn"
   4.136 +constdefs
   4.137 +  function_norm :: "('a::{minus,plus,zero} \<Rightarrow> real) \<Rightarrow> 'a set \<Rightarrow> ('a \<Rightarrow> real) \<Rightarrow> real"
   4.138 +  "function_norm f V norm \<equiv> Sup UNIV (B V norm f)"
   4.139  
   4.140 -text{* $\idt{function{\dsh}norm}$ is equal to the supremum of $B$, 
   4.141 -if the supremum exists. Otherwise it is undefined. *}
   4.142 -
   4.143 -constdefs 
   4.144 -  function_norm :: " ['a::{minus,plus,zero} => real, 'a set, 'a => real] => real"
   4.145 -  "function_norm f V norm == Sup UNIV (B V norm f)"
   4.146 -
   4.147 -syntax   
   4.148 -  function_norm :: " ['a => real, 'a set, 'a => real] => real" ("\<parallel>_\<parallel>_,_")
   4.149 +syntax
   4.150 +  function_norm :: "('a \<Rightarrow> real) \<Rightarrow> 'a set \<Rightarrow> ('a \<Rightarrow> real) \<Rightarrow> real"  ("\<parallel>_\<parallel>_,_")
   4.151  
   4.152  lemma B_not_empty: "#0 \<in> B V norm f"
   4.153 -  by (unfold B_def, force)
   4.154 -
   4.155 -text {* The following lemma states that every continuous linear form
   4.156 -on a normed space $(V, \norm{\cdot})$ has a function norm. *}
   4.157 +  by (unfold B_def) blast
   4.158  
   4.159 -lemma ex_fnorm [intro?]: 
   4.160 -  "[| is_normed_vectorspace V norm; is_continuous V norm f|]
   4.161 -     ==> is_function_norm f V norm \<parallel>f\<parallel>V,norm" 
   4.162 -proof (unfold function_norm_def is_function_norm_def 
   4.163 +text {*
   4.164 +  The following lemma states that every continuous linear form on a
   4.165 +  normed space @{text "(V, \<parallel>\<cdot>\<parallel>)"} has a function norm.
   4.166 +*}
   4.167 +
   4.168 +lemma ex_fnorm [intro?]:
   4.169 +  "is_normed_vectorspace V norm \<Longrightarrow> is_continuous V norm f
   4.170 +     \<Longrightarrow> is_function_norm f V norm \<parallel>f\<parallel>V,norm"
   4.171 +proof (unfold function_norm_def is_function_norm_def
   4.172    is_continuous_def Sup_def, elim conjE, rule someI2_ex)
   4.173    assume "is_normed_vectorspace V norm"
   4.174 -  assume "is_linearform V f" 
   4.175 -  and e: "\<exists>c. \<forall>x \<in> V. |f x| <= c * norm x"
   4.176 +  assume "is_linearform V f"
   4.177 +  and e: "\<exists>c. \<forall>x \<in> V. \<bar>f x\<bar> \<le> c * norm x"
   4.178  
   4.179 -  txt {* The existence of the supremum is shown using the 
   4.180 +  txt {* The existence of the supremum is shown using the
   4.181    completeness of the reals. Completeness means, that
   4.182 -  every non-empty bounded set of reals has a 
   4.183 +  every non-empty bounded set of reals has a
   4.184    supremum. *}
   4.185 -  show  "\<exists>a. is_Sup UNIV (B V norm f) a" 
   4.186 +  show  "\<exists>a. is_Sup UNIV (B V norm f) a"
   4.187    proof (unfold is_Sup_def, rule reals_complete)
   4.188  
   4.189 -    txt {* First we have to show that $B$ is non-empty: *} 
   4.190 +    txt {* First we have to show that @{text B} is non-empty: *}
   4.191  
   4.192 -    show "\<exists>X. X \<in> B V norm f" 
   4.193 -    proof (intro exI)
   4.194 -      show "#0 \<in> (B V norm f)" by (unfold B_def, force)
   4.195 +    show "\<exists>X. X \<in> B V norm f"
   4.196 +    proof
   4.197 +      show "#0 \<in> (B V norm f)" by (unfold B_def) blast
   4.198      qed
   4.199  
   4.200 -    txt {* Then we have to show that $B$ is bounded: *}
   4.201 +    txt {* Then we have to show that @{text B} is bounded: *}
   4.202  
   4.203      from e show "\<exists>Y. isUb UNIV (B V norm f) Y"
   4.204      proof
   4.205  
   4.206 -      txt {* We know that $f$ is bounded by some value $c$. *}  
   4.207 -  
   4.208 -      fix c assume a: "\<forall>x \<in> V. |f x| <= c * norm x"
   4.209 -      def b == "max c #0"
   4.210 +      txt {* We know that @{text f} is bounded by some value @{text c}. *}
   4.211 +
   4.212 +      fix c assume a: "\<forall>x \<in> V. \<bar>f x\<bar> \<le> c * norm x"
   4.213 +      def b \<equiv> "max c #0"
   4.214  
   4.215        show "?thesis"
   4.216 -      proof (intro exI isUbI setleI ballI, unfold B_def, 
   4.217 -	elim UnE CollectE exE conjE singletonE)
   4.218 +      proof (intro exI isUbI setleI ballI, unfold B_def,
   4.219 +        elim UnE CollectE exE conjE singletonE)
   4.220  
   4.221 -        txt{* To proof the thesis, we have to show that there is 
   4.222 -        some constant $b$, such that $y \leq b$ for all $y\in B$. 
   4.223 -        Due to the definition of $B$ there are two cases for
   4.224 -        $y\in B$. If $y = 0$ then $y \leq \idt{max}\ap c\ap 0$: *}
   4.225 +        txt {* To proof the thesis, we have to show that there is some
   4.226 +        constant @{text b}, such that @{text "y \<le> b"} for all
   4.227 +        @{text "y \<in> B"}. Due to the definition of @{text B} there are
   4.228 +        two cases for @{text "y \<in> B"}.  If @{text "y = 0"} then
   4.229 +        @{text "y \<le> max c 0"}: *}
   4.230  
   4.231 -	fix y assume "y = (#0::real)"
   4.232 -        show "y <= b" by (simp! add: le_maxI2)
   4.233 +        fix y assume "y = (#0::real)"
   4.234 +        show "y \<le> b" by (simp! add: le_maxI2)
   4.235  
   4.236 -        txt{* The second case is 
   4.237 -        $y = {|f\ap x|}/{\norm x}$ for some 
   4.238 -        $x\in V$ with $x \neq \zero$. *}
   4.239 +        txt {* The second case is @{text "y = \<bar>f x\<bar> / \<parallel>x\<parallel>"} for some
   4.240 +        @{text "x \<in> V"} with @{text "x \<noteq> 0"}. *}
   4.241  
   4.242        next
   4.243 -	fix x y
   4.244 -        assume "x \<in> V" "x \<noteq> 0" (***
   4.245 +        fix x y
   4.246 +        assume "x \<in> V"  "x \<noteq> 0"
   4.247 +
   4.248 +        txt {* The thesis follows by a short calculation using the
   4.249 +        fact that @{text f} is bounded. *}
   4.250  
   4.251 -         have ge: "#0 <= inverse (norm x)";
   4.252 -          by (rule real_less_imp_le, rule real_inverse_gt_zero, 
   4.253 -                rule normed_vs_norm_gt_zero); ( ***
   4.254 -          proof (rule real_less_imp_le);
   4.255 -            show "#0 < inverse (norm x)";
   4.256 -            proof (rule real_inverse_gt_zero);
   4.257 -              show "#0 < norm x"; ..;
   4.258 -            qed;
   4.259 -          qed; *** )
   4.260 -        have nz: "norm x \<noteq> #0" 
   4.261 -          by (rule not_sym, rule lt_imp_not_eq, 
   4.262 -              rule normed_vs_norm_gt_zero) (***
   4.263 -          proof (rule not_sym);
   4.264 -            show "#0 \<noteq> norm x"; 
   4.265 -            proof (rule lt_imp_not_eq);
   4.266 -              show "#0 < norm x"; ..;
   4.267 -            qed;
   4.268 -          qed; ***)***)
   4.269 -
   4.270 -        txt {* The thesis follows by a short calculation using the 
   4.271 -        fact that $f$ is bounded. *}
   4.272 -    
   4.273 -        assume "y = |f x| * inverse (norm x)"
   4.274 -        also have "... <= c * norm x * inverse (norm x)"
   4.275 +        assume "y = \<bar>f x\<bar> * inverse (norm x)"
   4.276 +        also have "... \<le> c * norm x * inverse (norm x)"
   4.277          proof (rule real_mult_le_le_mono2)
   4.278 -          show "#0 <= inverse (norm x)"
   4.279 -            by (rule real_less_imp_le, rule real_inverse_gt_zero1, 
   4.280 +          show "#0 \<le> inverse (norm x)"
   4.281 +            by (rule real_less_imp_le, rule real_inverse_gt_zero1,
   4.282                  rule normed_vs_norm_gt_zero)
   4.283 -          from a show "|f x| <= c * norm x" ..
   4.284 +          from a show "\<bar>f x\<bar> \<le> c * norm x" ..
   4.285          qed
   4.286 -        also have "... = c * (norm x * inverse (norm x))" 
   4.287 +        also have "... = c * (norm x * inverse (norm x))"
   4.288            by (rule real_mult_assoc)
   4.289 -        also have "(norm x * inverse (norm x)) = (#1::real)" 
   4.290 +        also have "(norm x * inverse (norm x)) = (#1::real)"
   4.291          proof (rule real_mult_inv_right1)
   4.292 -          show nz: "norm x \<noteq> #0" 
   4.293 -            by (rule not_sym, rule lt_imp_not_eq, 
   4.294 +          show nz: "norm x \<noteq> #0"
   4.295 +            by (rule not_sym, rule lt_imp_not_eq,
   4.296                rule normed_vs_norm_gt_zero)
   4.297          qed
   4.298 -        also have "c * ... <= b " by (simp! add: le_maxI1)
   4.299 -	finally show "y <= b" .
   4.300 +        also have "c * ... \<le> b " by (simp! add: le_maxI1)
   4.301 +        finally show "y \<le> b" .
   4.302        qed simp
   4.303      qed
   4.304    qed
   4.305  qed
   4.306  
   4.307 -text {* The norm of a continuous function is always $\geq 0$. *}
   4.308 +text {* The norm of a continuous function is always @{text "\<ge> 0"}. *}
   4.309  
   4.310 -lemma fnorm_ge_zero [intro?]: 
   4.311 -  "[| is_continuous V norm f; is_normed_vectorspace V norm |]
   4.312 -   ==> #0 <= \<parallel>f\<parallel>V,norm"
   4.313 +lemma fnorm_ge_zero [intro?]:
   4.314 +  "is_continuous V norm f \<Longrightarrow> is_normed_vectorspace V norm
   4.315 +   \<Longrightarrow> #0 \<le> \<parallel>f\<parallel>V,norm"
   4.316  proof -
   4.317 -  assume c: "is_continuous V norm f" 
   4.318 +  assume c: "is_continuous V norm f"
   4.319       and n: "is_normed_vectorspace V norm"
   4.320  
   4.321 -  txt {* The function norm is defined as the supremum of $B$. 
   4.322 -  So it is $\geq 0$ if all elements in $B$ are $\geq 0$, provided
   4.323 -  the supremum exists and $B$ is not empty. *}
   4.324 +  txt {* The function norm is defined as the supremum of @{text B}.
   4.325 +  So it is @{text "\<ge> 0"} if all elements in @{text B} are
   4.326 +  @{text "\<ge> 0"}, provided the supremum exists and @{text B} is not
   4.327 +  empty. *}
   4.328  
   4.329 -  show ?thesis 
   4.330 +  show ?thesis
   4.331    proof (unfold function_norm_def, rule sup_ub1)
   4.332 -    show "\<forall>x \<in> (B V norm f). #0 <= x" 
   4.333 +    show "\<forall>x \<in> (B V norm f). #0 \<le> x"
   4.334      proof (intro ballI, unfold B_def,
   4.335 -           elim UnE singletonE CollectE exE conjE) 
   4.336 +           elim UnE singletonE CollectE exE conjE)
   4.337        fix x r
   4.338 -      assume "x \<in> V" "x \<noteq> 0" 
   4.339 -        and r: "r = |f x| * inverse (norm x)"
   4.340 +      assume "x \<in> V"  "x \<noteq> 0"
   4.341 +        and r: "r = \<bar>f x\<bar> * inverse (norm x)"
   4.342  
   4.343 -      have ge: "#0 <= |f x|" by (simp! only: abs_ge_zero)
   4.344 -      have "#0 <= inverse (norm x)" 
   4.345 +      have ge: "#0 \<le> \<bar>f x\<bar>" by (simp! only: abs_ge_zero)
   4.346 +      have "#0 \<le> inverse (norm x)"
   4.347          by (rule real_less_imp_le, rule real_inverse_gt_zero1, rule)(***
   4.348          proof (rule real_less_imp_le);
   4.349 -          show "#0 < inverse (norm x)"; 
   4.350 +          show "#0 < inverse (norm x)";
   4.351            proof (rule real_inverse_gt_zero);
   4.352              show "#0 < norm x"; ..;
   4.353            qed;
   4.354          qed; ***)
   4.355 -      with ge show "#0 <= r"
   4.356 +      with ge show "#0 \<le> r"
   4.357         by (simp only: r, rule real_le_mult_order1a)
   4.358      qed (simp!)
   4.359  
   4.360 -    txt {* Since $f$ is continuous the function norm exists: *}
   4.361 +    txt {* Since @{text f} is continuous the function norm exists: *}
   4.362  
   4.363      have "is_function_norm f V norm \<parallel>f\<parallel>V,norm" ..
   4.364 -    thus "is_Sup UNIV (B V norm f) (Sup UNIV (B V norm f))" 
   4.365 +    thus "is_Sup UNIV (B V norm f) (Sup UNIV (B V norm f))"
   4.366        by (unfold is_function_norm_def function_norm_def)
   4.367  
   4.368 -    txt {* $B$ is non-empty by construction: *}
   4.369 +    txt {* @{text B} is non-empty by construction: *}
   4.370  
   4.371      show "#0 \<in> B V norm f" by (rule B_not_empty)
   4.372    qed
   4.373  qed
   4.374 -  
   4.375 -text{* \medskip The fundamental property of function norms is: 
   4.376 -\begin{matharray}{l}
   4.377 -| f\ap x | \leq {\fnorm {f}} \cdot {\norm x}  
   4.378 -\end{matharray}
   4.379 +
   4.380 +text {*
   4.381 +  \medskip The fundamental property of function norms is:
   4.382 +  \begin{center}
   4.383 +  @{text "\<bar>f x\<bar> \<le> \<parallel>f\<parallel> \<cdot> \<parallel>x\<parallel>"}
   4.384 +  \end{center}
   4.385  *}
   4.386  
   4.387 -lemma norm_fx_le_norm_f_norm_x: 
   4.388 -  "[| is_continuous V norm f; is_normed_vectorspace V norm; x \<in> V |] 
   4.389 -    ==> |f x| <= \<parallel>f\<parallel>V,norm * norm x"
   4.390 -proof - 
   4.391 -  assume "is_normed_vectorspace V norm" "x \<in> V" 
   4.392 +lemma norm_fx_le_norm_f_norm_x:
   4.393 +  "is_continuous V norm f \<Longrightarrow> is_normed_vectorspace V norm \<Longrightarrow> x \<in> V
   4.394 +    \<Longrightarrow> \<bar>f x\<bar> \<le> \<parallel>f\<parallel>V,norm * norm x"
   4.395 +proof -
   4.396 +  assume "is_normed_vectorspace V norm"  "x \<in> V"
   4.397    and c: "is_continuous V norm f"
   4.398    have v: "is_vectorspace V" ..
   4.399  
   4.400 - txt{* The proof is by case analysis on $x$. *}
   4.401 - 
   4.402 + txt{* The proof is by case analysis on @{text x}. *}
   4.403 +
   4.404    show ?thesis
   4.405    proof cases
   4.406  
   4.407 -    txt {* For the case $x = \zero$ the thesis follows
   4.408 -    from the linearity of $f$: for every linear function
   4.409 -    holds $f\ap \zero = 0$. *}
   4.410 +    txt {* For the case @{text "x = 0"} the thesis follows from the
   4.411 +    linearity of @{text f}: for every linear function holds
   4.412 +    @{text "f 0 = 0"}. *}
   4.413  
   4.414      assume "x = 0"
   4.415 -    have "|f x| = |f 0|" by (simp!)
   4.416 +    have "\<bar>f x\<bar> = \<bar>f 0\<bar>" by (simp!)
   4.417      also from v continuous_linearform have "f 0 = #0" ..
   4.418      also note abs_zero
   4.419 -    also have "#0 <= \<parallel>f\<parallel>V,norm * norm x"
   4.420 +    also have "#0 \<le> \<parallel>f\<parallel>V,norm * norm x"
   4.421      proof (rule real_le_mult_order1a)
   4.422 -      show "#0 <= \<parallel>f\<parallel>V,norm" ..
   4.423 -      show "#0 <= norm x" ..
   4.424 +      show "#0 \<le> \<parallel>f\<parallel>V,norm" ..
   4.425 +      show "#0 \<le> norm x" ..
   4.426      qed
   4.427 -    finally 
   4.428 -    show "|f x| <= \<parallel>f\<parallel>V,norm * norm x" .
   4.429 +    finally
   4.430 +    show "\<bar>f x\<bar> \<le> \<parallel>f\<parallel>V,norm * norm x" .
   4.431  
   4.432    next
   4.433      assume "x \<noteq> 0"
   4.434      have n: "#0 < norm x" ..
   4.435 -    hence nz: "norm x \<noteq> #0" 
   4.436 +    hence nz: "norm x \<noteq> #0"
   4.437        by (simp only: lt_imp_not_eq)
   4.438  
   4.439 -    txt {* For the case $x\neq \zero$ we derive the following
   4.440 -    fact from the definition of the function norm:*}
   4.441 +    txt {* For the case @{text "x \<noteq> 0"} we derive the following fact
   4.442 +    from the definition of the function norm:*}
   4.443  
   4.444 -    have l: "|f x| * inverse (norm x) <= \<parallel>f\<parallel>V,norm"
   4.445 +    have l: "\<bar>f x\<bar> * inverse (norm x) \<le> \<parallel>f\<parallel>V,norm"
   4.446      proof (unfold function_norm_def, rule sup_ub)
   4.447        from ex_fnorm [OF _ c]
   4.448        show "is_Sup UNIV (B V norm f) (Sup UNIV (B V norm f))"
   4.449           by (simp! add: is_function_norm_def function_norm_def)
   4.450 -      show "|f x| * inverse (norm x) \<in> B V norm f" 
   4.451 +      show "\<bar>f x\<bar> * inverse (norm x) \<in> B V norm f"
   4.452          by (unfold B_def, intro UnI2 CollectI exI [of _ x]
   4.453              conjI, simp)
   4.454      qed
   4.455  
   4.456      txt {* The thesis now follows by a short calculation: *}
   4.457  
   4.458 -    have "|f x| = |f x| * #1" by (simp!)
   4.459 -    also from nz have "#1 = inverse (norm x) * norm x" 
   4.460 +    have "\<bar>f x\<bar> = \<bar>f x\<bar> * #1" by (simp!)
   4.461 +    also from nz have "#1 = inverse (norm x) * norm x"
   4.462        by (simp add: real_mult_inv_left1)
   4.463 -    also have "|f x| * ... = |f x| * inverse (norm x) * norm x"
   4.464 +    also have "\<bar>f x\<bar> * ... = \<bar>f x\<bar> * inverse (norm x) * norm x"
   4.465        by (simp! add: real_mult_assoc)
   4.466 -    also from n l have "... <= \<parallel>f\<parallel>V,norm * norm x"
   4.467 +    also from n l have "... \<le> \<parallel>f\<parallel>V,norm * norm x"
   4.468        by (simp add: real_mult_le_le_mono2)
   4.469 -    finally show "|f x| <= \<parallel>f\<parallel>V,norm * norm x" .
   4.470 +    finally show "\<bar>f x\<bar> \<le> \<parallel>f\<parallel>V,norm * norm x" .
   4.471    qed
   4.472  qed
   4.473  
   4.474 -text{* \medskip The function norm is the least positive real number for 
   4.475 -which the following inequation holds:
   4.476 -\begin{matharray}{l}
   4.477 -| f\ap x | \leq c \cdot {\norm x}  
   4.478 -\end{matharray} 
   4.479 +text {*
   4.480 +  \medskip The function norm is the least positive real number for
   4.481 +  which the following inequation holds:
   4.482 +  \begin{center}
   4.483 +  @{text "\<bar>f x\<bar> \<le> c \<cdot> \<parallel>x\<parallel>"}
   4.484 +  \end{center}
   4.485  *}
   4.486  
   4.487 -lemma fnorm_le_ub: 
   4.488 -  "[| is_continuous V norm f; is_normed_vectorspace V norm; 
   4.489 -     \<forall>x \<in> V. |f x| <= c * norm x; #0 <= c |]
   4.490 -  ==> \<parallel>f\<parallel>V,norm <= c"
   4.491 +lemma fnorm_le_ub:
   4.492 +  "is_continuous V norm f \<Longrightarrow> is_normed_vectorspace V norm \<Longrightarrow>
   4.493 +     \<forall>x \<in> V. \<bar>f x\<bar> \<le> c * norm x \<Longrightarrow> #0 \<le> c
   4.494 +  \<Longrightarrow> \<parallel>f\<parallel>V,norm \<le> c"
   4.495  proof (unfold function_norm_def)
   4.496 -  assume "is_normed_vectorspace V norm" 
   4.497 +  assume "is_normed_vectorspace V norm"
   4.498    assume c: "is_continuous V norm f"
   4.499 -  assume fb: "\<forall>x \<in> V. |f x| <= c * norm x"
   4.500 -    and "#0 <= c"
   4.501 +  assume fb: "\<forall>x \<in> V. \<bar>f x\<bar> \<le> c * norm x"
   4.502 +    and "#0 \<le> c"
   4.503  
   4.504 -  txt {* Suppose the inequation holds for some $c\geq 0$.
   4.505 -  If $c$ is an upper bound of $B$, then $c$ is greater 
   4.506 -  than the function norm since the function norm is the
   4.507 -  least upper bound.
   4.508 -  *}
   4.509 +  txt {* Suppose the inequation holds for some @{text "c \<ge> 0"}.  If
   4.510 +  @{text c} is an upper bound of @{text B}, then @{text c} is greater
   4.511 +  than the function norm since the function norm is the least upper
   4.512 +  bound.  *}
   4.513  
   4.514 -  show "Sup UNIV (B V norm f) <= c" 
   4.515 +  show "Sup UNIV (B V norm f) \<le> c"
   4.516    proof (rule sup_le_ub)
   4.517 -    from ex_fnorm [OF _ c] 
   4.518 -    show "is_Sup UNIV (B V norm f) (Sup UNIV (B V norm f))" 
   4.519 -      by (simp! add: is_function_norm_def function_norm_def) 
   4.520 -  
   4.521 -    txt {* $c$ is an upper bound of $B$, i.e. every
   4.522 -    $y\in B$ is less than $c$. *}
   4.523 +    from ex_fnorm [OF _ c]
   4.524 +    show "is_Sup UNIV (B V norm f) (Sup UNIV (B V norm f))"
   4.525 +      by (simp! add: is_function_norm_def function_norm_def)
   4.526  
   4.527 -    show "isUb UNIV (B V norm f) c"  
   4.528 +    txt {* @{text c} is an upper bound of @{text B}, i.e. every
   4.529 +    @{text "y \<in> B"} is less than @{text c}. *}
   4.530 +
   4.531 +    show "isUb UNIV (B V norm f) c"
   4.532      proof (intro isUbI setleI ballI)
   4.533        fix y assume "y \<in> B V norm f"
   4.534 -      thus le: "y <= c"
   4.535 +      thus le: "y \<le> c"
   4.536        proof (unfold B_def, elim UnE CollectE exE conjE singletonE)
   4.537  
   4.538 -       txt {* The first case for $y\in B$ is $y=0$. *}
   4.539 +       txt {* The first case for @{text "y \<in> B"} is @{text "y = 0"}. *}
   4.540  
   4.541          assume "y = #0"
   4.542 -        show "y <= c" by (force!)
   4.543 +        show "y \<le> c" by (blast!)
   4.544  
   4.545 -        txt{* The second case is 
   4.546 -        $y = {|f\ap x|}/{\norm x}$ for some 
   4.547 -        $x\in V$ with $x \neq \zero$. *}  
   4.548 +        txt{* The second case is @{text "y = \<bar>f x\<bar> / \<parallel>x\<parallel>"} for some
   4.549 +        @{text "x \<in> V"} with @{text "x \<noteq> 0"}. *}
   4.550  
   4.551        next
   4.552 -	fix x 
   4.553 -        assume "x \<in> V" "x \<noteq> 0" 
   4.554 +        fix x
   4.555 +        assume "x \<in> V"  "x \<noteq> 0"
   4.556  
   4.557 -        have lz: "#0 < norm x" 
   4.558 +        have lz: "#0 < norm x"
   4.559            by (simp! add: normed_vs_norm_gt_zero)
   4.560 -          
   4.561 -        have nz: "norm x \<noteq> #0" 
   4.562 +
   4.563 +        have nz: "norm x \<noteq> #0"
   4.564          proof (rule not_sym)
   4.565            from lz show "#0 \<noteq> norm x"
   4.566              by (simp! add: order_less_imp_not_eq)
   4.567          qed
   4.568 -            
   4.569 -	from lz have "#0 < inverse (norm x)"
   4.570 -	  by (simp! add: real_inverse_gt_zero1)
   4.571 -	hence inverse_gez: "#0 <= inverse (norm x)"
   4.572 +
   4.573 +        from lz have "#0 < inverse (norm x)"
   4.574 +          by (simp! add: real_inverse_gt_zero1)
   4.575 +        hence inverse_gez: "#0 \<le> inverse (norm x)"
   4.576            by (rule real_less_imp_le)
   4.577  
   4.578 -	assume "y = |f x| * inverse (norm x)" 
   4.579 -	also from inverse_gez have "... <= c * norm x * inverse (norm x)"
   4.580 -	  proof (rule real_mult_le_le_mono2)
   4.581 -	    show "|f x| <= c * norm x" by (rule bspec)
   4.582 -	  qed
   4.583 -	also have "... <= c" by (simp add: nz real_mult_assoc)
   4.584 -	finally show ?thesis .
   4.585 +        assume "y = \<bar>f x\<bar> * inverse (norm x)"
   4.586 +        also from inverse_gez have "... \<le> c * norm x * inverse (norm x)"
   4.587 +          proof (rule real_mult_le_le_mono2)
   4.588 +            show "\<bar>f x\<bar> \<le> c * norm x" by (rule bspec)
   4.589 +          qed
   4.590 +        also have "... \<le> c" by (simp add: nz real_mult_assoc)
   4.591 +        finally show ?thesis .
   4.592        qed
   4.593 -    qed force
   4.594 +    qed blast
   4.595    qed
   4.596  qed
   4.597  
   4.598 -end
   4.599 \ No newline at end of file
   4.600 +end
     5.1 --- a/src/HOL/Real/HahnBanach/FunctionOrder.thy	Sat Dec 16 21:41:14 2000 +0100
     5.2 +++ b/src/HOL/Real/HahnBanach/FunctionOrder.thy	Sat Dec 16 21:41:51 2000 +0100
     5.3 @@ -9,75 +9,82 @@
     5.4  
     5.5  subsection {* The graph of a function *}
     5.6  
     5.7 -text{* We define the \emph{graph} of a (real) function $f$ with
     5.8 -domain $F$ as the set 
     5.9 -\[
    5.10 -\{(x, f\ap x). \ap x \in F\}
    5.11 -\]
    5.12 -So we are modeling partial functions by specifying the domain and 
    5.13 -the mapping function. We use the term ``function'' also for its graph.
    5.14 +text {*
    5.15 +  We define the \emph{graph} of a (real) function @{text f} with
    5.16 +  domain @{text F} as the set
    5.17 +  \begin{center}
    5.18 +  @{text "{(x, f x). x \<in> F}"}
    5.19 +  \end{center}
    5.20 +  So we are modeling partial functions by specifying the domain and
    5.21 +  the mapping function. We use the term ``function'' also for its
    5.22 +  graph.
    5.23  *}
    5.24  
    5.25  types 'a graph = "('a * real) set"
    5.26  
    5.27  constdefs
    5.28 -  graph :: "['a set, 'a => real] => 'a graph "
    5.29 -  "graph F f == {(x, f x) | x. x \<in> F}" 
    5.30 +  graph :: "'a set \<Rightarrow> ('a \<Rightarrow> real) \<Rightarrow> 'a graph "
    5.31 +  "graph F f \<equiv> {(x, f x) | x. x \<in> F}"
    5.32  
    5.33 -lemma graphI [intro?]: "x \<in> F ==> (x, f x) \<in> graph F f"
    5.34 -  by (unfold graph_def, intro CollectI exI) force
    5.35 +lemma graphI [intro?]: "x \<in> F \<Longrightarrow> (x, f x) \<in> graph F f"
    5.36 +  by (unfold graph_def, intro CollectI exI) blast
    5.37  
    5.38 -lemma graphI2 [intro?]: "x \<in> F ==> \<exists>t\<in> (graph F f). t = (x, f x)"
    5.39 -  by (unfold graph_def, force)
    5.40 +lemma graphI2 [intro?]: "x \<in> F \<Longrightarrow> \<exists>t\<in> (graph F f). t = (x, f x)"
    5.41 +  by (unfold graph_def) blast
    5.42  
    5.43 -lemma graphD1 [intro?]: "(x, y) \<in> graph F f ==> x \<in> F"
    5.44 -  by (unfold graph_def, elim CollectE exE) force
    5.45 +lemma graphD1 [intro?]: "(x, y) \<in> graph F f \<Longrightarrow> x \<in> F"
    5.46 +  by (unfold graph_def) blast
    5.47  
    5.48 -lemma graphD2 [intro?]: "(x, y) \<in> graph H h ==> y = h x"
    5.49 -  by (unfold graph_def, elim CollectE exE) force 
    5.50 +lemma graphD2 [intro?]: "(x, y) \<in> graph H h \<Longrightarrow> y = h x"
    5.51 +  by (unfold graph_def) blast
    5.52 +
    5.53  
    5.54  subsection {* Functions ordered by domain extension *}
    5.55  
    5.56 -text{* A function $h'$ is an extension of $h$, iff the graph of 
    5.57 -$h$ is a subset of the graph of $h'$.*}
    5.58 +text {* A function @{text h'} is an extension of @{text h}, iff the
    5.59 +  graph of @{text h} is a subset of the graph of @{text h'}. *}
    5.60  
    5.61 -lemma graph_extI: 
    5.62 -  "[| !! x. x \<in> H ==> h x = h' x; H <= H'|]
    5.63 -  ==> graph H h <= graph H' h'"
    5.64 -  by (unfold graph_def, force)
    5.65 +lemma graph_extI:
    5.66 +  "(\<And>x. x \<in> H \<Longrightarrow> h x = h' x) \<Longrightarrow> H \<subseteq> H'
    5.67 +  \<Longrightarrow> graph H h \<subseteq> graph H' h'"
    5.68 +  by (unfold graph_def) blast
    5.69  
    5.70 -lemma graph_extD1 [intro?]: 
    5.71 -  "[| graph H h <= graph H' h'; x \<in> H |] ==> h x = h' x"
    5.72 -  by (unfold graph_def, force)
    5.73 +lemma graph_extD1 [intro?]:
    5.74 +  "graph H h \<subseteq> graph H' h' \<Longrightarrow> x \<in> H \<Longrightarrow> h x = h' x"
    5.75 +  by (unfold graph_def) blast
    5.76  
    5.77 -lemma graph_extD2 [intro?]: 
    5.78 -  "[| graph H h <= graph H' h' |] ==> H <= H'"
    5.79 -  by (unfold graph_def, force)
    5.80 +lemma graph_extD2 [intro?]:
    5.81 +  "graph H h \<subseteq> graph H' h' \<Longrightarrow> H \<subseteq> H'"
    5.82 +  by (unfold graph_def) blast
    5.83  
    5.84  subsection {* Domain and function of a graph *}
    5.85  
    5.86 -text{* The inverse functions to $\idt{graph}$ are $\idt{domain}$ and 
    5.87 -$\idt{funct}$.*}
    5.88 +text {*
    5.89 +  The inverse functions to @{text graph} are @{text domain} and
    5.90 +  @{text funct}.
    5.91 +*}
    5.92  
    5.93  constdefs
    5.94 -  domain :: "'a graph => 'a set" 
    5.95 -  "domain g == {x. \<exists>y. (x, y) \<in> g}"
    5.96 +  domain :: "'a graph \<Rightarrow> 'a set"
    5.97 +  "domain g \<equiv> {x. \<exists>y. (x, y) \<in> g}"
    5.98  
    5.99 -  funct :: "'a graph => ('a => real)"
   5.100 -  "funct g == \<lambda>x. (SOME y. (x, y) \<in> g)"
   5.101 +  funct :: "'a graph \<Rightarrow> ('a \<Rightarrow> real)"
   5.102 +  "funct g \<equiv> \<lambda>x. (SOME y. (x, y) \<in> g)"
   5.103  
   5.104  
   5.105 -text {* The following lemma states that $g$ is the graph of a function
   5.106 -if the relation induced by $g$ is unique. *}
   5.107 +text {*
   5.108 +  The following lemma states that @{text g} is the graph of a function
   5.109 +  if the relation induced by @{text g} is unique.
   5.110 +*}
   5.111  
   5.112 -lemma graph_domain_funct: 
   5.113 -  "(!!x y z. (x, y) \<in> g ==> (x, z) \<in> g ==> z = y) 
   5.114 -  ==> graph (domain g) (funct g) = g"
   5.115 +lemma graph_domain_funct:
   5.116 +  "(\<And>x y z. (x, y) \<in> g \<Longrightarrow> (x, z) \<in> g \<Longrightarrow> z = y)
   5.117 +  \<Longrightarrow> graph (domain g) (funct g) = g"
   5.118  proof (unfold domain_def funct_def graph_def, auto)
   5.119    fix a b assume "(a, b) \<in> g"
   5.120    show "(a, SOME y. (a, y) \<in> g) \<in> g" by (rule someI2)
   5.121    show "\<exists>y. (a, y) \<in> g" ..
   5.122 -  assume uniq: "!!x y z. (x, y) \<in> g ==> (x, z) \<in> g ==> z = y"
   5.123 +  assume uniq: "\<And>x y z. (x, y) \<in> g \<Longrightarrow> (x, z) \<in> g \<Longrightarrow> z = y"
   5.124    show "b = (SOME y. (a, y) \<in> g)"
   5.125    proof (rule some_equality [symmetric])
   5.126      fix y assume "(a, y) \<in> g" show "y = b" by (rule uniq)
   5.127 @@ -88,47 +95,49 @@
   5.128  
   5.129  subsection {* Norm-preserving extensions of a function *}
   5.130  
   5.131 -text {* Given a linear form $f$ on the space $F$ and a seminorm $p$ on 
   5.132 -$E$. The set of all linear extensions of $f$, to superspaces $H$ of 
   5.133 -$F$, which are bounded by $p$, is defined as follows. *}
   5.134 -
   5.135 +text {*
   5.136 +  Given a linear form @{text f} on the space @{text F} and a seminorm
   5.137 +  @{text p} on @{text E}. The set of all linear extensions of @{text
   5.138 +  f}, to superspaces @{text H} of @{text F}, which are bounded by
   5.139 +  @{text p}, is defined as follows.
   5.140 +*}
   5.141  
   5.142  constdefs
   5.143 -  norm_pres_extensions :: 
   5.144 -    "['a::{plus, minus, zero} set, 'a  => real, 'a set, 'a => real] 
   5.145 -    => 'a graph set"
   5.146 -    "norm_pres_extensions E p F f 
   5.147 -    == {g. \<exists>H h. graph H h = g 
   5.148 -                \<and> is_linearform H h 
   5.149 +  norm_pres_extensions ::
   5.150 +    "'a::{plus, minus, zero} set \<Rightarrow> ('a \<Rightarrow> real) \<Rightarrow> 'a set \<Rightarrow> ('a \<Rightarrow> real)
   5.151 +    \<Rightarrow> 'a graph set"
   5.152 +    "norm_pres_extensions E p F f
   5.153 +    \<equiv> {g. \<exists>H h. graph H h = g
   5.154 +                \<and> is_linearform H h
   5.155                  \<and> is_subspace H E
   5.156                  \<and> is_subspace F H
   5.157 -                \<and> graph F f <= graph H h
   5.158 -                \<and> (\<forall>x \<in> H. h x <= p x)}"
   5.159 -                       
   5.160 -lemma norm_pres_extension_D:  
   5.161 +                \<and> graph F f \<subseteq> graph H h
   5.162 +                \<and> (\<forall>x \<in> H. h x \<le> p x)}"
   5.163 +
   5.164 +lemma norm_pres_extension_D:
   5.165    "g \<in> norm_pres_extensions E p F f
   5.166 -  ==> \<exists>H h. graph H h = g 
   5.167 -            \<and> is_linearform H h 
   5.168 +  \<Longrightarrow> \<exists>H h. graph H h = g
   5.169 +            \<and> is_linearform H h
   5.170              \<and> is_subspace H E
   5.171              \<and> is_subspace F H
   5.172 -            \<and> graph F f <= graph H h
   5.173 -            \<and> (\<forall>x \<in> H. h x <= p x)"
   5.174 -  by (unfold norm_pres_extensions_def) force
   5.175 +            \<and> graph F f \<subseteq> graph H h
   5.176 +            \<and> (\<forall>x \<in> H. h x \<le> p x)"
   5.177 +  by (unfold norm_pres_extensions_def) blast
   5.178  
   5.179 -lemma norm_pres_extensionI2 [intro]:  
   5.180 -  "[| is_linearform H h; is_subspace H E; is_subspace F H;
   5.181 -  graph F f <= graph H h; \<forall>x \<in> H. h x <= p x |]
   5.182 -  ==> (graph H h \<in> norm_pres_extensions E p F f)"
   5.183 - by (unfold norm_pres_extensions_def) force
   5.184 +lemma norm_pres_extensionI2 [intro]:
   5.185 +  "is_linearform H h \<Longrightarrow> is_subspace H E \<Longrightarrow> is_subspace F H \<Longrightarrow>
   5.186 +  graph F f \<subseteq> graph H h \<Longrightarrow> \<forall>x \<in> H. h x \<le> p x
   5.187 +  \<Longrightarrow> (graph H h \<in> norm_pres_extensions E p F f)"
   5.188 + by (unfold norm_pres_extensions_def) blast
   5.189  
   5.190 -lemma norm_pres_extensionI [intro]:  
   5.191 -  "\<exists>H h. graph H h = g 
   5.192 -         \<and> is_linearform H h    
   5.193 +lemma norm_pres_extensionI [intro]:
   5.194 +  "\<exists>H h. graph H h = g
   5.195 +         \<and> is_linearform H h
   5.196           \<and> is_subspace H E
   5.197           \<and> is_subspace F H
   5.198 -         \<and> graph F f <= graph H h
   5.199 -         \<and> (\<forall>x \<in> H. h x <= p x)
   5.200 -  ==> g \<in> norm_pres_extensions E p F f"
   5.201 -  by (unfold norm_pres_extensions_def) force
   5.202 +         \<and> graph F f \<subseteq> graph H h
   5.203 +         \<and> (\<forall>x \<in> H. h x \<le> p x)
   5.204 +  \<Longrightarrow> g \<in> norm_pres_extensions E p F f"
   5.205 +  by (unfold norm_pres_extensions_def) blast
   5.206  
   5.207 -end
   5.208 \ No newline at end of file
   5.209 +end
     6.1 --- a/src/HOL/Real/HahnBanach/HahnBanach.thy	Sat Dec 16 21:41:14 2000 +0100
     6.2 +++ b/src/HOL/Real/HahnBanach/HahnBanach.thy	Sat Dec 16 21:41:51 2000 +0100
     6.3 @@ -5,152 +5,142 @@
     6.4  
     6.5  header {* The Hahn-Banach Theorem *}
     6.6  
     6.7 -theory HahnBanach = HahnBanachLemmas: 
     6.8 +theory HahnBanach = HahnBanachLemmas:
     6.9  
    6.10  text {*
    6.11 -  We present the proof of two different versions of the Hahn-Banach 
    6.12 +  We present the proof of two different versions of the Hahn-Banach
    6.13    Theorem, closely following \cite[\S36]{Heuser:1986}.
    6.14  *}
    6.15  
    6.16  subsection {* The Hahn-Banach Theorem for vector spaces *}
    6.17  
    6.18  text {*
    6.19 -{\bf Hahn-Banach Theorem.}\quad
    6.20 -  Let $F$ be a subspace of a real vector space $E$, let $p$ be a semi-norm on
    6.21 -  $E$, and $f$ be a linear form defined on $F$ such that $f$ is bounded by
    6.22 -  $p$, i.e. $\All {x\in F} f\ap x \leq p\ap x$.  Then $f$ can be extended to
    6.23 -  a linear form $h$ on $E$ such that $h$ is norm-preserving, i.e. $h$ is also
    6.24 -  bounded by $p$.
    6.25 +  \textbf{Hahn-Banach Theorem.} Let @{text F} be a subspace of a real
    6.26 +  vector space @{text E}, let @{text p} be a semi-norm on @{text E},
    6.27 +  and @{text f} be a linear form defined on @{text F} such that @{text
    6.28 +  f} is bounded by @{text p}, i.e.  @{text "\<forall>x \<in> F. f x \<le> p x"}.  Then
    6.29 +  @{text f} can be extended to a linear form @{text h} on @{text E}
    6.30 +  such that @{text h} is norm-preserving, i.e. @{text h} is also
    6.31 +  bounded by @{text p}.
    6.32 +
    6.33 +  \bigskip
    6.34 +  \textbf{Proof Sketch.}
    6.35 +  \begin{enumerate}
    6.36 +
    6.37 +  \item Define @{text M} as the set of norm-preserving extensions of
    6.38 +  @{text f} to subspaces of @{text E}. The linear forms in @{text M}
    6.39 +  are ordered by domain extension.
    6.40  
    6.41 -\bigskip
    6.42 -{\bf Proof Sketch.}
    6.43 -\begin{enumerate}
    6.44 -\item Define $M$ as the set of norm-preserving extensions of $f$ to subspaces
    6.45 -  of $E$. The linear forms in $M$ are ordered by domain extension.
    6.46 -\item We show that every non-empty chain in $M$ has an upper bound in $M$.
    6.47 -\item With Zorn's Lemma we conclude that there is a maximal function $g$ in
    6.48 -  $M$.
    6.49 -\item The domain $H$ of $g$ is the whole space $E$, as shown by classical
    6.50 -  contradiction:
    6.51 -\begin{itemize}
    6.52 -\item Assuming $g$ is not defined on whole $E$, it can still be extended in a
    6.53 -  norm-preserving way to a super-space $H'$ of $H$.
    6.54 -\item Thus $g$ can not be maximal. Contradiction!
    6.55 -\end{itemize}
    6.56 -\end{enumerate}
    6.57 -\bigskip
    6.58 +  \item We show that every non-empty chain in @{text M} has an upper
    6.59 +  bound in @{text M}.
    6.60 +
    6.61 +  \item With Zorn's Lemma we conclude that there is a maximal function
    6.62 +  @{text g} in @{text M}.
    6.63 +
    6.64 +  \item The domain @{text H} of @{text g} is the whole space @{text
    6.65 +  E}, as shown by classical contradiction:
    6.66 +
    6.67 +  \begin{itemize}
    6.68 +
    6.69 +  \item Assuming @{text g} is not defined on whole @{text E}, it can
    6.70 +  still be extended in a norm-preserving way to a super-space @{text
    6.71 +  H'} of @{text H}.
    6.72 +
    6.73 +  \item Thus @{text g} can not be maximal. Contradiction!
    6.74 +
    6.75 +  \end{itemize}
    6.76 +
    6.77 +  \end{enumerate}
    6.78  *}
    6.79  
    6.80 -(*
    6.81 -text {* {\bf Theorem.} Let $f$ be a linear form defined on a subspace 
    6.82 - $F$ of a real vector space $E$, such that $f$ is bounded by a seminorm 
    6.83 - $p$. 
    6.84 -
    6.85 - Then $f$ can be extended  to a linear form $h$  on $E$ that is again
    6.86 - bounded by $p$.
    6.87 -
    6.88 - \bigskip{\bf Proof Outline.}
    6.89 - First we define the set $M$ of all norm-preserving extensions of $f$.
    6.90 - We show that every chain in $M$ has an upper bound in $M$.
    6.91 - With Zorn's lemma we can conclude that $M$ has a maximal element $g$.
    6.92 - We further show by contradiction that the domain $H$ of $g$ is the whole
    6.93 - vector space $E$. 
    6.94 - If $H \neq E$, then $g$ can be extended in 
    6.95 - a norm-preserving way to a greater vector space $H_0$. 
    6.96 - So $g$ cannot be maximal in $M$.
    6.97 - \bigskip
    6.98 -*}
    6.99 -*)
   6.100 -
   6.101  theorem HahnBanach:
   6.102 -  "[| is_vectorspace E; is_subspace F E; is_seminorm E p;
   6.103 -  is_linearform F f; \<forall>x \<in> F. f x <= p x |] 
   6.104 -  ==> \<exists>h. is_linearform E h \<and> (\<forall>x \<in> F. h x = f x)
   6.105 -        \<and> (\<forall>x \<in> E. h x <= p x)"   
   6.106 -    -- {* Let $E$ be a vector space, $F$ a subspace of $E$, $p$ a seminorm on $E$, *}
   6.107 -    -- {* and $f$ a linear form on $F$ such that $f$ is bounded by $p$, *}
   6.108 -    -- {* then $f$ can be extended to a linear form $h$ on $E$ in a norm-preserving way. \skp *}
   6.109 +  "is_vectorspace E \<Longrightarrow> is_subspace F E \<Longrightarrow> is_seminorm E p
   6.110 +  \<Longrightarrow> is_linearform F f \<Longrightarrow> \<forall>x \<in> F. f x \<le> p x
   6.111 +  \<Longrightarrow> \<exists>h. is_linearform E h \<and> (\<forall>x \<in> F. h x = f x) \<and> (\<forall>x \<in> E. h x \<le> p x)"
   6.112 +    -- {* Let @{text E} be a vector space, @{text F} a subspace of @{text E}, @{text p} a seminorm on @{text E}, *}
   6.113 +    -- {* and @{text f} a linear form on @{text F} such that @{text f} is bounded by @{text p}, *}
   6.114 +    -- {* then @{text f} can be extended to a linear form @{text h} on @{text E} in a norm-preserving way. \skp *}
   6.115  proof -
   6.116 -  assume "is_vectorspace E" "is_subspace F E" "is_seminorm E p" 
   6.117 -   and "is_linearform F f" "\<forall>x \<in> F. f x <= p x"
   6.118 +  assume "is_vectorspace E"  "is_subspace F E"  "is_seminorm E p"
   6.119 +   and "is_linearform F f"  "\<forall>x \<in> F. f x \<le> p x"
   6.120    -- {* Assume the context of the theorem. \skp *}
   6.121 -  def M == "norm_pres_extensions E p F f"
   6.122 -  -- {* Define $M$ as the set of all norm-preserving extensions of $F$. \skp *}
   6.123 +  def M \<equiv> "norm_pres_extensions E p F f"
   6.124 +  -- {* Define @{text M} as the set of all norm-preserving extensions of @{text F}. \skp *}
   6.125    {
   6.126 -    fix c assume "c \<in> chain M" "\<exists>x. x \<in> c"
   6.127 +    fix c assume "c \<in> chain M"  "\<exists>x. x \<in> c"
   6.128      have "\<Union>c \<in> M"
   6.129 -    -- {* Show that every non-empty chain $c$ of $M$ has an upper bound in $M$: *}
   6.130 -    -- {* $\Union c$ is greater than any element of the chain $c$, so it suffices to show $\Union c \in M$. *}
   6.131 +    -- {* Show that every non-empty chain @{text c} of @{text M} has an upper bound in @{text M}: *}
   6.132 +    -- {* @{text "\<Union>c"} is greater than any element of the chain @{text c}, so it suffices to show @{text "\<Union>c \<in> M"}. *}
   6.133      proof (unfold M_def, rule norm_pres_extensionI)
   6.134        show "\<exists>H h. graph H h = \<Union>c
   6.135 -              \<and> is_linearform H h 
   6.136 -              \<and> is_subspace H E 
   6.137 -              \<and> is_subspace F H 
   6.138 +              \<and> is_linearform H h
   6.139 +              \<and> is_subspace H E
   6.140 +              \<and> is_subspace F H
   6.141                \<and> graph F f \<subseteq> graph H h
   6.142 -              \<and> (\<forall>x \<in> H. h x <= p x)"
   6.143 +              \<and> (\<forall>x \<in> H. h x \<le> p x)"
   6.144        proof (intro exI conjI)
   6.145          let ?H = "domain (\<Union>c)"
   6.146          let ?h = "funct (\<Union>c)"
   6.147  
   6.148 -        show a: "graph ?H ?h = \<Union>c" 
   6.149 +        show a: "graph ?H ?h = \<Union>c"
   6.150          proof (rule graph_domain_funct)
   6.151 -          fix x y z assume "(x, y) \<in> \<Union>c" "(x, z) \<in> \<Union>c"
   6.152 +          fix x y z assume "(x, y) \<in> \<Union>c"  "(x, z) \<in> \<Union>c"
   6.153            show "z = y" by (rule sup_definite)
   6.154          qed
   6.155 -        show "is_linearform ?H ?h" 
   6.156 +        show "is_linearform ?H ?h"
   6.157            by (simp! add: sup_lf a)
   6.158 -        show "is_subspace ?H E" 
   6.159 +        show "is_subspace ?H E"
   6.160            by (rule sup_subE, rule a) (simp!)+
   6.161 -        show "is_subspace F ?H" 
   6.162 +        show "is_subspace F ?H"
   6.163            by (rule sup_supF, rule a) (simp!)+
   6.164 -        show "graph F f \<subseteq> graph ?H ?h" 
   6.165 +        show "graph F f \<subseteq> graph ?H ?h"
   6.166            by (rule sup_ext, rule a) (simp!)+
   6.167 -        show "\<forall>x \<in> ?H. ?h x <= p x" 
   6.168 +        show "\<forall>x \<in> ?H. ?h x \<le> p x"
   6.169            by (rule sup_norm_pres, rule a) (simp!)+
   6.170        qed
   6.171      qed
   6.172  
   6.173    }
   6.174 -  hence "\<exists>g \<in> M. \<forall>x \<in> M. g \<subseteq> x --> g = x" 
   6.175 -  -- {* With Zorn's Lemma we can conclude that there is a maximal element in $M$.\skp *}
   6.176 +  hence "\<exists>g \<in> M. \<forall>x \<in> M. g \<subseteq> x \<longrightarrow> g = x"
   6.177 +  -- {* With Zorn's Lemma we can conclude that there is a maximal element in @{text M}. \skp *}
   6.178    proof (rule Zorn's_Lemma)
   6.179 -    -- {* We show that $M$ is non-empty: *}
   6.180 +    -- {* We show that @{text M} is non-empty: *}
   6.181      have "graph F f \<in> norm_pres_extensions E p F f"
   6.182      proof (rule norm_pres_extensionI2)
   6.183        have "is_vectorspace F" ..
   6.184        thus "is_subspace F F" ..
   6.185 -    qed (blast!)+ 
   6.186 +    qed (blast!)+
   6.187      thus "graph F f \<in> M" by (simp!)
   6.188    qed
   6.189    thus ?thesis
   6.190    proof
   6.191 -    fix g assume "g \<in> M" "\<forall>x \<in> M. g \<subseteq> x --> g = x"
   6.192 -    -- {* We consider such a maximal element $g \in M$. \skp *}
   6.193 -    obtain H h where "graph H h = g" "is_linearform H h" 
   6.194 -      "is_subspace H E" "is_subspace F H" "graph F f \<subseteq> graph H h" 
   6.195 -      "\<forall>x \<in> H. h x <= p x" 
   6.196 -      -- {* $g$ is a norm-preserving extension of $f$, in other words: *}
   6.197 -      -- {* $g$ is the graph of some linear form $h$ defined on a subspace $H$ of $E$, *}
   6.198 -      -- {* and $h$ is an extension of $f$ that is again bounded by $p$. \skp *}
   6.199 +    fix g assume "g \<in> M"  "\<forall>x \<in> M. g \<subseteq> x \<longrightarrow> g = x"
   6.200 +    -- {* We consider such a maximal element @{text "g \<in> M"}. \skp *}
   6.201 +    obtain H h where "graph H h = g"  "is_linearform H h"
   6.202 +      "is_subspace H E"  "is_subspace F H"  "graph F f \<subseteq> graph H h"
   6.203 +      "\<forall>x \<in> H. h x \<le> p x"
   6.204 +      -- {* @{text g} is a norm-preserving extension of @{text f}, in other words: *}
   6.205 +      -- {* @{text g} is the graph of some linear form @{text h} defined on a subspace @{text H} of @{text E}, *}
   6.206 +      -- {* and @{text h} is an extension of @{text f} that is again bounded by @{text p}. \skp *}
   6.207      proof -
   6.208 -      have "\<exists>H h. graph H h = g \<and> is_linearform H h 
   6.209 +      have "\<exists>H h. graph H h = g \<and> is_linearform H h
   6.210          \<and> is_subspace H E \<and> is_subspace F H
   6.211          \<and> graph F f \<subseteq> graph H h
   6.212 -        \<and> (\<forall>x \<in> H. h x <= p x)" 
   6.213 +        \<and> (\<forall>x \<in> H. h x \<le> p x)"
   6.214          by (simp! add: norm_pres_extension_D)
   6.215        with that show ?thesis by blast
   6.216      qed
   6.217      have h: "is_vectorspace H" ..
   6.218      have "H = E"
   6.219 -    -- {* We show that $h$ is defined on whole $E$ by classical contradiction. \skp *} 
   6.220 +    -- {* We show that @{text h} is defined on whole @{text E} by classical contradiction. \skp *}
   6.221      proof (rule classical)
   6.222        assume "H \<noteq> E"
   6.223 -      -- {* Assume $h$ is not defined on whole $E$. Then show that $h$ can be extended *}
   6.224 -      -- {* in a norm-preserving way to a function $h'$ with the graph $g'$. \skp *}
   6.225 +      -- {* Assume @{text h} is not defined on whole @{text E}. Then show that @{text h} can be extended *}
   6.226 +      -- {* in a norm-preserving way to a function @{text h'} with the graph @{text g'}. \skp *}
   6.227        have "\<exists>g' \<in> M. g \<subseteq> g' \<and> g \<noteq> g'"
   6.228        proof -
   6.229 -        obtain x' where "x' \<in> E" "x' \<notin> H" 
   6.230 -        -- {* Pick $x' \in E \setminus H$. \skp *}
   6.231 +        obtain x' where "x' \<in> E"  "x' \<notin> H"
   6.232 +        -- {* Pick @{text "x' \<in> E - H"}. \skp *}
   6.233          proof -
   6.234            have "\<exists>x' \<in> E. x' \<notin> H"
   6.235            proof (rule set_less_imp_diff_not_empty)
   6.236 @@ -165,21 +155,21 @@
   6.237            with h have "x' \<in> H" by simp
   6.238            thus ?thesis by contradiction
   6.239          qed blast
   6.240 -        def H' == "H + lin x'"
   6.241 -        -- {* Define $H'$ as the direct sum of $H$ and the linear closure of $x'$. \skp *}
   6.242 -        obtain xi where "\<forall>y \<in> H. - p (y + x') - h y <= xi  
   6.243 -                          \<and> xi <= p (y + x') - h y" 
   6.244 -        -- {* Pick a real number $\xi$ that fulfills certain inequations; this will *}
   6.245 -        -- {* be used to establish that $h'$ is a norm-preserving extension of $h$. 
   6.246 +        def H' \<equiv> "H + lin x'"
   6.247 +        -- {* Define @{text H'} as the direct sum of @{text H} and the linear closure of @{text x'}. \skp *}
   6.248 +        obtain xi where "\<forall>y \<in> H. - p (y + x') - h y \<le> xi
   6.249 +                          \<and> xi \<le> p (y + x') - h y"
   6.250 +        -- {* Pick a real number @{text \<xi>} that fulfills certain inequations; this will *}
   6.251 +        -- {* be used to establish that @{text h'} is a norm-preserving extension of @{text h}.
   6.252             \label{ex-xi-use}\skp *}
   6.253          proof -
   6.254 -          from h have "\<exists>xi. \<forall>y \<in> H. - p (y + x') - h y <= xi 
   6.255 -                          \<and> xi <= p (y + x') - h y" 
   6.256 +          from h have "\<exists>xi. \<forall>y \<in> H. - p (y + x') - h y \<le> xi
   6.257 +                          \<and> xi \<le> p (y + x') - h y"
   6.258            proof (rule ex_xi)
   6.259 -            fix u v assume "u \<in> H" "v \<in> H"
   6.260 +            fix u v assume "u \<in> H"  "v \<in> H"
   6.261              from h have "h v - h u = h (v - u)"
   6.262                by (simp! add: linearform_diff)
   6.263 -            also have "... <= p (v - u)"
   6.264 +            also have "... \<le> p (v - u)"
   6.265                by (simp!)
   6.266              also have "v - u = x' + - x' + v + - u"
   6.267                by (simp! add: diff_eq1)
   6.268 @@ -187,29 +177,29 @@
   6.269                by (simp!)
   6.270              also have "... = (v + x') - (u + x')"
   6.271                by (simp! add: diff_eq1)
   6.272 -            also have "p ... <= p (v + x') + p (u + x')"
   6.273 +            also have "p ... \<le> p (v + x') + p (u + x')"
   6.274                by (rule seminorm_diff_subadditive) (simp_all!)
   6.275 -            finally have "h v - h u <= p (v + x') + p (u + x')" .
   6.276 +            finally have "h v - h u \<le> p (v + x') + p (u + x')" .
   6.277  
   6.278 -            thus "- p (u + x') - h u <= p (v + x') - h v" 
   6.279 +            thus "- p (u + x') - h u \<le> p (v + x') - h v"
   6.280                by (rule real_diff_ineq_swap)
   6.281            qed
   6.282            thus ?thesis ..
   6.283          qed
   6.284  
   6.285 -        def h' == "\<lambda>x. let (y,a) = SOME (y,a). x = y + a \<cdot> x' \<and> y \<in> H
   6.286 +        def h' \<equiv> "\<lambda>x. let (y, a) = SOME (y, a). x = y + a \<cdot> x' \<and> y \<in> H
   6.287                         in h y + a * xi"
   6.288 -        -- {* Define the extension $h'$ of $h$ to $H'$ using $\xi$. \skp *}
   6.289 +        -- {* Define the extension @{text h'} of @{text h} to @{text H'} using @{text \<xi>}. \skp *}
   6.290          show ?thesis
   6.291          proof
   6.292 -          show "g \<subseteq> graph H' h' \<and> g \<noteq> graph H' h'" 
   6.293 -          -- {* Show that $h'$ is an extension of $h$ \dots \skp *}
   6.294 +          show "g \<subseteq> graph H' h' \<and> g \<noteq> graph H' h'"
   6.295 +          -- {* Show that @{text h'} is an extension of @{text h} \dots \skp *}
   6.296            proof
   6.297              show "g \<subseteq> graph H' h'"
   6.298              proof -
   6.299                have  "graph H h \<subseteq> graph H' h'"
   6.300                proof (rule graph_extI)
   6.301 -                fix t assume "t \<in> H" 
   6.302 +                fix t assume "t \<in> H"
   6.303                  have "(SOME (y, a). t = y + a \<cdot> x' \<and> y \<in> H)
   6.304                       = (t, #0)"
   6.305                    by (rule decomp_H'_H) (assumption+, rule x')
   6.306 @@ -223,7 +213,7 @@
   6.307                      show "is_vectorspace (lin x')" ..
   6.308                    qed
   6.309                  qed
   6.310 -              qed 
   6.311 +              qed
   6.312                thus ?thesis by (simp!)
   6.313              qed
   6.314              show "g \<noteq> graph H' h'"
   6.315 @@ -231,7 +221,7 @@
   6.316                have "graph H h \<noteq> graph H' h'"
   6.317                proof
   6.318                  assume e: "graph H h = graph H' h'"
   6.319 -                have "x' \<in> H'" 
   6.320 +                have "x' \<in> H'"
   6.321                  proof (unfold H'_def, rule vs_sumI)
   6.322                    show "x' = 0 + x'" by (simp!)
   6.323                    from h show "0 \<in> H" ..
   6.324 @@ -245,63 +235,63 @@
   6.325                thus ?thesis by (simp!)
   6.326              qed
   6.327            qed
   6.328 -          show "graph H' h' \<in> M" 
   6.329 -          -- {* and $h'$ is norm-preserving. \skp *}
   6.330 +          show "graph H' h' \<in> M"
   6.331 +          -- {* and @{text h'} is norm-preserving. \skp *}
   6.332            proof -
   6.333              have "graph H' h' \<in> norm_pres_extensions E p F f"
   6.334              proof (rule norm_pres_extensionI2)
   6.335                show "is_linearform H' h'"
   6.336                  by (rule h'_lf) (simp! add: x')+
   6.337 -              show "is_subspace H' E" 
   6.338 -                by (unfold H'_def) 
   6.339 +              show "is_subspace H' E"
   6.340 +                by (unfold H'_def)
   6.341                    (rule vs_sum_subspace [OF _ lin_subspace])
   6.342                have "is_subspace F H" .
   6.343 -              also from h lin_vs 
   6.344 +              also from h lin_vs
   6.345                have [folded H'_def]: "is_subspace H (H + lin x')" ..
   6.346 -              finally (subspace_trans [OF _ h]) 
   6.347 +              finally (subspace_trans [OF _ h])
   6.348                show f_h': "is_subspace F H'" .
   6.349 -            
   6.350 +
   6.351                show "graph F f \<subseteq> graph H' h'"
   6.352                proof (rule graph_extI)
   6.353                  fix x assume "x \<in> F"
   6.354                  have "f x = h x" ..
   6.355                  also have " ... = h x + #0 * xi" by simp
   6.356 -                also 
   6.357 -                have "... = (let (y,a) = (x, #0) in h y + a * xi)"
   6.358 +                also
   6.359 +                have "... = (let (y, a) = (x, #0) in h y + a * xi)"
   6.360                    by (simp add: Let_def)
   6.361 -                also have 
   6.362 +                also have
   6.363                    "(x, #0) = (SOME (y, a). x = y + a \<cdot> x' \<and> y \<in> H)"
   6.364                    by (rule decomp_H'_H [symmetric]) (simp! add: x')+
   6.365 -                also have 
   6.366 -                  "(let (y,a) = (SOME (y,a). x = y + a \<cdot> x' \<and> y \<in> H)
   6.367 +                also have
   6.368 +                  "(let (y, a) = (SOME (y, a). x = y + a \<cdot> x' \<and> y \<in> H)
   6.369                      in h y + a * xi) = h' x" by (simp!)
   6.370                  finally show "f x = h' x" .
   6.371                next
   6.372                  from f_h' show "F \<subseteq> H'" ..
   6.373                qed
   6.374 -            
   6.375 -              show "\<forall>x \<in> H'. h' x <= p x"
   6.376 +
   6.377 +              show "\<forall>x \<in> H'. h' x \<le> p x"
   6.378                  by (rule h'_norm_pres) (assumption+, rule x')
   6.379              qed
   6.380              thus "graph H' h' \<in> M" by (simp!)
   6.381            qed
   6.382          qed
   6.383        qed
   6.384 -      hence "\<not> (\<forall>x \<in> M. g \<subseteq> x --> g = x)" by simp
   6.385 -	-- {* So the graph $g$ of $h$ cannot be maximal. Contradiction! \skp *}
   6.386 +      hence "\<not> (\<forall>x \<in> M. g \<subseteq> x \<longrightarrow> g = x)" by simp
   6.387 +        -- {* So the graph @{text g} of @{text h} cannot be maximal. Contradiction! \skp *}
   6.388        thus "H = E" by contradiction
   6.389      qed
   6.390 -    thus "\<exists>h. is_linearform E h \<and> (\<forall>x \<in> F. h x = f x) 
   6.391 -      \<and> (\<forall>x \<in> E. h x <= p x)" 
   6.392 +    thus "\<exists>h. is_linearform E h \<and> (\<forall>x \<in> F. h x = f x)
   6.393 +      \<and> (\<forall>x \<in> E. h x \<le> p x)"
   6.394      proof (intro exI conjI)
   6.395        assume eq: "H = E"
   6.396        from eq show "is_linearform E h" by (simp!)
   6.397        show "\<forall>x \<in> F. h x = f x"
   6.398        proof
   6.399 -	fix x assume "x \<in> F" have "f x = h x " ..
   6.400 -	thus "h x = f x" ..
   6.401 +        fix x assume "x \<in> F" have "f x = h x " ..
   6.402 +        thus "h x = f x" ..
   6.403        qed
   6.404 -      from eq show "\<forall>x \<in> E. h x <= p x" by (force!)
   6.405 +      from eq show "\<forall>x \<in> E. h x \<le> p x" by (blast!)
   6.406      qed
   6.407    qed
   6.408  qed
   6.409 @@ -309,34 +299,37 @@
   6.410  
   6.411  subsection  {* Alternative formulation *}
   6.412  
   6.413 -text {* The following alternative formulation of the Hahn-Banach
   6.414 -Theorem\label{abs-HahnBanach} uses the fact that for a real linear form
   6.415 -$f$ and a seminorm $p$ the
   6.416 -following inequations are equivalent:\footnote{This was shown in lemma
   6.417 -$\idt{abs{\dsh}ineq{\dsh}iff}$ (see page \pageref{abs-ineq-iff}).}
   6.418 -\begin{matharray}{ll}
   6.419 -\forall x\in H.\ap |h\ap x|\leq p\ap x& {\rm and}\\
   6.420 -\forall x\in H.\ap h\ap x\leq p\ap x\\
   6.421 -\end{matharray}
   6.422 +text {*
   6.423 +  The following alternative formulation of the Hahn-Banach
   6.424 +  Theorem\label{abs-HahnBanach} uses the fact that for a real linear
   6.425 +  form @{text f} and a seminorm @{text p} the following inequations
   6.426 +  are equivalent:\footnote{This was shown in lemma @{thm [source]
   6.427 +  abs_ineq_iff} (see page \pageref{abs-ineq-iff}).}
   6.428 +  \begin{center}
   6.429 +  \begin{tabular}{lll}
   6.430 +  @{text "\<forall>x \<in> H. \<bar>h x\<bar> \<le> p x"} & and &
   6.431 +  @{text "\<forall>x \<in> H. h x \<le> p x"} \\
   6.432 +  \end{tabular}
   6.433 +  \end{center}
   6.434  *}
   6.435  
   6.436  theorem abs_HahnBanach:
   6.437 -"[| is_vectorspace E; is_subspace F E; is_linearform F f; 
   6.438 -is_seminorm E p; \<forall>x \<in> F. |f x| <= p x |]
   6.439 -==> \<exists>g. is_linearform E g \<and> (\<forall>x \<in> F. g x = f x)
   6.440 - \<and> (\<forall>x \<in> E. |g x| <= p x)"
   6.441 +  "is_vectorspace E \<Longrightarrow> is_subspace F E \<Longrightarrow> is_linearform F f
   6.442 +  \<Longrightarrow> is_seminorm E p \<Longrightarrow> \<forall>x \<in> F. \<bar>f x\<bar> \<le> p x
   6.443 +  \<Longrightarrow> \<exists>g. is_linearform E g \<and> (\<forall>x \<in> F. g x = f x)
   6.444 +    \<and> (\<forall>x \<in> E. \<bar>g x\<bar> \<le> p x)"
   6.445  proof -
   6.446 -assume "is_vectorspace E" "is_subspace F E" "is_seminorm E p" 
   6.447 -"is_linearform F f"  "\<forall>x \<in> F. |f x| <= p x"
   6.448 -have "\<forall>x \<in> F. f x <= p x"  by (rule abs_ineq_iff [THEN iffD1])
   6.449 -hence "\<exists>g. is_linearform E g \<and> (\<forall>x \<in> F. g x = f x) 
   6.450 -          \<and> (\<forall>x \<in> E. g x <= p x)"
   6.451 +assume "is_vectorspace E"  "is_subspace F E"  "is_seminorm E p"
   6.452 +"is_linearform F f"  "\<forall>x \<in> F. \<bar>f x\<bar> \<le> p x"
   6.453 +have "\<forall>x \<in> F. f x \<le> p x"  by (rule abs_ineq_iff [THEN iffD1])
   6.454 +hence "\<exists>g. is_linearform E g \<and> (\<forall>x \<in> F. g x = f x)
   6.455 +          \<and> (\<forall>x \<in> E. g x \<le> p x)"
   6.456  by (simp! only: HahnBanach)
   6.457 -thus ?thesis 
   6.458 +thus ?thesis
   6.459  proof (elim exE conjE)
   6.460 -fix g assume "is_linearform E g" "\<forall>x \<in> F. g x = f x" 
   6.461 -              "\<forall>x \<in> E. g x <= p x"
   6.462 -hence "\<forall>x \<in> E. |g x| <= p x"
   6.463 +fix g assume "is_linearform E g"  "\<forall>x \<in> F. g x = f x"
   6.464 +              "\<forall>x \<in> E. g x \<le> p x"
   6.465 +hence "\<forall>x \<in> E. \<bar>g x\<bar> \<le> p x"
   6.466    by (simp! add: abs_ineq_iff [OF subspace_refl])
   6.467  thus ?thesis by (intro exI conjI)
   6.468  qed
   6.469 @@ -344,170 +337,179 @@
   6.470  
   6.471  subsection {* The Hahn-Banach Theorem for normed spaces *}
   6.472  
   6.473 -text {* Every continuous linear form $f$ on a subspace $F$ of a
   6.474 -norm space $E$, can be extended to a continuous linear form $g$ on
   6.475 -$E$ such that $\fnorm{f} = \fnorm {g}$. *}
   6.476 +text {*
   6.477 +  Every continuous linear form @{text f} on a subspace @{text F} of a
   6.478 +  norm space @{text E}, can be extended to a continuous linear form
   6.479 +  @{text g} on @{text E} such that @{text "\<parallel>f\<parallel> = \<parallel>g\<parallel>"}.
   6.480 +*}
   6.481  
   6.482  theorem norm_HahnBanach:
   6.483 -"[| is_normed_vectorspace E norm; is_subspace F E; 
   6.484 -is_linearform F f; is_continuous F norm f |] 
   6.485 -==> \<exists>g. is_linearform E g
   6.486 -     \<and> is_continuous E norm g 
   6.487 -     \<and> (\<forall>x \<in> F. g x = f x) 
   6.488 +  "is_normed_vectorspace E norm \<Longrightarrow> is_subspace F E
   6.489 +  \<Longrightarrow> is_linearform F f \<Longrightarrow> is_continuous F norm f
   6.490 +  \<Longrightarrow> \<exists>g. is_linearform E g
   6.491 +     \<and> is_continuous E norm g
   6.492 +     \<and> (\<forall>x \<in> F. g x = f x)
   6.493       \<and> \<parallel>g\<parallel>E,norm = \<parallel>f\<parallel>F,norm"
   6.494  proof -
   6.495  assume e_norm: "is_normed_vectorspace E norm"
   6.496 -assume f: "is_subspace F E" "is_linearform F f"
   6.497 +assume f: "is_subspace F E"  "is_linearform F f"
   6.498  assume f_cont: "is_continuous F norm f"
   6.499  have e: "is_vectorspace E" ..
   6.500  hence f_norm: "is_normed_vectorspace F norm" ..
   6.501  
   6.502 -txt{* We define a function $p$ on $E$ as follows:
   6.503 -\begin{matharray}{l}
   6.504 -p \: x = \fnorm f \cdot \norm x\\
   6.505 -\end{matharray}
   6.506 +txt{*
   6.507 +  We define a function @{text p} on @{text E} as follows:
   6.508 +  @{text "p x = \<parallel>f\<parallel> \<cdot> \<parallel>x\<parallel>"}
   6.509  *}
   6.510  
   6.511 -def p == "\<lambda>x. \<parallel>f\<parallel>F,norm * norm x"
   6.512 +def p \<equiv> "\<lambda>x. \<parallel>f\<parallel>F,norm * norm x"
   6.513  
   6.514 -txt{* $p$ is a seminorm on $E$: *}
   6.515 +txt {* @{text p} is a seminorm on @{text E}: *}
   6.516  
   6.517  have q: "is_seminorm E p"
   6.518  proof
   6.519 -fix x y a assume "x \<in> E" "y \<in> E"
   6.520 +fix x y a assume "x \<in> E"  "y \<in> E"
   6.521  
   6.522 -txt{* $p$ is positive definite: *}
   6.523 +txt {* @{text p} is positive definite: *}
   6.524  
   6.525 -show "#0 <= p x"
   6.526 +show "#0 \<le> p x"
   6.527  proof (unfold p_def, rule real_le_mult_order1a)
   6.528 -  from f_cont f_norm show "#0 <= \<parallel>f\<parallel>F,norm" ..
   6.529 -  show "#0 <= norm x" ..
   6.530 +  from f_cont f_norm show "#0 \<le> \<parallel>f\<parallel>F,norm" ..
   6.531 +  show "#0 \<le> norm x" ..
   6.532  qed
   6.533  
   6.534 -txt{* $p$ is absolutely homogenous: *}
   6.535 +txt {* @{text p} is absolutely homogenous: *}
   6.536  
   6.537 -show "p (a \<cdot> x) = |a| * p x"
   6.538 -proof - 
   6.539 +show "p (a \<cdot> x) = \<bar>a\<bar> * p x"
   6.540 +proof -
   6.541    have "p (a \<cdot> x) = \<parallel>f\<parallel>F,norm * norm (a \<cdot> x)"
   6.542      by (simp!)
   6.543 -  also have "norm (a \<cdot> x) = |a| * norm x" 
   6.544 +  also have "norm (a \<cdot> x) = \<bar>a\<bar> * norm x"
   6.545      by (rule normed_vs_norm_abs_homogenous)
   6.546 -  also have "\<parallel>f\<parallel>F,norm * ( |a| * norm x ) 
   6.547 -    = |a| * (\<parallel>f\<parallel>F,norm * norm x)"
   6.548 +  also have "\<parallel>f\<parallel>F,norm * (\<bar>a\<bar> * norm x )
   6.549 +    = \<bar>a\<bar> * (\<parallel>f\<parallel>F,norm * norm x)"
   6.550      by (simp! only: real_mult_left_commute)
   6.551 -  also have "... = |a| * p x" by (simp!)
   6.552 +  also have "... = \<bar>a\<bar> * p x" by (simp!)
   6.553    finally show ?thesis .
   6.554  qed
   6.555  
   6.556 -txt{* Furthermore, $p$ is subadditive: *}
   6.557 +txt {* Furthermore, @{text p} is subadditive: *}
   6.558  
   6.559 -show "p (x + y) <= p x + p y"
   6.560 +show "p (x + y) \<le> p x + p y"
   6.561  proof -
   6.562    have "p (x + y) = \<parallel>f\<parallel>F,norm * norm (x + y)"
   6.563      by (simp!)
   6.564 -  also 
   6.565 -  have "... <= \<parallel>f\<parallel>F,norm * (norm x + norm y)"
   6.566 +  also
   6.567 +  have "... \<le> \<parallel>f\<parallel>F,norm * (norm x + norm y)"
   6.568    proof (rule real_mult_le_le_mono1a)
   6.569 -    from f_cont f_norm show "#0 <= \<parallel>f\<parallel>F,norm" ..
   6.570 -    show "norm (x + y) <= norm x + norm y" ..
   6.571 +    from f_cont f_norm show "#0 \<le> \<parallel>f\<parallel>F,norm" ..
   6.572 +    show "norm (x + y) \<le> norm x + norm y" ..
   6.573    qed
   6.574 -  also have "... = \<parallel>f\<parallel>F,norm * norm x 
   6.575 +  also have "... = \<parallel>f\<parallel>F,norm * norm x
   6.576                      + \<parallel>f\<parallel>F,norm * norm y"
   6.577      by (simp! only: real_add_mult_distrib2)
   6.578    finally show ?thesis by (simp!)
   6.579  qed
   6.580  qed
   6.581  
   6.582 -txt{* $f$ is bounded by $p$. *} 
   6.583 +txt {* @{text f} is bounded by @{text p}. *}
   6.584  
   6.585 -have "\<forall>x \<in> F. |f x| <= p x"
   6.586 +have "\<forall>x \<in> F. \<bar>f x\<bar> \<le> p x"
   6.587  proof
   6.588  fix x assume "x \<in> F"
   6.589 - from f_norm show "|f x| <= p x" 
   6.590 + from f_norm show "\<bar>f x\<bar> \<le> p x"
   6.591     by (simp! add: norm_fx_le_norm_f_norm_x)
   6.592  qed
   6.593  
   6.594 -txt{* Using the fact that $p$ is a seminorm and 
   6.595 -$f$ is bounded by $p$ we can apply the Hahn-Banach Theorem 
   6.596 -for real vector spaces. 
   6.597 -So $f$ can be extended in a norm-preserving way to some function
   6.598 -$g$ on the whole vector space $E$. *}
   6.599 +txt {*
   6.600 +  Using the fact that @{text p} is a seminorm and @{text f} is bounded
   6.601 +  by @{text p} we can apply the Hahn-Banach Theorem for real vector
   6.602 +  spaces. So @{text f} can be extended in a norm-preserving way to
   6.603 +  some function @{text g} on the whole vector space @{text E}.
   6.604 +*}
   6.605  
   6.606 -with e f q 
   6.607 -have "\<exists>g. is_linearform E g \<and> (\<forall>x \<in> F. g x = f x) 
   6.608 -        \<and> (\<forall>x \<in> E. |g x| <= p x)"
   6.609 +with e f q
   6.610 +have "\<exists>g. is_linearform E g \<and> (\<forall>x \<in> F. g x = f x)
   6.611 +        \<and> (\<forall>x \<in> E. \<bar>g x\<bar> \<le> p x)"
   6.612  by (simp! add: abs_HahnBanach)
   6.613  
   6.614  thus ?thesis
   6.615 -proof (elim exE conjE) 
   6.616 +proof (elim exE conjE)
   6.617  fix g
   6.618 -assume "is_linearform E g" and a: "\<forall>x \<in> F. g x = f x" 
   6.619 -   and b: "\<forall>x \<in> E. |g x| <= p x"
   6.620 +assume "is_linearform E g" and a: "\<forall>x \<in> F. g x = f x"
   6.621 +   and b: "\<forall>x \<in> E. \<bar>g x\<bar> \<le> p x"
   6.622  
   6.623 -show "\<exists>g. is_linearform E g 
   6.624 -        \<and> is_continuous E norm g 
   6.625 -        \<and> (\<forall>x \<in> F. g x = f x) 
   6.626 +show "\<exists>g. is_linearform E g
   6.627 +        \<and> is_continuous E norm g
   6.628 +        \<and> (\<forall>x \<in> F. g x = f x)
   6.629          \<and> \<parallel>g\<parallel>E,norm = \<parallel>f\<parallel>F,norm"
   6.630  proof (intro exI conjI)
   6.631  
   6.632 -txt{* We furthermore have to show that 
   6.633 -$g$ is also continuous: *}
   6.634 +txt {*
   6.635 +  We furthermore have to show that @{text g} is also continuous:
   6.636 +*}
   6.637  
   6.638    show g_cont: "is_continuous E norm g"
   6.639    proof
   6.640      fix x assume "x \<in> E"
   6.641 -    with b show "|g x| <= \<parallel>f\<parallel>F,norm * norm x"
   6.642 -      by (simp add: p_def) 
   6.643 -  qed 
   6.644 +    with b show "\<bar>g x\<bar> \<le> \<parallel>f\<parallel>F,norm * norm x"
   6.645 +      by (simp add: p_def)
   6.646 +  qed
   6.647  
   6.648 -  txt {* To complete the proof, we show that 
   6.649 -  $\fnorm g = \fnorm f$. \label{order_antisym} *}
   6.650 +  txt {*
   6.651 +    To complete the proof, we show that
   6.652 +    @{text "\<parallel>g\<parallel> = \<parallel>f\<parallel>"}. \label{order_antisym} *}
   6.653  
   6.654    show "\<parallel>g\<parallel>E,norm = \<parallel>f\<parallel>F,norm"
   6.655      (is "?L = ?R")
   6.656    proof (rule order_antisym)
   6.657  
   6.658 -    txt{* First we show $\fnorm g \leq \fnorm f$.  The function norm
   6.659 -    $\fnorm g$ is defined as the smallest $c\in\bbbR$ such that
   6.660 -    \begin{matharray}{l}
   6.661 -    \All {x\in E} {|g\ap x| \leq c \cdot \norm x}
   6.662 -    \end{matharray}
   6.663 -    Furthermore holds
   6.664 -    \begin{matharray}{l}
   6.665 -    \All {x\in E} {|g\ap x| \leq \fnorm f \cdot \norm x}
   6.666 -    \end{matharray}
   6.667 +    txt {*
   6.668 +      First we show @{text "\<parallel>g\<parallel> \<le> \<parallel>f\<parallel>"}.  The function norm @{text
   6.669 +      "\<parallel>g\<parallel>"} is defined as the smallest @{text "c \<in> \<real>"} such that
   6.670 +      \begin{center}
   6.671 +      \begin{tabular}{l}
   6.672 +      @{text "\<forall>x \<in> E. \<bar>g x\<bar> \<le> c \<cdot> \<parallel>x\<parallel>"}
   6.673 +      \end{tabular}
   6.674 +      \end{center}
   6.675 +      \noindent Furthermore holds
   6.676 +      \begin{center}
   6.677 +      \begin{tabular}{l}
   6.678 +      @{text "\<forall>x \<in> E. \<bar>g x\<bar> \<le> \<parallel>f\<parallel> \<cdot> \<parallel>x\<parallel>"}
   6.679 +      \end{tabular}
   6.680 +      \end{center}
   6.681      *}
   6.682 - 
   6.683 -    have "\<forall>x \<in> E. |g x| <= \<parallel>f\<parallel>F,norm * norm x"
   6.684 +
   6.685 +    have "\<forall>x \<in> E. \<bar>g x\<bar> \<le> \<parallel>f\<parallel>F,norm * norm x"
   6.686      proof
   6.687 -      fix x assume "x \<in> E" 
   6.688 -      show "|g x| <= \<parallel>f\<parallel>F,norm * norm x"
   6.689 +      fix x assume "x \<in> E"
   6.690 +      show "\<bar>g x\<bar> \<le> \<parallel>f\<parallel>F,norm * norm x"
   6.691          by (simp!)
   6.692      qed
   6.693  
   6.694 -    with g_cont e_norm show "?L <= ?R"
   6.695 +    with g_cont e_norm show "?L \<le> ?R"
   6.696      proof (rule fnorm_le_ub)
   6.697 -      from f_cont f_norm show "#0 <= \<parallel>f\<parallel>F,norm" ..
   6.698 +      from f_cont f_norm show "#0 \<le> \<parallel>f\<parallel>F,norm" ..
   6.699      qed
   6.700  
   6.701 -    txt{* The other direction is achieved by a similar 
   6.702 +    txt{* The other direction is achieved by a similar
   6.703      argument. *}
   6.704  
   6.705 -    have "\<forall>x \<in> F. |f x| <= \<parallel>g\<parallel>E,norm * norm x"
   6.706 +    have "\<forall>x \<in> F. \<bar>f x\<bar> \<le> \<parallel>g\<parallel>E,norm * norm x"
   6.707      proof
   6.708 -      fix x assume "x \<in> F" 
   6.709 +      fix x assume "x \<in> F"
   6.710        from a have "g x = f x" ..
   6.711 -      hence "|f x| = |g x|" by simp
   6.712 +      hence "\<bar>f x\<bar> = \<bar>g x\<bar>" by simp
   6.713        also from g_cont
   6.714 -      have "... <= \<parallel>g\<parallel>E,norm * norm x"
   6.715 +      have "... \<le> \<parallel>g\<parallel>E,norm * norm x"
   6.716        proof (rule norm_fx_le_norm_f_norm_x)
   6.717          show "x \<in> E" ..
   6.718        qed
   6.719 -      finally show "|f x| <= \<parallel>g\<parallel>E,norm * norm x" .
   6.720 -    qed 
   6.721 -    thus "?R <= ?L" 
   6.722 +      finally show "\<bar>f x\<bar> \<le> \<parallel>g\<parallel>E,norm * norm x" .
   6.723 +    qed
   6.724 +    thus "?R \<le> ?L"
   6.725      proof (rule fnorm_le_ub [OF f_cont f_norm])
   6.726 -      from g_cont show "#0 <= \<parallel>g\<parallel>E,norm" ..
   6.727 +      from g_cont show "#0 \<le> \<parallel>g\<parallel>E,norm" ..
   6.728      qed
   6.729    qed
   6.730  qed
     7.1 --- a/src/HOL/Real/HahnBanach/HahnBanachExtLemmas.thy	Sat Dec 16 21:41:14 2000 +0100
     7.2 +++ b/src/HOL/Real/HahnBanach/HahnBanachExtLemmas.thy	Sat Dec 16 21:41:51 2000 +0100
     7.3 @@ -7,155 +7,162 @@
     7.4  
     7.5  theory HahnBanachExtLemmas = FunctionNorm:
     7.6  
     7.7 -text{* In this section the following context is presumed.
     7.8 -Let $E$ be a real vector space with a 
     7.9 -seminorm $q$ on $E$. $F$ is a subspace of $E$ and $f$ a linear 
    7.10 -function on $F$. We consider a subspace $H$ of $E$ that is a 
    7.11 -superspace of $F$ and a linear form $h$ on $H$. $H$ is a not equal 
    7.12 -to $E$ and $x_0$ is an element in $E \backslash H$.
    7.13 -$H$ is extended to the direct sum  $H' = H + \idt{lin}\ap x_0$, so for
    7.14 -any $x\in H'$ the decomposition of $x = y + a \mult x$ 
    7.15 -with $y\in H$ is unique. $h'$ is defined on $H'$ by  
    7.16 -$h'\ap x = h\ap y + a \cdot \xi$ for a certain $\xi$.
    7.17 +text {*
    7.18 +  In this section the following context is presumed.  Let @{text E} be
    7.19 +  a real vector space with a seminorm @{text q} on @{text E}. @{text
    7.20 +  F} is a subspace of @{text E} and @{text f} a linear function on
    7.21 +  @{text F}. We consider a subspace @{text H} of @{text E} that is a
    7.22 +  superspace of @{text F} and a linear form @{text h} on @{text
    7.23 +  H}. @{text H} is a not equal to @{text E} and @{text "x\<^sub>0"} is
    7.24 +  an element in @{text "E - H"}.  @{text H} is extended to the direct
    7.25 +  sum @{text "H' = H + lin x\<^sub>0"}, so for any @{text "x \<in> H'"}
    7.26 +  the decomposition of @{text "x = y + a \<cdot> x"} with @{text "y \<in> H"} is
    7.27 +  unique. @{text h'} is defined on @{text H'} by
    7.28 +  @{text "h' x = h y + a \<cdot> \<xi>"} for a certain @{text \<xi>}.
    7.29  
    7.30 -Subsequently we show some properties of this extension $h'$ of $h$.
    7.31 -*} 
    7.32 -
    7.33 +  Subsequently we show some properties of this extension @{text h'} of
    7.34 +  @{text h}.
    7.35 +*}
    7.36  
    7.37 -text {* This lemma will be used to show the existence of a linear
    7.38 -extension of $f$ (see page \pageref{ex-xi-use}). 
    7.39 -It is a consequence
    7.40 -of the completeness of $\bbbR$. To show 
    7.41 -\begin{matharray}{l}
    7.42 -\Ex{\xi}{\All {y\in F}{a\ap y \leq \xi \land \xi \leq b\ap y}}
    7.43 -\end{matharray} 
    7.44 -it suffices to show that 
    7.45 -\begin{matharray}{l} \All
    7.46 -{u\in F}{\All {v\in F}{a\ap u \leq b \ap v}} 
    7.47 -\end{matharray} *}
    7.48 +text {*
    7.49 +  This lemma will be used to show the existence of a linear extension
    7.50 +  of @{text f} (see page \pageref{ex-xi-use}). It is a consequence of
    7.51 +  the completeness of @{text \<real>}. To show
    7.52 +  \begin{center}
    7.53 +  \begin{tabular}{l}
    7.54 +  @{text "\<exists>\<xi>. \<forall>y \<in> F. a y \<le> \<xi> \<and> \<xi> \<le> b y"}
    7.55 +  \end{tabular}
    7.56 +  \end{center}
    7.57 +  \noindent it suffices to show that
    7.58 +  \begin{center}
    7.59 +  \begin{tabular}{l}
    7.60 +  @{text "\<forall>u \<in> F. \<forall>v \<in> F. a u \<le> b v"}
    7.61 +  \end{tabular}
    7.62 +  \end{center}
    7.63 +*}
    7.64  
    7.65 -lemma ex_xi: 
    7.66 -  "[| is_vectorspace F; !! u v. [| u \<in> F; v \<in> F |] ==> a u <= b v |]
    7.67 -  ==> \<exists>xi::real. \<forall>y \<in> F. a y <= xi \<and> xi <= b y" 
    7.68 +lemma ex_xi:
    7.69 +  "is_vectorspace F \<Longrightarrow> (\<And>u v. u \<in> F \<Longrightarrow> v \<in> F \<Longrightarrow> a u \<le> b v)
    7.70 +  \<Longrightarrow> \<exists>xi::real. \<forall>y \<in> F. a y \<le> xi \<and> xi \<le> b y"
    7.71  proof -
    7.72    assume vs: "is_vectorspace F"
    7.73 -  assume r: "(!! u v. [| u \<in> F; v \<in> F |] ==> a u <= (b v::real))"
    7.74 +  assume r: "(\<And>u v. u \<in> F \<Longrightarrow> v \<in> F \<Longrightarrow> a u \<le> (b v::real))"
    7.75  
    7.76    txt {* From the completeness of the reals follows:
    7.77 -  The set $S = \{a\: u\dt\: u\in F\}$ has a supremum, if
    7.78 +  The set @{text "S = {a u. u \<in> F}"} has a supremum, if
    7.79    it is non-empty and has an upper bound. *}
    7.80  
    7.81    let ?S = "{a u :: real | u. u \<in> F}"
    7.82  
    7.83 -  have "\<exists>xi. isLub UNIV ?S xi"  
    7.84 +  have "\<exists>xi. isLub UNIV ?S xi"
    7.85    proof (rule reals_complete)
    7.86 -  
    7.87 -    txt {* The set $S$ is non-empty, since $a\ap\zero \in S$: *}
    7.88  
    7.89 -    from vs have "a 0 \<in> ?S" by force
    7.90 +    txt {* The set @{text S} is non-empty, since @{text "a 0 \<in> S"}: *}
    7.91 +
    7.92 +    from vs have "a 0 \<in> ?S" by blast
    7.93      thus "\<exists>X. X \<in> ?S" ..
    7.94  
    7.95 -    txt {* $b\ap \zero$ is an upper bound of $S$: *}
    7.96 +    txt {* @{text "b 0"} is an upper bound of @{text S}: *}
    7.97  
    7.98 -    show "\<exists>Y. isUb UNIV ?S Y" 
    7.99 -    proof 
   7.100 +    show "\<exists>Y. isUb UNIV ?S Y"
   7.101 +    proof
   7.102        show "isUb UNIV ?S (b 0)"
   7.103        proof (intro isUbI setleI ballI)
   7.104          show "b 0 \<in> UNIV" ..
   7.105        next
   7.106  
   7.107 -        txt {* Every element $y\in S$ is less than $b\ap \zero$: *}
   7.108 +        txt {* Every element @{text "y \<in> S"} is less than @{text "b 0"}: *}
   7.109  
   7.110 -        fix y assume y: "y \<in> ?S" 
   7.111 +        fix y assume y: "y \<in> ?S"
   7.112          from y have "\<exists>u \<in> F. y = a u" by fast
   7.113 -        thus "y <= b 0" 
   7.114 +        thus "y \<le> b 0"
   7.115          proof
   7.116 -          fix u assume "u \<in> F" 
   7.117 +          fix u assume "u \<in> F"
   7.118            assume "y = a u"
   7.119 -          also have "a u <= b 0" by (rule r) (simp!)+
   7.120 +          also have "a u \<le> b 0" by (rule r) (simp!)+
   7.121            finally show ?thesis .
   7.122          qed
   7.123        qed
   7.124      qed
   7.125    qed
   7.126  
   7.127 -  thus "\<exists>xi. \<forall>y \<in> F. a y <= xi \<and> xi <= b y" 
   7.128 +  thus "\<exists>xi. \<forall>y \<in> F. a y \<le> xi \<and> xi \<le> b y"
   7.129    proof (elim exE)
   7.130 -    fix xi assume "isLub UNIV ?S xi" 
   7.131 +    fix xi assume "isLub UNIV ?S xi"
   7.132      show ?thesis
   7.133 -    proof (intro exI conjI ballI) 
   7.134 -   
   7.135 -      txt {* For all $y\in F$ holds $a\ap y \leq \xi$: *}
   7.136 -     
   7.137 +    proof (intro exI conjI ballI)
   7.138 +
   7.139 +      txt {* For all @{text "y \<in> F"} holds @{text "a y \<le> \<xi>"}: *}
   7.140 +
   7.141        fix y assume y: "y \<in> F"
   7.142 -      show "a y <= xi"    
   7.143 -      proof (rule isUbD)  
   7.144 +      show "a y \<le> xi"
   7.145 +      proof (rule isUbD)
   7.146          show "isUb UNIV ?S xi" ..
   7.147 -      qed (force!)
   7.148 +      qed (blast!)
   7.149      next
   7.150  
   7.151 -      txt {* For all $y\in F$ holds $\xi\leq b\ap y$: *}
   7.152 +      txt {* For all @{text "y \<in> F"} holds @{text "\<xi> \<le> b y"}: *}
   7.153  
   7.154        fix y assume "y \<in> F"
   7.155 -      show "xi <= b y"  
   7.156 +      show "xi \<le> b y"
   7.157        proof (intro isLub_le_isUb isUbI setleI)
   7.158          show "b y \<in> UNIV" ..
   7.159 -        show "\<forall>ya \<in> ?S. ya <= b y" 
   7.160 +        show "\<forall>ya \<in> ?S. ya \<le> b y"
   7.161          proof
   7.162            fix au assume au: "au \<in> ?S "
   7.163            hence "\<exists>u \<in> F. au = a u" by fast
   7.164 -          thus "au <= b y"
   7.165 +          thus "au \<le> b y"
   7.166            proof
   7.167 -            fix u assume "u \<in> F" assume "au = a u"  
   7.168 -            also have "... <= b y" by (rule r)
   7.169 +            fix u assume "u \<in> F" assume "au = a u"
   7.170 +            also have "... \<le> b y" by (rule r)
   7.171              finally show ?thesis .
   7.172            qed
   7.173          qed
   7.174 -      qed 
   7.175 +      qed
   7.176      qed
   7.177    qed
   7.178  qed
   7.179  
   7.180 -text{* \medskip The function $h'$ is defined as a
   7.181 -$h'\ap x = h\ap y + a\cdot \xi$ where $x = y + a\mult \xi$
   7.182 -is a linear extension of $h$ to $H'$. *}
   7.183 +text {*
   7.184 +  \medskip The function @{text h'} is defined as a
   7.185 +  @{text "h' x = h y + a \<cdot> \<xi>"} where @{text "x = y + a \<cdot> \<xi>"} is a
   7.186 +  linear extension of @{text h} to @{text H'}. *}
   7.187  
   7.188 -lemma h'_lf: 
   7.189 -  "[| h' == (\<lambda>x. let (y, a) = SOME (y, a). x = y + a \<cdot> x0 \<and> y \<in> H 
   7.190 -                in h y + a * xi);
   7.191 -  H' == H + lin x0; is_subspace H E; is_linearform H h; x0 \<notin> H; 
   7.192 -  x0 \<in> E; x0 \<noteq> 0; is_vectorspace E |]
   7.193 -  ==> is_linearform H' h'"
   7.194 +lemma h'_lf:
   7.195 +  "h' \<equiv> \<lambda>x. let (y, a) = SOME (y, a). x = y + a \<cdot> x0 \<and> y \<in> H in h y + a * xi
   7.196 +  \<Longrightarrow> H' \<equiv> H + lin x0 \<Longrightarrow> is_subspace H E \<Longrightarrow> is_linearform H h \<Longrightarrow> x0 \<notin> H
   7.197 +  \<Longrightarrow> x0 \<in> E \<Longrightarrow> x0 \<noteq> 0 \<Longrightarrow> is_vectorspace E
   7.198 +  \<Longrightarrow> is_linearform H' h'"
   7.199  proof -
   7.200 -  assume h'_def: 
   7.201 -    "h' == (\<lambda>x. let (y, a) = SOME (y, a). x = y + a \<cdot> x0 \<and> y \<in> H 
   7.202 +  assume h'_def:
   7.203 +    "h' \<equiv> (\<lambda>x. let (y, a) = SOME (y, a). x = y + a \<cdot> x0 \<and> y \<in> H
   7.204                 in h y + a * xi)"
   7.205 -    and H'_def: "H' == H + lin x0" 
   7.206 -    and vs: "is_subspace H E" "is_linearform H h" "x0 \<notin> H"
   7.207 -      "x0 \<noteq> 0" "x0 \<in> E" "is_vectorspace E"
   7.208 +    and H'_def: "H' \<equiv> H + lin x0"
   7.209 +    and vs: "is_subspace H E"  "is_linearform H h"  "x0 \<notin> H"
   7.210 +      "x0 \<noteq> 0"  "x0 \<in> E"  "is_vectorspace E"
   7.211  
   7.212 -  have h': "is_vectorspace H'" 
   7.213 +  have h': "is_vectorspace H'"
   7.214    proof (unfold H'_def, rule vs_sum_vs)
   7.215      show "is_subspace (lin x0) E" ..
   7.216 -  qed 
   7.217 +  qed
   7.218  
   7.219    show ?thesis
   7.220    proof
   7.221 -    fix x1 x2 assume x1: "x1 \<in> H'" and x2: "x2 \<in> H'" 
   7.222 +    fix x1 x2 assume x1: "x1 \<in> H'" and x2: "x2 \<in> H'"
   7.223  
   7.224 -    txt{* We now have to show that $h'$ is additive, i.~e.\
   7.225 -    $h' \ap (x_1\plus x_2) = h'\ap x_1 + h'\ap x_2$
   7.226 -    for $x_1, x_2\in H$. *} 
   7.227 +    txt {* We now have to show that @{text h'} is additive, i.~e.\
   7.228 +      @{text "h' (x\<^sub>1 + x\<^sub>2) = h' x\<^sub>1 + h' x\<^sub>2"} for
   7.229 +      @{text "x\<^sub>1, x\<^sub>2 \<in> H"}. *}
   7.230  
   7.231 -    have x1x2: "x1 + x2 \<in> H'" 
   7.232 -      by (rule vs_add_closed, rule h') 
   7.233 -    from x1 
   7.234 -    have ex_x1: "\<exists>y1 a1. x1 = y1 + a1 \<cdot> x0  \<and> y1 \<in> H" 
   7.235 +    have x1x2: "x1 + x2 \<in> H'"
   7.236 +      by (rule vs_add_closed, rule h')
   7.237 +    from x1
   7.238 +    have ex_x1: "\<exists>y1 a1. x1 = y1 + a1 \<cdot> x0  \<and> y1 \<in> H"
   7.239        by (unfold H'_def vs_sum_def lin_def) fast
   7.240 -    from x2 
   7.241 -    have ex_x2: "\<exists>y2 a2. x2 = y2 + a2 \<cdot> x0 \<and> y2 \<in> H" 
   7.242 +    from x2
   7.243 +    have ex_x2: "\<exists>y2 a2. x2 = y2 + a2 \<cdot> x0 \<and> y2 \<in> H"
   7.244        by (unfold H'_def vs_sum_def lin_def) fast
   7.245 -    from x1x2 
   7.246 +    from x1x2
   7.247      have ex_x1x2: "\<exists>y a. x1 + x2 = y + a \<cdot> x0 \<and> y \<in> H"
   7.248        by (unfold H'_def vs_sum_def lin_def) fast
   7.249  
   7.250 @@ -164,181 +171,178 @@
   7.251      proof (elim exE conjE)
   7.252        fix y1 y2 y a1 a2 a
   7.253        assume y1: "x1 = y1 + a1 \<cdot> x0"     and y1': "y1 \<in> H"
   7.254 -         and y2: "x2 = y2 + a2 \<cdot> x0"     and y2': "y2 \<in> H" 
   7.255 -         and y: "x1 + x2 = y + a \<cdot> x0"   and y':  "y  \<in> H" 
   7.256 +         and y2: "x2 = y2 + a2 \<cdot> x0"     and y2': "y2 \<in> H"
   7.257 +         and y: "x1 + x2 = y + a \<cdot> x0"   and y':  "y  \<in> H"
   7.258        txt {* \label{decomp-H-use}*}
   7.259 -      have ya: "y1 + y2 = y \<and> a1 + a2 = a" 
   7.260 +      have ya: "y1 + y2 = y \<and> a1 + a2 = a"
   7.261        proof (rule decomp_H')
   7.262 -        show "y1 + y2 + (a1 + a2) \<cdot> x0 = y + a \<cdot> x0" 
   7.263 +        show "y1 + y2 + (a1 + a2) \<cdot> x0 = y + a \<cdot> x0"
   7.264            by (simp! add: vs_add_mult_distrib2 [of E])
   7.265          show "y1 + y2 \<in> H" ..
   7.266        qed
   7.267  
   7.268        have "h' (x1 + x2) = h y + a * xi"
   7.269 -	by (rule h'_definite)
   7.270 -      also have "... = h (y1 + y2) + (a1 + a2) * xi" 
   7.271 +        by (rule h'_definite)
   7.272 +      also have "... = h (y1 + y2) + (a1 + a2) * xi"
   7.273          by (simp add: ya)
   7.274 -      also from vs y1' y2' 
   7.275 -      have "... = h y1 + h y2 + a1 * xi + a2 * xi" 
   7.276 -	by (simp add: linearform_add [of H] 
   7.277 +      also from vs y1' y2'
   7.278 +      have "... = h y1 + h y2 + a1 * xi + a2 * xi"
   7.279 +        by (simp add: linearform_add [of H]
   7.280                        real_add_mult_distrib)
   7.281 -      also have "... = (h y1 + a1 * xi) + (h y2 + a2 * xi)" 
   7.282 +      also have "... = (h y1 + a1 * xi) + (h y2 + a2 * xi)"
   7.283          by simp
   7.284        also have "h y1 + a1 * xi = h' x1"
   7.285          by (rule h'_definite [symmetric])
   7.286 -      also have "h y2 + a2 * xi = h' x2" 
   7.287 +      also have "h y2 + a2 * xi = h' x2"
   7.288          by (rule h'_definite [symmetric])
   7.289        finally show ?thesis .
   7.290      qed
   7.291 - 
   7.292 -    txt{* We further have to show that $h'$ is multiplicative, 
   7.293 -    i.~e.\ $h'\ap (c \mult x_1) = c \cdot h'\ap x_1$
   7.294 -    for $x\in H$ and $c\in \bbbR$. 
   7.295 -    *} 
   7.296  
   7.297 -  next  
   7.298 -    fix c x1 assume x1: "x1 \<in> H'"    
   7.299 +    txt {* We further have to show that @{text h'} is multiplicative,
   7.300 +    i.~e.\ @{text "h' (c \<cdot> x\<^sub>1) = c \<cdot> h' x\<^sub>1"} for @{text "x \<in> H"}
   7.301 +    and @{text "c \<in> \<real>"}. *}
   7.302 +
   7.303 +  next
   7.304 +    fix c x1 assume x1: "x1 \<in> H'"
   7.305      have ax1: "c \<cdot> x1 \<in> H'"
   7.306        by (rule vs_mult_closed, rule h')
   7.307 -    from x1 
   7.308 -    have ex_x: "!! x. x\<in> H' ==> \<exists>y a. x = y + a \<cdot> x0 \<and> y \<in> H"
   7.309 +    from x1
   7.310 +    have ex_x: "\<And>x. x\<in> H' \<Longrightarrow> \<exists>y a. x = y + a \<cdot> x0 \<and> y \<in> H"
   7.311        by (unfold H'_def vs_sum_def lin_def) fast
   7.312  
   7.313      from x1 have ex_x1: "\<exists>y1 a1. x1 = y1 + a1 \<cdot> x0 \<and> y1 \<in> H"
   7.314        by (unfold H'_def vs_sum_def lin_def) fast
   7.315      with ex_x [of "c \<cdot> x1", OF ax1]
   7.316 -    show "h' (c \<cdot> x1) = c * (h' x1)"  
   7.317 +    show "h' (c \<cdot> x1) = c * (h' x1)"
   7.318      proof (elim exE conjE)
   7.319 -      fix y1 y a1 a 
   7.320 +      fix y1 y a1 a
   7.321        assume y1: "x1 = y1 + a1 \<cdot> x0"     and y1': "y1 \<in> H"
   7.322 -        and y: "c \<cdot> x1 = y  + a \<cdot> x0"    and y': "y \<in> H" 
   7.323 +        and y: "c \<cdot> x1 = y  + a \<cdot> x0"    and y': "y \<in> H"
   7.324  
   7.325 -      have ya: "c \<cdot> y1 = y \<and> c * a1 = a" 
   7.326 -      proof (rule decomp_H') 
   7.327 -	show "c \<cdot> y1 + (c * a1) \<cdot> x0 = y + a \<cdot> x0" 
   7.328 +      have ya: "c \<cdot> y1 = y \<and> c * a1 = a"
   7.329 +      proof (rule decomp_H')
   7.330 +        show "c \<cdot> y1 + (c * a1) \<cdot> x0 = y + a \<cdot> x0"
   7.331            by (simp! add: vs_add_mult_distrib1)
   7.332          show "c \<cdot> y1 \<in> H" ..
   7.333        qed
   7.334  
   7.335 -      have "h' (c \<cdot> x1) = h y + a * xi" 
   7.336 -	by (rule h'_definite)
   7.337 +      have "h' (c \<cdot> x1) = h y + a * xi"
   7.338 +        by (rule h'_definite)
   7.339        also have "... = h (c \<cdot> y1) + (c * a1) * xi"
   7.340          by (simp add: ya)
   7.341 -      also from vs y1' have "... = c * h y1 + c * a1 * xi" 
   7.342 -	by (simp add: linearform_mult [of H])
   7.343 -      also from vs y1' have "... = c * (h y1 + a1 * xi)" 
   7.344 -	by (simp add: real_add_mult_distrib2 real_mult_assoc)
   7.345 -      also have "h y1 + a1 * xi = h' x1" 
   7.346 +      also from vs y1' have "... = c * h y1 + c * a1 * xi"
   7.347 +        by (simp add: linearform_mult [of H])
   7.348 +      also from vs y1' have "... = c * (h y1 + a1 * xi)"
   7.349 +        by (simp add: real_add_mult_distrib2 real_mult_assoc)
   7.350 +      also have "h y1 + a1 * xi = h' x1"
   7.351          by (rule h'_definite [symmetric])
   7.352        finally show ?thesis .
   7.353      qed
   7.354    qed
   7.355  qed
   7.356  
   7.357 -text{* \medskip The linear extension $h'$ of $h$
   7.358 -is bounded by the seminorm $p$. *}
   7.359 +text {* \medskip The linear extension @{text h'} of @{text h}
   7.360 +is bounded by the seminorm @{text p}. *}
   7.361  
   7.362  lemma h'_norm_pres:
   7.363 -  "[| h' == (\<lambda>x. let (y, a) = SOME (y, a). x = y + a \<cdot> x0 \<and> y \<in> H 
   7.364 -                 in h y + a * xi);
   7.365 -  H' == H + lin x0; x0 \<notin> H; x0 \<in> E; x0 \<noteq> 0; is_vectorspace E; 
   7.366 -  is_subspace H E; is_seminorm E p; is_linearform H h; 
   7.367 -  \<forall>y \<in> H. h y <= p y; 
   7.368 -  \<forall>y \<in> H. - p (y + x0) - h y <= xi \<and> xi <= p (y + x0) - h y |]
   7.369 -   ==> \<forall>x \<in> H'. h' x <= p x" 
   7.370 -proof 
   7.371 -  assume h'_def: 
   7.372 -    "h' == (\<lambda>x. let (y, a) = SOME (y, a). x = y + a \<cdot> x0 \<and> y \<in> H 
   7.373 +  "h' \<equiv> \<lambda>x. let (y, a) = SOME (y, a). x = y + a \<cdot> x0 \<and> y \<in> H in h y + a * xi
   7.374 +  \<Longrightarrow> H' \<equiv> H + lin x0 \<Longrightarrow> x0 \<notin> H \<Longrightarrow> x0 \<in> E \<Longrightarrow> x0 \<noteq> 0 \<Longrightarrow> is_vectorspace E
   7.375 +  \<Longrightarrow> is_subspace H E \<Longrightarrow> is_seminorm E p \<Longrightarrow> is_linearform H h
   7.376 +  \<Longrightarrow> \<forall>y \<in> H. h y \<le> p y
   7.377 +  \<Longrightarrow> \<forall>y \<in> H. - p (y + x0) - h y \<le> xi \<and> xi \<le> p (y + x0) - h y
   7.378 +  \<Longrightarrow> \<forall>x \<in> H'. h' x \<le> p x"
   7.379 +proof
   7.380 +  assume h'_def:
   7.381 +    "h' \<equiv> (\<lambda>x. let (y, a) = SOME (y, a). x = y + a \<cdot> x0 \<and> y \<in> H
   7.382                 in (h y) + a * xi)"
   7.383 -    and H'_def: "H' == H + lin x0" 
   7.384 -    and vs: "x0 \<notin> H" "x0 \<in> E" "x0 \<noteq> 0" "is_vectorspace E" 
   7.385 -            "is_subspace H E" "is_seminorm E p" "is_linearform H h" 
   7.386 -    and a: "\<forall>y \<in> H. h y <= p y"
   7.387 -  presume a1: "\<forall>ya \<in> H. - p (ya + x0) - h ya <= xi"
   7.388 -  presume a2: "\<forall>ya \<in> H. xi <= p (ya + x0) - h ya"
   7.389 -  fix x assume "x \<in> H'" 
   7.390 -  have ex_x: 
   7.391 -    "!! x. x \<in> H' ==> \<exists>y a. x = y + a \<cdot> x0 \<and> y \<in> H"
   7.392 +    and H'_def: "H' \<equiv> H + lin x0"
   7.393 +    and vs: "x0 \<notin> H"  "x0 \<in> E"  "x0 \<noteq> 0"  "is_vectorspace E"
   7.394 +            "is_subspace H E"  "is_seminorm E p"  "is_linearform H h"
   7.395 +    and a: "\<forall>y \<in> H. h y \<le> p y"
   7.396 +  presume a1: "\<forall>ya \<in> H. - p (ya + x0) - h ya \<le> xi"
   7.397 +  presume a2: "\<forall>ya \<in> H. xi \<le> p (ya + x0) - h ya"
   7.398 +  fix x assume "x \<in> H'"
   7.399 +  have ex_x:
   7.400 +    "\<And>x. x \<in> H' \<Longrightarrow> \<exists>y a. x = y + a \<cdot> x0 \<and> y \<in> H"
   7.401      by (unfold H'_def vs_sum_def lin_def) fast
   7.402    have "\<exists>y a. x = y + a \<cdot> x0 \<and> y \<in> H"
   7.403      by (rule ex_x)
   7.404 -  thus "h' x <= p x"
   7.405 +  thus "h' x \<le> p x"
   7.406    proof (elim exE conjE)
   7.407      fix y a assume x: "x = y + a \<cdot> x0" and y: "y \<in> H"
   7.408      have "h' x = h y + a * xi"
   7.409        by (rule h'_definite)
   7.410  
   7.411 -    txt{* Now we show  
   7.412 -    $h\ap y + a \cdot \xi\leq  p\ap (y\plus a \mult x_0)$ 
   7.413 -    by case analysis on $a$. *}
   7.414 +    txt {* Now we show @{text "h y + a \<cdot> \<xi> \<le> p (y + a \<cdot> x\<^sub>0)"}
   7.415 +    by case analysis on @{text a}. *}
   7.416  
   7.417 -    also have "... <= p (y + a \<cdot> x0)"
   7.418 +    also have "... \<le> p (y + a \<cdot> x0)"
   7.419      proof (rule linorder_cases)
   7.420  
   7.421 -      assume z: "a = #0" 
   7.422 +      assume z: "a = #0"
   7.423        with vs y a show ?thesis by simp
   7.424  
   7.425 -    txt {* In the case $a < 0$, we use $a_1$ with $\idt{ya}$ 
   7.426 -    taken as $y/a$: *}
   7.427 +    txt {* In the case @{text "a < 0"}, we use @{text "a\<^sub>1"}
   7.428 +    with @{text ya} taken as @{text "y / a"}: *}
   7.429  
   7.430      next
   7.431        assume lz: "a < #0" hence nz: "a \<noteq> #0" by simp
   7.432 -      from a1 
   7.433 -      have "- p (inverse a \<cdot> y + x0) - h (inverse a \<cdot> y) <= xi"
   7.434 +      from a1
   7.435 +      have "- p (inverse a \<cdot> y + x0) - h (inverse a \<cdot> y) \<le> xi"
   7.436          by (rule bspec) (simp!)
   7.437  
   7.438 -      txt {* The thesis for this case now follows by a short  
   7.439 -      calculation. *}      
   7.440 -      hence "a * xi <= a * (- p (inverse a \<cdot> y + x0) - h (inverse a \<cdot> y))"
   7.441 +      txt {* The thesis for this case now follows by a short
   7.442 +      calculation. *}
   7.443 +      hence "a * xi \<le> a * (- p (inverse a \<cdot> y + x0) - h (inverse a \<cdot> y))"
   7.444          by (rule real_mult_less_le_anti [OF lz])
   7.445 -      also 
   7.446 +      also
   7.447        have "... = - a * (p (inverse a \<cdot> y + x0)) - a * (h (inverse a \<cdot> y))"
   7.448          by (rule real_mult_diff_distrib)
   7.449 -      also from lz vs y 
   7.450 +      also from lz vs y
   7.451        have "- a * (p (inverse a \<cdot> y + x0)) = p (a \<cdot> (inverse a \<cdot> y + x0))"
   7.452          by (simp add: seminorm_abs_homogenous abs_minus_eqI2)
   7.453        also from nz vs y have "... = p (y + a \<cdot> x0)"
   7.454          by (simp add: vs_add_mult_distrib1)
   7.455        also from nz vs y have "a * (h (inverse a \<cdot> y)) =  h y"
   7.456          by (simp add: linearform_mult [symmetric])
   7.457 -      finally have "a * xi <= p (y + a \<cdot> x0) - h y" .
   7.458 +      finally have "a * xi \<le> p (y + a \<cdot> x0) - h y" .
   7.459  
   7.460 -      hence "h y + a * xi <= h y + p (y + a \<cdot> x0) - h y"
   7.461 +      hence "h y + a * xi \<le> h y + p (y + a \<cdot> x0) - h y"
   7.462          by (simp add: real_add_left_cancel_le)
   7.463        thus ?thesis by simp
   7.464  
   7.465 -      txt {* In the case $a > 0$, we use $a_2$ with $\idt{ya}$ 
   7.466 -      taken as $y/a$: *}
   7.467 +      txt {* In the case @{text "a > 0"}, we use @{text "a\<^sub>2"}
   7.468 +        with @{text ya} taken as @{text "y / a"}: *}
   7.469  
   7.470 -    next 
   7.471 +    next
   7.472        assume gz: "#0 < a" hence nz: "a \<noteq> #0" by simp
   7.473 -      from a2 have "xi <= p (inverse a \<cdot> y + x0) - h (inverse a \<cdot> y)"
   7.474 +      from a2 have "xi \<le> p (inverse a \<cdot> y + x0) - h (inverse a \<cdot> y)"
   7.475          by (rule bspec) (simp!)
   7.476  
   7.477        txt {* The thesis for this case follows by a short
   7.478        calculation: *}
   7.479  
   7.480 -      with gz 
   7.481 -      have "a * xi <= a * (p (inverse a \<cdot> y + x0) - h (inverse a \<cdot> y))"
   7.482 +      with gz
   7.483 +      have "a * xi \<le> a * (p (inverse a \<cdot> y + x0) - h (inverse a \<cdot> y))"
   7.484          by (rule real_mult_less_le_mono)
   7.485        also have "... = a * p (inverse a \<cdot> y + x0) - a * h (inverse a \<cdot> y)"
   7.486 -        by (rule real_mult_diff_distrib2) 
   7.487 -      also from gz vs y 
   7.488 +        by (rule real_mult_diff_distrib2)
   7.489 +      also from gz vs y
   7.490        have "a * p (inverse a \<cdot> y + x0) = p (a \<cdot> (inverse a \<cdot> y + x0))"
   7.491          by (simp add: seminorm_abs_homogenous abs_eqI2)
   7.492        also from nz vs y have "... = p (y + a \<cdot> x0)"
   7.493          by (simp add: vs_add_mult_distrib1)
   7.494        also from nz vs y have "a * h (inverse a \<cdot> y) = h y"
   7.495 -        by (simp add: linearform_mult [symmetric]) 
   7.496 -      finally have "a * xi <= p (y + a \<cdot> x0) - h y" .
   7.497 - 
   7.498 -      hence "h y + a * xi <= h y + (p (y + a \<cdot> x0) - h y)"
   7.499 +        by (simp add: linearform_mult [symmetric])
   7.500 +      finally have "a * xi \<le> p (y + a \<cdot> x0) - h y" .
   7.501 +
   7.502 +      hence "h y + a * xi \<le> h y + (p (y + a \<cdot> x0) - h y)"
   7.503          by (simp add: real_add_left_cancel_le)
   7.504        thus ?thesis by simp
   7.505      qed
   7.506      also from x have "... = p x" by simp
   7.507      finally show ?thesis .
   7.508    qed
   7.509 -qed blast+ 
   7.510 +qed blast+
   7.511  
   7.512  end
     8.1 --- a/src/HOL/Real/HahnBanach/HahnBanachLemmas.thy	Sat Dec 16 21:41:14 2000 +0100
     8.2 +++ b/src/HOL/Real/HahnBanach/HahnBanachLemmas.thy	Sat Dec 16 21:41:51 2000 +0100
     8.3 @@ -1,3 +1,4 @@
     8.4 -
     8.5 +(*<*)
     8.6  theory HahnBanachLemmas = HahnBanachSupLemmas + HahnBanachExtLemmas:
     8.7  end
     8.8 +(*>*)
     8.9 \ No newline at end of file
     9.1 --- a/src/HOL/Real/HahnBanach/HahnBanachSupLemmas.thy	Sat Dec 16 21:41:14 2000 +0100
     9.2 +++ b/src/HOL/Real/HahnBanach/HahnBanachSupLemmas.thy	Sat Dec 16 21:41:51 2000 +0100
     9.3 @@ -7,57 +7,59 @@
     9.4  
     9.5  theory HahnBanachSupLemmas = FunctionNorm + ZornLemma:
     9.6  
     9.7 -text{* This section contains some lemmas that will be used in the
     9.8 -proof of the Hahn-Banach Theorem.
     9.9 -In this section the following context is presumed. 
    9.10 -Let $E$ be a real vector space with a seminorm $p$ on $E$. 
    9.11 -$F$ is a subspace of $E$ and $f$ a linear form on $F$. We 
    9.12 -consider a chain $c$ of norm-preserving extensions of $f$, such that
    9.13 -$\Union c = \idt{graph}\ap H\ap h$. 
    9.14 -We will show some properties about the limit function $h$, 
    9.15 -i.e.\ the supremum of the chain $c$.
    9.16 -*} 
    9.17 +text {*
    9.18 +  This section contains some lemmas that will be used in the proof of
    9.19 +  the Hahn-Banach Theorem.  In this section the following context is
    9.20 +  presumed.  Let @{text E} be a real vector space with a seminorm
    9.21 +  @{text p} on @{text E}.  @{text F} is a subspace of @{text E} and
    9.22 +  @{text f} a linear form on @{text F}. We consider a chain @{text c}
    9.23 +  of norm-preserving extensions of @{text f}, such that
    9.24 +  @{text "\<Union>c = graph H h"}.  We will show some properties about the
    9.25 +  limit function @{text h}, i.e.\ the supremum of the chain @{text c}.
    9.26 +*}
    9.27  
    9.28 -text{* Let $c$ be a chain of norm-preserving extensions of the 
    9.29 -function $f$ and let $\idt{graph}\ap H\ap h$ be the supremum of $c$. 
    9.30 -Every element in $H$ is member of
    9.31 -one of the elements of the chain. *}
    9.32 +text {*
    9.33 +  Let @{text c} be a chain of norm-preserving extensions of the
    9.34 +  function @{text f} and let @{text "graph H h"} be the supremum of
    9.35 +  @{text c}.  Every element in @{text H} is member of one of the
    9.36 +  elements of the chain.
    9.37 +*}
    9.38  
    9.39  lemma some_H'h't:
    9.40 -  "[| M = norm_pres_extensions E p F f; c \<in> chain M; 
    9.41 -  graph H h = \<Union>c; x \<in> H |]
    9.42 -   ==> \<exists>H' h'. graph H' h' \<in> c \<and> (x, h x) \<in> graph H' h' 
    9.43 -       \<and> is_linearform H' h' \<and> is_subspace H' E 
    9.44 -       \<and> is_subspace F H' \<and> graph F f \<subseteq> graph H' h' 
    9.45 -       \<and> (\<forall>x \<in> H'. h' x <= p x)"
    9.46 +  "M = norm_pres_extensions E p F f \<Longrightarrow> c \<in> chain M \<Longrightarrow>
    9.47 +  graph H h = \<Union>c \<Longrightarrow> x \<in> H
    9.48 +   \<Longrightarrow> \<exists>H' h'. graph H' h' \<in> c \<and> (x, h x) \<in> graph H' h'
    9.49 +       \<and> is_linearform H' h' \<and> is_subspace H' E
    9.50 +       \<and> is_subspace F H' \<and> graph F f \<subseteq> graph H' h'
    9.51 +       \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
    9.52  proof -
    9.53    assume m: "M = norm_pres_extensions E p F f" and "c \<in> chain M"
    9.54 -     and u: "graph H h = \<Union>c" "x \<in> H"
    9.55 +     and u: "graph H h = \<Union>c"  "x \<in> H"
    9.56  
    9.57    have h: "(x, h x) \<in> graph H h" ..
    9.58    with u have "(x, h x) \<in> \<Union>c" by simp
    9.59 -  hence ex1: "\<exists>g \<in> c. (x, h x) \<in> g" 
    9.60 +  hence ex1: "\<exists>g \<in> c. (x, h x) \<in> g"
    9.61      by (simp only: Union_iff)
    9.62    thus ?thesis
    9.63    proof (elim bexE)
    9.64 -    fix g assume g: "g \<in> c" "(x, h x) \<in> g"
    9.65 +    fix g assume g: "g \<in> c"  "(x, h x) \<in> g"
    9.66      have "c \<subseteq> M" by (rule chainD2)
    9.67      hence "g \<in> M" ..
    9.68      hence "g \<in> norm_pres_extensions E p F f" by (simp only: m)
    9.69 -    hence "\<exists>H' h'. graph H' h' = g 
    9.70 +    hence "\<exists>H' h'. graph H' h' = g
    9.71                    \<and> is_linearform H' h'
    9.72                    \<and> is_subspace H' E
    9.73                    \<and> is_subspace F H'
    9.74                    \<and> graph F f \<subseteq> graph H' h'
    9.75 -                  \<and> (\<forall>x \<in> H'. h' x <= p x)"
    9.76 +                  \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
    9.77        by (rule norm_pres_extension_D)
    9.78      thus ?thesis
    9.79 -    proof (elim exE conjE) 
    9.80 -      fix H' h' 
    9.81 -      assume "graph H' h' = g" "is_linearform H' h'" 
    9.82 -        "is_subspace H' E" "is_subspace F H'" 
    9.83 -        "graph F f \<subseteq> graph H' h'" "\<forall>x \<in> H'. h' x <= p x"
    9.84 -      show ?thesis 
    9.85 +    proof (elim exE conjE)
    9.86 +      fix H' h'
    9.87 +      assume "graph H' h' = g"  "is_linearform H' h'"
    9.88 +        "is_subspace H' E"  "is_subspace F H'"
    9.89 +        "graph F f \<subseteq> graph H' h'"  "\<forall>x \<in> H'. h' x \<le> p x"
    9.90 +      show ?thesis
    9.91        proof (intro exI conjI)
    9.92          show "graph H' h' \<in> c" by (simp!)
    9.93          show "(x, h x) \<in> graph H' h'" by (simp!)
    9.94 @@ -67,93 +69,99 @@
    9.95  qed
    9.96  
    9.97  
    9.98 -text{*  \medskip Let $c$ be a chain of norm-preserving extensions of the
    9.99 -function $f$ and let $\idt{graph}\ap H\ap h$ be the supremum of $c$. 
   9.100 -Every element in the domain $H$ of the supremum function is member of
   9.101 -the domain $H'$ of some function $h'$, such that $h$ extends $h'$.
   9.102 +text {*
   9.103 +  \medskip Let @{text c} be a chain of norm-preserving extensions of
   9.104 +  the function @{text f} and let @{text "graph H h"} be the supremum
   9.105 +  of @{text c}.  Every element in the domain @{text H} of the supremum
   9.106 +  function is member of the domain @{text H'} of some function @{text
   9.107 +  h'}, such that @{text h} extends @{text h'}.
   9.108  *}
   9.109  
   9.110 -lemma some_H'h': 
   9.111 -  "[| M = norm_pres_extensions E p F f; c \<in> chain M; 
   9.112 -  graph H h = \<Union>c; x \<in> H |] 
   9.113 -  ==> \<exists>H' h'. x \<in> H' \<and> graph H' h' \<subseteq> graph H h 
   9.114 +lemma some_H'h':
   9.115 +  "M = norm_pres_extensions E p F f \<Longrightarrow> c \<in> chain M \<Longrightarrow>
   9.116 +  graph H h = \<Union>c \<Longrightarrow> x \<in> H
   9.117 +  \<Longrightarrow> \<exists>H' h'. x \<in> H' \<and> graph H' h' \<subseteq> graph H h
   9.118        \<and> is_linearform H' h' \<and> is_subspace H' E \<and> is_subspace F H'
   9.119 -      \<and> graph F f \<subseteq> graph H' h' \<and> (\<forall>x \<in> H'. h' x <= p x)" 
   9.120 +      \<and> graph F f \<subseteq> graph H' h' \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
   9.121  proof -
   9.122    assume "M = norm_pres_extensions E p F f" and cM: "c \<in> chain M"
   9.123 -     and u: "graph H h = \<Union>c" "x \<in> H"  
   9.124 +     and u: "graph H h = \<Union>c"  "x \<in> H"
   9.125  
   9.126 -  have "\<exists>H' h'. graph H' h' \<in> c \<and> (x, h x) \<in> graph H' h' 
   9.127 -       \<and> is_linearform H' h' \<and> is_subspace H' E 
   9.128 -       \<and> is_subspace F H' \<and> graph F f \<subseteq> graph H' h' 
   9.129 -       \<and> (\<forall>x \<in> H'. h' x <= p x)"
   9.130 +  have "\<exists>H' h'. graph H' h' \<in> c \<and> (x, h x) \<in> graph H' h'
   9.131 +       \<and> is_linearform H' h' \<and> is_subspace H' E
   9.132 +       \<and> is_subspace F H' \<and> graph F f \<subseteq> graph H' h'
   9.133 +       \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
   9.134      by (rule some_H'h't)
   9.135 -  thus ?thesis 
   9.136 +  thus ?thesis
   9.137    proof (elim exE conjE)
   9.138 -    fix H' h' assume "(x, h x) \<in> graph H' h'" "graph H' h' \<in> c"
   9.139 -      "is_linearform H' h'" "is_subspace H' E" "is_subspace F H'" 
   9.140 -      "graph F f \<subseteq> graph H' h'" "\<forall>x \<in> H'. h' x <= p x"
   9.141 +    fix H' h' assume "(x, h x) \<in> graph H' h'"  "graph H' h' \<in> c"
   9.142 +      "is_linearform H' h'"  "is_subspace H' E"  "is_subspace F H'"
   9.143 +      "graph F f \<subseteq> graph H' h'"  "\<forall>x \<in> H'. h' x \<le> p x"
   9.144      show ?thesis
   9.145      proof (intro exI conjI)
   9.146        show "x \<in> H'" by (rule graphD1)
   9.147 -      from cM u show "graph H' h' \<subseteq> graph H h" 
   9.148 +      from cM u show "graph H' h' \<subseteq> graph H h"
   9.149          by (simp! only: chain_ball_Union_upper)
   9.150      qed
   9.151    qed
   9.152  qed
   9.153  
   9.154  
   9.155 -text{* \medskip Any two elements $x$ and $y$ in the domain $H$ of the 
   9.156 -supremum function $h$ are both in the domain $H'$ of some function 
   9.157 -$h'$, such that $h$ extends $h'$. *}
   9.158 +text {*
   9.159 +  \medskip Any two elements @{text x} and @{text y} in the domain
   9.160 +  @{text H} of the supremum function @{text h} are both in the domain
   9.161 +  @{text H'} of some function @{text h'}, such that @{text h} extends
   9.162 +  @{text h'}.
   9.163 +*}
   9.164  
   9.165 -lemma some_H'h'2: 
   9.166 -  "[| M = norm_pres_extensions E p F f; c \<in> chain M; 
   9.167 -  graph H h = \<Union>c;  x \<in> H; y \<in> H |] 
   9.168 -  ==> \<exists>H' h'. x \<in> H' \<and> y \<in> H' \<and> graph H' h' \<subseteq> graph H h 
   9.169 +lemma some_H'h'2:
   9.170 +  "M = norm_pres_extensions E p F f \<Longrightarrow> c \<in> chain M \<Longrightarrow>
   9.171 +  graph H h = \<Union>c \<Longrightarrow> x \<in> H \<Longrightarrow> y \<in> H
   9.172 +  \<Longrightarrow> \<exists>H' h'. x \<in> H' \<and> y \<in> H' \<and> graph H' h' \<subseteq> graph H h
   9.173        \<and> is_linearform H' h' \<and> is_subspace H' E \<and> is_subspace F H'
   9.174 -      \<and> graph F f \<subseteq> graph H' h' \<and> (\<forall>x \<in> H'. h' x <= p x)" 
   9.175 +      \<and> graph F f \<subseteq> graph H' h' \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
   9.176  proof -
   9.177 -  assume "M = norm_pres_extensions E p F f" "c \<in> chain M" 
   9.178 -         "graph H h = \<Union>c" "x \<in> H" "y \<in> H"
   9.179 +  assume "M = norm_pres_extensions E p F f"  "c \<in> chain M"
   9.180 +         "graph H h = \<Union>c"  "x \<in> H"  "y \<in> H"
   9.181  
   9.182 -  txt {* $x$ is in the domain $H'$ of some function $h'$, 
   9.183 -  such that $h$ extends $h'$. *} 
   9.184 +  txt {*
   9.185 +    @{text x} is in the domain @{text H'} of some function @{text h'},
   9.186 +    such that @{text h} extends @{text h'}. *}
   9.187  
   9.188    have e1: "\<exists>H' h'. graph H' h' \<in> c \<and> (x, h x) \<in> graph H' h'
   9.189 -       \<and> is_linearform H' h' \<and> is_subspace H' E 
   9.190 -       \<and> is_subspace F H' \<and> graph F f \<subseteq> graph H' h' 
   9.191 -       \<and> (\<forall>x \<in> H'. h' x <= p x)"
   9.192 +       \<and> is_linearform H' h' \<and> is_subspace H' E
   9.193 +       \<and> is_subspace F H' \<and> graph F f \<subseteq> graph H' h'
   9.194 +       \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
   9.195      by (rule some_H'h't)
   9.196  
   9.197 -  txt {* $y$ is in the domain $H''$ of some function $h''$,
   9.198 -  such that $h$ extends $h''$. *} 
   9.199 +  txt {* @{text y} is in the domain @{text H''} of some function @{text h''},
   9.200 +  such that @{text h} extends @{text h''}. *}
   9.201  
   9.202    have e2: "\<exists>H'' h''. graph H'' h'' \<in> c \<and> (y, h y) \<in> graph H'' h''
   9.203 -       \<and> is_linearform H'' h'' \<and> is_subspace H'' E 
   9.204 -       \<and> is_subspace F H'' \<and> graph F f \<subseteq> graph H'' h'' 
   9.205 -       \<and> (\<forall>x \<in> H''. h'' x <= p x)"
   9.206 +       \<and> is_linearform H'' h'' \<and> is_subspace H'' E
   9.207 +       \<and> is_subspace F H'' \<and> graph F f \<subseteq> graph H'' h''
   9.208 +       \<and> (\<forall>x \<in> H''. h'' x \<le> p x)"
   9.209      by (rule some_H'h't)
   9.210  
   9.211 -  from e1 e2 show ?thesis 
   9.212 +  from e1 e2 show ?thesis
   9.213    proof (elim exE conjE)
   9.214 -    fix H' h' assume "(y, h y) \<in> graph H' h'" "graph H' h' \<in> c"
   9.215 -      "is_linearform H' h'" "is_subspace H' E" "is_subspace F H'" 
   9.216 -      "graph F f \<subseteq> graph H' h'" "\<forall>x \<in> H'. h' x <= p x"
   9.217 +    fix H' h' assume "(y, h y) \<in> graph H' h'"  "graph H' h' \<in> c"
   9.218 +      "is_linearform H' h'"  "is_subspace H' E"  "is_subspace F H'"
   9.219 +      "graph F f \<subseteq> graph H' h'"  "\<forall>x \<in> H'. h' x \<le> p x"
   9.220  
   9.221 -    fix H'' h'' assume "(x, h x) \<in> graph H'' h''" "graph H'' h'' \<in> c"
   9.222 -      "is_linearform H'' h''" "is_subspace H'' E" "is_subspace F H''"
   9.223 -      "graph F f \<subseteq> graph H'' h''" "\<forall>x \<in> H''. h'' x <= p x"
   9.224 +    fix H'' h'' assume "(x, h x) \<in> graph H'' h''"  "graph H'' h'' \<in> c"
   9.225 +      "is_linearform H'' h''"  "is_subspace H'' E"  "is_subspace F H''"
   9.226 +      "graph F f \<subseteq> graph H'' h''"  "\<forall>x \<in> H''. h'' x \<le> p x"
   9.227  
   9.228 -   txt {* Since both $h'$ and $h''$ are elements of the chain,  
   9.229 -   $h''$ is an extension of $h'$ or vice versa. Thus both 
   9.230 -   $x$ and $y$ are contained in the greater one. \label{cases1}*}
   9.231 +   txt {* Since both @{text h'} and @{text h''} are elements of the chain,
   9.232 +   @{text h''} is an extension of @{text h'} or vice versa. Thus both
   9.233 +   @{text x} and @{text y} are contained in the greater one. \label{cases1}*}
   9.234  
   9.235 -    have "graph H'' h'' \<subseteq> graph H' h' | graph H' h' \<subseteq> graph H'' h''"
   9.236 -      (is "?case1 | ?case2")
   9.237 +    have "graph H'' h'' \<subseteq> graph H' h' \<or> graph H' h' \<subseteq> graph H'' h''"
   9.238 +      (is "?case1 \<or> ?case2")
   9.239        by (rule chainD)
   9.240      thus ?thesis
   9.241 -    proof 
   9.242 +    proof
   9.243        assume ?case1
   9.244        show ?thesis
   9.245        proof (intro exI conjI)
   9.246 @@ -183,44 +191,47 @@
   9.247  
   9.248  
   9.249  
   9.250 -text{* \medskip The relation induced by the graph of the supremum
   9.251 -of a chain $c$ is definite, i.~e.~t is the graph of a function. *}
   9.252 +text {*
   9.253 +  \medskip The relation induced by the graph of the supremum of a
   9.254 +  chain @{text c} is definite, i.~e.~t is the graph of a function. *}
   9.255  
   9.256 -lemma sup_definite: 
   9.257 -  "[| M == norm_pres_extensions E p F f; c \<in> chain M; 
   9.258 -  (x, y) \<in> \<Union>c; (x, z) \<in> \<Union>c |] ==> z = y"
   9.259 -proof - 
   9.260 -  assume "c \<in> chain M" "M == norm_pres_extensions E p F f"
   9.261 -    "(x, y) \<in> \<Union>c" "(x, z) \<in> \<Union>c"
   9.262 +lemma sup_definite:
   9.263 +  "M \<equiv> norm_pres_extensions E p F f \<Longrightarrow> c \<in> chain M \<Longrightarrow>
   9.264 +  (x, y) \<in> \<Union>c \<Longrightarrow> (x, z) \<in> \<Union>c \<Longrightarrow> z = y"
   9.265 +proof -
   9.266 +  assume "c \<in> chain M"  "M \<equiv> norm_pres_extensions E p F f"
   9.267 +    "(x, y) \<in> \<Union>c"  "(x, z) \<in> \<Union>c"
   9.268    thus ?thesis
   9.269    proof (elim UnionE chainE2)
   9.270  
   9.271 -    txt{* Since both $(x, y) \in \Union c$ and $(x, z) \in \Union c$
   9.272 -    they are members of some graphs $G_1$ and $G_2$, resp., such that
   9.273 -    both $G_1$ and $G_2$ are members of $c$.*}
   9.274 +    txt {* Since both @{text "(x, y) \<in> \<Union>c"} and @{text "(x, z) \<in> \<Union>c"}
   9.275 +    they are members of some graphs @{text "G\<^sub>1"} and @{text
   9.276 +    "G\<^sub>2"}, resp., such that both @{text "G\<^sub>1"} and @{text
   9.277 +    "G\<^sub>2"} are members of @{text c}.*}
   9.278  
   9.279      fix G1 G2 assume
   9.280 -      "(x, y) \<in> G1" "G1 \<in> c" "(x, z) \<in> G2" "G2 \<in> c" "c \<subseteq> M"
   9.281 +      "(x, y) \<in> G1"  "G1 \<in> c"  "(x, z) \<in> G2"  "G2 \<in> c"  "c \<subseteq> M"
   9.282  
   9.283      have "G1 \<in> M" ..
   9.284 -    hence e1: "\<exists>H1 h1. graph H1 h1 = G1"  
   9.285 -      by (force! dest: norm_pres_extension_D)
   9.286 +    hence e1: "\<exists>H1 h1. graph H1 h1 = G1"
   9.287 +      by (blast! dest: norm_pres_extension_D)
   9.288      have "G2 \<in> M" ..
   9.289 -    hence e2: "\<exists>H2 h2. graph H2 h2 = G2"  
   9.290 -      by (force! dest: norm_pres_extension_D)
   9.291 -    from e1 e2 show ?thesis 
   9.292 +    hence e2: "\<exists>H2 h2. graph H2 h2 = G2"
   9.293 +      by (blast! dest: norm_pres_extension_D)
   9.294 +    from e1 e2 show ?thesis
   9.295      proof (elim exE)
   9.296 -      fix H1 h1 H2 h2 
   9.297 -      assume "graph H1 h1 = G1" "graph H2 h2 = G2"
   9.298 +      fix H1 h1 H2 h2
   9.299 +      assume "graph H1 h1 = G1"  "graph H2 h2 = G2"
   9.300  
   9.301 -      txt{* $G_1$ is contained in $G_2$ or vice versa, 
   9.302 -      since both $G_1$ and $G_2$ are members of $c$. \label{cases2}*}
   9.303 +      txt {* @{text "G\<^sub>1"} is contained in @{text "G\<^sub>2"}
   9.304 +      or vice versa, since both @{text "G\<^sub>1"} and @{text
   9.305 +      "G\<^sub>2"} are members of @{text c}. \label{cases2}*}
   9.306  
   9.307 -      have "G1 \<subseteq> G2 | G2 \<subseteq> G1" (is "?case1 | ?case2") ..
   9.308 +      have "G1 \<subseteq> G2 \<or> G2 \<subseteq> G1" (is "?case1 \<or> ?case2") ..
   9.309        thus ?thesis
   9.310        proof
   9.311          assume ?case1
   9.312 -        have "(x, y) \<in> graph H2 h2" by (force!)
   9.313 +        have "(x, y) \<in> graph H2 h2" by (blast!)
   9.314          hence "y = h2 x" ..
   9.315          also have "(x, z) \<in> graph H2 h2" by (simp!)
   9.316          hence "z = h2 x" ..
   9.317 @@ -229,7 +240,7 @@
   9.318          assume ?case2
   9.319          have "(x, y) \<in> graph H1 h1" by (simp!)
   9.320          hence "y = h1 x" ..
   9.321 -        also have "(x, z) \<in> graph H1 h1" by (force!)
   9.322 +        also have "(x, z) \<in> graph H1 h1" by (blast!)
   9.323          hence "z = h1 x" ..
   9.324          finally show ?thesis .
   9.325        qed
   9.326 @@ -237,36 +248,39 @@
   9.327    qed
   9.328  qed
   9.329  
   9.330 -text{* \medskip The limit function $h$ is linear. Every element $x$ in the
   9.331 -domain of $h$ is in the domain of a function $h'$ in the chain of norm
   9.332 -preserving extensions.  Furthermore, $h$ is an extension of $h'$ so
   9.333 -the function values of $x$ are identical for $h'$ and $h$.  Finally, the
   9.334 -function $h'$ is linear by construction of $M$.  *}
   9.335 +text {*
   9.336 +  \medskip The limit function @{text h} is linear. Every element
   9.337 +  @{text x} in the domain of @{text h} is in the domain of a function
   9.338 +  @{text h'} in the chain of norm preserving extensions.  Furthermore,
   9.339 +  @{text h} is an extension of @{text h'} so the function values of
   9.340 +  @{text x} are identical for @{text h'} and @{text h}.  Finally, the
   9.341 +  function @{text h'} is linear by construction of @{text M}.
   9.342 +*}
   9.343  
   9.344 -lemma sup_lf: 
   9.345 -  "[| M = norm_pres_extensions E p F f; c \<in> chain M; 
   9.346 -  graph H h = \<Union>c |] ==> is_linearform H h"
   9.347 -proof - 
   9.348 -  assume "M = norm_pres_extensions E p F f" "c \<in> chain M"
   9.349 +lemma sup_lf:
   9.350 +  "M = norm_pres_extensions E p F f \<Longrightarrow> c \<in> chain M \<Longrightarrow>
   9.351 +  graph H h = \<Union>c \<Longrightarrow> is_linearform H h"
   9.352 +proof -
   9.353 +  assume "M = norm_pres_extensions E p F f"  "c \<in> chain M"
   9.354           "graph H h = \<Union>c"
   9.355 - 
   9.356 +
   9.357    show "is_linearform H h"
   9.358    proof
   9.359 -    fix x y assume "x \<in> H" "y \<in> H" 
   9.360 -    have "\<exists>H' h'. x \<in> H' \<and> y \<in> H' \<and> graph H' h' \<subseteq> graph H h 
   9.361 -            \<and> is_linearform H' h' \<and> is_subspace H' E 
   9.362 +    fix x y assume "x \<in> H"  "y \<in> H"
   9.363 +    have "\<exists>H' h'. x \<in> H' \<and> y \<in> H' \<and> graph H' h' \<subseteq> graph H h
   9.364 +            \<and> is_linearform H' h' \<and> is_subspace H' E
   9.365              \<and> is_subspace F H' \<and> graph F f \<subseteq> graph H' h'
   9.366 -            \<and> (\<forall>x \<in> H'. h' x <= p x)"
   9.367 +            \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
   9.368        by (rule some_H'h'2)
   9.369  
   9.370 -    txt {* We have to show that $h$ is additive. *}
   9.371 +    txt {* We have to show that @{text h} is additive. *}
   9.372  
   9.373 -    thus "h (x + y) = h x + h y" 
   9.374 +    thus "h (x + y) = h x + h y"
   9.375      proof (elim exE conjE)
   9.376 -      fix H' h' assume "x \<in> H'" "y \<in> H'" 
   9.377 -        and b: "graph H' h' \<subseteq> graph H h" 
   9.378 -        and "is_linearform H' h'" "is_subspace H' E"
   9.379 -      have "h' (x + y) = h' x + h' y" 
   9.380 +      fix H' h' assume "x \<in> H'"  "y \<in> H'"
   9.381 +        and b: "graph H' h' \<subseteq> graph H h"
   9.382 +        and "is_linearform H' h'"  "is_subspace H' E"
   9.383 +      have "h' (x + y) = h' x + h' y"
   9.384          by (rule linearform_add)
   9.385        also have "h' x = h x" ..
   9.386        also have "h' y = h y" ..
   9.387 @@ -274,22 +288,22 @@
   9.388        with b have "h' (x + y) = h (x + y)" ..
   9.389        finally show ?thesis .
   9.390      qed
   9.391 -  next  
   9.392 +  next
   9.393      fix a x assume "x \<in> H"
   9.394 -    have "\<exists>H' h'. x \<in> H' \<and> graph H' h' \<subseteq> graph H h 
   9.395 +    have "\<exists>H' h'. x \<in> H' \<and> graph H' h' \<subseteq> graph H h
   9.396              \<and> is_linearform H' h' \<and> is_subspace H' E
   9.397 -            \<and> is_subspace F H' \<and> graph F f \<subseteq> graph H' h' 
   9.398 -            \<and> (\<forall>x \<in> H'. h' x <= p x)"
   9.399 +            \<and> is_subspace F H' \<and> graph F f \<subseteq> graph H' h'
   9.400 +            \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
   9.401        by (rule some_H'h')
   9.402  
   9.403 -    txt{* We have to show that $h$ is multiplicative. *}
   9.404 +    txt{* We have to show that @{text h} is multiplicative. *}
   9.405  
   9.406      thus "h (a \<cdot> x) = a * h x"
   9.407      proof (elim exE conjE)
   9.408        fix H' h' assume "x \<in> H'"
   9.409 -        and b: "graph H' h' \<subseteq> graph H h" 
   9.410 -        and "is_linearform H' h'" "is_subspace H' E"
   9.411 -      have "h' (a \<cdot> x) = a * h' x" 
   9.412 +        and b: "graph H' h' \<subseteq> graph H h"
   9.413 +        and "is_linearform H' h'"  "is_subspace H' E"
   9.414 +      have "h' (a \<cdot> x) = a * h' x"
   9.415          by (rule linearform_mult)
   9.416        also have "h' x = h x" ..
   9.417        also have "a \<cdot> x \<in> H'" ..
   9.418 @@ -299,36 +313,37 @@
   9.419    qed
   9.420  qed
   9.421  
   9.422 -text{* \medskip The limit of a non-empty chain of norm
   9.423 -preserving extensions of $f$ is an extension of $f$,
   9.424 -since every element of the chain is an extension
   9.425 -of $f$ and the supremum is an extension
   9.426 -for every element of the chain.*}
   9.427 +text {*
   9.428 +  \medskip The limit of a non-empty chain of norm preserving
   9.429 +  extensions of @{text f} is an extension of @{text f}, since every
   9.430 +  element of the chain is an extension of @{text f} and the supremum
   9.431 +  is an extension for every element of the chain.
   9.432 +*}
   9.433  
   9.434  lemma sup_ext:
   9.435 -  "[| graph H h = \<Union>c; M = norm_pres_extensions E p F f; 
   9.436 -  c \<in> chain M; \<exists>x. x \<in> c |] ==> graph F f \<subseteq> graph H h"
   9.437 +  "graph H h = \<Union>c \<Longrightarrow> M = norm_pres_extensions E p F f \<Longrightarrow>
   9.438 +  c \<in> chain M \<Longrightarrow> \<exists>x. x \<in> c \<Longrightarrow> graph F f \<subseteq> graph H h"
   9.439  proof -
   9.440 -  assume "M = norm_pres_extensions E p F f" "c \<in> chain M" 
   9.441 +  assume "M = norm_pres_extensions E p F f"  "c \<in> chain M"
   9.442           "graph H h = \<Union>c"
   9.443    assume "\<exists>x. x \<in> c"
   9.444 -  thus ?thesis 
   9.445 +  thus ?thesis
   9.446    proof
   9.447 -    fix x assume "x \<in> c" 
   9.448 +    fix x assume "x \<in> c"
   9.449      have "c \<subseteq> M" by (rule chainD2)
   9.450      hence "x \<in> M" ..
   9.451      hence "x \<in> norm_pres_extensions E p F f" by (simp!)
   9.452  
   9.453      hence "\<exists>G g. graph G g = x
   9.454 -             \<and> is_linearform G g 
   9.455 +             \<and> is_linearform G g
   9.456               \<and> is_subspace G E
   9.457               \<and> is_subspace F G
   9.458 -             \<and> graph F f \<subseteq> graph G g 
   9.459 -             \<and> (\<forall>x \<in> G. g x <= p x)"
   9.460 +             \<and> graph F f \<subseteq> graph G g
   9.461 +             \<and> (\<forall>x \<in> G. g x \<le> p x)"
   9.462        by (simp! add: norm_pres_extension_D)
   9.463  
   9.464 -    thus ?thesis 
   9.465 -    proof (elim exE conjE) 
   9.466 +    thus ?thesis
   9.467 +    proof (elim exE conjE)
   9.468        fix G g assume "graph F f \<subseteq> graph G g"
   9.469        also assume "graph G g = x"
   9.470        also have "... \<in> c" .
   9.471 @@ -339,30 +354,32 @@
   9.472    qed
   9.473  qed
   9.474  
   9.475 -text{* \medskip The domain $H$ of the limit function is a superspace of $F$,
   9.476 -since $F$ is a subset of $H$. The existence of the $\zero$ element in
   9.477 -$F$ and the closure properties follow from the fact that $F$ is a
   9.478 -vector space. *}
   9.479 +text {*
   9.480 +  \medskip The domain @{text H} of the limit function is a superspace
   9.481 +  of @{text F}, since @{text F} is a subset of @{text H}. The
   9.482 +  existence of the @{text 0} element in @{text F} and the closure
   9.483 +  properties follow from the fact that @{text F} is a vector space.
   9.484 +*}
   9.485  
   9.486 -lemma sup_supF: 
   9.487 -  "[|  graph H h = \<Union>c; M = norm_pres_extensions E p F f; 
   9.488 -  c \<in> chain M; \<exists>x. x \<in> c; is_subspace F E; is_vectorspace E |] 
   9.489 -  ==> is_subspace F H"
   9.490 -proof - 
   9.491 -  assume "M = norm_pres_extensions E p F f" "c \<in> chain M" "\<exists>x. x \<in> c"
   9.492 -    "graph H h = \<Union>c" "is_subspace F E" "is_vectorspace E"
   9.493 +lemma sup_supF:
   9.494 +  "graph H h = \<Union>c \<Longrightarrow> M = norm_pres_extensions E p F f \<Longrightarrow>
   9.495 +  c \<in> chain M \<Longrightarrow> \<exists>x. x \<in> c \<Longrightarrow> is_subspace F E \<Longrightarrow> is_vectorspace E
   9.496 +  \<Longrightarrow> is_subspace F H"
   9.497 +proof -
   9.498 +  assume "M = norm_pres_extensions E p F f"  "c \<in> chain M"  "\<exists>x. x \<in> c"
   9.499 +    "graph H h = \<Union>c"  "is_subspace F E"  "is_vectorspace E"
   9.500  
   9.501 -  show ?thesis 
   9.502 +  show ?thesis
   9.503    proof
   9.504      show "0 \<in> F" ..
   9.505 -    show "F \<subseteq> H" 
   9.506 +    show "F \<subseteq> H"
   9.507      proof (rule graph_extD2)
   9.508        show "graph F f \<subseteq> graph H h"
   9.509          by (rule sup_ext)
   9.510      qed
   9.511 -    show "\<forall>x \<in> F. \<forall>y \<in> F. x + y \<in> F" 
   9.512 -    proof (intro ballI) 
   9.513 -      fix x y assume "x \<in> F" "y \<in> F"
   9.514 +    show "\<forall>x \<in> F. \<forall>y \<in> F. x + y \<in> F"
   9.515 +    proof (intro ballI)
   9.516 +      fix x y assume "x \<in> F"  "y \<in> F"
   9.517        show "x + y \<in> F" by (simp!)
   9.518      qed
   9.519      show "\<forall>x \<in> F. \<forall>a. a \<cdot> x \<in> F"
   9.520 @@ -373,166 +390,171 @@
   9.521    qed
   9.522  qed
   9.523  
   9.524 -text{* \medskip The domain $H$ of the limit function is a subspace
   9.525 -of $E$. *}
   9.526 +text {*
   9.527 +  \medskip The domain @{text H} of the limit function is a subspace of
   9.528 +  @{text E}.
   9.529 +*}
   9.530  
   9.531 -lemma sup_subE: 
   9.532 -  "[| graph H h = \<Union>c; M = norm_pres_extensions E p F f; 
   9.533 -  c \<in> chain M; \<exists>x. x \<in> c; is_subspace F E; is_vectorspace E |] 
   9.534 -  ==> is_subspace H E"
   9.535 -proof - 
   9.536 -  assume "M = norm_pres_extensions E p F f" "c \<in> chain M" "\<exists>x. x \<in> c"
   9.537 -    "graph H h = \<Union>c" "is_subspace F E" "is_vectorspace E"
   9.538 -  show ?thesis 
   9.539 +lemma sup_subE:
   9.540 +  "graph H h = \<Union>c \<Longrightarrow> M = norm_pres_extensions E p F f \<Longrightarrow>
   9.541 +  c \<in> chain M \<Longrightarrow> \<exists>x. x \<in> c \<Longrightarrow> is_subspace F E \<Longrightarrow> is_vectorspace E
   9.542 +  \<Longrightarrow> is_subspace H E"
   9.543 +proof -
   9.544 +  assume "M = norm_pres_extensions E p F f"  "c \<in> chain M"  "\<exists>x. x \<in> c"
   9.545 +    "graph H h = \<Union>c"  "is_subspace F E"  "is_vectorspace E"
   9.546 +  show ?thesis
   9.547    proof
   9.548 - 
   9.549 -    txt {* The $\zero$ element is in $H$, as $F$ is a subset 
   9.550 -    of $H$: *}
   9.551 +
   9.552 +    txt {* The @{text 0} element is in @{text H}, as @{text F} is a
   9.553 +    subset of @{text H}: *}
   9.554  
   9.555      have "0 \<in> F" ..
   9.556 -    also have "is_subspace F H" by (rule sup_supF) 
   9.557 +    also have "is_subspace F H" by (rule sup_supF)
   9.558      hence "F \<subseteq> H" ..
   9.559      finally show "0 \<in> H" .
   9.560  
   9.561 -    txt{* $H$ is a subset of $E$: *}
   9.562 +    txt {* @{text H} is a subset of @{text E}: *}
   9.563  
   9.564 -    show "H \<subseteq> E" 
   9.565 +    show "H \<subseteq> E"
   9.566      proof
   9.567        fix x assume "x \<in> H"
   9.568        have "\<exists>H' h'. x \<in> H' \<and> graph H' h' \<subseteq> graph H h
   9.569 -              \<and> is_linearform H' h' \<and> is_subspace H' E 
   9.570 -              \<and> is_subspace F H' \<and> graph F f \<subseteq> graph H' h' 
   9.571 -              \<and> (\<forall>x \<in> H'. h' x <= p x)" 
   9.572 -	by (rule some_H'h')
   9.573 -      thus "x \<in> E" 
   9.574 +              \<and> is_linearform H' h' \<and> is_subspace H' E
   9.575 +              \<and> is_subspace F H' \<and> graph F f \<subseteq> graph H' h'
   9.576 +              \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
   9.577 +        by (rule some_H'h')
   9.578 +      thus "x \<in> E"
   9.579        proof (elim exE conjE)
   9.580 -	fix H' h' assume "x \<in> H'" "is_subspace H' E"
   9.581 +        fix H' h' assume "x \<in> H'"  "is_subspace H' E"
   9.582          have "H' \<subseteq> E" ..
   9.583 -	thus "x \<in> E" ..
   9.584 +        thus "x \<in> E" ..
   9.585        qed
   9.586      qed
   9.587  
   9.588 -    txt{* $H$ is closed under addition: *}
   9.589 +    txt {* @{text H} is closed under addition: *}
   9.590  
   9.591 -    show "\<forall>x \<in> H. \<forall>y \<in> H. x + y \<in> H" 
   9.592 -    proof (intro ballI) 
   9.593 -      fix x y assume "x \<in> H" "y \<in> H"
   9.594 -      have "\<exists>H' h'. x \<in> H' \<and> y \<in> H' \<and> graph H' h' \<subseteq> graph H h 
   9.595 -              \<and> is_linearform H' h' \<and> is_subspace H' E 
   9.596 -              \<and> is_subspace F H' \<and> graph F f \<subseteq> graph H' h' 
   9.597 -              \<and> (\<forall>x \<in> H'. h' x <= p x)" 
   9.598 -	by (rule some_H'h'2) 
   9.599 -      thus "x + y \<in> H" 
   9.600 -      proof (elim exE conjE) 
   9.601 -	fix H' h' 
   9.602 -        assume "x \<in> H'" "y \<in> H'" "is_subspace H' E" 
   9.603 +    show "\<forall>x \<in> H. \<forall>y \<in> H. x + y \<in> H"
   9.604 +    proof (intro ballI)
   9.605 +      fix x y assume "x \<in> H"  "y \<in> H"
   9.606 +      have "\<exists>H' h'. x \<in> H' \<and> y \<in> H' \<and> graph H' h' \<subseteq> graph H h
   9.607 +              \<and> is_linearform H' h' \<and> is_subspace H' E
   9.608 +              \<and> is_subspace F H' \<and> graph F f \<subseteq> graph H' h'
   9.609 +              \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
   9.610 +        by (rule some_H'h'2)
   9.611 +      thus "x + y \<in> H"
   9.612 +      proof (elim exE conjE)
   9.613 +        fix H' h'
   9.614 +        assume "x \<in> H'"  "y \<in> H'"  "is_subspace H' E"
   9.615            "graph H' h' \<subseteq> graph H h"
   9.616          have "x + y \<in> H'" ..
   9.617 -	also have "H' \<subseteq> H" ..
   9.618 -	finally show ?thesis .
   9.619 +        also have "H' \<subseteq> H" ..
   9.620 +        finally show ?thesis .
   9.621        qed
   9.622 -    qed      
   9.623 +    qed
   9.624  
   9.625 -    txt{* $H$ is closed under scalar multiplication: *}
   9.626 +    txt {* @{text H} is closed under scalar multiplication: *}
   9.627  
   9.628 -    show "\<forall>x \<in> H. \<forall>a. a \<cdot> x \<in> H" 
   9.629 -    proof (intro ballI allI) 
   9.630 -      fix x a assume "x \<in> H" 
   9.631 +    show "\<forall>x \<in> H. \<forall>a. a \<cdot> x \<in> H"
   9.632 +    proof (intro ballI allI)
   9.633 +      fix x a assume "x \<in> H"
   9.634        have "\<exists>H' h'. x \<in> H' \<and> graph H' h' \<subseteq> graph H h
   9.635 -              \<and> is_linearform H' h' \<and> is_subspace H' E 
   9.636 -              \<and> is_subspace F H' \<and> graph F f \<subseteq> graph H' h' 
   9.637 -              \<and> (\<forall>x \<in> H'. h' x <= p x)" 
   9.638 -	by (rule some_H'h') 
   9.639 -      thus "a \<cdot> x \<in> H" 
   9.640 +              \<and> is_linearform H' h' \<and> is_subspace H' E
   9.641 +              \<and> is_subspace F H' \<and> graph F f \<subseteq> graph H' h'
   9.642 +              \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
   9.643 +        by (rule some_H'h')
   9.644 +      thus "a \<cdot> x \<in> H"
   9.645        proof (elim exE conjE)
   9.646 -	fix H' h' 
   9.647 -        assume "x \<in> H'" "is_subspace H' E" "graph H' h' \<subseteq> graph H h"
   9.648 +        fix H' h'
   9.649 +        assume "x \<in> H'"  "is_subspace H' E"  "graph H' h' \<subseteq> graph H h"
   9.650          have "a \<cdot> x \<in> H'" ..
   9.651          also have "H' \<subseteq> H" ..
   9.652 -	finally show ?thesis .
   9.653 +        finally show ?thesis .
   9.654        qed
   9.655      qed
   9.656    qed
   9.657  qed
   9.658  
   9.659 -text {* \medskip The limit function is bounded by 
   9.660 -the norm $p$ as well, since all elements in the chain are
   9.661 -bounded by $p$.
   9.662 +text {*
   9.663 +  \medskip The limit function is bounded by the norm @{text p} as
   9.664 +  well, since all elements in the chain are bounded by @{text p}.
   9.665  *}
   9.666  
   9.667  lemma sup_norm_pres:
   9.668 -  "[| graph H h = \<Union>c; M = norm_pres_extensions E p F f; 
   9.669 -  c \<in> chain M |] ==> \<forall>x \<in> H. h x <= p x"
   9.670 +  "graph H h = \<Union>c \<Longrightarrow> M = norm_pres_extensions E p F f \<Longrightarrow>
   9.671 +  c \<in> chain M \<Longrightarrow> \<forall>x \<in> H. h x \<le> p x"
   9.672  proof
   9.673 -  assume "M = norm_pres_extensions E p F f" "c \<in> chain M" 
   9.674 +  assume "M = norm_pres_extensions E p F f"  "c \<in> chain M"
   9.675           "graph H h = \<Union>c"
   9.676    fix x assume "x \<in> H"
   9.677 -  have "\<exists>H' h'. x \<in> H' \<and> graph H' h' \<subseteq> graph H h 
   9.678 +  have "\<exists>H' h'. x \<in> H' \<and> graph H' h' \<subseteq> graph H h
   9.679            \<and> is_linearform H' h' \<and> is_subspace H' E \<and> is_subspace F H'
   9.680 -          \<and> graph F f \<subseteq> graph H' h' \<and> (\<forall>x \<in> H'. h' x <= p x)" 
   9.681 +          \<and> graph F f \<subseteq> graph H' h' \<and> (\<forall>x \<in> H'. h' x \<le> p x)"
   9.682      by (rule some_H'h')
   9.683 -  thus "h x <= p x" 
   9.684 +  thus "h x \<le> p x"
   9.685    proof (elim exE conjE)
   9.686 -    fix H' h' 
   9.687 -    assume "x \<in> H'" "graph H' h' \<subseteq> graph H h" 
   9.688 -      and a: "\<forall>x \<in> H'. h' x <= p x"
   9.689 +    fix H' h'
   9.690 +    assume "x \<in> H'"  "graph H' h' \<subseteq> graph H h"
   9.691 +      and a: "\<forall>x \<in> H'. h' x \<le> p x"
   9.692      have [symmetric]: "h' x = h x" ..
   9.693 -    also from a have "h' x <= p x " ..
   9.694 -    finally show ?thesis .  
   9.695 +    also from a have "h' x \<le> p x " ..
   9.696 +    finally show ?thesis .
   9.697    qed
   9.698  qed
   9.699  
   9.700  
   9.701 -text{* \medskip The following lemma is a property of linear forms on 
   9.702 -real vector spaces. It will be used for the lemma 
   9.703 -$\idt{abs{\dsh}HahnBanach}$ (see page \pageref{abs-HahnBanach}). \label{abs-ineq-iff}
   9.704 -For real vector spaces the following inequations are equivalent:
   9.705 -\begin{matharray}{ll} 
   9.706 -\forall x\in H.\ap |h\ap x|\leq p\ap x& {\rm and}\\ 
   9.707 -\forall x\in H.\ap h\ap x\leq p\ap x\\ 
   9.708 -\end{matharray}
   9.709 +text {*
   9.710 +  \medskip The following lemma is a property of linear forms on real
   9.711 +  vector spaces. It will be used for the lemma @{text abs_HahnBanach}
   9.712 +  (see page \pageref{abs-HahnBanach}). \label{abs-ineq-iff} For real
   9.713 +  vector spaces the following inequations are equivalent:
   9.714 +  \begin{center}
   9.715 +  \begin{tabular}{lll}
   9.716 +  @{text "\<forall>x \<in> H. \<bar>h x\<bar> \<le> p x"} & and &
   9.717 +  @{text "\<forall>x \<in> H. h x \<le> p x"} \\
   9.718 +  \end{tabular}
   9.719 +  \end{center}
   9.720  *}
   9.721  
   9.722 -lemma abs_ineq_iff: 
   9.723 -  "[| is_subspace H E; is_vectorspace E; is_seminorm E p; 
   9.724 -  is_linearform H h |] 
   9.725 -  ==> (\<forall>x \<in> H. |h x| <= p x) = (\<forall>x \<in> H. h x <= p x)" 
   9.726 +lemma abs_ineq_iff:
   9.727 +  "is_subspace H E \<Longrightarrow> is_vectorspace E \<Longrightarrow> is_seminorm E p \<Longrightarrow>
   9.728 +  is_linearform H h
   9.729 +  \<Longrightarrow> (\<forall>x \<in> H. \<bar>h x\<bar> \<le> p x) = (\<forall>x \<in> H. h x \<le> p x)"
   9.730    (concl is "?L = ?R")
   9.731  proof -
   9.732 -  assume "is_subspace H E" "is_vectorspace E" "is_seminorm E p" 
   9.733 +  assume "is_subspace H E"  "is_vectorspace E"  "is_seminorm E p"
   9.734           "is_linearform H h"
   9.735    have h: "is_vectorspace H" ..
   9.736    show ?thesis
   9.737 -  proof 
   9.738 +  proof
   9.739      assume l: ?L
   9.740      show ?R
   9.741      proof
   9.742        fix x assume x: "x \<in> H"
   9.743 -      have "h x <= |h x|" by (rule abs_ge_self)
   9.744 -      also from l have "... <= p x" ..
   9.745 -      finally show "h x <= p x" .
   9.746 +      have "h x \<le> \<bar>h x\<bar>" by (rule abs_ge_self)
   9.747 +      also from l have "... \<le> p x" ..
   9.748 +      finally show "h x \<le> p x" .
   9.749      qed
   9.750    next
   9.751      assume r: ?R
   9.752      show ?L
   9.753 -    proof 
   9.754 +    proof
   9.755        fix x assume "x \<in> H"
   9.756 -      show "!! a b :: real. [| - a <= b; b <= a |] ==> |b| <= a"
   9.757 +      show "\<And>a b :: real. - a \<le> b \<Longrightarrow> b \<le> a \<Longrightarrow> \<bar>b\<bar> \<le> a"
   9.758          by arith
   9.759 -      show "- p x <= h x"
   9.760 +      show "- p x \<le> h x"
   9.761        proof (rule real_minus_le)
   9.762 -	from h have "- h x = h (- x)"
   9.763 +        from h have "- h x = h (- x)"
   9.764            by (rule linearform_neg [symmetric])
   9.765 -	also from r have "... <= p (- x)" by (simp!)
   9.766 -	also have "... = p x" 
   9.767 +        also from r have "... \<le> p (- x)" by (simp!)
   9.768 +        also have "... = p x"
   9.769          proof (rule seminorm_minus)
   9.770            show "x \<in> E" ..
   9.771          qed
   9.772 -	finally show "- h x <= p x" . 
   9.773 +        finally show "- h x \<le> p x" .
   9.774        qed
   9.775 -      from r show "h x <= p x" .. 
   9.776 +      from r show "h x \<le> p x" ..
   9.777      qed
   9.778    qed
   9.779 -qed  
   9.780 +qed
   9.781  
   9.782 -end
   9.783 \ No newline at end of file
   9.784 +end
    10.1 --- a/src/HOL/Real/HahnBanach/Linearform.thy	Sat Dec 16 21:41:14 2000 +0100
    10.2 +++ b/src/HOL/Real/HahnBanach/Linearform.thy	Sat Dec 16 21:41:51 2000 +0100
    10.3 @@ -7,63 +7,65 @@
    10.4  
    10.5  theory Linearform = VectorSpace:
    10.6  
    10.7 -text{* A \emph{linear form} is a function on a vector
    10.8 -space into the reals that is additive and multiplicative. *}
    10.9 +text {*
   10.10 +  A \emph{linear form} is a function on a vector space into the reals
   10.11 +  that is additive and multiplicative.
   10.12 +*}
   10.13  
   10.14  constdefs
   10.15 -  is_linearform :: "['a::{plus, minus, zero} set, 'a => real] => bool" 
   10.16 -  "is_linearform V f == 
   10.17 +  is_linearform :: "'a::{plus, minus, zero} set \<Rightarrow> ('a \<Rightarrow> real) \<Rightarrow> bool"
   10.18 +  "is_linearform V f \<equiv>
   10.19        (\<forall>x \<in> V. \<forall>y \<in> V. f (x + y) = f x + f y) \<and>
   10.20 -      (\<forall>x \<in> V. \<forall>a. f (a \<cdot> x) = a * (f x))" 
   10.21 +      (\<forall>x \<in> V. \<forall>a. f (a \<cdot> x) = a * (f x))"
   10.22  
   10.23 -lemma is_linearformI [intro]: 
   10.24 -  "[| !! x y. [| x \<in> V; y \<in> V |] ==> f (x + y) = f x + f y;
   10.25 -    !! x c. x \<in> V ==> f (c \<cdot> x) = c * f x |]
   10.26 - ==> is_linearform V f"
   10.27 - by (unfold is_linearform_def) force
   10.28 +lemma is_linearformI [intro]:
   10.29 +  "(\<And>x y. x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> f (x + y) = f x + f y) \<Longrightarrow>
   10.30 +    (\<And>x c. x \<in> V \<Longrightarrow> f (c \<cdot> x) = c * f x)
   10.31 + \<Longrightarrow> is_linearform V f"
   10.32 + by (unfold is_linearform_def) blast
   10.33  
   10.34 -lemma linearform_add [intro?]: 
   10.35 -  "[| is_linearform V f; x \<in> V; y \<in> V |] ==> f (x + y) = f x + f y"
   10.36 -  by (unfold is_linearform_def) fast
   10.37 +lemma linearform_add [intro?]:
   10.38 +  "is_linearform V f \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> f (x + y) = f x + f y"
   10.39 +  by (unfold is_linearform_def) blast
   10.40  
   10.41 -lemma linearform_mult [intro?]: 
   10.42 -  "[| is_linearform V f; x \<in> V |] ==>  f (a \<cdot> x) = a * (f x)" 
   10.43 -  by (unfold is_linearform_def) fast
   10.44 +lemma linearform_mult [intro?]:
   10.45 +  "is_linearform V f \<Longrightarrow> x \<in> V \<Longrightarrow>  f (a \<cdot> x) = a * (f x)"
   10.46 +  by (unfold is_linearform_def) blast
   10.47  
   10.48  lemma linearform_neg [intro?]:
   10.49 -  "[|  is_vectorspace V; is_linearform V f; x \<in> V|] 
   10.50 -  ==> f (- x) = - f x"
   10.51 -proof - 
   10.52 -  assume "is_linearform V f" "is_vectorspace V" "x \<in> V"
   10.53 +  "is_vectorspace V \<Longrightarrow> is_linearform V f \<Longrightarrow> x \<in> V
   10.54 +  \<Longrightarrow> f (- x) = - f x"
   10.55 +proof -
   10.56 +  assume "is_linearform V f"  "is_vectorspace V"  "x \<in> V"
   10.57    have "f (- x) = f ((- #1) \<cdot> x)" by (simp! add: negate_eq1)
   10.58    also have "... = (- #1) * (f x)" by (rule linearform_mult)
   10.59    also have "... = - (f x)" by (simp!)
   10.60    finally show ?thesis .
   10.61  qed
   10.62  
   10.63 -lemma linearform_diff [intro?]: 
   10.64 -  "[| is_vectorspace V; is_linearform V f; x \<in> V; y \<in> V |] 
   10.65 -  ==> f (x - y) = f x - f y"  
   10.66 +lemma linearform_diff [intro?]:
   10.67 +  "is_vectorspace V \<Longrightarrow> is_linearform V f \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V
   10.68 +  \<Longrightarrow> f (x - y) = f x - f y"
   10.69  proof -
   10.70 -  assume "is_vectorspace V" "is_linearform V f" "x \<in> V" "y \<in> V"
   10.71 +  assume "is_vectorspace V"  "is_linearform V f"  "x \<in> V"  "y \<in> V"
   10.72    have "f (x - y) = f (x + - y)" by (simp! only: diff_eq1)
   10.73 -  also have "... = f x + f (- y)" 
   10.74 +  also have "... = f x + f (- y)"
   10.75      by (rule linearform_add) (simp!)+
   10.76    also have "f (- y) = - f y" by (rule linearform_neg)
   10.77    finally show "f (x - y) = f x - f y" by (simp!)
   10.78  qed
   10.79  
   10.80 -text{* Every linear form yields $0$ for the $\zero$ vector.*}
   10.81 +text {* Every linear form yields @{text 0} for the @{text 0} vector. *}
   10.82  
   10.83 -lemma linearform_zero [intro?, simp]: 
   10.84 -  "[| is_vectorspace V; is_linearform V f |] ==> f 0 = #0"
   10.85 -proof - 
   10.86 -  assume "is_vectorspace V" "is_linearform V f"
   10.87 +lemma linearform_zero [intro?, simp]:
   10.88 +  "is_vectorspace V \<Longrightarrow> is_linearform V f \<Longrightarrow> f 0 = #0"
   10.89 +proof -
   10.90 +  assume "is_vectorspace V"  "is_linearform V f"
   10.91    have "f 0 = f (0 - 0)" by (simp!)
   10.92 -  also have "... = f 0 - f 0" 
   10.93 +  also have "... = f 0 - f 0"
   10.94      by (rule linearform_diff) (simp!)+
   10.95    also have "... = #0" by simp
   10.96    finally show "f 0 = #0" .
   10.97 -qed 
   10.98 +qed
   10.99  
  10.100 -end
  10.101 \ No newline at end of file
  10.102 +end
    11.1 --- a/src/HOL/Real/HahnBanach/NormedSpace.thy	Sat Dec 16 21:41:14 2000 +0100
    11.2 +++ b/src/HOL/Real/HahnBanach/NormedSpace.thy	Sat Dec 16 21:41:51 2000 +0100
    11.3 @@ -7,96 +7,97 @@
    11.4  
    11.5  theory NormedSpace =  Subspace:
    11.6  
    11.7 -syntax 
    11.8 -  abs :: "real \<Rightarrow> real" ("|_|")
    11.9 -
   11.10  subsection {* Quasinorms *}
   11.11  
   11.12 -text{* A \emph{seminorm} $\norm{\cdot}$ is a function on a real vector
   11.13 -space into the reals that has the following properties: It is positive
   11.14 -definite, absolute homogenous and subadditive.  *}
   11.15 +text {*
   11.16 +  A \emph{seminorm} @{text "\<parallel>\<cdot>\<parallel>"} is a function on a real vector space
   11.17 +  into the reals that has the following properties: it is positive
   11.18 +  definite, absolute homogenous and subadditive.
   11.19 +*}
   11.20  
   11.21  constdefs
   11.22 -  is_seminorm :: "['a::{plus, minus, zero} set, 'a => real] => bool"
   11.23 -  "is_seminorm V norm == \<forall>x \<in>  V. \<forall>y \<in> V. \<forall>a. 
   11.24 -        #0 <= norm x 
   11.25 -      \<and> norm (a \<cdot> x) = |a| * norm x
   11.26 -      \<and> norm (x + y) <= norm x + norm y"
   11.27 +  is_seminorm :: "'a::{plus, minus, zero} set \<Rightarrow> ('a \<Rightarrow> real) \<Rightarrow> bool"
   11.28 +  "is_seminorm V norm \<equiv> \<forall>x \<in> V. \<forall>y \<in> V. \<forall>a.
   11.29 +        #0 \<le> norm x
   11.30 +      \<and> norm (a \<cdot> x) = \<bar>a\<bar> * norm x
   11.31 +      \<and> norm (x + y) \<le> norm x + norm y"
   11.32  
   11.33 -lemma is_seminormI [intro]: 
   11.34 -  "[| !! x y a. [| x \<in> V; y \<in> V|] ==> #0 <= norm x;
   11.35 -  !! x a. x \<in> V ==> norm (a \<cdot> x) = |a| * norm x;
   11.36 -  !! x y. [|x \<in> V; y \<in> V |] ==> norm (x + y) <= norm x + norm y |] 
   11.37 -  ==> is_seminorm V norm"
   11.38 -  by (unfold is_seminorm_def, force)
   11.39 +lemma is_seminormI [intro]:
   11.40 +  "(\<And>x y a. x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> #0 \<le> norm x) \<Longrightarrow>
   11.41 +  (\<And>x a. x \<in> V \<Longrightarrow> norm (a \<cdot> x) = \<bar>a\<bar> * norm x) \<Longrightarrow>
   11.42 +  (\<And>x y. x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> norm (x + y) \<le> norm x + norm y)
   11.43 +  \<Longrightarrow> is_seminorm V norm"
   11.44 +  by (unfold is_seminorm_def) auto
   11.45  
   11.46  lemma seminorm_ge_zero [intro?]:
   11.47 -  "[| is_seminorm V norm; x \<in> V |] ==> #0 <= norm x"
   11.48 -  by (unfold is_seminorm_def, force)
   11.49 +  "is_seminorm V norm \<Longrightarrow> x \<in> V \<Longrightarrow> #0 \<le> norm x"
   11.50 +  by (unfold is_seminorm_def) blast
   11.51  
   11.52 -lemma seminorm_abs_homogenous: 
   11.53 -  "[| is_seminorm V norm; x \<in> V |] 
   11.54 -  ==> norm (a \<cdot> x) = |a| * norm x"
   11.55 -  by (unfold is_seminorm_def, force)
   11.56 +lemma seminorm_abs_homogenous:
   11.57 +  "is_seminorm V norm \<Longrightarrow> x \<in> V
   11.58 +  \<Longrightarrow> norm (a \<cdot> x) = \<bar>a\<bar> * norm x"
   11.59 +  by (unfold is_seminorm_def) blast
   11.60  
   11.61 -lemma seminorm_subadditive: 
   11.62 -  "[| is_seminorm V norm; x \<in> V; y \<in> V |] 
   11.63 -  ==> norm (x + y) <= norm x + norm y"
   11.64 -  by (unfold is_seminorm_def, force)
   11.65 +lemma seminorm_subadditive:
   11.66 +  "is_seminorm V norm \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V
   11.67 +  \<Longrightarrow> norm (x + y) \<le> norm x + norm y"
   11.68 +  by (unfold is_seminorm_def) blast
   11.69  
   11.70 -lemma seminorm_diff_subadditive: 
   11.71 -  "[| is_seminorm V norm; x \<in> V; y \<in> V; is_vectorspace V |] 
   11.72 -  ==> norm (x - y) <= norm x + norm y"
   11.73 +lemma seminorm_diff_subadditive:
   11.74 +  "is_seminorm V norm \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> is_vectorspace V
   11.75 +  \<Longrightarrow> norm (x - y) \<le> norm x + norm y"
   11.76  proof -
   11.77 -  assume "is_seminorm V norm" "x \<in> V" "y \<in> V" "is_vectorspace V"
   11.78 -  have "norm (x - y) = norm (x + - #1 \<cdot> y)"  
   11.79 +  assume "is_seminorm V norm"  "x \<in> V"  "y \<in> V"  "is_vectorspace V"
   11.80 +  have "norm (x - y) = norm (x + - #1 \<cdot> y)"
   11.81      by (simp! add: diff_eq2 negate_eq2a)
   11.82 -  also have "... <= norm x + norm  (- #1 \<cdot> y)" 
   11.83 +  also have "... \<le> norm x + norm  (- #1 \<cdot> y)"
   11.84      by (simp! add: seminorm_subadditive)
   11.85 -  also have "norm (- #1 \<cdot> y) = |- #1| * norm y" 
   11.86 +  also have "norm (- #1 \<cdot> y) = \<bar>- #1\<bar> * norm y"
   11.87      by (rule seminorm_abs_homogenous)
   11.88 -  also have "|- #1| = (#1::real)" by (rule abs_minus_one)
   11.89 -  finally show "norm (x - y) <= norm x + norm y" by simp
   11.90 +  also have "\<bar>- #1\<bar> = (#1::real)" by (rule abs_minus_one)
   11.91 +  finally show "norm (x - y) \<le> norm x + norm y" by simp
   11.92  qed
   11.93  
   11.94 -lemma seminorm_minus: 
   11.95 -  "[| is_seminorm V norm; x \<in> V; is_vectorspace V |] 
   11.96 -  ==> norm (- x) = norm x"
   11.97 +lemma seminorm_minus:
   11.98 +  "is_seminorm V norm \<Longrightarrow> x \<in> V \<Longrightarrow> is_vectorspace V
   11.99 +  \<Longrightarrow> norm (- x) = norm x"
  11.100  proof -
  11.101 -  assume "is_seminorm V norm" "x \<in> V" "is_vectorspace V"
  11.102 +  assume "is_seminorm V norm"  "x \<in> V"  "is_vectorspace V"
  11.103    have "norm (- x) = norm (- #1 \<cdot> x)" by (simp! only: negate_eq1)
  11.104 -  also have "... = |- #1| * norm x" 
  11.105 +  also have "... = \<bar>- #1\<bar> * norm x"
  11.106      by (rule seminorm_abs_homogenous)
  11.107 -  also have "|- #1| = (#1::real)" by (rule abs_minus_one)
  11.108 +  also have "\<bar>- #1\<bar> = (#1::real)" by (rule abs_minus_one)
  11.109    finally show "norm (- x) = norm x" by simp
  11.110  qed
  11.111  
  11.112  
  11.113  subsection {* Norms *}
  11.114  
  11.115 -text{* A \emph{norm} $\norm{\cdot}$ is a seminorm that maps only the
  11.116 -$\zero$ vector to $0$. *}
  11.117 +text {*
  11.118 +  A \emph{norm} @{text "\<parallel>\<cdot>\<parallel>"} is a seminorm that maps only the
  11.119 +  @{text 0} vector to @{text 0}.
  11.120 +*}
  11.121  
  11.122  constdefs
  11.123 -  is_norm :: "['a::{plus, minus, zero} set, 'a => real] => bool"
  11.124 -  "is_norm V norm == \<forall>x \<in> V.  is_seminorm V norm 
  11.125 +  is_norm :: "'a::{plus, minus, zero} set \<Rightarrow> ('a \<Rightarrow> real) \<Rightarrow> bool"
  11.126 +  "is_norm V norm \<equiv> \<forall>x \<in> V. is_seminorm V norm
  11.127        \<and> (norm x = #0) = (x = 0)"
  11.128  
  11.129 -lemma is_normI [intro]: 
  11.130 -  "\<forall>x \<in> V.  is_seminorm V norm  \<and> (norm x = #0) = (x = 0) 
  11.131 -  ==> is_norm V norm" by (simp only: is_norm_def)
  11.132 +lemma is_normI [intro]:
  11.133 +  "\<forall>x \<in> V.  is_seminorm V norm  \<and> (norm x = #0) = (x = 0)
  11.134 +  \<Longrightarrow> is_norm V norm" by (simp only: is_norm_def)
  11.135  
  11.136 -lemma norm_is_seminorm [intro?]: 
  11.137 -  "[| is_norm V norm; x \<in> V |] ==> is_seminorm V norm"
  11.138 -  by (unfold is_norm_def, force)
  11.139 +lemma norm_is_seminorm [intro?]:
  11.140 +  "is_norm V norm \<Longrightarrow> x \<in> V \<Longrightarrow> is_seminorm V norm"
  11.141 +  by (unfold is_norm_def) blast
  11.142  
  11.143 -lemma norm_zero_iff: 
  11.144 -  "[| is_norm V norm; x \<in> V |] ==> (norm x = #0) = (x = 0)"
  11.145 -  by (unfold is_norm_def, force)
  11.146 +lemma norm_zero_iff:
  11.147 +  "is_norm V norm \<Longrightarrow> x \<in> V \<Longrightarrow> (norm x = #0) = (x = 0)"
  11.148 +  by (unfold is_norm_def) blast
  11.149  
  11.150  lemma norm_ge_zero [intro?]:
  11.151 -  "[|is_norm V norm; x \<in> V |] ==> #0 <= norm x"
  11.152 -  by (unfold is_norm_def is_seminorm_def, force)
  11.153 +  "is_norm V norm \<Longrightarrow> x \<in> V \<Longrightarrow> #0 \<le> norm x"
  11.154 +  by (unfold is_norm_def is_seminorm_def) blast
  11.155  
  11.156  
  11.157  subsection {* Normed vector spaces *}
  11.158 @@ -105,33 +106,33 @@
  11.159  a \emph{normed space}. *}
  11.160  
  11.161  constdefs
  11.162 -  is_normed_vectorspace :: 
  11.163 -  "['a::{plus, minus, zero} set, 'a => real] => bool"
  11.164 -  "is_normed_vectorspace V norm ==
  11.165 +  is_normed_vectorspace ::
  11.166 +  "'a::{plus, minus, zero} set \<Rightarrow> ('a \<Rightarrow> real) \<Rightarrow> bool"
  11.167 +  "is_normed_vectorspace V norm \<equiv>
  11.168        is_vectorspace V \<and> is_norm V norm"
  11.169  
  11.170 -lemma normed_vsI [intro]: 
  11.171 -  "[| is_vectorspace V; is_norm V norm |] 
  11.172 -  ==> is_normed_vectorspace V norm"
  11.173 -  by (unfold is_normed_vectorspace_def) blast 
  11.174 +lemma normed_vsI [intro]:
  11.175 +  "is_vectorspace V \<Longrightarrow> is_norm V norm
  11.176 +  \<Longrightarrow> is_normed_vectorspace V norm"
  11.177 +  by (unfold is_normed_vectorspace_def) blast
  11.178  
  11.179 -lemma normed_vs_vs [intro?]: 
  11.180 -  "is_normed_vectorspace V norm ==> is_vectorspace V"
  11.181 -  by (unfold is_normed_vectorspace_def) force
  11.182 +lemma normed_vs_vs [intro?]:
  11.183 +  "is_normed_vectorspace V norm \<Longrightarrow> is_vectorspace V"
  11.184 +  by (unfold is_normed_vectorspace_def) blast
  11.185  
  11.186 -lemma normed_vs_norm [intro?]: 
  11.187 -  "is_normed_vectorspace V norm ==> is_norm V norm"
  11.188 -  by (unfold is_normed_vectorspace_def, elim conjE)
  11.189 +lemma normed_vs_norm [intro?]:
  11.190 +  "is_normed_vectorspace V norm \<Longrightarrow> is_norm V norm"
  11.191 +  by (unfold is_normed_vectorspace_def) blast
  11.192  
  11.193 -lemma normed_vs_norm_ge_zero [intro?]: 
  11.194 -  "[| is_normed_vectorspace V norm; x \<in> V |] ==> #0 <= norm x"
  11.195 -  by (unfold is_normed_vectorspace_def, rule, elim conjE)
  11.196 +lemma normed_vs_norm_ge_zero [intro?]:
  11.197 +  "is_normed_vectorspace V norm \<Longrightarrow> x \<in> V \<Longrightarrow> #0 \<le> norm x"
  11.198 +  by (unfold is_normed_vectorspace_def) (fast elim: norm_ge_zero)
  11.199  
  11.200 -lemma normed_vs_norm_gt_zero [intro?]: 
  11.201 -  "[| is_normed_vectorspace V norm; x \<in> V; x \<noteq> 0 |] ==> #0 < norm x"
  11.202 +lemma normed_vs_norm_gt_zero [intro?]:
  11.203 +  "is_normed_vectorspace V norm \<Longrightarrow> x \<in> V \<Longrightarrow> x \<noteq> 0 \<Longrightarrow> #0 < norm x"
  11.204  proof (unfold is_normed_vectorspace_def, elim conjE)
  11.205 -  assume "x \<in> V" "x \<noteq> 0" "is_vectorspace V" "is_norm V norm"
  11.206 -  have "#0 <= norm x" ..
  11.207 +  assume "x \<in> V"  "x \<noteq> 0"  "is_vectorspace V"  "is_norm V norm"
  11.208 +  have "#0 \<le> norm x" ..
  11.209    also have "#0 \<noteq> norm x"
  11.210    proof
  11.211      presume "norm x = #0"
  11.212 @@ -142,45 +143,45 @@
  11.213    finally show "#0 < norm x" .
  11.214  qed
  11.215  
  11.216 -lemma normed_vs_norm_abs_homogenous [intro?]: 
  11.217 -  "[| is_normed_vectorspace V norm; x \<in> V |] 
  11.218 -  ==> norm (a \<cdot> x) = |a| * norm x"
  11.219 -  by (rule seminorm_abs_homogenous, rule norm_is_seminorm, 
  11.220 +lemma normed_vs_norm_abs_homogenous [intro?]:
  11.221 +  "is_normed_vectorspace V norm \<Longrightarrow> x \<in> V
  11.222 +  \<Longrightarrow> norm (a \<cdot> x) = \<bar>a\<bar> * norm x"
  11.223 +  by (rule seminorm_abs_homogenous, rule norm_is_seminorm,
  11.224        rule normed_vs_norm)
  11.225  
  11.226 -lemma normed_vs_norm_subadditive [intro?]: 
  11.227 -  "[| is_normed_vectorspace V norm; x \<in> V; y \<in> V |] 
  11.228 -  ==> norm (x + y) <= norm x + norm y"
  11.229 -  by (rule seminorm_subadditive, rule norm_is_seminorm, 
  11.230 +lemma normed_vs_norm_subadditive [intro?]:
  11.231 +  "is_normed_vectorspace V norm \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V
  11.232 +  \<Longrightarrow> norm (x + y) \<le> norm x + norm y"
  11.233 +  by (rule seminorm_subadditive, rule norm_is_seminorm,
  11.234       rule normed_vs_norm)
  11.235  
  11.236 -text{* Any subspace of a normed vector space is again a 
  11.237 +text{* Any subspace of a normed vector space is again a
  11.238  normed vectorspace.*}
  11.239  
  11.240 -lemma subspace_normed_vs [intro?]: 
  11.241 -  "[| is_vectorspace E; is_subspace F E;
  11.242 -  is_normed_vectorspace E norm |] ==> is_normed_vectorspace F norm"
  11.243 +lemma subspace_normed_vs [intro?]:
  11.244 +  "is_vectorspace E \<Longrightarrow> is_subspace F E \<Longrightarrow>
  11.245 +  is_normed_vectorspace E norm \<Longrightarrow> is_normed_vectorspace F norm"
  11.246  proof (rule normed_vsI)
  11.247 -  assume "is_subspace F E" "is_vectorspace E" 
  11.248 +  assume "is_subspace F E"  "is_vectorspace E"
  11.249           "is_normed_vectorspace E norm"
  11.250    show "is_vectorspace F" ..
  11.251 -  show "is_norm F norm" 
  11.252 +  show "is_norm F norm"
  11.253    proof (intro is_normI ballI conjI)
  11.254 -    show "is_seminorm F norm" 
  11.255 +    show "is_seminorm F norm"
  11.256      proof
  11.257        fix x y a presume "x \<in> E"
  11.258 -      show "#0 <= norm x" ..
  11.259 -      show "norm (a \<cdot> x) = |a| * norm x" ..
  11.260 +      show "#0 \<le> norm x" ..
  11.261 +      show "norm (a \<cdot> x) = \<bar>a\<bar> * norm x" ..
  11.262        presume "y \<in> E"
  11.263 -      show "norm (x + y) <= norm x + norm y" ..
  11.264 +      show "norm (x + y) \<le> norm x + norm y" ..
  11.265      qed (simp!)+
  11.266  
  11.267      fix x assume "x \<in> F"
  11.268 -    show "(norm x = #0) = (x = 0)" 
  11.269 +    show "(norm x = #0) = (x = 0)"
  11.270      proof (rule norm_zero_iff)
  11.271        show "is_norm E norm" ..
  11.272      qed (simp!)
  11.273    qed
  11.274  qed
  11.275  
  11.276 -end
  11.277 \ No newline at end of file
  11.278 +end
    12.1 --- a/src/HOL/Real/HahnBanach/Subspace.thy	Sat Dec 16 21:41:14 2000 +0100
    12.2 +++ b/src/HOL/Real/HahnBanach/Subspace.thy	Sat Dec 16 21:41:51 2000 +0100
    12.3 @@ -3,7 +3,6 @@
    12.4      Author:     Gertrud Bauer, TU Munich
    12.5  *)
    12.6  
    12.7 -
    12.8  header {* Subspaces *}
    12.9  
   12.10  theory Subspace = VectorSpace:
   12.11 @@ -11,59 +10,61 @@
   12.12  
   12.13  subsection {* Definition *}
   12.14  
   12.15 -text {* A non-empty subset $U$ of a vector space $V$ is a 
   12.16 -\emph{subspace} of $V$, iff $U$ is closed under addition and 
   12.17 -scalar multiplication. *}
   12.18 +text {*
   12.19 +  A non-empty subset @{text U} of a vector space @{text V} is a
   12.20 +  \emph{subspace} of @{text V}, iff @{text U} is closed under addition
   12.21 +  and scalar multiplication.
   12.22 +*}
   12.23  
   12.24 -constdefs 
   12.25 -  is_subspace ::  "['a::{plus, minus, zero} set, 'a set] => bool"
   12.26 -  "is_subspace U V == U \<noteq> {} \<and> U <= V 
   12.27 -     \<and> (\<forall>x \<in> U. \<forall>y \<in> U. \<forall>a. x + y \<in> U \<and> a \<cdot> x\<in> U)"
   12.28 +constdefs
   12.29 +  is_subspace ::  "'a::{plus, minus, zero} set \<Rightarrow> 'a set \<Rightarrow> bool"
   12.30 +  "is_subspace U V \<equiv> U \<noteq> {} \<and> U \<subseteq> V
   12.31 +     \<and> (\<forall>x \<in> U. \<forall>y \<in> U. \<forall>a. x + y \<in> U \<and> a \<cdot> x \<in> U)"
   12.32  
   12.33 -lemma subspaceI [intro]: 
   12.34 -  "[| 0 \<in> U; U <= V; \<forall>x \<in> U. \<forall>y \<in> U. (x + y \<in> U); 
   12.35 -  \<forall>x \<in> U. \<forall>a. a \<cdot> x \<in> U |]
   12.36 -  ==> is_subspace U V"
   12.37 -proof (unfold is_subspace_def, intro conjI) 
   12.38 +lemma subspaceI [intro]:
   12.39 +  "0 \<in> U \<Longrightarrow> U \<subseteq> V \<Longrightarrow> \<forall>x \<in> U. \<forall>y \<in> U. (x + y \<in> U) \<Longrightarrow>
   12.40 +  \<forall>x \<in> U. \<forall>a. a \<cdot> x \<in> U
   12.41 +  \<Longrightarrow> is_subspace U V"
   12.42 +proof (unfold is_subspace_def, intro conjI)
   12.43    assume "0 \<in> U" thus "U \<noteq> {}" by fast
   12.44  qed (simp+)
   12.45  
   12.46 -lemma subspace_not_empty [intro?]: "is_subspace U V ==> U \<noteq> {}"
   12.47 -  by (unfold is_subspace_def) simp 
   12.48 +lemma subspace_not_empty [intro?]: "is_subspace U V \<Longrightarrow> U \<noteq> {}"
   12.49 +  by (unfold is_subspace_def) blast
   12.50  
   12.51 -lemma subspace_subset [intro?]: "is_subspace U V ==> U <= V"
   12.52 -  by (unfold is_subspace_def) simp
   12.53 +lemma subspace_subset [intro?]: "is_subspace U V \<Longrightarrow> U \<subseteq> V"
   12.54 +  by (unfold is_subspace_def) blast
   12.55  
   12.56 -lemma subspace_subsetD [simp, intro?]: 
   12.57 -  "[| is_subspace U V; x \<in> U |] ==> x \<in> V"
   12.58 -  by (unfold is_subspace_def) force
   12.59 +lemma subspace_subsetD [simp, intro?]:
   12.60 +  "is_subspace U V \<Longrightarrow> x \<in> U \<Longrightarrow> x \<in> V"
   12.61 +  by (unfold is_subspace_def) blast
   12.62  
   12.63 -lemma subspace_add_closed [simp, intro?]: 
   12.64 -  "[| is_subspace U V; x \<in> U; y \<in> U |] ==> x + y \<in> U"
   12.65 -  by (unfold is_subspace_def) simp
   12.66 +lemma subspace_add_closed [simp, intro?]:
   12.67 +  "is_subspace U V \<Longrightarrow> x \<in> U \<Longrightarrow> y \<in> U \<Longrightarrow> x + y \<in> U"
   12.68 +  by (unfold is_subspace_def) blast
   12.69  
   12.70 -lemma subspace_mult_closed [simp, intro?]: 
   12.71 -  "[| is_subspace U V; x \<in> U |] ==> a \<cdot> x \<in> U"
   12.72 -  by (unfold is_subspace_def) simp
   12.73 +lemma subspace_mult_closed [simp, intro?]:
   12.74 +  "is_subspace U V \<Longrightarrow> x \<in> U \<Longrightarrow> a \<cdot> x \<in> U"
   12.75 +  by (unfold is_subspace_def) blast
   12.76  
   12.77 -lemma subspace_diff_closed [simp, intro?]: 
   12.78 -  "[| is_subspace U V; is_vectorspace V; x \<in> U; y \<in> U |] 
   12.79 -  ==> x - y \<in> U"
   12.80 -  by (simp! add: diff_eq1 negate_eq1)
   12.81 +lemma subspace_diff_closed [simp, intro?]:
   12.82 +  "is_subspace U V \<Longrightarrow> is_vectorspace V \<Longrightarrow> x \<in> U \<Longrightarrow> y \<in> U
   12.83 +  \<Longrightarrow> x - y \<in> U"
   12.84 +  by (simp add: diff_eq1 negate_eq1)
   12.85  
   12.86 -text {* Similar as for linear spaces, the existence of the 
   12.87 -zero element in every subspace follows from the non-emptiness 
   12.88 +text {* Similar as for linear spaces, the existence of the
   12.89 +zero element in every subspace follows from the non-emptiness
   12.90  of the carrier set and by vector space laws.*}
   12.91  
   12.92  lemma zero_in_subspace [intro?]:
   12.93 -  "[| is_subspace U V; is_vectorspace V |] ==> 0 \<in> U"
   12.94 -proof - 
   12.95 +  "is_subspace U V \<Longrightarrow> is_vectorspace V \<Longrightarrow> 0 \<in> U"
   12.96 +proof -
   12.97    assume "is_subspace U V" and v: "is_vectorspace V"
   12.98    have "U \<noteq> {}" ..
   12.99 -  hence "\<exists>x. x \<in> U" by force
  12.100 -  thus ?thesis 
  12.101 -  proof 
  12.102 -    fix x assume u: "x \<in> U" 
  12.103 +  hence "\<exists>x. x \<in> U" by blast
  12.104 +  thus ?thesis
  12.105 +  proof
  12.106 +    fix x assume u: "x \<in> U"
  12.107      hence "x \<in> V" by (simp!)
  12.108      with v have "0 = x - x" by (simp!)
  12.109      also have "... \<in> U" by (rule subspace_diff_closed)
  12.110 @@ -71,55 +72,54 @@
  12.111    qed
  12.112  qed
  12.113  
  12.114 -lemma subspace_neg_closed [simp, intro?]: 
  12.115 -  "[| is_subspace U V; is_vectorspace V; x \<in> U |] ==> - x \<in> U"
  12.116 +lemma subspace_neg_closed [simp, intro?]:
  12.117 +  "is_subspace U V \<Longrightarrow> is_vectorspace V \<Longrightarrow> x \<in> U \<Longrightarrow> - x \<in> U"
  12.118    by (simp add: negate_eq1)
  12.119  
  12.120 -text_raw {* \medskip *}
  12.121 -text {* Further derived laws: every subspace is a vector space. *}
  12.122 +text {* \medskip Further derived laws: every subspace is a vector space. *}
  12.123  
  12.124  lemma subspace_vs [intro?]:
  12.125 -  "[| is_subspace U V; is_vectorspace V |] ==> is_vectorspace U"
  12.126 +  "is_subspace U V \<Longrightarrow> is_vectorspace V \<Longrightarrow> is_vectorspace U"
  12.127  proof -
  12.128 -  assume "is_subspace U V" "is_vectorspace V"
  12.129 +  assume "is_subspace U V"  "is_vectorspace V"
  12.130    show ?thesis
  12.131 -  proof 
  12.132 +  proof
  12.133      show "0 \<in> U" ..
  12.134      show "\<forall>x \<in> U. \<forall>a. a \<cdot> x \<in> U" by (simp!)
  12.135      show "\<forall>x \<in> U. \<forall>y \<in> U. x + y \<in> U" by (simp!)
  12.136      show "\<forall>x \<in> U. - x = -#1 \<cdot> x" by (simp! add: negate_eq1)
  12.137 -    show "\<forall>x \<in> U. \<forall>y \<in> U. x - y =  x + - y" 
  12.138 +    show "\<forall>x \<in> U. \<forall>y \<in> U. x - y =  x + - y"
  12.139        by (simp! add: diff_eq1)
  12.140    qed (simp! add: vs_add_mult_distrib1 vs_add_mult_distrib2)+
  12.141  qed
  12.142  
  12.143  text {* The subspace relation is reflexive. *}
  12.144  
  12.145 -lemma subspace_refl [intro]: "is_vectorspace V ==> is_subspace V V"
  12.146 -proof 
  12.147 +lemma subspace_refl [intro]: "is_vectorspace V \<Longrightarrow> is_subspace V V"
  12.148 +proof
  12.149    assume "is_vectorspace V"
  12.150    show "0 \<in> V" ..
  12.151 -  show "V <= V" ..
  12.152 +  show "V \<subseteq> V" ..
  12.153    show "\<forall>x \<in> V. \<forall>y \<in> V. x + y \<in> V" by (simp!)
  12.154    show "\<forall>x \<in> V. \<forall>a. a \<cdot> x \<in> V" by (simp!)
  12.155  qed
  12.156  
  12.157  text {* The subspace relation is transitive. *}
  12.158  
  12.159 -lemma subspace_trans: 
  12.160 -  "[| is_subspace U V; is_vectorspace V; is_subspace V W |] 
  12.161 -  ==> is_subspace U W"
  12.162 -proof 
  12.163 -  assume "is_subspace U V" "is_subspace V W" "is_vectorspace V"
  12.164 +lemma subspace_trans:
  12.165 +  "is_subspace U V \<Longrightarrow> is_vectorspace V \<Longrightarrow> is_subspace V W
  12.166 +  \<Longrightarrow> is_subspace U W"
  12.167 +proof
  12.168 +  assume "is_subspace U V"  "is_subspace V W"  "is_vectorspace V"
  12.169    show "0 \<in> U" ..
  12.170  
  12.171 -  have "U <= V" ..
  12.172 -  also have "V <= W" ..
  12.173 -  finally show "U <= W" .
  12.174 +  have "U \<subseteq> V" ..
  12.175 +  also have "V \<subseteq> W" ..
  12.176 +  finally show "U \<subseteq> W" .
  12.177  
  12.178 -  show "\<forall>x \<in> U. \<forall>y \<in> U. x + y \<in> U" 
  12.179 +  show "\<forall>x \<in> U. \<forall>y \<in> U. x + y \<in> U"
  12.180    proof (intro ballI)
  12.181 -    fix x y assume "x \<in> U" "y \<in> U"
  12.182 +    fix x y assume "x \<in> U"  "y \<in> U"
  12.183      show "x + y \<in> U" by (simp!)
  12.184    qed
  12.185  
  12.186 @@ -134,12 +134,14 @@
  12.187  
  12.188  subsection {* Linear closure *}
  12.189  
  12.190 -text {* The \emph{linear closure} of a vector $x$ is the set of all
  12.191 -scalar multiples of $x$. *}
  12.192 +text {*
  12.193 +  The \emph{linear closure} of a vector @{text x} is the set of all
  12.194 +  scalar multiples of @{text x}.
  12.195 +*}
  12.196  
  12.197  constdefs
  12.198 -  lin :: "('a::{minus,plus,zero}) => 'a set"
  12.199 -  "lin x == {a \<cdot> x | a. True}" 
  12.200 +  lin :: "('a::{minus,plus,zero}) \<Rightarrow> 'a set"
  12.201 +  "lin x \<equiv> {a \<cdot> x | a. True}"
  12.202  
  12.203  lemma linD: "x \<in> lin v = (\<exists>a::real. x = a \<cdot> v)"
  12.204    by (unfold lin_def) fast
  12.205 @@ -149,59 +151,59 @@
  12.206  
  12.207  text {* Every vector is contained in its linear closure. *}
  12.208  
  12.209 -lemma x_lin_x: "[| is_vectorspace V; x \<in> V |] ==> x \<in> lin x"
  12.210 +lemma x_lin_x: "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> x \<in> lin x"
  12.211  proof (unfold lin_def, intro CollectI exI conjI)
  12.212 -  assume "is_vectorspace V" "x \<in> V"
  12.213 +  assume "is_vectorspace V"  "x \<in> V"
  12.214    show "x = #1 \<cdot> x" by (simp!)
  12.215  qed simp
  12.216  
  12.217  text {* Any linear closure is a subspace. *}
  12.218  
  12.219 -lemma lin_subspace [intro?]: 
  12.220 -  "[| is_vectorspace V; x \<in> V |] ==> is_subspace (lin x) V"
  12.221 +lemma lin_subspace [intro?]:
  12.222 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> is_subspace (lin x) V"
  12.223  proof
  12.224 -  assume "is_vectorspace V" "x \<in> V"
  12.225 -  show "0 \<in> lin x" 
  12.226 +  assume "is_vectorspace V"  "x \<in> V"
  12.227 +  show "0 \<in> lin x"
  12.228    proof (unfold lin_def, intro CollectI exI conjI)
  12.229      show "0 = (#0::real) \<cdot> x" by (simp!)
  12.230    qed simp
  12.231  
  12.232 -  show "lin x <= V"
  12.233 -  proof (unfold lin_def, intro subsetI, elim CollectE exE conjE) 
  12.234 -    fix xa a assume "xa = a \<cdot> x" 
  12.235 +  show "lin x \<subseteq> V"
  12.236 +  proof (unfold lin_def, intro subsetI, elim CollectE exE conjE)
  12.237 +    fix xa a assume "xa = a \<cdot> x"
  12.238      show "xa \<in> V" by (simp!)
  12.239    qed
  12.240  
  12.241 -  show "\<forall>x1 \<in> lin x. \<forall>x2 \<in> lin x. x1 + x2 \<in> lin x" 
  12.242 +  show "\<forall>x1 \<in> lin x. \<forall>x2 \<in> lin x. x1 + x2 \<in> lin x"
  12.243    proof (intro ballI)
  12.244 -    fix x1 x2 assume "x1 \<in> lin x" "x2 \<in> lin x" 
  12.245 +    fix x1 x2 assume "x1 \<in> lin x"  "x2 \<in> lin x"
  12.246      thus "x1 + x2 \<in> lin x"
  12.247 -    proof (unfold lin_def, elim CollectE exE conjE, 
  12.248 +    proof (unfold lin_def, elim CollectE exE conjE,
  12.249        intro CollectI exI conjI)
  12.250 -      fix a1 a2 assume "x1 = a1 \<cdot> x" "x2 = a2 \<cdot> x"
  12.251 -      show "x1 + x2 = (a1 + a2) \<cdot> x" 
  12.252 +      fix a1 a2 assume "x1 = a1 \<cdot> x"  "x2 = a2 \<cdot> x"
  12.253 +      show "x1 + x2 = (a1 + a2) \<cdot> x"
  12.254          by (simp! add: vs_add_mult_distrib2)
  12.255      qed simp
  12.256    qed
  12.257  
  12.258 -  show "\<forall>xa \<in> lin x. \<forall>a. a \<cdot> xa \<in> lin x" 
  12.259 +  show "\<forall>xa \<in> lin x. \<forall>a. a \<cdot> xa \<in> lin x"
  12.260    proof (intro ballI allI)
  12.261 -    fix x1 a assume "x1 \<in> lin x" 
  12.262 +    fix x1 a assume "x1 \<in> lin x"
  12.263      thus "a \<cdot> x1 \<in> lin x"
  12.264      proof (unfold lin_def, elim CollectE exE conjE,
  12.265        intro CollectI exI conjI)
  12.266        fix a1 assume "x1 = a1 \<cdot> x"
  12.267        show "a \<cdot> x1 = (a * a1) \<cdot> x" by (simp!)
  12.268      qed simp
  12.269 -  qed 
  12.270 +  qed
  12.271  qed
  12.272  
  12.273  text {* Any linear closure is a vector space. *}
  12.274  
  12.275 -lemma lin_vs [intro?]: 
  12.276 -  "[| is_vectorspace V; x \<in> V |] ==> is_vectorspace (lin x)"
  12.277 +lemma lin_vs [intro?]:
  12.278 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> is_vectorspace (lin x)"
  12.279  proof (rule subspace_vs)
  12.280 -  assume "is_vectorspace V" "x \<in> V"
  12.281 +  assume "is_vectorspace V"  "x \<in> V"
  12.282    show "is_subspace (lin x) V" ..
  12.283  qed
  12.284  
  12.285 @@ -209,49 +211,45 @@
  12.286  
  12.287  subsection {* Sum of two vectorspaces *}
  12.288  
  12.289 -text {* The \emph{sum} of two vectorspaces $U$ and $V$ is the set of
  12.290 -all sums of elements from $U$ and $V$. *}
  12.291 +text {*
  12.292 +  The \emph{sum} of two vectorspaces @{text U} and @{text V} is the
  12.293 +  set of all sums of elements from @{text U} and @{text V}.
  12.294 +*}
  12.295  
  12.296  instance set :: (plus) plus ..
  12.297  
  12.298 -defs vs_sum_def:
  12.299 -  "U + V == {u + v | u v. u \<in> U \<and> v \<in> V}" (***
  12.300 +defs (overloaded)
  12.301 +  vs_sum_def: "U + V \<equiv> {u + v | u v. u \<in> U \<and> v \<in> V}"
  12.302  
  12.303 -constdefs 
  12.304 -  vs_sum :: 
  12.305 -  "['a::{plus, minus, zero} set, 'a set] => 'a set"         (infixl "+" 65)
  12.306 -  "vs_sum U V == {x. \<exists>u \<in> U. \<exists>v \<in> V. x = u + v}";
  12.307 -***)
  12.308 -
  12.309 -lemma vs_sumD: 
  12.310 +lemma vs_sumD:
  12.311    "x \<in> U + V = (\<exists>u \<in> U. \<exists>v \<in> V. x = u + v)"
  12.312      by (unfold vs_sum_def) fast
  12.313  
  12.314  lemmas vs_sumE = vs_sumD [THEN iffD1, elim_format, standard]
  12.315  
  12.316 -lemma vs_sumI [intro?]: 
  12.317 -  "[| x \<in> U; y \<in> V; t= x + y |] ==> t \<in> U + V"
  12.318 +lemma vs_sumI [intro?]:
  12.319 +  "x \<in> U \<Longrightarrow> y \<in> V \<Longrightarrow> t = x + y \<Longrightarrow> t \<in> U + V"
  12.320    by (unfold vs_sum_def) fast
  12.321  
  12.322 -text{* $U$ is a subspace of $U + V$. *}
  12.323 +text {* @{text U} is a subspace of @{text "U + V"}. *}
  12.324  
  12.325 -lemma subspace_vs_sum1 [intro?]: 
  12.326 -  "[| is_vectorspace U; is_vectorspace V |]
  12.327 -  ==> is_subspace U (U + V)"
  12.328 -proof 
  12.329 -  assume "is_vectorspace U" "is_vectorspace V"
  12.330 +lemma subspace_vs_sum1 [intro?]:
  12.331 +  "is_vectorspace U \<Longrightarrow> is_vectorspace V
  12.332 +  \<Longrightarrow> is_subspace U (U + V)"
  12.333 +proof
  12.334 +  assume "is_vectorspace U"  "is_vectorspace V"
  12.335    show "0 \<in> U" ..
  12.336 -  show "U <= U + V"
  12.337 +  show "U \<subseteq> U + V"
  12.338    proof (intro subsetI vs_sumI)
  12.339    fix x assume "x \<in> U"
  12.340      show "x = x + 0" by (simp!)
  12.341      show "0 \<in> V" by (simp!)
  12.342    qed
  12.343 -  show "\<forall>x \<in> U. \<forall>y \<in> U. x + y \<in> U" 
  12.344 +  show "\<forall>x \<in> U. \<forall>y \<in> U. x + y \<in> U"
  12.345    proof (intro ballI)
  12.346 -    fix x y assume "x \<in> U" "y \<in> U" show "x + y \<in> U" by (simp!)
  12.347 +    fix x y assume "x \<in> U"  "y \<in> U" show "x + y \<in> U" by (simp!)
  12.348    qed
  12.349 -  show "\<forall>x \<in> U. \<forall>a. a \<cdot> x \<in> U" 
  12.350 +  show "\<forall>x \<in> U. \<forall>a. a \<cdot> x \<in> U"
  12.351    proof (intro ballI allI)
  12.352      fix x a assume "x \<in> U" show "a \<cdot> x \<in> U" by (simp!)
  12.353    qed
  12.354 @@ -259,34 +257,34 @@
  12.355  
  12.356  text{* The sum of two subspaces is again a subspace.*}
  12.357  
  12.358 -lemma vs_sum_subspace [intro?]: 
  12.359 -  "[| is_subspace U E; is_subspace V E; is_vectorspace E |] 
  12.360 -  ==> is_subspace (U + V) E"
  12.361 -proof 
  12.362 -  assume "is_subspace U E" "is_subspace V E" "is_vectorspace E"
  12.363 +lemma vs_sum_subspace [intro?]:
  12.364 +  "is_subspace U E \<Longrightarrow> is_subspace V E \<Longrightarrow> is_vectorspace E
  12.365 +  \<Longrightarrow> is_subspace (U + V) E"
  12.366 +proof
  12.367 +  assume "is_subspace U E"  "is_subspace V E"  "is_vectorspace E"
  12.368    show "0 \<in> U + V"
  12.369    proof (intro vs_sumI)
  12.370      show "0 \<in> U" ..
  12.371      show "0 \<in> V" ..
  12.372      show "(0::'a) = 0 + 0" by (simp!)
  12.373    qed
  12.374 -  
  12.375 -  show "U + V <= E"
  12.376 +
  12.377 +  show "U + V \<subseteq> E"
  12.378    proof (intro subsetI, elim vs_sumE bexE)
  12.379 -    fix x u v assume "u \<in> U" "v \<in> V" "x = u + v"
  12.380 +    fix x u v assume "u \<in> U"  "v \<in> V"  "x = u + v"
  12.381      show "x \<in> E" by (simp!)
  12.382    qed
  12.383 -  
  12.384 +
  12.385    show "\<forall>x \<in> U + V. \<forall>y \<in> U + V. x + y \<in> U + V"
  12.386    proof (intro ballI)
  12.387 -    fix x y assume "x \<in> U + V" "y \<in> U + V"
  12.388 +    fix x y assume "x \<in> U + V"  "y \<in> U + V"
  12.389      thus "x + y \<in> U + V"
  12.390      proof (elim vs_sumE bexE, intro vs_sumI)
  12.391 -      fix ux vx uy vy 
  12.392 -      assume "ux \<in> U" "vx \<in> V" "x = ux + vx" 
  12.393 -	and "uy \<in> U" "vy \<in> V" "y = uy + vy"
  12.394 +      fix ux vx uy vy
  12.395 +      assume "ux \<in> U"  "vx \<in> V"  "x = ux + vx"
  12.396 +        and "uy \<in> U"  "vy \<in> V"  "y = uy + vy"
  12.397        show "x + y = (ux + uy) + (vx + vy)" by (simp!)
  12.398 -    qed (simp!)+
  12.399 +    qed (simp_all!)
  12.400    qed
  12.401  
  12.402    show "\<forall>x \<in> U + V. \<forall>a. a \<cdot> x \<in> U + V"
  12.403 @@ -294,20 +292,20 @@
  12.404      fix x a assume "x \<in> U + V"
  12.405      thus "a \<cdot> x \<in> U + V"
  12.406      proof (elim vs_sumE bexE, intro vs_sumI)
  12.407 -      fix a x u v assume "u \<in> U" "v \<in> V" "x = u + v"
  12.408 -      show "a \<cdot> x = (a \<cdot> u) + (a \<cdot> v)" 
  12.409 +      fix a x u v assume "u \<in> U"  "v \<in> V"  "x = u + v"
  12.410 +      show "a \<cdot> x = (a \<cdot> u) + (a \<cdot> v)"
  12.411          by (simp! add: vs_add_mult_distrib1)
  12.412 -    qed (simp!)+
  12.413 +    qed (simp_all!)
  12.414    qed
  12.415  qed
  12.416  
  12.417  text{* The sum of two subspaces is a vectorspace. *}
  12.418  
  12.419 -lemma vs_sum_vs [intro?]: 
  12.420 -  "[| is_subspace U E; is_subspace V E; is_vectorspace E |] 
  12.421 -  ==> is_vectorspace (U + V)"
  12.422 +lemma vs_sum_vs [intro?]:
  12.423 +  "is_subspace U E \<Longrightarrow> is_subspace V E \<Longrightarrow> is_vectorspace E
  12.424 +  \<Longrightarrow> is_vectorspace (U + V)"
  12.425  proof (rule subspace_vs)
  12.426 -  assume "is_subspace U E" "is_subspace V E" "is_vectorspace E"
  12.427 +  assume "is_subspace U E"  "is_subspace V E"  "is_vectorspace E"
  12.428    show "is_subspace (U + V) E" ..
  12.429  qed
  12.430  
  12.431 @@ -316,28 +314,31 @@
  12.432  subsection {* Direct sums *}
  12.433  
  12.434  
  12.435 -text {* The sum of $U$ and $V$ is called \emph{direct}, iff the zero 
  12.436 -element is the only common element of $U$ and $V$. For every element
  12.437 -$x$ of the direct sum of $U$ and $V$ the decomposition in
  12.438 -$x = u + v$ with $u \in U$ and $v \in V$ is unique.*} 
  12.439 +text {*
  12.440 +  The sum of @{text U} and @{text V} is called \emph{direct}, iff the
  12.441 +  zero element is the only common element of @{text U} and @{text
  12.442 +  V}. For every element @{text x} of the direct sum of @{text U} and
  12.443 +  @{text V} the decomposition in @{text "x = u + v"} with
  12.444 +  @{text "u \<in> U"} and @{text "v \<in> V"} is unique.
  12.445 +*}
  12.446  
  12.447 -lemma decomp: 
  12.448 -  "[| is_vectorspace E; is_subspace U E; is_subspace V E; 
  12.449 -  U \<inter> V = {0}; u1 \<in> U; u2 \<in> U; v1 \<in> V; v2 \<in> V; u1 + v1 = u2 + v2 |] 
  12.450 -  ==> u1 = u2 \<and> v1 = v2" 
  12.451 -proof 
  12.452 -  assume "is_vectorspace E" "is_subspace U E" "is_subspace V E"  
  12.453 -    "U \<inter> V = {0}" "u1 \<in> U" "u2 \<in> U" "v1 \<in> V" "v2 \<in> V" 
  12.454 -    "u1 + v1 = u2 + v2" 
  12.455 +lemma decomp:
  12.456 +  "is_vectorspace E \<Longrightarrow> is_subspace U E \<Longrightarrow> is_subspace V E \<Longrightarrow>
  12.457 +  U \<inter> V = {0} \<Longrightarrow> u1 \<in> U \<Longrightarrow> u2 \<in> U \<Longrightarrow> v1 \<in> V \<Longrightarrow> v2 \<in> V \<Longrightarrow>
  12.458 +  u1 + v1 = u2 + v2 \<Longrightarrow> u1 = u2 \<and> v1 = v2"
  12.459 +proof
  12.460 +  assume "is_vectorspace E"  "is_subspace U E"  "is_subspace V E"
  12.461 +    "U \<inter> V = {0}"  "u1 \<in> U"  "u2 \<in> U"  "v1 \<in> V"  "v2 \<in> V"
  12.462 +    "u1 + v1 = u2 + v2"
  12.463    have eq: "u1 - u2 = v2 - v1" by (simp! add: vs_add_diff_swap)
  12.464 -  have u: "u1 - u2 \<in> U" by (simp!) 
  12.465 -  with eq have v': "v2 - v1 \<in> U" by simp 
  12.466 -  have v: "v2 - v1 \<in> V" by (simp!) 
  12.467 +  have u: "u1 - u2 \<in> U" by (simp!)
  12.468 +  with eq have v': "v2 - v1 \<in> U" by simp
  12.469 +  have v: "v2 - v1 \<in> V" by (simp!)
  12.470    with eq have u': "u1 - u2 \<in> V" by simp
  12.471 -  
  12.472 +
  12.473    show "u1 = u2"
  12.474    proof (rule vs_add_minus_eq)
  12.475 -    show "u1 - u2 = 0" by (rule Int_singletonD [OF _ u u']) 
  12.476 +    show "u1 - u2 = 0" by (rule Int_singletonD [OF _ u u'])
  12.477      show "u1 \<in> E" ..
  12.478      show "u2 \<in> E" ..
  12.479    qed
  12.480 @@ -350,30 +351,33 @@
  12.481    qed
  12.482  qed
  12.483  
  12.484 -text {* An application of the previous lemma will be used in the proof
  12.485 -of the Hahn-Banach Theorem (see page \pageref{decomp-H-use}): for any
  12.486 -element $y + a \mult x_0$ of the direct sum of a vectorspace $H$ and
  12.487 -the linear closure of $x_0$ the components $y \in H$ and $a$ are
  12.488 -uniquely determined. *}
  12.489 +text {*
  12.490 +  An application of the previous lemma will be used in the proof of
  12.491 +  the Hahn-Banach Theorem (see page \pageref{decomp-H-use}): for any
  12.492 +  element @{text "y + a \<cdot> x\<^sub>0"} of the direct sum of a
  12.493 +  vectorspace @{text H} and the linear closure of @{text "x\<^sub>0"}
  12.494 +  the components @{text "y \<in> H"} and @{text a} are uniquely
  12.495 +  determined.
  12.496 +*}
  12.497  
  12.498 -lemma decomp_H': 
  12.499 -  "[| is_vectorspace E; is_subspace H E; y1 \<in> H; y2 \<in> H; 
  12.500 -  x' \<notin> H; x' \<in> E; x' \<noteq> 0; y1 + a1 \<cdot> x' = y2 + a2 \<cdot> x' |]
  12.501 -  ==> y1 = y2 \<and> a1 = a2"
  12.502 +lemma decomp_H':
  12.503 +  "is_vectorspace E \<Longrightarrow> is_subspace H E \<Longrightarrow> y1 \<in> H \<Longrightarrow> y2 \<in> H \<Longrightarrow>
  12.504 +  x' \<notin> H \<Longrightarrow> x' \<in> E \<Longrightarrow> x' \<noteq> 0 \<Longrightarrow> y1 + a1 \<cdot> x' = y2 + a2 \<cdot> x'
  12.505 +  \<Longrightarrow> y1 = y2 \<and> a1 = a2"
  12.506  proof
  12.507    assume "is_vectorspace E" and h: "is_subspace H E"
  12.508 -     and "y1 \<in> H" "y2 \<in> H" "x' \<notin> H" "x' \<in> E" "x' \<noteq> 0" 
  12.509 +     and "y1 \<in> H"  "y2 \<in> H"  "x' \<notin> H"  "x' \<in> E"  "x' \<noteq> 0"
  12.510           "y1 + a1 \<cdot> x' = y2 + a2 \<cdot> x'"
  12.511  
  12.512    have c: "y1 = y2 \<and> a1 \<cdot> x' = a2 \<cdot> x'"
  12.513 -  proof (rule decomp) 
  12.514 -    show "a1 \<cdot> x' \<in> lin x'" .. 
  12.515 +  proof (rule decomp)
  12.516 +    show "a1 \<cdot> x' \<in> lin x'" ..
  12.517      show "a2 \<cdot> x' \<in> lin x'" ..
  12.518 -    show "H \<inter> (lin x') = {0}" 
  12.519 +    show "H \<inter> (lin x') = {0}"
  12.520      proof
  12.521 -      show "H \<inter> lin x' <= {0}" 
  12.522 +      show "H \<inter> lin x' \<subseteq> {0}"
  12.523        proof (intro subsetI, elim IntE, rule singleton_iff [THEN iffD2])
  12.524 -        fix x assume "x \<in> H" "x \<in> lin x'" 
  12.525 +        fix x assume "x \<in> H"  "x \<in> lin x'"
  12.526          thus "x = 0"
  12.527          proof (unfold lin_def, elim CollectE exE conjE)
  12.528            fix a assume "x = a \<cdot> x'"
  12.529 @@ -381,8 +385,8 @@
  12.530            proof cases
  12.531              assume "a = (#0::real)" show ?thesis by (simp!)
  12.532            next
  12.533 -            assume "a \<noteq> (#0::real)" 
  12.534 -            from h have "inverse a \<cdot> a \<cdot> x' \<in> H" 
  12.535 +            assume "a \<noteq> (#0::real)"
  12.536 +            from h have "inverse a \<cdot> a \<cdot> x' \<in> H"
  12.537                by (rule subspace_mult_closed) (simp!)
  12.538              also have "inverse a \<cdot> a \<cdot> x' = x'" by (simp!)
  12.539              finally have "x' \<in> H" .
  12.540 @@ -390,87 +394,91 @@
  12.541            qed
  12.542         qed
  12.543        qed
  12.544 -      show "{0} <= H \<inter> lin x'"
  12.545 +      show "{0} \<subseteq> H \<inter> lin x'"
  12.546        proof -
  12.547 -	have "0 \<in> H \<inter> lin x'"
  12.548 -	proof (rule IntI)
  12.549 -	  show "0 \<in> H" ..
  12.550 -	  from lin_vs show "0 \<in> lin x'" ..
  12.551 -	qed
  12.552 -	thus ?thesis by simp
  12.553 +        have "0 \<in> H \<inter> lin x'"
  12.554 +        proof (rule IntI)
  12.555 +          show "0 \<in> H" ..
  12.556 +          from lin_vs show "0 \<in> lin x'" ..
  12.557 +        qed
  12.558 +        thus ?thesis by simp
  12.559        qed
  12.560      qed
  12.561      show "is_subspace (lin x') E" ..
  12.562    qed
  12.563 -  
  12.564 +
  12.565    from c show "y1 = y2" by simp
  12.566 -  
  12.567 -  show  "a1 = a2" 
  12.568 +
  12.569 +  show  "a1 = a2"
  12.570    proof (rule vs_mult_right_cancel [THEN iffD1])
  12.571      from c show "a1 \<cdot> x' = a2 \<cdot> x'" by simp
  12.572    qed
  12.573  qed
  12.574  
  12.575 -text {* Since for any element $y + a \mult x'$ of the direct sum 
  12.576 -of a vectorspace $H$ and the linear closure of $x'$ the components
  12.577 -$y\in H$ and $a$ are unique, it follows from $y\in H$ that 
  12.578 -$a = 0$.*} 
  12.579 +text {*
  12.580 +  Since for any element @{text "y + a \<cdot> x'"} of the direct sum of a
  12.581 +  vectorspace @{text H} and the linear closure of @{text x'} the
  12.582 +  components @{text "y \<in> H"} and @{text a} are unique, it follows from
  12.583 +  @{text "y \<in> H"} that @{text "a = 0"}.
  12.584 +*}
  12.585  
  12.586 -lemma decomp_H'_H: 
  12.587 -  "[| is_vectorspace E; is_subspace H E; t \<in> H; x' \<notin> H; x' \<in> E;
  12.588 -  x' \<noteq> 0 |] 
  12.589 -  ==> (SOME (y, a). t = y + a \<cdot> x' \<and> y \<in> H) = (t, (#0::real))"
  12.590 +lemma decomp_H'_H:
  12.591 +  "is_vectorspace E \<Longrightarrow> is_subspace H E \<Longrightarrow> t \<in> H \<Longrightarrow> x' \<notin> H \<Longrightarrow> x' \<in> E
  12.592 +  \<Longrightarrow> x' \<noteq> 0
  12.593 +  \<Longrightarrow> (SOME (y, a). t = y + a \<cdot> x' \<and> y \<in> H) = (t, (#0::real))"
  12.594  proof (rule, unfold split_tupled_all)
  12.595 -  assume "is_vectorspace E" "is_subspace H E" "t \<in> H" "x' \<notin> H" "x' \<in> E"
  12.596 +  assume "is_vectorspace E"  "is_subspace H E"  "t \<in> H"  "x' \<notin> H"  "x' \<in> E"
  12.597      "x' \<noteq> 0"
  12.598    have h: "is_vectorspace H" ..
  12.599    fix y a presume t1: "t = y + a \<cdot> x'" and "y \<in> H"
  12.600 -  have "y = t \<and> a = (#0::real)" 
  12.601 -    by (rule decomp_H') (assumption | (simp!))+
  12.602 +  have "y = t \<and> a = (#0::real)"
  12.603 +    by (rule decomp_H') (auto!)
  12.604    thus "(y, a) = (t, (#0::real))" by (simp!)
  12.605 -qed (simp!)+
  12.606 +qed (simp_all!)
  12.607  
  12.608 -text {* The components $y\in H$ and $a$ in $y \plus a \mult x'$ 
  12.609 -are unique, so the function $h'$ defined by 
  12.610 -$h' (y \plus a \mult x') = h y + a \cdot \xi$ is definite. *}
  12.611 +text {*
  12.612 +  The components @{text "y \<in> H"} and @{text a} in @{text "y + a \<cdot> x'"}
  12.613 +  are unique, so the function @{text h'} defined by
  12.614 +  @{text "h' (y + a \<cdot> x') = h y + a \<cdot> \<xi>"} is definite.
  12.615 +*}
  12.616  
  12.617  lemma h'_definite:
  12.618 -  "[| h' == (\<lambda>x. let (y, a) = SOME (y, a). (x = y + a \<cdot> x' \<and> y \<in> H)
  12.619 -                in (h y) + a * xi);
  12.620 -  x = y + a \<cdot> x'; is_vectorspace E; is_subspace H E;
  12.621 -  y \<in> H; x' \<notin> H; x' \<in> E; x' \<noteq> 0 |]
  12.622 -  ==> h' x = h y + a * xi"
  12.623 -proof -  
  12.624 -  assume 
  12.625 -    "h' == (\<lambda>x. let (y, a) = SOME (y, a). (x = y + a \<cdot> x' \<and> y \<in> H)
  12.626 +  "h' \<equiv> (\<lambda>x. let (y, a) = SOME (y, a). (x = y + a \<cdot> x' \<and> y \<in> H)
  12.627 +                in (h y) + a * xi) \<Longrightarrow>
  12.628 +  x = y + a \<cdot> x' \<Longrightarrow> is_vectorspace E \<Longrightarrow> is_subspace H E \<Longrightarrow>
  12.629 +  y \<in> H \<Longrightarrow> x' \<notin> H \<Longrightarrow> x' \<in> E \<Longrightarrow> x' \<noteq> 0
  12.630 +  \<Longrightarrow> h' x = h y + a * xi"
  12.631 +proof -
  12.632 +  assume
  12.633 +    "h' \<equiv> (\<lambda>x. let (y, a) = SOME (y, a). (x = y + a \<cdot> x' \<and> y \<in> H)
  12.634                 in (h y) + a * xi)"
  12.635 -    "x = y + a \<cdot> x'" "is_vectorspace E" "is_subspace H E"
  12.636 -    "y \<in> H" "x' \<notin> H" "x' \<in> E" "x' \<noteq> 0"
  12.637 -  have "x \<in> H + (lin x')" 
  12.638 -    by (simp! add: vs_sum_def lin_def) force+
  12.639 -  have "\<exists>! xa. ((\<lambda>(y, a). x = y + a \<cdot> x' \<and> y \<in> H) xa)" 
  12.640 +    "x = y + a \<cdot> x'"  "is_vectorspace E"  "is_subspace H E"
  12.641 +    "y \<in> H"  "x' \<notin> H"  "x' \<in> E"  "x' \<noteq> 0"
  12.642 +  hence "x \<in> H + (lin x')"
  12.643 +    by (auto simp add: vs_sum_def lin_def)
  12.644 +  have "\<exists>! xa. ((\<lambda>(y, a). x = y + a \<cdot> x' \<and> y \<in> H) xa)"
  12.645    proof
  12.646      show "\<exists>xa. ((\<lambda>(y, a). x = y + a \<cdot> x' \<and> y \<in> H) xa)"
  12.647 -      by (force!)
  12.648 +      by (blast!)
  12.649    next
  12.650      fix xa ya
  12.651      assume "(\<lambda>(y,a). x = y + a \<cdot> x' \<and> y \<in> H) xa"
  12.652             "(\<lambda>(y,a). x = y + a \<cdot> x' \<and> y \<in> H) ya"
  12.653 -    show "xa = ya" 
  12.654 +    show "xa = ya"
  12.655      proof -
  12.656 -      show "fst xa = fst ya \<and> snd xa = snd ya ==> xa = ya" 
  12.657 +      show "fst xa = fst ya \<and> snd xa = snd ya \<Longrightarrow> xa = ya"
  12.658          by (simp add: Pair_fst_snd_eq)
  12.659 -      have x: "x = fst xa + snd xa \<cdot> x' \<and> fst xa \<in> H" 
  12.660 -        by (force!)
  12.661 -      have y: "x = fst ya + snd ya \<cdot> x' \<and> fst ya \<in> H" 
  12.662 -        by (force!)
  12.663 -      from x y show "fst xa = fst ya \<and> snd xa = snd ya" 
  12.664 +      have x: "x = fst xa + snd xa \<cdot> x' \<and> fst xa \<in> H"
  12.665 +        by (auto!)
  12.666 +      have y: "x = fst ya + snd ya \<cdot> x' \<and> fst ya \<in> H"
  12.667 +        by (auto!)
  12.668 +      from x y show "fst xa = fst ya \<and> snd xa = snd ya"
  12.669          by (elim conjE) (rule decomp_H', (simp!)+)
  12.670      qed
  12.671    qed
  12.672 -  hence eq: "(SOME (y, a). x = y + a \<cdot> x' \<and> y \<in> H) = (y, a)" 
  12.673 -    by (rule some1_equality) (force!)
  12.674 +  hence eq: "(SOME (y, a). x = y + a \<cdot> x' \<and> y \<in> H) = (y, a)"
  12.675 +    by (rule some1_equality) (blast!)
  12.676    thus "h' x = h y + a * xi" by (simp! add: Let_def)
  12.677  qed
  12.678  
  12.679 -end
  12.680 \ No newline at end of file
  12.681 +end
    13.1 --- a/src/HOL/Real/HahnBanach/VectorSpace.thy	Sat Dec 16 21:41:14 2000 +0100
    13.2 +++ b/src/HOL/Real/HahnBanach/VectorSpace.thy	Sat Dec 16 21:41:51 2000 +0100
    13.3 @@ -9,127 +9,124 @@
    13.4  
    13.5  subsection {* Signature *}
    13.6  
    13.7 -text {* For the definition of real vector spaces a type $\alpha$
    13.8 -of the sort $\{ \idt{plus}, \idt{minus}, \idt{zero}\}$ is considered, on which a
    13.9 -real scalar multiplication $\mult$ is defined. *}
   13.10 +text {*
   13.11 +  For the definition of real vector spaces a type @{typ 'a} of the
   13.12 +  sort @{text "{plus, minus, zero}"} is considered, on which a real
   13.13 +  scalar multiplication @{text \<cdot>} is declared.
   13.14 +*}
   13.15  
   13.16  consts
   13.17 -  prod  :: "[real, 'a::{plus, minus, zero}] => 'a"     (infixr "'(*')" 70)
   13.18 +  prod  :: "real \<Rightarrow> 'a::{plus, minus, zero} \<Rightarrow> 'a"     (infixr "'(*')" 70)
   13.19  
   13.20  syntax (symbols)
   13.21 -  prod  :: "[real, 'a] => 'a"                          (infixr "\<cdot>" 70)
   13.22 +  prod  :: "real \<Rightarrow> 'a \<Rightarrow> 'a"                          (infixr "\<cdot>" 70)
   13.23  
   13.24  
   13.25  subsection {* Vector space laws *}
   13.26  
   13.27 -text {* A \emph{vector space} is a non-empty set $V$ of elements from
   13.28 -  $\alpha$ with the following vector space laws: The set $V$ is closed
   13.29 -  under addition and scalar multiplication, addition is associative
   13.30 -  and commutative; $\minus x$ is the inverse of $x$ w.~r.~t.~addition
   13.31 -  and $0$ is the neutral element of addition.  Addition and
   13.32 -  multiplication are distributive; scalar multiplication is
   13.33 -  associative and the real number $1$ is the neutral element of scalar
   13.34 -  multiplication.
   13.35 +text {*
   13.36 +  A \emph{vector space} is a non-empty set @{text V} of elements from
   13.37 +  @{typ 'a} with the following vector space laws: The set @{text V} is
   13.38 +  closed under addition and scalar multiplication, addition is
   13.39 +  associative and commutative; @{text "- x"} is the inverse of @{text
   13.40 +  x} w.~r.~t.~addition and @{text 0} is the neutral element of
   13.41 +  addition.  Addition and multiplication are distributive; scalar
   13.42 +  multiplication is associative and the real number @{text "#1"} is
   13.43 +  the neutral element of scalar multiplication.
   13.44  *}
   13.45  
   13.46  constdefs
   13.47 -  is_vectorspace :: "('a::{plus, minus, zero}) set => bool"
   13.48 -  "is_vectorspace V == V \<noteq> {}
   13.49 +  is_vectorspace :: "('a::{plus, minus, zero}) set \<Rightarrow> bool"
   13.50 +  "is_vectorspace V \<equiv> V \<noteq> {}
   13.51     \<and> (\<forall>x \<in> V. \<forall>y \<in> V. \<forall>z \<in> V. \<forall>a b.
   13.52 -        x + y \<in> V                                 
   13.53 -      \<and> a \<cdot> x \<in> V                                 
   13.54 -      \<and> (x + y) + z = x + (y + z)             
   13.55 -      \<and> x + y = y + x                           
   13.56 -      \<and> x - x = 0                               
   13.57 -      \<and> 0 + x = x                               
   13.58 -      \<and> a \<cdot> (x + y) = a \<cdot> x + a \<cdot> y       
   13.59 -      \<and> (a + b) \<cdot> x = a \<cdot> x + b \<cdot> x         
   13.60 -      \<and> (a * b) \<cdot> x = a \<cdot> b \<cdot> x               
   13.61 +        x + y \<in> V
   13.62 +      \<and> a \<cdot> x \<in> V
   13.63 +      \<and> (x + y) + z = x + (y + z)
   13.64 +      \<and> x + y = y + x
   13.65 +      \<and> x - x = 0
   13.66 +      \<and> 0 + x = x
   13.67 +      \<and> a \<cdot> (x + y) = a \<cdot> x + a \<cdot> y
   13.68 +      \<and> (a + b) \<cdot> x = a \<cdot> x + b \<cdot> x
   13.69 +      \<and> (a * b) \<cdot> x = a \<cdot> b \<cdot> x
   13.70        \<and> #1 \<cdot> x = x
   13.71        \<and> - x = (- #1) \<cdot> x
   13.72 -      \<and> x - y = x + - y)"                             
   13.73 +      \<and> x - y = x + - y)"
   13.74  
   13.75 -text_raw {* \medskip *}
   13.76 -text {* The corresponding introduction rule is:*}
   13.77 +
   13.78 +text {* \medskip The corresponding introduction rule is:*}
   13.79  
   13.80  lemma vsI [intro]:
   13.81 -  "[| 0 \<in> V; 
   13.82 -  \<forall>x \<in> V. \<forall>y \<in> V. x + y \<in> V; 
   13.83 -  \<forall>x \<in> V. \<forall>a. a \<cdot> x \<in> V;  
   13.84 -  \<forall>x \<in> V. \<forall>y \<in> V. \<forall>z \<in> V. (x + y) + z = x + (y + z);
   13.85 -  \<forall>x \<in> V. \<forall>y \<in> V. x + y = y + x;
   13.86 -  \<forall>x \<in> V. x - x = 0;
   13.87 -  \<forall>x \<in> V. 0 + x = x;
   13.88 -  \<forall>x \<in> V. \<forall>y \<in> V. \<forall>a. a \<cdot> (x + y) = a \<cdot> x + a \<cdot> y;
   13.89 -  \<forall>x \<in> V. \<forall>a b. (a + b) \<cdot> x = a \<cdot> x + b \<cdot> x;
   13.90 -  \<forall>x \<in> V. \<forall>a b. (a * b) \<cdot> x = a \<cdot> b \<cdot> x; 
   13.91 -  \<forall>x \<in> V. #1 \<cdot> x = x; 
   13.92 -  \<forall>x \<in> V. - x = (- #1) \<cdot> x; 
   13.93 -  \<forall>x \<in> V. \<forall>y \<in> V. x - y = x + - y |] ==> is_vectorspace V"
   13.94 -proof (unfold is_vectorspace_def, intro conjI ballI allI)
   13.95 -  fix x y z 
   13.96 -  assume "x \<in> V" "y \<in> V" "z \<in> V"
   13.97 -    "\<forall>x \<in> V. \<forall>y \<in> V. \<forall>z \<in> V. x + y + z = x + (y + z)"
   13.98 -  thus "x + y + z =  x + (y + z)" by blast
   13.99 -qed force+
  13.100 +  "0 \<in> V \<Longrightarrow>
  13.101 +  \<forall>x \<in> V. \<forall>y \<in> V. x + y \<in> V \<Longrightarrow>
  13.102 +  \<forall>x \<in> V. \<forall>a. a \<cdot> x \<in> V \<Longrightarrow>
  13.103 +  \<forall>x \<in> V. \<forall>y \<in> V. \<forall>z \<in> V. (x + y) + z = x + (y + z) \<Longrightarrow>
  13.104 +  \<forall>x \<in> V. \<forall>y \<in> V. x + y = y + x \<Longrightarrow>
  13.105 +  \<forall>x \<in> V. x - x = 0 \<Longrightarrow>
  13.106 +  \<forall>x \<in> V. 0 + x = x \<Longrightarrow>
  13.107 +  \<forall>x \<in> V. \<forall>y \<in> V. \<forall>a. a \<cdot> (x + y) = a \<cdot> x + a \<cdot> y \<Longrightarrow>
  13.108 +  \<forall>x \<in> V. \<forall>a b. (a + b) \<cdot> x = a \<cdot> x + b \<cdot> x \<Longrightarrow>
  13.109 +  \<forall>x \<in> V. \<forall>a b. (a * b) \<cdot> x = a \<cdot> b \<cdot> x \<Longrightarrow>
  13.110 +  \<forall>x \<in> V. #1 \<cdot> x = x \<Longrightarrow>
  13.111 +  \<forall>x \<in> V. - x = (- #1) \<cdot> x \<Longrightarrow>
  13.112 +  \<forall>x \<in> V. \<forall>y \<in> V. x - y = x + - y \<Longrightarrow> is_vectorspace V"
  13.113 +  by (unfold is_vectorspace_def) auto
  13.114  
  13.115 -text_raw {* \medskip *}
  13.116 -text {* The corresponding destruction rules are: *}
  13.117 +text {* \medskip The corresponding destruction rules are: *}
  13.118  
  13.119 -lemma negate_eq1: 
  13.120 -  "[| is_vectorspace V; x \<in> V |] ==> - x = (- #1) \<cdot> x"
  13.121 +lemma negate_eq1:
  13.122 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> - x = (- #1) \<cdot> x"
  13.123 +  by (unfold is_vectorspace_def) simp
  13.124 +
  13.125 +lemma diff_eq1:
  13.126 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> x - y = x + - y"
  13.127    by (unfold is_vectorspace_def) simp
  13.128  
  13.129 -lemma diff_eq1: 
  13.130 -  "[| is_vectorspace V; x \<in> V; y \<in> V |] ==> x - y = x + - y"
  13.131 -  by (unfold is_vectorspace_def) simp 
  13.132 +lemma negate_eq2:
  13.133 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> (- #1) \<cdot> x = - x"
  13.134 +  by (unfold is_vectorspace_def) simp
  13.135  
  13.136 -lemma negate_eq2: 
  13.137 -  "[| is_vectorspace V; x \<in> V |] ==> (- #1) \<cdot> x = - x"
  13.138 +lemma negate_eq2a:
  13.139 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> #-1 \<cdot> x = - x"
  13.140    by (unfold is_vectorspace_def) simp
  13.141  
  13.142 -lemma negate_eq2a: 
  13.143 -  "[| is_vectorspace V; x \<in> V |] ==> #-1 \<cdot> x = - x"
  13.144 +lemma diff_eq2:
  13.145 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> x + - y = x - y"
  13.146 +  by (unfold is_vectorspace_def) simp
  13.147 +
  13.148 +lemma vs_not_empty [intro?]: "is_vectorspace V \<Longrightarrow> (V \<noteq> {})"
  13.149    by (unfold is_vectorspace_def) simp
  13.150  
  13.151 -lemma diff_eq2: 
  13.152 -  "[| is_vectorspace V; x \<in> V; y \<in> V |] ==> x + - y = x - y"
  13.153 -  by (unfold is_vectorspace_def) simp  
  13.154 +lemma vs_add_closed [simp, intro?]:
  13.155 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> x + y \<in> V"
  13.156 +  by (unfold is_vectorspace_def) simp
  13.157  
  13.158 -lemma vs_not_empty [intro?]: "is_vectorspace V ==> (V \<noteq> {})" 
  13.159 -  by (unfold is_vectorspace_def) simp
  13.160 - 
  13.161 -lemma vs_add_closed [simp, intro?]: 
  13.162 -  "[| is_vectorspace V; x \<in> V; y \<in> V |] ==> x + y \<in> V" 
  13.163 +lemma vs_mult_closed [simp, intro?]:
  13.164 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> a \<cdot> x \<in> V"
  13.165    by (unfold is_vectorspace_def) simp
  13.166  
  13.167 -lemma vs_mult_closed [simp, intro?]: 
  13.168 -  "[| is_vectorspace V; x \<in> V |] ==> a \<cdot> x \<in> V" 
  13.169 -  by (unfold is_vectorspace_def) simp
  13.170 -
  13.171 -lemma vs_diff_closed [simp, intro?]: 
  13.172 - "[| is_vectorspace V; x \<in> V; y \<in> V |] ==> x - y \<in> V"
  13.173 +lemma vs_diff_closed [simp, intro?]:
  13.174 + "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> x - y \<in> V"
  13.175    by (simp add: diff_eq1 negate_eq1)
  13.176  
  13.177 -lemma vs_neg_closed  [simp, intro?]: 
  13.178 -  "[| is_vectorspace V; x \<in> V |] ==> - x \<in> V"
  13.179 +lemma vs_neg_closed  [simp, intro?]:
  13.180 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> - x \<in> V"
  13.181    by (simp add: negate_eq1)
  13.182  
  13.183 -lemma vs_add_assoc [simp]:  
  13.184 -  "[| is_vectorspace V; x \<in> V; y \<in> V; z \<in> V |]
  13.185 -   ==> (x + y) + z = x + (y + z)"
  13.186 -  by (unfold is_vectorspace_def) fast
  13.187 +lemma vs_add_assoc [simp]:
  13.188 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> z \<in> V
  13.189 +   \<Longrightarrow> (x + y) + z = x + (y + z)"
  13.190 +  by (unfold is_vectorspace_def) blast
  13.191  
  13.192 -lemma vs_add_commute [simp]: 
  13.193 -  "[| is_vectorspace V; x \<in> V; y \<in> V |] ==> y + x = x + y"
  13.194 -  by (unfold is_vectorspace_def) simp
  13.195 +lemma vs_add_commute [simp]:
  13.196 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> y + x = x + y"
  13.197 +  by (unfold is_vectorspace_def) blast
  13.198  
  13.199  lemma vs_add_left_commute [simp]:
  13.200 -  "[| is_vectorspace V; x \<in> V; y \<in> V; z \<in> V |] 
  13.201 -  ==> x + (y + z) = y + (x + z)"
  13.202 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> z \<in> V
  13.203 +  \<Longrightarrow> x + (y + z) = y + (x + z)"
  13.204  proof -
  13.205 -  assume "is_vectorspace V" "x \<in> V" "y \<in> V" "z \<in> V"
  13.206 -  hence "x + (y + z) = (x + y) + z" 
  13.207 +  assume "is_vectorspace V"  "x \<in> V"  "y \<in> V"  "z \<in> V"
  13.208 +  hence "x + (y + z) = (x + y) + z"
  13.209      by (simp only: vs_add_assoc)
  13.210    also have "... = (y + x) + z" by (simp! only: vs_add_commute)
  13.211    also have "... = y + (x + z)" by (simp! only: vs_add_assoc)
  13.212 @@ -138,94 +135,93 @@
  13.213  
  13.214  theorems vs_add_ac = vs_add_assoc vs_add_commute vs_add_left_commute
  13.215  
  13.216 -lemma vs_diff_self [simp]: 
  13.217 -  "[| is_vectorspace V; x \<in> V |] ==>  x - x = 0" 
  13.218 +lemma vs_diff_self [simp]:
  13.219 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> x - x = 0"
  13.220    by (unfold is_vectorspace_def) simp
  13.221  
  13.222  text {* The existence of the zero element of a vector space
  13.223  follows from the non-emptiness of carrier set. *}
  13.224  
  13.225 -lemma zero_in_vs [simp, intro]: "is_vectorspace V ==> 0 \<in> V"
  13.226 -proof - 
  13.227 +lemma zero_in_vs [simp, intro]: "is_vectorspace V \<Longrightarrow> 0 \<in> V"
  13.228 +proof -
  13.229    assume "is_vectorspace V"
  13.230    have "V \<noteq> {}" ..
  13.231 -  hence "\<exists>x. x \<in> V" by force
  13.232 -  thus ?thesis 
  13.233 -  proof 
  13.234 -    fix x assume "x \<in> V" 
  13.235 +  hence "\<exists>x. x \<in> V" by blast
  13.236 +  thus ?thesis
  13.237 +  proof
  13.238 +    fix x assume "x \<in> V"
  13.239      have "0 = x - x" by (simp!)
  13.240      also have "... \<in> V" by (simp! only: vs_diff_closed)
  13.241      finally show ?thesis .
  13.242    qed
  13.243  qed
  13.244  
  13.245 -lemma vs_add_zero_left [simp]: 
  13.246 -  "[| is_vectorspace V; x \<in> V |] ==>  0 + x = x"
  13.247 +lemma vs_add_zero_left [simp]:
  13.248 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow>  0 + x = x"
  13.249    by (unfold is_vectorspace_def) simp
  13.250  
  13.251 -lemma vs_add_zero_right [simp]: 
  13.252 -  "[| is_vectorspace V; x \<in> V |] ==>  x + 0 = x"
  13.253 +lemma vs_add_zero_right [simp]:
  13.254 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow>  x + 0 = x"
  13.255  proof -
  13.256 -  assume "is_vectorspace V" "x \<in> V"
  13.257 +  assume "is_vectorspace V"  "x \<in> V"
  13.258    hence "x + 0 = 0 + x" by simp
  13.259    also have "... = x" by (simp!)
  13.260    finally show ?thesis .
  13.261  qed
  13.262  
  13.263 -lemma vs_add_mult_distrib1: 
  13.264 -  "[| is_vectorspace V; x \<in> V; y \<in> V |] 
  13.265 -  ==> a \<cdot> (x + y) = a \<cdot> x + a \<cdot> y"
  13.266 +lemma vs_add_mult_distrib1:
  13.267 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V
  13.268 +  \<Longrightarrow> a \<cdot> (x + y) = a \<cdot> x + a \<cdot> y"
  13.269    by (unfold is_vectorspace_def) simp
  13.270  
  13.271 -lemma vs_add_mult_distrib2: 
  13.272 -  "[| is_vectorspace V; x \<in> V |] 
  13.273 -  ==> (a + b) \<cdot> x = a \<cdot> x + b \<cdot> x" 
  13.274 +lemma vs_add_mult_distrib2:
  13.275 +  "is_vectorspace V \<Longrightarrow> x \<in> V
  13.276 +  \<Longrightarrow> (a + b) \<cdot> x = a \<cdot> x + b \<cdot> x"
  13.277    by (unfold is_vectorspace_def) simp
  13.278  
  13.279 -lemma vs_mult_assoc: 
  13.280 -  "[| is_vectorspace V; x \<in> V |] ==> (a * b) \<cdot> x = a \<cdot> (b \<cdot> x)"
  13.281 +lemma vs_mult_assoc:
  13.282 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> (a * b) \<cdot> x = a \<cdot> (b \<cdot> x)"
  13.283    by (unfold is_vectorspace_def) simp
  13.284  
  13.285 -lemma vs_mult_assoc2 [simp]: 
  13.286 - "[| is_vectorspace V; x \<in> V |] ==> a \<cdot> b \<cdot> x = (a * b) \<cdot> x"
  13.287 +lemma vs_mult_assoc2 [simp]:
  13.288 + "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> a \<cdot> b \<cdot> x = (a * b) \<cdot> x"
  13.289    by (simp only: vs_mult_assoc)
  13.290  
  13.291 -lemma vs_mult_1 [simp]: 
  13.292 -  "[| is_vectorspace V; x \<in> V |] ==> #1 \<cdot> x = x" 
  13.293 +lemma vs_mult_1 [simp]:
  13.294 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> #1 \<cdot> x = x"
  13.295    by (unfold is_vectorspace_def) simp
  13.296  
  13.297 -lemma vs_diff_mult_distrib1: 
  13.298 -  "[| is_vectorspace V; x \<in> V; y \<in> V |] 
  13.299 -  ==> a \<cdot> (x - y) = a \<cdot> x - a \<cdot> y"
  13.300 +lemma vs_diff_mult_distrib1:
  13.301 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V
  13.302 +  \<Longrightarrow> a \<cdot> (x - y) = a \<cdot> x - a \<cdot> y"
  13.303    by (simp add: diff_eq1 negate_eq1 vs_add_mult_distrib1)
  13.304  
  13.305 -lemma vs_diff_mult_distrib2: 
  13.306 -  "[| is_vectorspace V; x \<in> V |] 
  13.307 -  ==> (a - b) \<cdot> x = a \<cdot> x - (b \<cdot> x)"
  13.308 +lemma vs_diff_mult_distrib2:
  13.309 +  "is_vectorspace V \<Longrightarrow> x \<in> V
  13.310 +  \<Longrightarrow> (a - b) \<cdot> x = a \<cdot> x - (b \<cdot> x)"
  13.311  proof -
  13.312 -  assume "is_vectorspace V" "x \<in> V"
  13.313 -  have " (a - b) \<cdot> x = (a + - b) \<cdot> x" 
  13.314 +  assume "is_vectorspace V"  "x \<in> V"
  13.315 +  have " (a - b) \<cdot> x = (a + - b) \<cdot> x"
  13.316      by (unfold real_diff_def, simp)
  13.317 -  also have "... = a \<cdot> x + (- b) \<cdot> x" 
  13.318 +  also have "... = a \<cdot> x + (- b) \<cdot> x"
  13.319      by (rule vs_add_mult_distrib2)
  13.320 -  also have "... = a \<cdot> x + - (b \<cdot> x)" 
  13.321 +  also have "... = a \<cdot> x + - (b \<cdot> x)"
  13.322      by (simp! add: negate_eq1)
  13.323 -  also have "... = a \<cdot> x - (b \<cdot> x)" 
  13.324 +  also have "... = a \<cdot> x - (b \<cdot> x)"
  13.325      by (simp! add: diff_eq1)
  13.326    finally show ?thesis .
  13.327  qed
  13.328  
  13.329 -(*text_raw {* \paragraph {Further derived laws.} *}*)
  13.330 -text_raw {* \medskip *}
  13.331 -text{* Further derived laws: *}
  13.332 +
  13.333 +text {* \medskip Further derived laws: *}
  13.334  
  13.335 -lemma vs_mult_zero_left [simp]: 
  13.336 -  "[| is_vectorspace V; x \<in> V |] ==> #0 \<cdot> x = 0"
  13.337 +lemma vs_mult_zero_left [simp]:
  13.338 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> #0 \<cdot> x = 0"
  13.339  proof -
  13.340 -  assume "is_vectorspace V" "x \<in> V"
  13.341 +  assume "is_vectorspace V"  "x \<in> V"
  13.342    have  "#0 \<cdot> x = (#1 - #1) \<cdot> x" by simp
  13.343    also have "... = (#1 + - #1) \<cdot> x" by simp
  13.344 -  also have "... =  #1 \<cdot> x + (- #1) \<cdot> x" 
  13.345 +  also have "... =  #1 \<cdot> x + (- #1) \<cdot> x"
  13.346      by (rule vs_add_mult_distrib2)
  13.347    also have "... = x + (- #1) \<cdot> x" by (simp!)
  13.348    also have "... = x + - x" by (simp! add: negate_eq2a)
  13.349 @@ -234,9 +230,9 @@
  13.350    finally show ?thesis .
  13.351  qed
  13.352  
  13.353 -lemma vs_mult_zero_right [simp]: 
  13.354 -  "[| is_vectorspace (V:: 'a::{plus, minus, zero} set) |] 
  13.355 -  ==> a \<cdot> 0 = (0::'a)"
  13.356 +lemma vs_mult_zero_right [simp]:
  13.357 +  "is_vectorspace (V:: 'a::{plus, minus, zero} set)
  13.358 +  \<Longrightarrow> a \<cdot> 0 = (0::'a)"
  13.359  proof -
  13.360    assume "is_vectorspace V"
  13.361    have "a \<cdot> 0 = a \<cdot> (0 - (0::'a))" by (simp!)
  13.362 @@ -246,41 +242,41 @@
  13.363    finally show ?thesis .
  13.364  qed
  13.365  
  13.366 -lemma vs_minus_mult_cancel [simp]:  
  13.367 -  "[| is_vectorspace V; x \<in> V |] ==> (- a) \<cdot> - x = a \<cdot> x"
  13.368 +lemma vs_minus_mult_cancel [simp]:
  13.369 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> (- a) \<cdot> - x = a \<cdot> x"
  13.370    by (simp add: negate_eq1)
  13.371  
  13.372 -lemma vs_add_minus_left_eq_diff: 
  13.373 -  "[| is_vectorspace V; x \<in> V; y \<in> V |] ==> - x + y = y - x"
  13.374 -proof - 
  13.375 -  assume "is_vectorspace V" "x \<in> V" "y \<in> V"
  13.376 -  hence "- x + y = y + - x" 
  13.377 +lemma vs_add_minus_left_eq_diff:
  13.378 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> - x + y = y - x"
  13.379 +proof -
  13.380 +  assume "is_vectorspace V"  "x \<in> V"  "y \<in> V"
  13.381 +  hence "- x + y = y + - x"
  13.382      by (simp add: vs_add_commute)
  13.383    also have "... = y - x" by (simp! add: diff_eq1)
  13.384    finally show ?thesis .
  13.385  qed
  13.386  
  13.387 -lemma vs_add_minus [simp]: 
  13.388 -  "[| is_vectorspace V; x \<in> V |] ==> x + - x = 0"
  13.389 +lemma vs_add_minus [simp]:
  13.390 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> x + - x = 0"
  13.391    by (simp! add: diff_eq2)
  13.392  
  13.393 -lemma vs_add_minus_left [simp]: 
  13.394 -  "[| is_vectorspace V; x \<in> V |] ==> - x + x = 0"
  13.395 +lemma vs_add_minus_left [simp]:
  13.396 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> - x + x = 0"
  13.397    by (simp! add: diff_eq2)
  13.398  
  13.399 -lemma vs_minus_minus [simp]: 
  13.400 -  "[| is_vectorspace V; x \<in> V |] ==> - (- x) = x"
  13.401 +lemma vs_minus_minus [simp]:
  13.402 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> - (- x) = x"
  13.403    by (simp add: negate_eq1)
  13.404  
  13.405 -lemma vs_minus_zero [simp]: 
  13.406 -  "is_vectorspace (V::'a::{plus, minus, zero} set) ==> - (0::'a) = 0" 
  13.407 +lemma vs_minus_zero [simp]:
  13.408 +  "is_vectorspace (V::'a::{plus, minus, zero} set) \<Longrightarrow> - (0::'a) = 0"
  13.409    by (simp add: negate_eq1)
  13.410  
  13.411  lemma vs_minus_zero_iff [simp]:
  13.412 -  "[| is_vectorspace V; x \<in> V |] ==> (- x = 0) = (x = 0)" 
  13.413 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> (- x = 0) = (x = 0)"
  13.414    (concl is "?L = ?R")
  13.415  proof -
  13.416 -  assume "is_vectorspace V" "x \<in> V"
  13.417 +  assume "is_vectorspace V"  "x \<in> V"
  13.418    show "?L = ?R"
  13.419    proof
  13.420      have "x = - (- x)" by (simp! add: vs_minus_minus)
  13.421 @@ -290,81 +286,81 @@
  13.422    qed (simp!)
  13.423  qed
  13.424  
  13.425 -lemma vs_add_minus_cancel [simp]:  
  13.426 -  "[| is_vectorspace V; x \<in> V; y \<in> V |] ==> x + (- x + y) = y" 
  13.427 -  by (simp add: vs_add_assoc [symmetric] del: vs_add_commute) 
  13.428 +lemma vs_add_minus_cancel [simp]:
  13.429 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> x + (- x + y) = y"
  13.430 +  by (simp add: vs_add_assoc [symmetric] del: vs_add_commute)
  13.431  
  13.432 -lemma vs_minus_add_cancel [simp]: 
  13.433 -  "[| is_vectorspace V; x \<in> V; y \<in> V |] ==> - x + (x + y) = y" 
  13.434 -  by (simp add: vs_add_assoc [symmetric] del: vs_add_commute) 
  13.435 +lemma vs_minus_add_cancel [simp]:
  13.436 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> - x + (x + y) = y"
  13.437 +  by (simp add: vs_add_assoc [symmetric] del: vs_add_commute)
  13.438  
  13.439 -lemma vs_minus_add_distrib [simp]:  
  13.440 -  "[| is_vectorspace V; x \<in> V; y \<in> V |] 
  13.441 -  ==> - (x + y) = - x + - y"
  13.442 +lemma vs_minus_add_distrib [simp]:
  13.443 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V
  13.444 +  \<Longrightarrow> - (x + y) = - x + - y"
  13.445    by (simp add: negate_eq1 vs_add_mult_distrib1)
  13.446  
  13.447 -lemma vs_diff_zero [simp]: 
  13.448 -  "[| is_vectorspace V; x \<in> V |] ==> x - 0 = x"
  13.449 -  by (simp add: diff_eq1)  
  13.450 +lemma vs_diff_zero [simp]:
  13.451 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> x - 0 = x"
  13.452 +  by (simp add: diff_eq1)
  13.453  
  13.454 -lemma vs_diff_zero_right [simp]: 
  13.455 -  "[| is_vectorspace V; x \<in> V |] ==> 0 - x = - x"
  13.456 +lemma vs_diff_zero_right [simp]:
  13.457 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> 0 - x = - x"
  13.458    by (simp add:diff_eq1)
  13.459  
  13.460  lemma vs_add_left_cancel:
  13.461 -  "[| is_vectorspace V; x \<in> V; y \<in> V; z \<in> V |] 
  13.462 -   ==> (x + y = x + z) = (y = z)"  
  13.463 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> z \<in> V
  13.464 +   \<Longrightarrow> (x + y = x + z) = (y = z)"
  13.465    (concl is "?L = ?R")
  13.466  proof
  13.467 -  assume "is_vectorspace V" "x \<in> V" "y \<in> V" "z \<in> V"
  13.468 +  assume "is_vectorspace V"  "x \<in> V"  "y \<in> V"  "z \<in> V"
  13.469    have "y = 0 + y" by (simp!)
  13.470    also have "... = - x + x + y" by (simp!)
  13.471 -  also have "... = - x + (x + y)" 
  13.472 +  also have "... = - x + (x + y)"
  13.473      by (simp! only: vs_add_assoc vs_neg_closed)
  13.474    also assume "x + y = x + z"
  13.475 -  also have "- x + (x + z) = - x + x + z" 
  13.476 +  also have "- x + (x + z) = - x + x + z"
  13.477      by (simp! only: vs_add_assoc [symmetric] vs_neg_closed)
  13.478    also have "... = z" by (simp!)
  13.479    finally show ?R .
  13.480 -qed force
  13.481 +qed blast
  13.482  
  13.483 -lemma vs_add_right_cancel: 
  13.484 -  "[| is_vectorspace V; x \<in> V; y \<in> V; z \<in> V |] 
  13.485 -  ==> (y + x = z + x) = (y = z)"  
  13.486 +lemma vs_add_right_cancel:
  13.487 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> z \<in> V
  13.488 +  \<Longrightarrow> (y + x = z + x) = (y = z)"
  13.489    by (simp only: vs_add_commute vs_add_left_cancel)
  13.490  
  13.491 -lemma vs_add_assoc_cong: 
  13.492 -  "[| is_vectorspace V; x \<in> V; y \<in> V; x' \<in> V; y' \<in> V; z \<in> V |] 
  13.493 -  ==> x + y = x' + y' ==> x + (y + z) = x' + (y' + z)"
  13.494 -  by (simp only: vs_add_assoc [symmetric]) 
  13.495 +lemma vs_add_assoc_cong:
  13.496 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> x' \<in> V \<Longrightarrow> y' \<in> V \<Longrightarrow> z \<in> V
  13.497 +  \<Longrightarrow> x + y = x' + y' \<Longrightarrow> x + (y + z) = x' + (y' + z)"
  13.498 +  by (simp only: vs_add_assoc [symmetric])
  13.499  
  13.500 -lemma vs_mult_left_commute: 
  13.501 -  "[| is_vectorspace V; x \<in> V; y \<in> V; z \<in> V |] 
  13.502 -  ==> x \<cdot> y \<cdot> z = y \<cdot> x \<cdot> z"  
  13.503 +lemma vs_mult_left_commute:
  13.504 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> z \<in> V
  13.505 +  \<Longrightarrow> x \<cdot> y \<cdot> z = y \<cdot> x \<cdot> z"
  13.506    by (simp add: real_mult_commute)
  13.507  
  13.508  lemma vs_mult_zero_uniq:
  13.509 -  "[| is_vectorspace V; x \<in> V; x \<noteq> 0; a \<cdot> x = 0 |] ==> a = 0"
  13.510 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> x \<noteq> 0 \<Longrightarrow> a \<cdot> x = 0 \<Longrightarrow> a = 0"
  13.511  proof (rule classical)
  13.512 -  assume "is_vectorspace V" "x \<in> V" "a \<cdot> x = 0" "x \<noteq> 0"
  13.513 +  assume "is_vectorspace V"  "x \<in> V"  "a \<cdot> x = 0"  "x \<noteq> 0"
  13.514    assume "a \<noteq> 0"
  13.515    have "x = (inverse a * a) \<cdot> x" by (simp!)
  13.516    also have "... = inverse a \<cdot> (a \<cdot> x)" by (rule vs_mult_assoc)
  13.517    also have "... = inverse a \<cdot> 0" by (simp!)
  13.518    also have "... = 0" by (simp!)
  13.519    finally have "x = 0" .
  13.520 -  thus "a = 0" by contradiction 
  13.521 +  thus "a = 0" by contradiction
  13.522  qed
  13.523  
  13.524 -lemma vs_mult_left_cancel: 
  13.525 -  "[| is_vectorspace V; x \<in> V; y \<in> V; a \<noteq> #0 |] ==> 
  13.526 +lemma vs_mult_left_cancel:
  13.527 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> a \<noteq> #0 \<Longrightarrow>
  13.528    (a \<cdot> x = a \<cdot> y) = (x = y)"
  13.529    (concl is "?L = ?R")
  13.530  proof
  13.531 -  assume "is_vectorspace V" "x \<in> V" "y \<in> V" "a \<noteq> #0"
  13.532 +  assume "is_vectorspace V"  "x \<in> V"  "y \<in> V"  "a \<noteq> #0"
  13.533    have "x = #1 \<cdot> x" by (simp!)
  13.534    also have "... = (inverse a * a) \<cdot> x" by (simp!)
  13.535 -  also have "... = inverse a \<cdot> (a \<cdot> x)" 
  13.536 +  also have "... = inverse a \<cdot> (a \<cdot> x)"
  13.537      by (simp! only: vs_mult_assoc)
  13.538    also assume ?L
  13.539    also have "inverse a \<cdot> ... = y" by (simp!)
  13.540 @@ -372,51 +368,51 @@
  13.541  qed simp
  13.542  
  13.543  lemma vs_mult_right_cancel: (*** forward ***)
  13.544 -  "[| is_vectorspace V; x \<in> V; x \<noteq> 0 |] 
  13.545 -  ==> (a \<cdot> x = b \<cdot> x) = (a = b)" (concl is "?L = ?R")
  13.546 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> x \<noteq> 0
  13.547 +  \<Longrightarrow> (a \<cdot> x = b \<cdot> x) = (a = b)" (concl is "?L = ?R")
  13.548  proof
  13.549 -  assume v: "is_vectorspace V" "x \<in> V" "x \<noteq> 0"
  13.550 -  have "(a - b) \<cdot> x = a \<cdot> x - b \<cdot> x" 
  13.551 +  assume v: "is_vectorspace V"  "x \<in> V"  "x \<noteq> 0"
  13.552 +  have "(a - b) \<cdot> x = a \<cdot> x - b \<cdot> x"
  13.553      by (simp! add: vs_diff_mult_distrib2)
  13.554    also assume ?L hence "a \<cdot> x - b \<cdot> x = 0" by (simp!)
  13.555    finally have "(a - b) \<cdot> x = 0" .
  13.556 -  from v this have "a - b = 0" by (rule vs_mult_zero_uniq) 
  13.557 +  from v this have "a - b = 0" by (rule vs_mult_zero_uniq)
  13.558    thus "a = b" by simp
  13.559 -qed simp 
  13.560 +qed simp
  13.561  
  13.562 -lemma vs_eq_diff_eq: 
  13.563 -  "[| is_vectorspace V; x \<in> V; y \<in> V; z \<in> V |] ==> 
  13.564 +lemma vs_eq_diff_eq:
  13.565 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> z \<in> V \<Longrightarrow>
  13.566    (x = z - y) = (x + y = z)"
  13.567 -  (concl is "?L = ?R" )  
  13.568 +  (concl is "?L = ?R" )
  13.569  proof -
  13.570 -  assume vs: "is_vectorspace V" "x \<in> V" "y \<in> V" "z \<in> V"
  13.571 -  show "?L = ?R"   
  13.572 +  assume vs: "is_vectorspace V"  "x \<in> V"  "y \<in> V"  "z \<in> V"
  13.573 +  show "?L = ?R"
  13.574    proof
  13.575      assume ?L
  13.576      hence "x + y = z - y + y" by simp
  13.577      also have "... = z + - y + y" by (simp! add: diff_eq1)
  13.578 -    also have "... = z + (- y + y)" 
  13.579 +    also have "... = z + (- y + y)"
  13.580        by (rule vs_add_assoc) (simp!)+
  13.581 -    also from vs have "... = z + 0" 
  13.582 +    also from vs have "... = z + 0"
  13.583        by (simp only: vs_add_minus_left)
  13.584      also from vs have "... = z" by (simp only: vs_add_zero_right)
  13.585      finally show ?R .
  13.586    next
  13.587      assume ?R
  13.588      hence "z - y = (x + y) - y" by simp
  13.589 -    also from vs have "... = x + y + - y" 
  13.590 +    also from vs have "... = x + y + - y"
  13.591        by (simp add: diff_eq1)
  13.592 -    also have "... = x + (y + - y)" 
  13.593 +    also have "... = x + (y + - y)"
  13.594        by (rule vs_add_assoc) (simp!)+
  13.595      also have "... = x" by (simp!)
  13.596      finally show ?L by (rule sym)
  13.597    qed
  13.598  qed
  13.599  
  13.600 -lemma vs_add_minus_eq_minus: 
  13.601 -  "[| is_vectorspace V; x \<in> V; y \<in> V; x + y = 0 |] ==> x = - y" 
  13.602 +lemma vs_add_minus_eq_minus:
  13.603 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> x + y = 0 \<Longrightarrow> x = - y"
  13.604  proof -
  13.605 -  assume "is_vectorspace V" "x \<in> V" "y \<in> V" 
  13.606 +  assume "is_vectorspace V"  "x \<in> V"  "y \<in> V"
  13.607    have "x = (- y + y) + x" by (simp!)
  13.608    also have "... = - y + (x + y)" by (simp!)
  13.609    also assume "x + y = 0"
  13.610 @@ -424,41 +420,41 @@
  13.611    finally show "x = - y" .
  13.612  qed
  13.613  
  13.614 -lemma vs_add_minus_eq: 
  13.615 -  "[| is_vectorspace V; x \<in> V; y \<in> V; x - y = 0 |] ==> x = y" 
  13.616 +lemma vs_add_minus_eq:
  13.617 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> x - y = 0 \<Longrightarrow> x = y"
  13.618  proof -
  13.619 -  assume "is_vectorspace V" "x \<in> V" "y \<in> V" "x - y = 0"
  13.620 +  assume "is_vectorspace V"  "x \<in> V"  "y \<in> V"  "x - y = 0"
  13.621    assume "x - y = 0"
  13.622    hence e: "x + - y = 0" by (simp! add: diff_eq1)
  13.623 -  with _ _ _ have "x = - (- y)" 
  13.624 +  with _ _ _ have "x = - (- y)"
  13.625      by (rule vs_add_minus_eq_minus) (simp!)+
  13.626    thus "x = y" by (simp!)
  13.627  qed
  13.628  
  13.629  lemma vs_add_diff_swap:
  13.630 -  "[| is_vectorspace V; a \<in> V; b \<in> V; c \<in> V; d \<in> V; a + b = c + d |] 
  13.631 -  ==> a - c = d - b"
  13.632 -proof - 
  13.633 -  assume vs: "is_vectorspace V" "a \<in> V" "b \<in> V" "c \<in> V" "d \<in> V" 
  13.634 +  "is_vectorspace V \<Longrightarrow> a \<in> V \<Longrightarrow> b \<in> V \<Longrightarrow> c \<in> V \<Longrightarrow> d \<in> V \<Longrightarrow> a + b = c + d
  13.635 +  \<Longrightarrow> a - c = d - b"
  13.636 +proof -
  13.637 +  assume vs: "is_vectorspace V"  "a \<in> V"  "b \<in> V"  "c \<in> V"  "d \<in> V"
  13.638      and eq: "a + b = c + d"
  13.639 -  have "- c + (a + b) = - c + (c + d)" 
  13.640 +  have "- c + (a + b) = - c + (c + d)"
  13.641      by (simp! add: vs_add_left_cancel)
  13.642    also have "... = d" by (rule vs_minus_add_cancel)
  13.643    finally have eq: "- c + (a + b) = d" .
  13.644 -  from vs have "a - c = (- c + (a + b)) + - b" 
  13.645 +  from vs have "a - c = (- c + (a + b)) + - b"
  13.646      by (simp add: vs_add_ac diff_eq1)
  13.647 -  also from eq have "...  = d + - b" 
  13.648 +  also from eq have "...  = d + - b"
  13.649      by (simp! add: vs_add_right_cancel)
  13.650    also have "... = d - b" by (simp! add: diff_eq2)
  13.651    finally show "a - c = d - b" .
  13.652  qed
  13.653  
  13.654 -lemma vs_add_cancel_21: 
  13.655 -  "[| is_vectorspace V; x \<in> V; y \<in> V; z \<in> V; u \<in> V |] 
  13.656 -  ==> (x + (y + z) = y + u) = ((x + z) = u)"
  13.657 -  (concl is "?L = ?R") 
  13.658 -proof - 
  13.659 -  assume "is_vectorspace V" "x \<in> V" "y \<in> V" "z \<in> V" "u \<in> V"
  13.660 +lemma vs_add_cancel_21:
  13.661 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> z \<in> V \<Longrightarrow> u \<in> V
  13.662 +  \<Longrightarrow> (x + (y + z) = y + u) = ((x + z) = u)"
  13.663 +  (concl is "?L = ?R")
  13.664 +proof -
  13.665 +  assume "is_vectorspace V"  "x \<in> V"  "y \<in> V"  "z \<in> V"  "u \<in> V"
  13.666    show "?L = ?R"
  13.667    proof
  13.668      have "x + z = - y + y + (x + z)" by (simp!)
  13.669 @@ -471,16 +467,16 @@
  13.670    qed (simp! only: vs_add_left_commute [of V x])
  13.671  qed
  13.672  
  13.673 -lemma vs_add_cancel_end: 
  13.674 -  "[| is_vectorspace V; x \<in> V; y \<in> V; z \<in> V |] 
  13.675 -  ==> (x + (y + z) = y) = (x = - z)"
  13.676 +lemma vs_add_cancel_end:
  13.677 +  "is_vectorspace V \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> z \<in> V
  13.678 +  \<Longrightarrow> (x + (y + z) = y) = (x = - z)"
  13.679    (concl is "?L = ?R" )
  13.680  proof -
  13.681 -  assume "is_vectorspace V" "x \<in> V" "y \<in> V" "z \<in> V"
  13.682 +  assume "is_vectorspace V"  "x \<in> V"  "y \<in> V"  "z \<in> V"
  13.683    show "?L = ?R"
  13.684    proof
  13.685      assume l: ?L
  13.686 -    have "x + z = 0" 
  13.687 +    have "x + z = 0"
  13.688      proof (rule vs_add_left_cancel [THEN iffD1])
  13.689        have "y + (x + z) = x + (y + z)" by (simp!)
  13.690        also note l
  13.691 @@ -490,12 +486,12 @@
  13.692      thus "x = - z" by (simp! add: vs_add_minus_eq_minus)
  13.693    next
  13.694      assume r: ?R
  13.695 -    hence "x + (y + z) = - z + (y + z)" by simp 
  13.696 -    also have "... = y + (- z + z)" 
  13.697 +    hence "x + (y + z) = - z + (y + z)" by simp
  13.698 +    also have "... = y + (- z + z)"
  13.699        by (simp! only: vs_add_left_commute)
  13.700      also have "... = y"  by (simp!)
  13.701      finally show ?L .
  13.702    qed
  13.703  qed
  13.704  
  13.705 -end
  13.706 \ No newline at end of file
  13.707 +end
    14.1 --- a/src/HOL/Real/HahnBanach/ZornLemma.thy	Sat Dec 16 21:41:14 2000 +0100
    14.2 +++ b/src/HOL/Real/HahnBanach/ZornLemma.thy	Sat Dec 16 21:41:51 2000 +0100
    14.3 @@ -7,49 +7,52 @@
    14.4  
    14.5  theory ZornLemma = Aux + Zorn:
    14.6  
    14.7 -text {* Zorn's Lemmas states: if every linear ordered subset of an
    14.8 -ordered set $S$ has an upper bound in $S$, then there exists a maximal
    14.9 -element in $S$.  In our application, $S$ is a set of sets ordered by
   14.10 -set inclusion. Since the union of a chain of sets is an upper bound
   14.11 -for all elements of the chain, the conditions of Zorn's lemma can be
   14.12 -modified: if $S$ is non-empty, it suffices to show that for every
   14.13 -non-empty chain $c$ in $S$ the union of $c$ also lies in $S$. *}
   14.14 +text {*
   14.15 +  Zorn's Lemmas states: if every linear ordered subset of an ordered
   14.16 +  set @{text S} has an upper bound in @{text S}, then there exists a
   14.17 +  maximal element in @{text S}.  In our application, @{text S} is a
   14.18 +  set of sets ordered by set inclusion. Since the union of a chain of
   14.19 +  sets is an upper bound for all elements of the chain, the conditions
   14.20 +  of Zorn's lemma can be modified: if @{text S} is non-empty, it
   14.21 +  suffices to show that for every non-empty chain @{text c} in @{text
   14.22 +  S} the union of @{text c} also lies in @{text S}.
   14.23 +*}
   14.24  
   14.25 -theorem Zorn's_Lemma: 
   14.26 -  "(!!c. c: chain S ==> EX x. x:c ==> Union c : S) ==> a:S
   14.27 -  ==>  EX y: S. ALL z: S. y <= z --> y = z"
   14.28 +theorem Zorn's_Lemma:
   14.29 +  "(\<And>c. c \<in> chain S \<Longrightarrow> \<exists>x. x \<in> c \<Longrightarrow> \<Union>c \<in> S) \<Longrightarrow> a \<in> S
   14.30 +  \<Longrightarrow> \<exists>y \<in> S. \<forall>z \<in> S. y \<subseteq> z \<longrightarrow> y = z"
   14.31  proof (rule Zorn_Lemma2)
   14.32    txt_raw {* \footnote{See
   14.33    \url{http://isabelle.in.tum.de/library/HOL/HOL-Real/Zorn.html}} \isanewline *}
   14.34 -  assume r: "!!c. c: chain S ==> EX x. x:c ==> Union c : S"
   14.35 -  assume aS: "a:S"
   14.36 -  show "ALL c:chain S. EX y:S. ALL z:c. z <= y"
   14.37 +  assume r: "\<And>c. c \<in> chain S \<Longrightarrow> \<exists>x. x \<in> c \<Longrightarrow> \<Union>c \<in> S"
   14.38 +  assume aS: "a \<in> S"
   14.39 +  show "\<forall>c \<in> chain S. \<exists>y \<in> S. \<forall>z \<in> c. z \<subseteq> y"
   14.40    proof
   14.41 -    fix c assume "c:chain S" 
   14.42 -    show "EX y:S. ALL z:c. z <= y"
   14.43 +    fix c assume "c \<in> chain S"
   14.44 +    show "\<exists>y \<in> S. \<forall>z \<in> c. z \<subseteq> y"
   14.45      proof cases
   14.46   
   14.47 -      txt{* If $c$ is an empty chain, then every element
   14.48 -      in $S$ is an upper bound of $c$. *}
   14.49 +      txt {* If @{text c} is an empty chain, then every element in
   14.50 +      @{text S} is an upper bound of @{text c}. *}
   14.51  
   14.52 -      assume "c={}" 
   14.53 +      assume "c = {}" 
   14.54        with aS show ?thesis by fast
   14.55  
   14.56 -      txt{* If $c$ is non-empty, then $\Union c$ 
   14.57 -      is an upper bound of $c$, lying in $S$. *}
   14.58 +      txt {* If @{text c} is non-empty, then @{text "\<Union>c"} is an upper
   14.59 +      bound of @{text c}, lying in @{text S}. *}
   14.60  
   14.61      next
   14.62 -      assume c: "c~={}"
   14.63 +      assume c: "c \<noteq> {}"
   14.64        show ?thesis 
   14.65        proof 
   14.66 -        show "ALL z:c. z <= Union c" by fast
   14.67 -        show "Union c : S" 
   14.68 +        show "\<forall>z \<in> c. z \<subseteq> \<Union>c" by fast
   14.69 +        show "\<Union>c \<in> S" 
   14.70          proof (rule r)
   14.71 -          from c show "EX x. x:c" by fast  
   14.72 +          from c show "\<exists>x. x \<in> c" by fast  
   14.73          qed
   14.74        qed
   14.75      qed
   14.76    qed
   14.77  qed
   14.78  
   14.79 -end
   14.80 \ No newline at end of file
   14.81 +end
    15.1 --- a/src/HOL/Real/HahnBanach/document/bbb.sty	Sat Dec 16 21:41:14 2000 +0100
    15.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.3 @@ -1,24 +0,0 @@
    15.4 -%
    15.5 -% home made blackboard-bold symbols: B C D E F G H I J K L M N O P Q R T U Z
    15.6 -%
    15.7 -
    15.8 -\def\bbbB{{{\rm I}\mkern-3.8mu{\rm B}}}
    15.9 -\def\bbbC{{{\rm C}\mkern-15mu{\phantom{\rm t}\vrule}\mkern9mu}}
   15.10 -\def\bbbD{{{\rm I}\mkern-3.8mu{\rm D}}}
   15.11 -\def\bbbE{{{\rm I}\mkern-3.8mu{\rm E}}}
   15.12 -\def\bbbF{{{\rm I}\mkern-3.8mu{\rm F}}}
   15.13 -\def\bbbG{{{\rm G}\mkern-16mu{\phantom{\rm t}\vrule}\mkern10mu}}
   15.14 -\def\bbbH{{{\rm I}\mkern-3.8mu{\rm H}}}
   15.15 -\def\bbbI{{{\rm I}\mkern-12mu{\phantom{\rm t}\vrule}\mkern6mu}}
   15.16 -\def\bbbJ{{{\rm J}\mkern-12mu{\phantom{\rm t}\vrule}\mkern6mu}}
   15.17 -\def\bbbK{{{\rm I}\mkern-3.8mu{\rm K}}}
   15.18 -\def\bbbL{{{\rm I}\mkern-3.8mu{\rm L}}}
   15.19 -\def\bbbM{{{\rm I}\mkern-3.8mu{\rm M}}}
   15.20 -\def\bbbN{{{\rm I}\mkern-3.8mu{\rm N}}}
   15.21 -\def\bbbO{{{\rm O}\mkern-16mu{\phantom{\rm t}\vrule}\mkern10mu}}
   15.22 -\def\bbbP{{{\rm I}\mkern-3.8mu{\rm P}}}
   15.23 -\def\bbbQ{{{\rm Q}\mkern-16mu{\phantom{\rm t}\vrule}\mkern10mu}}
   15.24 -\def\bbbR{{{\rm I}\mkern-3.8mu{\rm R}}}
   15.25 -\def\bbbT{{{\rm T}\mkern-16mu{\phantom{\rm t}\vrule}\mkern10mu}}
   15.26 -\def\bbbU{{{\rm U}\mkern-15mu{\phantom{\rm t}\vrule}\mkern9mu}}
   15.27 -\def\bbbZ{{{\sf Z}\mkern-7.5mu{\sf Z}}}
    16.1 --- a/src/HOL/Real/HahnBanach/document/notation.tex	Sat Dec 16 21:41:14 2000 +0100
    16.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.3 @@ -1,43 +0,0 @@
    16.4 -
    16.5 -\renewcommand{\isamarkupheader}[1]{\section{#1}}
    16.6 -\newcommand{\isasymprod}{\isamath{\mult}}
    16.7 -\newcommand{\isasymzero}{\isamath{\zero}}
    16.8 -
    16.9 -\newcommand{\idt}[1]{{\mathord{\mathit{#1}}}}
   16.10 -\newcommand{\var}[1]{{?\!#1}}
   16.11 -\DeclareMathSymbol{\dshsym}{\mathalpha}{letters}{"2D}
   16.12 -\newcommand{\dsh}{\dshsym}
   16.13 -
   16.14 -\newenvironment{matharray}[1]{\[\begin{array}{#1}}{\end{array}\]}
   16.15 -
   16.16 -\newcommand{\skp}{\smallskip}
   16.17 -
   16.18 -\newcommand{\To}{\to}
   16.19 -\newcommand{\dt}{{\mathpunct.}}
   16.20 -\newcommand{\Ex}[1]{\exists #1\dt\;}
   16.21 -\newcommand{\Forall}{\forall}
   16.22 -\newcommand{\All}[1]{\Forall #1\dt\;}
   16.23 -\newcommand{\Eq}{\mathbin{\,\equiv\,}}
   16.24 -\newcommand{\Impl}{\Rightarrow}
   16.25 -\newcommand{\And}{\;\land\;}
   16.26 -\newcommand{\Or}{\;\lor\;}
   16.27 -\newcommand{\Le}{\leq}
   16.28 -\newcommand{\Lt}{\lt}
   16.29 -\newcommand{\lam}[1]{\mathop{\lambda} #1\dt\;}
   16.30 -%\newcommand{\ap}{\mathpalette{\mathbin{\!}}{\mathbin{\!}}{\mathbin{}}{\mathbin{}}}
   16.31 -\newcommand{\ap}{\mathpalette{\mathbin{}}{\mathbin{}}{\mathbin{}}{\mathbin{}}}
   16.32 -\newcommand{\Union}{\bigcup}
   16.33 -\newcommand{\Un}{\cup}
   16.34 -\newcommand{\Int}{\cap}
   16.35 -
   16.36 -\newcommand{\norm}[1]{\left\|#1\right\|}
   16.37 -\newcommand{\fnorm}[1]{\left\|#1\right\|}
   16.38 -\newcommand{\zero}{0}
   16.39 -\newcommand{\plus}{\mathbin{\mathbf +}}
   16.40 -\newcommand{\minus}{\mathbin{\mathbf -}}
   16.41 -\newcommand{\mult}{\cdot}
   16.42 -
   16.43 -%%% Local Variables:
   16.44 -%%% mode: latex
   16.45 -%%% TeX-master: "root"
   16.46 -%%% End:
    17.1 --- a/src/HOL/Real/HahnBanach/document/root.tex	Sat Dec 16 21:41:14 2000 +0100
    17.2 +++ b/src/HOL/Real/HahnBanach/document/root.tex	Sat Dec 16 21:41:51 2000 +0100
    17.3 @@ -1,12 +1,16 @@
    17.4 +
    17.5  \documentclass[10pt,a4paper,twoside]{article}
    17.6 -%\documentclass[11pt,a4paper,twoside]{article}
    17.7  
    17.8  \usepackage{latexsym,theorem}
    17.9 -\usepackage{isabelle,isabellesym,bbb}
   17.10 +\usepackage{isabelle,isabellesym}
   17.11  \usepackage{pdfsetup} %last one!
   17.12 +
   17.13 +\isabellestyle{it}
   17.14  \urlstyle{rm}
   17.15  
   17.16 -\input{notation}
   17.17 +\newcommand{\isasymsup}{\isamath{\sup\,}}
   17.18 +\newcommand{\skp}{\smallskip}
   17.19 +
   17.20  
   17.21  \begin{document}
   17.22  
   17.23 @@ -50,27 +54,27 @@
   17.24  \clearpage
   17.25  \part {Basic Notions}
   17.26  
   17.27 -\input{Bounds.tex}
   17.28 -\input{Aux.tex}
   17.29 -\input{VectorSpace.tex}
   17.30 -\input{Subspace.tex}
   17.31 -\input{NormedSpace.tex}
   17.32 -\input{Linearform.tex}
   17.33 -\input{FunctionOrder.tex}
   17.34 -\input{FunctionNorm.tex}
   17.35 -\input{ZornLemma.tex}
   17.36 +\input{Bounds}
   17.37 +\input{Aux}
   17.38 +\input{VectorSpace}
   17.39 +\input{Subspace}
   17.40 +\input{NormedSpace}
   17.41 +\input{Linearform}
   17.42 +\input{FunctionOrder}
   17.43 +\input{FunctionNorm}
   17.44 +\input{ZornLemma}
   17.45  
   17.46  \clearpage
   17.47  \part {Lemmas for the Proof}
   17.48  
   17.49 -\input{HahnBanachSupLemmas.tex}
   17.50 -\input{HahnBanachExtLemmas.tex}
   17.51 -\input{HahnBanachLemmas.tex}
   17.52 +\input{HahnBanachSupLemmas}
   17.53 +\input{HahnBanachExtLemmas}
   17.54 +\input{HahnBanachLemmas}
   17.55  
   17.56  \clearpage
   17.57  \part {The Main Proof}
   17.58  
   17.59 -\input{HahnBanach.tex}
   17.60 +\input{HahnBanach}
   17.61  \bibliographystyle{abbrv}
   17.62  \bibliography{root}
   17.63