# HG changeset patch # User wenzelm # Date 1315774526 -7200 # Node ID 7ca82df6e951619f5f92b65f10f105107418d5dd # Parent 6ca299d29bdd28b4e0337090845c7ff4561755a6 misc tuning and clarification; diff -r 6ca299d29bdd -r 7ca82df6e951 src/HOL/Hahn_Banach/Bounds.thy --- a/src/HOL/Hahn_Banach/Bounds.thy Sun Sep 11 21:35:35 2011 +0200 +++ b/src/HOL/Hahn_Banach/Bounds.thy Sun Sep 11 22:55:26 2011 +0200 @@ -15,9 +15,8 @@ lemmas [elim?] = lub.least lub.upper -definition - the_lub :: "'a::order set \ 'a" where - "the_lub A = The (lub A)" +definition the_lub :: "'a::order set \ 'a" + where "the_lub A = The (lub A)" notation (xsymbols) the_lub ("\_" [90] 90) diff -r 6ca299d29bdd -r 7ca82df6e951 src/HOL/Hahn_Banach/Function_Norm.thy --- a/src/HOL/Hahn_Banach/Function_Norm.thy Sun Sep 11 21:35:35 2011 +0200 +++ b/src/HOL/Hahn_Banach/Function_Norm.thy Sun Sep 11 22:55:26 2011 +0200 @@ -143,7 +143,7 @@ also from gt have "\x\ \ 0" by simp then have "\x\ * inverse \x\ = 1" by simp - also have "c * 1 \ b" by (simp add: b_def le_maxI1) + also have "c * 1 \ b" by (simp add: b_def) finally show "y \ b" . qed qed diff -r 6ca299d29bdd -r 7ca82df6e951 src/HOL/Hahn_Banach/Function_Order.thy --- a/src/HOL/Hahn_Banach/Function_Order.thy Sun Sep 11 21:35:35 2011 +0200 +++ b/src/HOL/Hahn_Banach/Function_Order.thy Sun Sep 11 22:55:26 2011 +0200 @@ -23,9 +23,8 @@ type_synonym 'a graph = "('a \ real) set" -definition - graph :: "'a set \ ('a \ real) \ 'a graph" where - "graph F f = {(x, f x) | x. x \ F}" +definition graph :: "'a set \ ('a \ real) \ 'a graph" + where "graph F f = {(x, f x) | x. x \ F}" lemma graphI [intro]: "x \ F \ (x, f x) \ graph F f" unfolding graph_def by blast @@ -34,8 +33,9 @@ unfolding graph_def by blast lemma graphE [elim?]: - "(x, y) \ graph F f \ (x \ F \ y = f x \ C) \ C" - unfolding graph_def by blast + assumes "(x, y) \ graph F f" + obtains "x \ F" and "y = f x" + using assms unfolding graph_def by blast subsection {* Functions ordered by domain extension *} @@ -50,12 +50,10 @@ \ graph H h \ graph H' h'" unfolding graph_def by blast -lemma graph_extD1 [dest?]: - "graph H h \ graph H' h' \ x \ H \ h x = h' x" +lemma graph_extD1 [dest?]: "graph H h \ graph H' h' \ x \ H \ h x = h' x" unfolding graph_def by blast -lemma graph_extD2 [dest?]: - "graph H h \ graph H' h' \ H \ H'" +lemma graph_extD2 [dest?]: "graph H h \ graph H' h' \ H \ H'" unfolding graph_def by blast @@ -66,13 +64,11 @@ funct}. *} -definition - "domain" :: "'a graph \ 'a set" where - "domain g = {x. \y. (x, y) \ g}" +definition domain :: "'a graph \ 'a set" + where "domain g = {x. \y. (x, y) \ g}" -definition - funct :: "'a graph \ ('a \ real)" where - "funct g = (\x. (SOME y. (x, y) \ g))" +definition funct :: "'a graph \ ('a \ real)" + where "funct g = (\x. (SOME y. (x, y) \ g))" text {* The following lemma states that @{text g} is the graph of a function @@ -107,21 +103,26 @@ definition norm_pres_extensions :: "'a::{plus, minus, uminus, zero} set \ ('a \ real) \ 'a set \ ('a \ real) - \ 'a graph set" where - "norm_pres_extensions E p F f - = {g. \H h. g = graph H h - \ linearform H h - \ H \ E - \ F \ H - \ graph F f \ graph H h - \ (\x \ H. h x \ p x)}" + \ 'a graph set" +where + "norm_pres_extensions E p F f + = {g. \H h. g = graph H h + \ linearform H h + \ H \ E + \ F \ H + \ graph F f \ graph H h + \ (\x \ H. h x \ p x)}" lemma norm_pres_extensionE [elim]: - "g \ norm_pres_extensions E p F f - \ (\H h. g = graph H h \ linearform H h - \ H \ E \ F \ H \ graph F f \ graph H h - \ \x \ H. h x \ p x \ C) \ C" - unfolding norm_pres_extensions_def by blast + assumes "g \ norm_pres_extensions E p F f" + obtains H h + where "g = graph H h" + and "linearform H h" + and "H \ E" + and "F \ H" + and "graph F f \ graph H h" + and "\x \ H. h x \ p x" + using assms unfolding norm_pres_extensions_def by blast lemma norm_pres_extensionI2 [intro]: "linearform H h \ H \ E \ F \ H diff -r 6ca299d29bdd -r 7ca82df6e951 src/HOL/Hahn_Banach/Hahn_Banach_Sup_Lemmas.thy --- a/src/HOL/Hahn_Banach/Hahn_Banach_Sup_Lemmas.thy Sun Sep 11 21:35:35 2011 +0200 +++ b/src/HOL/Hahn_Banach/Hahn_Banach_Sup_Lemmas.thy Sun Sep 11 22:55:26 2011 +0200 @@ -334,7 +334,7 @@ proof fix x assume "x \ H" with M cM graph - obtain H' h' where x: "x \ H'" and H'E: "H' \ E" + obtain H' where x: "x \ H'" and H'E: "H' \ E" by (rule some_H'h' [elim_format]) blast from H'E have "H' \ E" .. with x show "x \ E" .. diff -r 6ca299d29bdd -r 7ca82df6e951 src/HOL/Hahn_Banach/Normed_Space.thy --- a/src/HOL/Hahn_Banach/Normed_Space.thy Sun Sep 11 21:35:35 2011 +0200 +++ b/src/HOL/Hahn_Banach/Normed_Space.thy Sun Sep 11 22:55:26 2011 +0200 @@ -50,8 +50,7 @@ interpret vectorspace V by fact assume x: "x \ V" then have "- x = - 1 \ x" by (simp only: negate_eq1) - also from x have "\\\ = \- 1\ * \x\" - by (rule abs_homogenous) + also from x have "\\\ = \- 1\ * \x\" by (rule abs_homogenous) also have "\ = \x\" by simp finally show ?thesis . qed @@ -80,13 +79,13 @@ declare normed_vectorspace.intro [intro?] lemma (in normed_vectorspace) gt_zero [intro?]: - "x \ V \ x \ 0 \ 0 < \x\" + assumes x: "x \ V" and neq: "x \ 0" + shows "0 < \x\" proof - - assume x: "x \ V" and neq: "x \ 0" from x have "0 \ \x\" .. - also have [symmetric]: "\ \ 0" + also have "0 \ \x\" proof - assume "\x\ = 0" + assume "0 = \x\" with x have "x = 0" by simp with neq show False by contradiction qed diff -r 6ca299d29bdd -r 7ca82df6e951 src/HOL/Hahn_Banach/Subspace.thy --- a/src/HOL/Hahn_Banach/Subspace.thy Sun Sep 11 21:35:35 2011 +0200 +++ b/src/HOL/Hahn_Banach/Subspace.thy Sun Sep 11 22:55:26 2011 +0200 @@ -110,6 +110,7 @@ proof show "V \ {}" .. show "V \ V" .. +next fix x y assume x: "x \ V" and y: "y \ V" fix a :: real from x y show "x + y \ V" by simp @@ -142,9 +143,8 @@ scalar multiples of @{text x}. *} -definition - lin :: "('a::{minus, plus, zero}) \ 'a set" where - "lin x = {a \ x | a. True}" +definition lin :: "('a::{minus, plus, zero}) \ 'a set" + where "lin x = {a \ x | a. True}" lemma linI [intro]: "y = a \ x \ y \ lin x" unfolding lin_def by blast @@ -175,16 +175,18 @@ text {* Any linear closure is a subspace. *} lemma (in vectorspace) lin_subspace [intro]: - "x \ V \ lin x \ V" + assumes x: "x \ V" + shows "lin x \ V" proof - assume x: "x \ V" - then show "lin x \ {}" by (auto simp add: x_lin_x) + from x show "lin x \ {}" by auto +next show "lin x \ V" proof fix x' assume "x' \ lin x" then obtain a where "x' = a \ x" .. with x show "x' \ V" by simp qed +next fix x' x'' assume x': "x' \ lin x" and x'': "x'' \ lin x" show "x' + x'' \ lin x" proof - @@ -290,6 +292,7 @@ "u \ U" and "v \ V" .. then show "x \ E" by simp qed + next fix x y assume x: "x \ U \ V" and y: "y \ U \ V" show "x + y \ U \ V" proof - @@ -467,8 +470,9 @@ lemma h'_definite: fixes H assumes h'_def: - "h' \ (\x. let (y, a) = SOME (y, a). (x = y + a \ x' \ y \ H) - in (h y) + a * xi)" + "h' \ \x. + let (y, a) = SOME (y, a). (x = y + a \ x' \ y \ H) + in (h y) + a * xi" and x: "x = y + a \ x'" assumes "vectorspace E" "subspace H E" assumes y: "y \ H" diff -r 6ca299d29bdd -r 7ca82df6e951 src/HOL/Hahn_Banach/Vector_Space.thy --- a/src/HOL/Hahn_Banach/Vector_Space.thy Sun Sep 11 21:35:35 2011 +0200 +++ b/src/HOL/Hahn_Banach/Vector_Space.thy Sun Sep 11 22:55:26 2011 +0200 @@ -5,7 +5,7 @@ header {* Vector spaces *} theory Vector_Space -imports Real Bounds "~~/src/HOL/Library/Zorn" +imports Complex_Main Bounds "~~/src/HOL/Library/Zorn" begin subsection {* Signature *} @@ -54,24 +54,24 @@ and mult_1 [simp]: "x \ V \ 1 \ x = x" and negate_eq1: "x \ V \ - x = (- 1) \ x" and diff_eq1: "x \ V \ y \ V \ x - y = x + - y" +begin -lemma (in vectorspace) negate_eq2: "x \ V \ (- 1) \ x = - x" +lemma negate_eq2: "x \ V \ (- 1) \ x = - x" by (rule negate_eq1 [symmetric]) -lemma (in vectorspace) negate_eq2a: "x \ V \ -1 \ x = - x" +lemma negate_eq2a: "x \ V \ -1 \ x = - x" by (simp add: negate_eq1) -lemma (in vectorspace) diff_eq2: "x \ V \ y \ V \ x + - y = x - y" +lemma diff_eq2: "x \ V \ y \ V \ x + - y = x - y" by (rule diff_eq1 [symmetric]) -lemma (in vectorspace) diff_closed [iff]: "x \ V \ y \ V \ x - y \ V" +lemma diff_closed [iff]: "x \ V \ y \ V \ x - y \ V" by (simp add: diff_eq1 negate_eq1) -lemma (in vectorspace) neg_closed [iff]: "x \ V \ - x \ V" +lemma neg_closed [iff]: "x \ V \ - x \ V" by (simp add: negate_eq1) -lemma (in vectorspace) add_left_commute: - "x \ V \ y \ V \ z \ V \ x + (y + z) = y + (x + z)" +lemma add_left_commute: "x \ V \ y \ V \ z \ V \ x + (y + z) = y + (x + z)" proof - assume xyz: "x \ V" "y \ V" "z \ V" then have "x + (y + z) = (x + y) + z" @@ -81,14 +81,13 @@ finally show ?thesis . qed -theorems (in vectorspace) add_ac = - add_assoc add_commute add_left_commute +theorems add_ac = add_assoc add_commute add_left_commute text {* The existence of the zero element of a vector space follows from the non-emptiness of carrier set. *} -lemma (in vectorspace) zero [iff]: "0 \ V" +lemma zero [iff]: "0 \ V" proof - from non_empty obtain x where x: "x \ V" by blast then have "0 = x - x" by (rule diff_self [symmetric]) @@ -96,8 +95,7 @@ finally show ?thesis . qed -lemma (in vectorspace) add_zero_right [simp]: - "x \ V \ x + 0 = x" +lemma add_zero_right [simp]: "x \ V \ x + 0 = x" proof - assume x: "x \ V" from this and zero have "x + 0 = 0 + x" by (rule add_commute) @@ -105,16 +103,13 @@ finally show ?thesis . qed -lemma (in vectorspace) mult_assoc2: - "x \ V \ a \ b \ x = (a * b) \ x" +lemma mult_assoc2: "x \ V \ a \ b \ x = (a * b) \ x" by (simp only: mult_assoc) -lemma (in vectorspace) diff_mult_distrib1: - "x \ V \ y \ V \ a \ (x - y) = a \ x - a \ y" +lemma diff_mult_distrib1: "x \ V \ y \ V \ a \ (x - y) = a \ x - a \ y" by (simp add: diff_eq1 negate_eq1 add_mult_distrib1 mult_assoc2) -lemma (in vectorspace) diff_mult_distrib2: - "x \ V \ (a - b) \ x = a \ x - (b \ x)" +lemma diff_mult_distrib2: "x \ V \ (a - b) \ x = a \ x - (b \ x)" proof - assume x: "x \ V" have " (a - b) \ x = (a + - b) \ x" @@ -128,15 +123,14 @@ finally show ?thesis . qed -lemmas (in vectorspace) distrib = +lemmas distrib = add_mult_distrib1 add_mult_distrib2 diff_mult_distrib1 diff_mult_distrib2 text {* \medskip Further derived laws: *} -lemma (in vectorspace) mult_zero_left [simp]: - "x \ V \ 0 \ x = 0" +lemma mult_zero_left [simp]: "x \ V \ 0 \ x = 0" proof - assume x: "x \ V" have "0 \ x = (1 - 1) \ x" by simp @@ -150,8 +144,7 @@ finally show ?thesis . qed -lemma (in vectorspace) mult_zero_right [simp]: - "a \ 0 = (0::'a)" +lemma mult_zero_right [simp]: "a \ 0 = (0::'a)" proof - have "a \ 0 = a \ (0 - (0::'a))" by simp also have "\ = a \ 0 - a \ 0" @@ -160,12 +153,10 @@ finally show ?thesis . qed -lemma (in vectorspace) minus_mult_cancel [simp]: - "x \ V \ (- a) \ - x = a \ x" +lemma minus_mult_cancel [simp]: "x \ V \ (- a) \ - x = a \ x" by (simp add: negate_eq1 mult_assoc2) -lemma (in vectorspace) add_minus_left_eq_diff: - "x \ V \ y \ V \ - x + y = y - x" +lemma add_minus_left_eq_diff: "x \ V \ y \ V \ - x + y = y - x" proof - assume xy: "x \ V" "y \ V" then have "- x + y = y + - x" by (simp add: add_commute) @@ -173,95 +164,78 @@ finally show ?thesis . qed -lemma (in vectorspace) add_minus [simp]: - "x \ V \ x + - x = 0" +lemma add_minus [simp]: "x \ V \ x + - x = 0" by (simp add: diff_eq2) -lemma (in vectorspace) add_minus_left [simp]: - "x \ V \ - x + x = 0" +lemma add_minus_left [simp]: "x \ V \ - x + x = 0" by (simp add: diff_eq2 add_commute) -lemma (in vectorspace) minus_minus [simp]: - "x \ V \ - (- x) = x" +lemma minus_minus [simp]: "x \ V \ - (- x) = x" by (simp add: negate_eq1 mult_assoc2) -lemma (in vectorspace) minus_zero [simp]: - "- (0::'a) = 0" +lemma minus_zero [simp]: "- (0::'a) = 0" by (simp add: negate_eq1) -lemma (in vectorspace) minus_zero_iff [simp]: - "x \ V \ (- x = 0) = (x = 0)" +lemma minus_zero_iff [simp]: + assumes x: "x \ V" + shows "(- x = 0) = (x = 0)" proof - assume x: "x \ V" - { - from x have "x = - (- x)" by (simp add: minus_minus) - also assume "- x = 0" - also have "- \ = 0" by (rule minus_zero) - finally show "x = 0" . - next - assume "x = 0" - then show "- x = 0" by simp - } + from x have "x = - (- x)" by simp + also assume "- x = 0" + also have "- \ = 0" by (rule minus_zero) + finally show "x = 0" . +next + assume "x = 0" + then show "- x = 0" by simp qed -lemma (in vectorspace) add_minus_cancel [simp]: - "x \ V \ y \ V \ x + (- x + y) = y" - by (simp add: add_assoc [symmetric] del: add_commute) +lemma add_minus_cancel [simp]: "x \ V \ y \ V \ x + (- x + y) = y" + by (simp add: add_assoc [symmetric]) -lemma (in vectorspace) minus_add_cancel [simp]: - "x \ V \ y \ V \ - x + (x + y) = y" - by (simp add: add_assoc [symmetric] del: add_commute) +lemma minus_add_cancel [simp]: "x \ V \ y \ V \ - x + (x + y) = y" + by (simp add: add_assoc [symmetric]) -lemma (in vectorspace) minus_add_distrib [simp]: - "x \ V \ y \ V \ - (x + y) = - x + - y" +lemma minus_add_distrib [simp]: "x \ V \ y \ V \ - (x + y) = - x + - y" by (simp add: negate_eq1 add_mult_distrib1) -lemma (in vectorspace) diff_zero [simp]: - "x \ V \ x - 0 = x" +lemma diff_zero [simp]: "x \ V \ x - 0 = x" by (simp add: diff_eq1) -lemma (in vectorspace) diff_zero_right [simp]: - "x \ V \ 0 - x = - x" +lemma diff_zero_right [simp]: "x \ V \ 0 - x = - x" by (simp add: diff_eq1) -lemma (in vectorspace) add_left_cancel: - "x \ V \ y \ V \ z \ V \ (x + y = x + z) = (y = z)" +lemma add_left_cancel: + assumes x: "x \ V" and y: "y \ V" and z: "z \ V" + shows "(x + y = x + z) = (y = z)" proof - assume x: "x \ V" and y: "y \ V" and z: "z \ V" - { - from y have "y = 0 + y" by simp - also from x y have "\ = (- x + x) + y" by simp - also from x y have "\ = - x + (x + y)" - by (simp add: add_assoc neg_closed) - also assume "x + y = x + z" - also from x z have "- x + (x + z) = - x + x + z" - by (simp add: add_assoc [symmetric] neg_closed) - also from x z have "\ = z" by simp - finally show "y = z" . - next - assume "y = z" - then show "x + y = x + z" by (simp only:) - } + from y have "y = 0 + y" by simp + also from x y have "\ = (- x + x) + y" by simp + also from x y have "\ = - x + (x + y)" by (simp add: add_assoc) + also assume "x + y = x + z" + also from x z have "- x + (x + z) = - x + x + z" by (simp add: add_assoc) + also from x z have "\ = z" by simp + finally show "y = z" . +next + assume "y = z" + then show "x + y = x + z" by (simp only:) qed -lemma (in vectorspace) add_right_cancel: - "x \ V \ y \ V \ z \ V \ (y + x = z + x) = (y = z)" +lemma add_right_cancel: "x \ V \ y \ V \ z \ V \ (y + x = z + x) = (y = z)" by (simp only: add_commute add_left_cancel) -lemma (in vectorspace) add_assoc_cong: +lemma add_assoc_cong: "x \ V \ y \ V \ x' \ V \ y' \ V \ z \ V \ x + y = x' + y' \ x + (y + z) = x' + (y' + z)" by (simp only: add_assoc [symmetric]) -lemma (in vectorspace) mult_left_commute: - "x \ V \ a \ b \ x = b \ a \ x" +lemma mult_left_commute: "x \ V \ a \ b \ x = b \ a \ x" by (simp add: mult_commute mult_assoc2) -lemma (in vectorspace) mult_zero_uniq: - "x \ V \ x \ 0 \ a \ x = 0 \ a = 0" +lemma mult_zero_uniq: + assumes x: "x \ V" "x \ 0" and ax: "a \ x = 0" + shows "a = 0" proof (rule classical) assume a: "a \ 0" - assume x: "x \ V" "x \ 0" and ax: "a \ x = 0" from x a have "x = (inverse a * a) \ x" by simp also from `x \ V` have "\ = inverse a \ (a \ x)" by (rule mult_assoc) also from ax have "\ = inverse a \ 0" by simp @@ -270,10 +244,10 @@ with `x \ 0` show "a = 0" by contradiction qed -lemma (in vectorspace) mult_left_cancel: - "x \ V \ y \ V \ a \ 0 \ (a \ x = a \ y) = (x = y)" +lemma mult_left_cancel: + assumes x: "x \ V" and y: "y \ V" and a: "a \ 0" + shows "(a \ x = a \ y) = (x = y)" proof - assume x: "x \ V" and y: "y \ V" and a: "a \ 0" from x have "x = 1 \ x" by simp also from a have "\ = (inverse a * a) \ x" by simp also from x have "\ = inverse a \ (a \ x)" @@ -287,81 +261,75 @@ then show "a \ x = a \ y" by (simp only:) qed -lemma (in vectorspace) mult_right_cancel: - "x \ V \ x \ 0 \ (a \ x = b \ x) = (a = b)" +lemma mult_right_cancel: + assumes x: "x \ V" and neq: "x \ 0" + shows "(a \ x = b \ x) = (a = b)" proof - assume x: "x \ V" and neq: "x \ 0" - { - from x have "(a - b) \ x = a \ x - b \ x" - by (simp add: diff_mult_distrib2) - also assume "a \ x = b \ x" - with x have "a \ x - b \ x = 0" by simp - finally have "(a - b) \ x = 0" . - with x neq have "a - b = 0" by (rule mult_zero_uniq) - then show "a = b" by simp - next - assume "a = b" - then show "a \ x = b \ x" by (simp only:) - } + from x have "(a - b) \ x = a \ x - b \ x" + by (simp add: diff_mult_distrib2) + also assume "a \ x = b \ x" + with x have "a \ x - b \ x = 0" by simp + finally have "(a - b) \ x = 0" . + with x neq have "a - b = 0" by (rule mult_zero_uniq) + then show "a = b" by simp +next + assume "a = b" + then show "a \ x = b \ x" by (simp only:) qed -lemma (in vectorspace) eq_diff_eq: - "x \ V \ y \ V \ z \ V \ (x = z - y) = (x + y = z)" +lemma eq_diff_eq: + assumes x: "x \ V" and y: "y \ V" and z: "z \ V" + shows "(x = z - y) = (x + y = z)" proof - assume x: "x \ V" and y: "y \ V" and z: "z \ V" - { - assume "x = z - y" - then have "x + y = z - y + y" by simp - also from y z have "\ = z + - y + y" - by (simp add: diff_eq1) - also have "\ = z + (- y + y)" - by (rule add_assoc) (simp_all add: y z) - also from y z have "\ = z + 0" - by (simp only: add_minus_left) - also from z have "\ = z" - by (simp only: add_zero_right) - finally show "x + y = z" . - next - assume "x + y = z" - then have "z - y = (x + y) - y" by simp - also from x y have "\ = x + y + - y" - by (simp add: diff_eq1) - also have "\ = x + (y + - y)" - by (rule add_assoc) (simp_all add: x y) - also from x y have "\ = x" by simp - finally show "x = z - y" .. - } + assume "x = z - y" + then have "x + y = z - y + y" by simp + also from y z have "\ = z + - y + y" + by (simp add: diff_eq1) + also have "\ = z + (- y + y)" + by (rule add_assoc) (simp_all add: y z) + also from y z have "\ = z + 0" + by (simp only: add_minus_left) + also from z have "\ = z" + by (simp only: add_zero_right) + finally show "x + y = z" . +next + assume "x + y = z" + then have "z - y = (x + y) - y" by simp + also from x y have "\ = x + y + - y" + by (simp add: diff_eq1) + also have "\ = x + (y + - y)" + by (rule add_assoc) (simp_all add: x y) + also from x y have "\ = x" by simp + finally show "x = z - y" .. qed -lemma (in vectorspace) add_minus_eq_minus: - "x \ V \ y \ V \ x + y = 0 \ x = - y" +lemma add_minus_eq_minus: + assumes x: "x \ V" and y: "y \ V" and xy: "x + y = 0" + shows "x = - y" proof - - assume x: "x \ V" and y: "y \ V" from x y have "x = (- y + y) + x" by simp also from x y have "\ = - y + (x + y)" by (simp add: add_ac) - also assume "x + y = 0" + also note xy also from y have "- y + 0 = - y" by simp finally show "x = - y" . qed -lemma (in vectorspace) add_minus_eq: - "x \ V \ y \ V \ x - y = 0 \ x = y" +lemma add_minus_eq: + assumes x: "x \ V" and y: "y \ V" and xy: "x - y = 0" + shows "x = y" proof - - assume x: "x \ V" and y: "y \ V" - assume "x - y = 0" - with x y have eq: "x + - y = 0" by (simp add: diff_eq1) + from x y xy have eq: "x + - y = 0" by (simp add: diff_eq1) with _ _ have "x = - (- y)" by (rule add_minus_eq_minus) (simp_all add: x y) with x y show "x = y" by simp qed -lemma (in vectorspace) add_diff_swap: - "a \ V \ b \ V \ c \ V \ d \ V \ a + b = c + d - \ a - c = d - b" +lemma add_diff_swap: + assumes vs: "a \ V" "b \ V" "c \ V" "d \ V" + and eq: "a + b = c + d" + shows "a - c = d - b" proof - - assume vs: "a \ V" "b \ V" "c \ V" "d \ V" - and eq: "a + b = c + d" - then have "- c + (a + b) = - c + (c + d)" + from assms have "- c + (a + b) = - c + (c + d)" by (simp add: add_left_cancel) also have "\ = d" using `c \ V` `d \ V` by (rule minus_add_cancel) finally have eq: "- c + (a + b) = d" . @@ -373,46 +341,41 @@ finally show "a - c = d - b" . qed -lemma (in vectorspace) vs_add_cancel_21: - "x \ V \ y \ V \ z \ V \ u \ V - \ (x + (y + z) = y + u) = (x + z = u)" +lemma vs_add_cancel_21: + assumes vs: "x \ V" "y \ V" "z \ V" "u \ V" + shows "(x + (y + z) = y + u) = (x + z = u)" proof - assume vs: "x \ V" "y \ V" "z \ V" "u \ V" - { - from vs have "x + z = - y + y + (x + z)" by simp - also have "\ = - y + (y + (x + z))" - by (rule add_assoc) (simp_all add: vs) - also from vs have "y + (x + z) = x + (y + z)" - by (simp add: add_ac) - also assume "x + (y + z) = y + u" - also from vs have "- y + (y + u) = u" by simp - finally show "x + z = u" . - next - assume "x + z = u" - with vs show "x + (y + z) = y + u" - by (simp only: add_left_commute [of x]) - } + from vs have "x + z = - y + y + (x + z)" by simp + also have "\ = - y + (y + (x + z))" + by (rule add_assoc) (simp_all add: vs) + also from vs have "y + (x + z) = x + (y + z)" + by (simp add: add_ac) + also assume "x + (y + z) = y + u" + also from vs have "- y + (y + u) = u" by simp + finally show "x + z = u" . +next + assume "x + z = u" + with vs show "x + (y + z) = y + u" + by (simp only: add_left_commute [of x]) qed -lemma (in vectorspace) add_cancel_end: - "x \ V \ y \ V \ z \ V \ (x + (y + z) = y) = (x = - z)" +lemma add_cancel_end: + assumes vs: "x \ V" "y \ V" "z \ V" + shows "(x + (y + z) = y) = (x = - z)" proof - assume vs: "x \ V" "y \ V" "z \ V" - { - assume "x + (y + z) = y" - with vs have "(x + z) + y = 0 + y" - by (simp add: add_ac) - with vs have "x + z = 0" - by (simp only: add_right_cancel add_closed zero) - with vs show "x = - z" by (simp add: add_minus_eq_minus) - next - assume eq: "x = - z" - then have "x + (y + z) = - z + (y + z)" by simp - also have "\ = y + (- z + z)" - by (rule add_left_commute) (simp_all add: vs) - also from vs have "\ = y" by simp - finally show "x + (y + z) = y" . - } + assume "x + (y + z) = y" + with vs have "(x + z) + y = 0 + y" by (simp add: add_ac) + with vs have "x + z = 0" by (simp only: add_right_cancel add_closed zero) + with vs show "x = - z" by (simp add: add_minus_eq_minus) +next + assume eq: "x = - z" + then have "x + (y + z) = - z + (y + z)" by simp + also have "\ = y + (- z + z)" by (rule add_left_commute) (simp_all add: vs) + also from vs have "\ = y" by simp + finally show "x + (y + z) = y" . qed end + +end + diff -r 6ca299d29bdd -r 7ca82df6e951 src/HOL/Hahn_Banach/Zorn_Lemma.thy --- a/src/HOL/Hahn_Banach/Zorn_Lemma.thy Sun Sep 11 21:35:35 2011 +0200 +++ b/src/HOL/Hahn_Banach/Zorn_Lemma.thy Sun Sep 11 22:55:26 2011 +0200 @@ -5,7 +5,7 @@ header {* Zorn's Lemma *} theory Zorn_Lemma -imports Zorn +imports "~~/src/HOL/Library/Zorn" begin text {*