src/HOL/Library/Primes.thy
changeset 30056 0a35bee25c20
parent 30042 31039ee583fa
child 30242 aea5d7fa7ef5
equal deleted inserted replaced
30053:044308b4948a 30056:0a35bee25c20
    43 
    43 
    44 lemma prime_dvd_power_two: "prime p ==> p dvd m\<twosuperior> ==> p dvd m"
    44 lemma prime_dvd_power_two: "prime p ==> p dvd m\<twosuperior> ==> p dvd m"
    45   by (rule prime_dvd_square) (simp_all add: power2_eq_square)
    45   by (rule prime_dvd_square) (simp_all add: power2_eq_square)
    46 
    46 
    47 
    47 
    48 lemma exp_eq_1:"(x::nat)^n = 1 \<longleftrightarrow> x = 1 \<or> n = 0" by (induct n, auto)
    48 lemma exp_eq_1:"(x::nat)^n = 1 \<longleftrightarrow> x = 1 \<or> n = 0"
       
    49 by (induct n, auto)
       
    50 
    49 lemma exp_mono_lt: "(x::nat) ^ (Suc n) < y ^ (Suc n) \<longleftrightarrow> x < y"
    51 lemma exp_mono_lt: "(x::nat) ^ (Suc n) < y ^ (Suc n) \<longleftrightarrow> x < y"
    50   using power_less_imp_less_base[of x "Suc n" y] power_strict_mono[of x y "Suc n"]
    52 by(metis linorder_not_less not_less0 power_le_imp_le_base power_less_imp_less_base)
    51     by auto
    53 
    52 lemma exp_mono_le: "(x::nat) ^ (Suc n) \<le> y ^ (Suc n) \<longleftrightarrow> x \<le> y"
    54 lemma exp_mono_le: "(x::nat) ^ (Suc n) \<le> y ^ (Suc n) \<longleftrightarrow> x \<le> y"
    53   by (simp only: linorder_not_less[symmetric] exp_mono_lt)
    55 by (simp only: linorder_not_less[symmetric] exp_mono_lt)
    54 
    56 
    55 lemma exp_mono_eq: "(x::nat) ^ Suc n = y ^ Suc n \<longleftrightarrow> x = y"
    57 lemma exp_mono_eq: "(x::nat) ^ Suc n = y ^ Suc n \<longleftrightarrow> x = y"
    56 using power_inject_base[of x n y] by auto
    58 using power_inject_base[of x n y] by auto
    57 
    59 
    58 
    60