src/HOL/Tools/numeral_simprocs.ML
changeset 57514 bdc2c6b40bf2
parent 57512 cc97b347b301
child 58512 dc4d76dfa8f0
equal deleted inserted replaced
57513:55b2afc5ddfc 57514:bdc2c6b40bf2
   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;