src/HOL/NatBin.thy
changeset 30081 46b9c8ae3897
parent 30079 293b896b9c25
child 30242 aea5d7fa7ef5
equal deleted inserted replaced
30080:4cf42465b3da 30081:46b9c8ae3897
   157           else if v' < Int.Pls then number_of v  
   157           else if v' < Int.Pls then number_of v  
   158           else number_of (v + v'))"
   158           else number_of (v + v'))"
   159   unfolding nat_number_of_def number_of_is_id numeral_simps
   159   unfolding nat_number_of_def number_of_is_id numeral_simps
   160   by (simp add: nat_add_distrib)
   160   by (simp add: nat_add_distrib)
   161 
   161 
       
   162 lemma nat_number_of_add_1 [simp]:
       
   163   "number_of v + (1::nat) =
       
   164     (if v < Int.Pls then 1 else number_of (Int.succ v))"
       
   165   unfolding nat_number_of_def number_of_is_id numeral_simps
       
   166   by (simp add: nat_add_distrib)
       
   167 
       
   168 lemma nat_1_add_number_of [simp]:
       
   169   "(1::nat) + number_of v =
       
   170     (if v < Int.Pls then 1 else number_of (Int.succ v))"
       
   171   unfolding nat_number_of_def number_of_is_id numeral_simps
       
   172   by (simp add: nat_add_distrib)
       
   173 
       
   174 lemma nat_1_add_1 [simp]: "1 + 1 = (2::nat)"
       
   175   by (rule int_int_eq [THEN iffD1]) simp
       
   176 
   162 
   177 
   163 subsubsection{*Subtraction *}
   178 subsubsection{*Subtraction *}
   164 
   179 
   165 lemma diff_nat_eq_if:
   180 lemma diff_nat_eq_if:
   166      "nat z - nat z' =  
   181      "nat z - nat z' =  
   174      "(number_of v :: nat) - number_of v' =  
   189      "(number_of v :: nat) - number_of v' =  
   175         (if v' < Int.Pls then number_of v  
   190         (if v' < Int.Pls then number_of v  
   176          else let d = number_of (v + uminus v') in     
   191          else let d = number_of (v + uminus v') in     
   177               if neg d then 0 else nat d)"
   192               if neg d then 0 else nat d)"
   178   unfolding nat_number_of_def number_of_is_id numeral_simps neg_def
   193   unfolding nat_number_of_def number_of_is_id numeral_simps neg_def
       
   194   by auto
       
   195 
       
   196 lemma nat_number_of_diff_1 [simp]:
       
   197   "number_of v - (1::nat) =
       
   198     (if v \<le> Int.Pls then 0 else number_of (Int.pred v))"
       
   199   unfolding nat_number_of_def number_of_is_id numeral_simps
   179   by auto
   200   by auto
   180 
   201 
   181 
   202 
   182 subsubsection{*Multiplication *}
   203 subsubsection{*Multiplication *}
   183 
   204