src/HOL/Code_Numeral.thy
changeset 82528 3704717ed7bf
parent 82515 03d019ee7d02
equal deleted inserted replaced
82527:803b5d19c48c 82528:3704717ed7bf
   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