src/HOL/NumberTheory/Int2.thy
changeset 30042 31039ee583fa
parent 27556 292098f2efdf
equal deleted inserted replaced
30035:7f4d475a6c50 30042:31039ee583fa
    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)"