equal
deleted
inserted
replaced
31 done |
31 done |
32 |
32 |
33 lemma zero_less_prime_power: "p \<in> prime ==> 0 < p^a" |
33 lemma zero_less_prime_power: "p \<in> prime ==> 0 < p^a" |
34 by (force simp add: prime_iff) |
34 by (force simp add: prime_iff) |
35 |
35 |
36 |
|
37 lemma le_extend_mult: "[| 0 < c; a <= b |] ==> a <= b * (c::nat)" |
|
38 apply (rule_tac P = "%x. x <= b * c" in subst) |
|
39 apply (rule mult_1_right) |
|
40 apply (rule mult_le_mono, auto) |
|
41 done |
|
42 |
|
43 lemma insert_partition: |
|
44 "[| x \<notin> F; \<forall>c1\<in>insert x F. \<forall>c2 \<in> insert x F. c1 \<noteq> c2 --> c1 \<inter> c2 = {}|] |
|
45 ==> x \<inter> \<Union> F = {}" |
|
46 by auto |
|
47 |
|
48 (* main cardinality theorem *) |
|
49 lemma card_partition [rule_format]: |
|
50 "finite C ==> |
|
51 finite (\<Union> C) --> |
|
52 (\<forall>c\<in>C. card c = k) --> |
|
53 (\<forall>c1 \<in> C. \<forall>c2 \<in> C. c1 \<noteq> c2 --> c1 \<inter> c2 = {}) --> |
|
54 k * card(C) = card (\<Union> C)" |
|
55 apply (erule finite_induct, simp) |
|
56 apply (simp add: card_insert_disjoint card_Un_disjoint insert_partition |
|
57 finite_subset [of _ "\<Union> (insert x F)"]) |
|
58 done |
|
59 |
36 |
60 lemma zero_less_card_empty: "[| finite S; S \<noteq> {} |] ==> 0 < card(S)" |
37 lemma zero_less_card_empty: "[| finite S; S \<noteq> {} |] ==> 0 < card(S)" |
61 by (rule ccontr, simp) |
38 by (rule ccontr, simp) |
62 |
39 |
63 |
40 |
219 done |
196 done |
220 |
197 |
221 |
198 |
222 subsection{*Lemmas for the Main Combinatorial Argument*} |
199 subsection{*Lemmas for the Main Combinatorial Argument*} |
223 |
200 |
|
201 lemma le_extend_mult: "[| 0 < c; a <= b |] ==> a <= b * (c::nat)" |
|
202 apply (rule_tac P = "%x. x <= b * c" in subst) |
|
203 apply (rule mult_1_right) |
|
204 apply (rule mult_le_mono, auto) |
|
205 done |
|
206 |
224 lemma p_fac_forw_lemma: |
207 lemma p_fac_forw_lemma: |
225 "[| 0 < (m::nat); 0<k; k < p^a; (p^r) dvd (p^a)* m - k |] ==> r <= a" |
208 "[| 0 < (m::nat); 0<k; k < p^a; (p^r) dvd (p^a)* m - k |] ==> r <= a" |
226 apply (rule notnotD) |
209 apply (rule notnotD) |
227 apply (rule notI) |
210 apply (rule notI) |
228 apply (drule contrapos_nn [OF _ leI, THEN notnotD], assumption) |
211 apply (drule contrapos_nn [OF _ leI, THEN notnotD], assumption) |