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 |
|