src/HOL/Parity.thy
changeset 45607 16b4f5774621
parent 41959 b460124855b8
child 47108 2a1953f0d20d
equal deleted inserted replaced
45606:b1e1508643b1 45607:16b4f5774621
    43 
    43 
    44 lemma even_zero_nat[simp]: "even (0::nat)" by presburger
    44 lemma even_zero_nat[simp]: "even (0::nat)" by presburger
    45 
    45 
    46 lemma odd_1_nat [simp]: "odd (1::nat)" by presburger
    46 lemma odd_1_nat [simp]: "odd (1::nat)" by presburger
    47 
    47 
    48 declare even_def[of "number_of v", standard, simp]
    48 declare even_def[of "number_of v", simp] for v
    49 
    49 
    50 declare even_nat_def[of "number_of v", standard, simp]
    50 declare even_nat_def[of "number_of v", simp] for v
    51 
    51 
    52 subsection {* Even and odd are mutually exclusive *}
    52 subsection {* Even and odd are mutually exclusive *}
    53 
    53 
    54 lemma int_pos_lt_two_imp_zero_or_one:
    54 lemma int_pos_lt_two_imp_zero_or_one:
    55     "0 <= x ==> (x::int) < 2 ==> x = 0 | x = 1"
    55     "0 <= x ==> (x::int) < 2 ==> x = 0 | x = 1"
   345 lemma lemma_even_mod_4_div_2: "n mod 4 = (1::nat) ==> even ((n - 1) div 2)"
   345 lemma lemma_even_mod_4_div_2: "n mod 4 = (1::nat) ==> even ((n - 1) div 2)"
   346   by presburger
   346   by presburger
   347 
   347 
   348 text {* Simplify, when the exponent is a numeral *}
   348 text {* Simplify, when the exponent is a numeral *}
   349 
   349 
   350 lemmas power_0_left_number_of = power_0_left [of "number_of w", standard]
   350 lemmas power_0_left_number_of = power_0_left [of "number_of w"] for w
   351 declare power_0_left_number_of [simp]
   351 declare power_0_left_number_of [simp]
   352 
   352 
   353 lemmas zero_le_power_eq_number_of [simp] =
   353 lemmas zero_le_power_eq_number_of [simp] =
   354     zero_le_power_eq [of _ "number_of w", standard]
   354     zero_le_power_eq [of _ "number_of w"] for w
   355 
   355 
   356 lemmas zero_less_power_eq_number_of [simp] =
   356 lemmas zero_less_power_eq_number_of [simp] =
   357     zero_less_power_eq [of _ "number_of w", standard]
   357     zero_less_power_eq [of _ "number_of w"] for w
   358 
   358 
   359 lemmas power_le_zero_eq_number_of [simp] =
   359 lemmas power_le_zero_eq_number_of [simp] =
   360     power_le_zero_eq [of _ "number_of w", standard]
   360     power_le_zero_eq [of _ "number_of w"] for w
   361 
   361 
   362 lemmas power_less_zero_eq_number_of [simp] =
   362 lemmas power_less_zero_eq_number_of [simp] =
   363     power_less_zero_eq [of _ "number_of w", standard]
   363     power_less_zero_eq [of _ "number_of w"] for w
   364 
   364 
   365 lemmas zero_less_power_nat_eq_number_of [simp] =
   365 lemmas zero_less_power_nat_eq_number_of [simp] =
   366     zero_less_power_nat_eq [of _ "number_of w", standard]
   366     zero_less_power_nat_eq [of _ "number_of w"] for w
   367 
   367 
   368 lemmas power_eq_0_iff_number_of [simp] = power_eq_0_iff [of _ "number_of w", standard]
   368 lemmas power_eq_0_iff_number_of [simp] = power_eq_0_iff [of _ "number_of w"] for w
   369 
   369 
   370 lemmas power_even_abs_number_of [simp] = power_even_abs [of "number_of w" _, standard]
   370 lemmas power_even_abs_number_of [simp] = power_even_abs [of "number_of w" _] for w
   371 
   371 
   372 
   372 
   373 subsection {* An Equivalence for @{term [source] "0 \<le> a^n"} *}
   373 subsection {* An Equivalence for @{term [source] "0 \<le> a^n"} *}
   374 
   374 
   375 lemma even_power_le_0_imp_0:
   375 lemma even_power_le_0_imp_0: