src/HOL/Integ/NatBin.ML
changeset 8776 60821dbc9f18
parent 8758 5a5189330337
child 8792 59a4b5e6a591
equal deleted inserted replaced
8775:626274171eab 8776:60821dbc9f18
   301 	  le0, le_0_eq, 
   301 	  le0, le_0_eq, 
   302 	  neq0_conv, zero_neq_conv, not_gr0]);
   302 	  neq0_conv, zero_neq_conv, not_gr0]);
   303 
   303 
   304 (** Arith **)
   304 (** Arith **)
   305 
   305 
   306 Addsimps (map (rename_numerals thy) 
   306 (*Identity laws for + - * *)	 
   307 	  [diff_0, diff_0_eq_0, add_0, add_0_right, add_pred, 
   307 val basic_renamed_arith_simps =
   308 	   diff_is_0_eq, zero_is_diff_eq, zero_less_diff,
   308     map (rename_numerals thy) 
   309 	   mult_0, mult_0_right, mult_1, mult_1_right, 
   309         [diff_0, diff_0_eq_0, add_0, add_0_right, 
   310 	   mult_is_0, zero_is_mult, zero_less_mult_iff,
   310 	 mult_0, mult_0_right, mult_1, mult_1_right];
   311 	   mult_eq_1_iff]);
   311 	 
       
   312 (*Non-trivial simplifications*)	 
       
   313 val other_renamed_arith_simps =
       
   314     map (rename_numerals thy) 
       
   315 	[add_pred, diff_is_0_eq, zero_is_diff_eq, zero_less_diff,
       
   316 	 mult_is_0, zero_is_mult, zero_less_mult_iff, mult_eq_1_iff];
       
   317 
       
   318 Addsimps (basic_renamed_arith_simps @ other_renamed_arith_simps);
   312 
   319 
   313 AddIffs (map (rename_numerals thy) [add_is_0, zero_is_add, add_gr_0]);
   320 AddIffs (map (rename_numerals thy) [add_is_0, zero_is_add, add_gr_0]);
   314 
   321 
   315 Goal "Suc n = n + #1";
   322 Goal "Suc n = n + #1";
   316 by (asm_simp_tac numeral_ss 1);
   323 by (asm_simp_tac numeral_ss 1);
   348 val le_pred_eq' = rename_numerals thy le_pred_eq;
   355 val le_pred_eq' = rename_numerals thy le_pred_eq;
   349 val less_pred_eq' = rename_numerals thy less_pred_eq;
   356 val less_pred_eq' = rename_numerals thy less_pred_eq;
   350 
   357 
   351 (** Divides **)
   358 (** Divides **)
   352 
   359 
   353 Addsimps (map (rename_numerals thy) 
   360 Addsimps (map (rename_numerals thy) [mod_1, mod_0, div_1, div_0]);
   354 	  [mod_1, mod_0, div_1, div_0, mod2_gr_0, mod2_add_self_eq_0,
       
   355 	   mod2_add_self]);
       
   356 
   361 
   357 AddIffs (map (rename_numerals thy) 
   362 AddIffs (map (rename_numerals thy) 
   358 	  [dvd_1_left, dvd_0_right]);
   363 	  [dvd_1_left, dvd_0_right]);
   359 
   364 
   360 (*useful?*)
   365 (*useful?*)
   463 	  less_number_of_Suc, less_Suc_number_of, 
   468 	  less_number_of_Suc, less_Suc_number_of, 
   464 	  le_number_of_Suc, le_Suc_number_of];
   469 	  le_number_of_Suc, le_Suc_number_of];
   465 
   470 
   466 (* Push int(.) inwards: *)
   471 (* Push int(.) inwards: *)
   467 Addsimps [int_Suc,zadd_int RS sym];
   472 Addsimps [int_Suc,zadd_int RS sym];
   468