src/HOL/Integ/nat_bin.ML
changeset 10710 0c8d58332658
parent 10693 9e4a0e84d0d6
child 10754 9bc30e51144c
equal deleted inserted replaced
10709:7a29b71d6352 10710:0c8d58332658
   307 
   307 
   308 Addsimps (map rename_numerals [min_0L, min_0R, max_0L, max_0R]);
   308 Addsimps (map rename_numerals [min_0L, min_0R, max_0L, max_0R]);
   309 
   309 
   310 AddIffs (map rename_numerals
   310 AddIffs (map rename_numerals
   311 	 [Suc_not_Zero, Zero_not_Suc, zero_less_Suc, not_less0, less_one, 
   311 	 [Suc_not_Zero, Zero_not_Suc, zero_less_Suc, not_less0, less_one, 
   312 	  le0, le_0_eq, 
   312 	  le0, le_0_eq, neq0_conv, not_gr0]);
   313 	  neq0_conv, zero_neq_conv, not_gr0]);
       
   314 
   313 
   315 (** Arith **)
   314 (** Arith **)
   316 
   315 
   317 (*Identity laws for + - * *)	 
   316 (*Identity laws for + - * *)	 
   318 val basic_renamed_arith_simps =
   317 val basic_renamed_arith_simps =
   321 	 mult_0, mult_0_right, mult_1, mult_1_right];
   320 	 mult_0, mult_0_right, mult_1, mult_1_right];
   322 	 
   321 	 
   323 (*Non-trivial simplifications*)	 
   322 (*Non-trivial simplifications*)	 
   324 val other_renamed_arith_simps =
   323 val other_renamed_arith_simps =
   325     map rename_numerals
   324     map rename_numerals
   326 	[diff_is_0_eq, zero_is_diff_eq, zero_less_diff,
   325 	[diff_is_0_eq, zero_less_diff,
   327 	 mult_is_0, zero_is_mult, zero_less_mult_iff, mult_eq_1_iff];
   326 	 mult_is_0, zero_less_mult_iff, mult_eq_1_iff];
   328 
   327 
   329 Addsimps (basic_renamed_arith_simps @ other_renamed_arith_simps);
   328 Addsimps (basic_renamed_arith_simps @ other_renamed_arith_simps);
   330 
   329 
   331 AddIffs (map rename_numerals [add_is_0, zero_is_add, add_gr_0]);
   330 AddIffs (map rename_numerals [add_is_0, add_gr_0]);
   332 
   331 
   333 Goal "Suc n = n + #1";
   332 Goal "Suc n = n + #1";
   334 by (asm_simp_tac numeral_ss 1);
   333 by (asm_simp_tac numeral_ss 1);
   335 qed "Suc_eq_add_numeral_1";
   334 qed "Suc_eq_add_numeral_1";
   336 
   335 
   357 
   356 
   358 Addsimps [inst "n" "number_of ?v" diff_less'];
   357 Addsimps [inst "n" "number_of ?v" diff_less'];
   359 
   358 
   360 (*various theorems that aren't in the default simpset*)
   359 (*various theorems that aren't in the default simpset*)
   361 bind_thm ("add_is_one'", rename_numerals add_is_1);
   360 bind_thm ("add_is_one'", rename_numerals add_is_1);
   362 bind_thm ("one_is_add'", rename_numerals one_is_add);
       
   363 bind_thm ("zero_induct'", rename_numerals zero_induct);
   361 bind_thm ("zero_induct'", rename_numerals zero_induct);
   364 bind_thm ("diff_self_eq_0'", rename_numerals diff_self_eq_0);
   362 bind_thm ("diff_self_eq_0'", rename_numerals diff_self_eq_0);
   365 bind_thm ("mult_eq_self_implies_10'", rename_numerals mult_eq_self_implies_10);
   363 bind_thm ("mult_eq_self_implies_10'", rename_numerals mult_eq_self_implies_10);
   366 bind_thm ("le_pred_eq'", rename_numerals le_pred_eq);
   364 bind_thm ("le_pred_eq'", rename_numerals le_pred_eq);
   367 bind_thm ("less_pred_eq'", rename_numerals less_pred_eq);
   365 bind_thm ("less_pred_eq'", rename_numerals less_pred_eq);