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