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: |