|
1 (* Title: HOL/Real/HahnBanach/Aux.thy |
|
2 ID: $Id$ |
|
3 Author: Gertrud Bauer, TU Munich |
|
4 *) |
1 |
5 |
2 theory Aux = Main + Real:; |
6 theory Aux = Real:; |
3 |
7 |
|
8 theorems case = case_split_thm; (* FIXME tmp *); |
|
9 |
|
10 lemmas CollectE = CollectD [elimify]; |
4 |
11 |
5 theorem [trans]: "[| (x::'a::order) <= y; x ~= y |] ==> x < y"; (* <= ~= < *) |
12 theorem [trans]: "[| (x::'a::order) <= y; x ~= y |] ==> x < y"; (* <= ~= < *) |
6 by (asm_simp add: order_less_le); |
13 by (simp! add: order_less_le); |
|
14 |
|
15 lemma le_max1: "x <= max x (y::'a::linorder)"; |
|
16 by (simp add: le_max_iff_disj[of x x y]); |
|
17 |
|
18 lemma le_max2: "y <= max x (y::'a::linorder)"; |
|
19 by (simp add: le_max_iff_disj[of y x y]); |
7 |
20 |
8 lemma lt_imp_not_eq: "x < (y::'a::order) ==> x ~= y"; |
21 lemma lt_imp_not_eq: "x < (y::'a::order) ==> x ~= y"; |
9 by (rule order_less_le[RS iffD1, RS conjunct2]); |
22 by (rule order_less_le[RS iffD1, RS conjunct2]); |
10 |
23 |
11 lemma Int_singeltonD: "[| A Int B = {v}; x:A; x:B |] ==> x = v"; |
24 lemma Int_singletonD: "[| A Int B = {v}; x:A; x:B |] ==> x = v"; |
12 by (fast elim: equalityE); |
25 by (fast elim: equalityE); |
|
26 |
|
27 lemmas singletonE = singletonD[elimify]; |
13 |
28 |
14 lemma real_add_minus_eq: "x - y = 0r ==> x = y"; |
29 lemma real_add_minus_eq: "x - y = 0r ==> x = y"; |
15 proof -; |
30 proof -; |
16 assume "x - y = 0r"; |
31 assume "x - y = 0r"; |
17 have "x + - y = x - y"; by simp; |
32 have "x + - y = x - y"; by simp; |
18 also; have "... = 0r"; .; |
33 also; have "... = 0r"; .; |
19 finally; have "x + - y = 0r"; .; |
34 finally; have "x + - y = 0r"; .; |
20 hence "x = - (- y)"; by (rule real_add_minus_eq_minus); |
35 hence "x = - (- y)"; by (rule real_add_minus_eq_minus); |
21 also; have "... = y"; by asm_simp; |
36 also; have "... = y"; by (simp!); |
22 finally; show "x = y"; .; |
37 finally; show "x = y"; .; |
23 qed; |
38 qed; |
24 |
39 |
25 lemma rabs_minus_one: "rabs (- 1r) = 1r"; |
40 lemma rabs_minus_one: "rabs (- 1r) = 1r"; |
26 proof -; |
41 proof -; |
27 have "rabs (- 1r) = - (- 1r)"; |
42 have "rabs (- 1r) = - (- 1r)"; |
28 proof (rule rabs_minus_eqI2); |
43 proof (rule rabs_minus_eqI2); |
29 show "-1r < 0r"; |
44 show "-1r < 0r"; |
30 by (rule real_minus_zero_less_iff[RS iffD1], simp, rule real_zero_less_one); |
45 by (rule real_minus_zero_less_iff[RS iffD1], simp, rule real_zero_less_one); |
31 qed; |
46 qed; |
32 also; have "... = 1r"; by asm_simp; |
47 also; have "... = 1r"; by (simp!); |
33 finally; show ?thesis; by asm_simp; |
48 finally; show ?thesis; by (simp!); |
34 qed; |
49 qed; |
35 |
50 |
36 axioms real_mult_le_le_mono2: "[| 0r <= z; x <= y |] ==> x * z <= y * z"; |
51 axioms real_mult_le_le_mono2: "[| 0r <= z; x <= y |] ==> x * z <= y * z"; |
37 |
52 |
38 axioms real_mult_less_le_anti: "[| z < 0r; x <= y |] ==> z * y <= z * x"; |
53 axioms real_mult_less_le_anti: "[| z < 0r; x <= y |] ==> z * y <= z * x"; |
39 |
54 |
40 axioms real_mult_less_le_mono: "[| 0r < z; x <= y |] ==> z * x <= z * y"; |
55 axioms real_mult_less_le_mono: "[| 0r < z; x <= y |] ==> z * x <= z * y"; |
41 |
56 |
42 axioms real_mult_diff_distrib: "a * (- x - y) = - a * x - a * y"; |
57 axioms real_mult_diff_distrib: "a * (- x - (y::real)) = - a * x - a * y"; |
43 |
58 |
44 axioms real_mult_diff_distrib2: "a * (x - y) = a * x - a * y"; |
59 axioms real_mult_diff_distrib2: "a * (x - (y::real)) = a * x - a * y"; |
45 |
60 |
46 lemma less_imp_le: "(x::real) < y ==> x <= y"; |
61 lemma less_imp_le: "(x::real) < y ==> x <= y"; |
47 by (asm_simp only: real_less_imp_le); |
62 by (simp! only: real_less_imp_le); |
48 |
63 |
49 lemma le_noteq_imp_less: "[|x <= (r::'a::order); x ~= r |] ==> x < r"; |
64 lemma le_noteq_imp_less: "[|x <= (r::'a::order); x ~= r |] ==> x < r"; |
50 proof -; |
65 proof -; |
51 assume "x <= (r::'a::order)"; |
66 assume "x <= (r::'a::order)"; |
52 assume "x ~= r"; |
67 assume "x ~= r"; |
53 then; have "x < r | x = r"; |
68 then; have "x < r | x = r"; |
54 by (asm_simp add: order_le_less); |
69 by (simp! add: order_le_less); |
55 then; show ?thesis; |
70 then; show ?thesis; |
56 by asm_simp; |
71 by (simp!); |
57 qed; |
72 qed; |
58 |
73 |
59 lemma minus_le: "- (x::real) <= y ==> - y <= x"; |
74 lemma minus_le: "- (x::real) <= y ==> - y <= x"; |
60 proof -; |
75 proof -; |
61 assume "- x <= y"; |
76 assume "- x <= y"; |
80 proof; |
95 proof; |
81 assume "rabs x <= r"; |
96 assume "rabs x <= r"; |
82 show "- r <= x & x <= r"; |
97 show "- r <= x & x <= r"; |
83 proof; |
98 proof; |
84 have "- x <= rabs x"; by (rule rabs_ge_minus_self); |
99 have "- x <= rabs x"; by (rule rabs_ge_minus_self); |
85 hence "- x <= r"; by asm_simp; |
100 hence "- x <= r"; by (simp!); |
86 thus "- r <= x"; by (asm_simp add : minus_le [of "x" "r"]); |
101 thus "- r <= x"; by (simp! add : minus_le [of "x" "r"]); |
87 have "x <= rabs x"; by (rule rabs_ge_self); |
102 have "x <= rabs x"; by (rule rabs_ge_self); |
88 thus "x <= r"; by asm_simp; |
103 thus "x <= r"; by (simp!); |
89 qed; |
104 qed; |
90 next; |
105 next; |
91 assume "- r <= x & x <= r"; |
106 assume "- r <= x & x <= r"; |
92 show "rabs x <= r"; by fast; |
107 show "rabs x <= r"; by (fast!); |
93 qed; |
108 qed; |
94 next; |
109 next; |
95 assume "rabs x ~= r"; |
110 assume "rabs x ~= r"; |
96 show ?thesis; |
111 show ?thesis; |
97 proof; |
112 proof; |