835 (l, j) = divmod_integer k 2; |
835 (l, j) = divmod_integer k 2; |
836 l' = 2 * int_of_integer l |
836 l' = 2 * int_of_integer l |
837 in if j = 0 then l' else l' + 1)" |
837 in if j = 0 then l' else l' + 1)" |
838 by (auto simp add: split_def Let_def integer_eq_iff minus_mod_eq_mult_div [symmetric]) |
838 by (auto simp add: split_def Let_def integer_eq_iff minus_mod_eq_mult_div [symmetric]) |
839 |
839 |
|
840 lemma int_of_integer_code_nbe [code nbe]: |
|
841 "int_of_integer 0 = 0" |
|
842 "int_of_integer (Pos n) = Int.Pos n" |
|
843 "int_of_integer (Neg n) = Int.Neg n" |
|
844 by simp_all |
|
845 |
840 lemma integer_of_int_code [code]: |
846 lemma integer_of_int_code [code]: |
841 "integer_of_int k = (if k < 0 then - (integer_of_int (- k)) |
847 "integer_of_int k = (if k < 0 then - (integer_of_int (- k)) |
842 else if k = 0 then 0 |
848 else if k = 0 then 0 |
843 else let |
849 else let |
844 l = 2 * integer_of_int (k div 2); |
850 l = 2 * integer_of_int (k div 2); |
845 j = k mod 2 |
851 j = k mod 2 |
846 in if j = 0 then l else l + 1)" |
852 in if j = 0 then l else l + 1)" |
847 by (auto simp add: split_def Let_def integer_eq_iff minus_mod_eq_mult_div [symmetric]) |
853 by (auto simp add: split_def Let_def integer_eq_iff minus_mod_eq_mult_div [symmetric]) |
|
854 |
|
855 lemma integer_of_int_code_nbe [code nbe]: |
|
856 "integer_of_int 0 = 0" |
|
857 "integer_of_int (Int.Pos n) = Pos n" |
|
858 "integer_of_int (Int.Neg n) = Neg n" |
|
859 by simp_all |
848 |
860 |
849 hide_const (open) Pos Neg sub dup divmod_abs |
861 hide_const (open) Pos Neg sub dup divmod_abs |
850 |
862 |
851 context |
863 context |
852 begin |
864 begin |