15 lemmas chainE2 = chainD2 [elimify] |
15 lemmas chainE2 = chainD2 [elimify] |
16 |
16 |
17 text_raw {* \medskip *} |
17 text_raw {* \medskip *} |
18 text{* Lemmas about sets. *} |
18 text{* Lemmas about sets. *} |
19 |
19 |
20 lemma Int_singletonD: "[| A Int B = {v}; x:A; x:B |] ==> x = v" |
20 lemma Int_singletonD: "[| A \<inter> B = {v}; x \<in> A; x \<in> B |] ==> x = v" |
21 by (fast elim: equalityE) |
21 by (fast elim: equalityE) |
22 |
22 |
23 lemma set_less_imp_diff_not_empty: "H < E ==> EX x0:E. x0 ~: H" |
23 lemma set_less_imp_diff_not_empty: "H < E ==> \<exists>x0 \<in> E. x0 \<notin> H" |
24 by (force simp add: psubset_eq) |
24 by (force simp add: psubset_eq) |
25 |
25 |
26 text_raw {* \medskip *} |
26 text_raw {* \medskip *} |
27 text{* Some lemmas about orders. *} |
27 text{* Some lemmas about orders. *} |
28 |
28 |
29 lemma lt_imp_not_eq: "x < (y::'a::order) ==> x ~= y" |
29 lemma lt_imp_not_eq: "x < (y::'a::order) ==> x \<noteq> y" |
30 by (rule order_less_le[RS iffD1, RS conjunct2]) |
30 by (rule order_less_le[RS iffD1, RS conjunct2]) |
31 |
31 |
32 lemma le_noteq_imp_less: |
32 lemma le_noteq_imp_less: |
33 "[| x <= (r::'a::order); x ~= r |] ==> x < r" |
33 "[| x <= (r::'a::order); x \<noteq> r |] ==> x < r" |
34 proof - |
34 proof - |
35 assume "x <= (r::'a::order)" and ne:"x ~= r" |
35 assume "x <= r" and ne:"x \<noteq> r" |
36 hence "x < r | x = r" by (simp add: order_le_less) |
36 hence "x < r | x = r" by (simp add: order_le_less) |
37 with ne show ?thesis by simp |
37 with ne show ?thesis by simp |
38 qed |
38 qed |
39 |
39 |
40 text_raw {* \medskip *} |
40 text_raw {* \medskip *} |
114 have "0 < x"; by simp; |
114 have "0 < x"; by simp; |
115 hence "0 < rinv x"; by (rule real_rinv_gt_zero); |
115 hence "0 < rinv x"; by (rule real_rinv_gt_zero); |
116 thus ?thesis; by simp; |
116 thus ?thesis; by simp; |
117 qed; |
117 qed; |
118 |
118 |
119 lemma real_mult_inv_right1: "x ~= #0 ==> x*rinv(x) = #1" |
119 lemma real_mult_inv_right1: "x \<noteq> #0 ==> x*rinv(x) = #1" |
120 by simp |
120 by simp |
121 |
121 |
122 lemma real_mult_inv_left1: "x ~= #0 ==> rinv(x)*x = #1" |
122 lemma real_mult_inv_left1: "x \<noteq> #0 ==> rinv(x) * x = #1" |
123 by simp |
123 by simp |
124 |
124 |
125 lemma real_le_mult_order1a: |
125 lemma real_le_mult_order1a: |
126 "[| (#0::real) <= x; #0 <= y |] ==> #0 <= x * y" |
126 "[| (#0::real) <= x; #0 <= y |] ==> #0 <= x * y" |
127 proof - |
127 proof - |