equal
deleted
inserted
replaced
16 |
16 |
17 subsection {* Useful lemmas about dvd and powers *} |
17 subsection {* Useful lemmas about dvd and powers *} |
18 |
18 |
19 lemma zpower_zdvd_prop1: |
19 lemma zpower_zdvd_prop1: |
20 "0 < n \<Longrightarrow> p dvd y \<Longrightarrow> p dvd ((y::int) ^ n)" |
20 "0 < n \<Longrightarrow> p dvd y \<Longrightarrow> p dvd ((y::int) ^ n)" |
21 by (induct n) (auto simp add: zdvd_zmult zdvd_zmult2 [of p y]) |
21 by (induct n) (auto simp add: dvd_mult2 [of p y]) |
22 |
22 |
23 lemma zdvd_bounds: "n dvd m ==> m \<le> (0::int) | n \<le> m" |
23 lemma zdvd_bounds: "n dvd m ==> m \<le> (0::int) | n \<le> m" |
24 proof - |
24 proof - |
25 assume "n dvd m" |
25 assume "n dvd m" |
26 then have "~(0 < m & m < n)" |
26 then have "~(0 < m & m < n)" |
40 "zprime p \<Longrightarrow> p dvd ((y::int) ^ n) \<Longrightarrow> 0 < n \<Longrightarrow> p dvd y" |
40 "zprime p \<Longrightarrow> p dvd ((y::int) ^ n) \<Longrightarrow> 0 < n \<Longrightarrow> p dvd y" |
41 apply (induct n) |
41 apply (induct n) |
42 apply simp |
42 apply simp |
43 apply (frule zprime_zdvd_zmult_better) |
43 apply (frule zprime_zdvd_zmult_better) |
44 apply simp |
44 apply simp |
45 apply force |
45 apply (force simp del:dvd_mult) |
46 done |
46 done |
47 |
47 |
48 lemma div_prop1: "[| 0 < z; (x::int) < y * z |] ==> x div z < y" |
48 lemma div_prop1: "[| 0 < z; (x::int) < y * z |] ==> x div z < y" |
49 proof - |
49 proof - |
50 assume "0 < z" then have modth: "x mod z \<ge> 0" by simp |
50 assume "0 < z" then have modth: "x mod z \<ge> 0" by simp |
84 |
84 |
85 lemma zcong_eq_zdvd_prop: "[x = 0](mod p) = (p dvd x)" |
85 lemma zcong_eq_zdvd_prop: "[x = 0](mod p) = (p dvd x)" |
86 by (auto simp add: zcong_def) |
86 by (auto simp add: zcong_def) |
87 |
87 |
88 lemma zcong_id: "[m = 0] (mod m)" |
88 lemma zcong_id: "[m = 0] (mod m)" |
89 by (auto simp add: zcong_def zdvd_0_right) |
89 by (auto simp add: zcong_def) |
90 |
90 |
91 lemma zcong_shift: "[a = b] (mod m) ==> [a + c = b + c] (mod m)" |
91 lemma zcong_shift: "[a = b] (mod m) ==> [a + c = b + c] (mod m)" |
92 by (auto simp add: zcong_refl zcong_zadd) |
92 by (auto simp add: zcong_refl zcong_zadd) |
93 |
93 |
94 lemma zcong_zpower: "[x = y](mod m) ==> [x^z = y^z](mod m)" |
94 lemma zcong_zpower: "[x = y](mod m) ==> [x^z = y^z](mod m)" |