equal
deleted
inserted
replaced
504 |
504 |
505 end |
505 end |
506 |
506 |
507 class semiring_div_parity = semiring_div + semiring_numeral + |
507 class semiring_div_parity = semiring_div + semiring_numeral + |
508 assumes parity: "a mod 2 = 0 \<or> a mod 2 = 1" |
508 assumes parity: "a mod 2 = 0 \<or> a mod 2 = 1" |
|
509 assumes one_mod_two_eq_one: "1 mod 2 = 1" |
509 begin |
510 begin |
510 |
511 |
511 lemma parity_cases [case_names even odd]: |
512 lemma parity_cases [case_names even odd]: |
512 assumes "a mod 2 = 0 \<Longrightarrow> P" |
513 assumes "a mod 2 = 0 \<Longrightarrow> P" |
513 assumes "a mod 2 = 1 \<Longrightarrow> P" |
514 assumes "a mod 2 = 1 \<Longrightarrow> P" |
567 with discrete have "1 \<le> a mod 2" by simp |
568 with discrete have "1 \<le> a mod 2" by simp |
568 with `a mod 2 \<noteq> 1` have "1 < a mod 2" by simp |
569 with `a mod 2 \<noteq> 1` have "1 < a mod 2" by simp |
569 with discrete have "2 \<le> a mod 2" by simp |
570 with discrete have "2 \<le> a mod 2" by simp |
570 with `a mod 2 < 2` show False by simp |
571 with `a mod 2 < 2` show False by simp |
571 qed |
572 qed |
|
573 next |
|
574 show "1 mod 2 = 1" |
|
575 by (rule mod_less) simp_all |
572 qed |
576 qed |
573 |
577 |
574 lemma divmod_digit_1: |
578 lemma divmod_digit_1: |
575 assumes "0 \<le> a" "0 < b" and "b \<le> a mod (2 * b)" |
579 assumes "0 \<le> a" "0 < b" and "b \<le> a mod (2 * b)" |
576 shows "2 * (a div (2 * b)) + 1 = a div b" (is "?P") |
580 shows "2 * (a div (2 * b)) + 1 = a div b" (is "?P") |