equal
deleted
inserted
replaced
230 [@{thm mult.assoc}, @{thm minus_mult_right}, @{thm minus_mult_commute}]; |
230 [@{thm mult.assoc}, @{thm minus_mult_right}, @{thm minus_mult_commute}]; |
231 |
231 |
232 val norm_ss1 = |
232 val norm_ss1 = |
233 simpset_of (put_simpset num_ss @{context} |
233 simpset_of (put_simpset num_ss @{context} |
234 addsimps numeral_syms @ add_0s @ mult_1s @ |
234 addsimps numeral_syms @ add_0s @ mult_1s @ |
235 diff_simps @ minus_simps @ @{thms add_ac}) |
235 diff_simps @ minus_simps @ @{thms ac_simps}) |
236 |
236 |
237 val norm_ss2 = |
237 val norm_ss2 = |
238 simpset_of (put_simpset num_ss @{context} |
238 simpset_of (put_simpset num_ss @{context} |
239 addsimps non_add_simps @ mult_minus_simps) |
239 addsimps non_add_simps @ mult_minus_simps) |
240 |
240 |
241 val norm_ss3 = |
241 val norm_ss3 = |
242 simpset_of (put_simpset num_ss @{context} |
242 simpset_of (put_simpset num_ss @{context} |
243 addsimps minus_from_mult_simps @ @{thms add_ac} @ @{thms mult_ac minus_mult_commute}) |
243 addsimps minus_from_mult_simps @ @{thms ac_simps} @ @{thms ac_simps minus_mult_commute}) |
244 |
244 |
245 structure CancelNumeralsCommon = |
245 structure CancelNumeralsCommon = |
246 struct |
246 struct |
247 val mk_sum = mk_sum |
247 val mk_sum = mk_sum |
248 val dest_sum = dest_sum |
248 val dest_sum = dest_sum |
359 |
359 |
360 (*We do not need folding for addition: combine_numerals does the same thing*) |
360 (*We do not need folding for addition: combine_numerals does the same thing*) |
361 |
361 |
362 structure Semiring_Times_Assoc_Data : ASSOC_FOLD_DATA = |
362 structure Semiring_Times_Assoc_Data : ASSOC_FOLD_DATA = |
363 struct |
363 struct |
364 val assoc_ss = simpset_of (put_simpset HOL_basic_ss @{context} addsimps @{thms mult_ac minus_mult_commute}) |
364 val assoc_ss = simpset_of (put_simpset HOL_basic_ss @{context} addsimps @{thms ac_simps minus_mult_commute}) |
365 val eq_reflection = eq_reflection |
365 val eq_reflection = eq_reflection |
366 val is_numeral = can HOLogic.dest_number |
366 val is_numeral = can HOLogic.dest_number |
367 end; |
367 end; |
368 |
368 |
369 structure Semiring_Times_Assoc = Assoc_Fold (Semiring_Times_Assoc_Data); |
369 structure Semiring_Times_Assoc = Assoc_Fold (Semiring_Times_Assoc_Data); |
379 val norm_ss1 = |
379 val norm_ss1 = |
380 simpset_of (put_simpset HOL_basic_ss @{context} addsimps minus_from_mult_simps @ mult_1s) |
380 simpset_of (put_simpset HOL_basic_ss @{context} addsimps minus_from_mult_simps @ mult_1s) |
381 val norm_ss2 = |
381 val norm_ss2 = |
382 simpset_of (put_simpset HOL_basic_ss @{context} addsimps simps @ mult_minus_simps) |
382 simpset_of (put_simpset HOL_basic_ss @{context} addsimps simps @ mult_minus_simps) |
383 val norm_ss3 = |
383 val norm_ss3 = |
384 simpset_of (put_simpset HOL_basic_ss @{context} addsimps @{thms mult_ac minus_mult_commute}) |
384 simpset_of (put_simpset HOL_basic_ss @{context} addsimps @{thms ac_simps minus_mult_commute}) |
385 fun norm_tac ctxt = |
385 fun norm_tac ctxt = |
386 ALLGOALS (simp_tac (put_simpset norm_ss1 ctxt)) |
386 ALLGOALS (simp_tac (put_simpset norm_ss1 ctxt)) |
387 THEN ALLGOALS (simp_tac (put_simpset norm_ss2 ctxt)) |
387 THEN ALLGOALS (simp_tac (put_simpset norm_ss2 ctxt)) |
388 THEN ALLGOALS (simp_tac (put_simpset norm_ss3 ctxt)) |
388 THEN ALLGOALS (simp_tac (put_simpset norm_ss3 ctxt)) |
389 |
389 |
511 val mk_coeff = mk_coeff |
511 val mk_coeff = mk_coeff |
512 val dest_coeff = dest_coeff |
512 val dest_coeff = dest_coeff |
513 val find_first = find_first_t [] |
513 val find_first = find_first_t [] |
514 val trans_tac = trans_tac |
514 val trans_tac = trans_tac |
515 val norm_ss = |
515 val norm_ss = |
516 simpset_of (put_simpset HOL_basic_ss @{context} addsimps mult_1s @ @{thms mult_ac minus_mult_commute}) |
516 simpset_of (put_simpset HOL_basic_ss @{context} addsimps mult_1s @ @{thms ac_simps minus_mult_commute}) |
517 fun norm_tac ctxt = |
517 fun norm_tac ctxt = |
518 ALLGOALS (simp_tac (put_simpset norm_ss ctxt)) |
518 ALLGOALS (simp_tac (put_simpset norm_ss ctxt)) |
519 val simplify_meta_eq = cancel_simplify_meta_eq |
519 val simplify_meta_eq = cancel_simplify_meta_eq |
520 fun mk_eq (a, b) = HOLogic.mk_Trueprop (HOLogic.mk_eq (a, b)) |
520 fun mk_eq (a, b) = HOLogic.mk_Trueprop (HOLogic.mk_eq (a, b)) |
521 end; |
521 end; |