187 fun prep_simproc (name, pats, proc) = Simplifier.mk_simproc name pats proc; |
193 fun prep_simproc (name, pats, proc) = Simplifier.mk_simproc name pats proc; |
188 |
194 |
189 val eq_pats = prep_pats ["(l::nat) + m = n", "(l::nat) = m + n", "Suc m = n", "m = Suc n"]; |
195 val eq_pats = prep_pats ["(l::nat) + m = n", "(l::nat) = m + n", "Suc m = n", "m = Suc n"]; |
190 val less_pats = prep_pats ["(l::nat) + m < n", "(l::nat) < m + n", "Suc m < n", "m < Suc n"]; |
196 val less_pats = prep_pats ["(l::nat) + m < n", "(l::nat) < m + n", "Suc m < n", "m < Suc n"]; |
191 val le_pats = prep_pats ["(l::nat) + m <= n", "(l::nat) <= m + n", "Suc m <= n", "m <= Suc n"]; |
197 val le_pats = prep_pats ["(l::nat) + m <= n", "(l::nat) <= m + n", "Suc m <= n", "m <= Suc n"]; |
|
198 val diff_pats = prep_pats ["((l::nat) + m) - n", "(l::nat) - (m + n)", "Suc m - n", "m - Suc n"]; |
192 |
199 |
193 val nat_cancel_sums = map prep_simproc |
200 val nat_cancel_sums = map prep_simproc |
194 [("nateq_cancel_sums", eq_pats, EqCancelSums.proc), |
201 [("nateq_cancel_sums", eq_pats, EqCancelSums.proc), |
195 ("natless_cancel_sums", less_pats, LessCancelSums.proc), |
202 ("natless_cancel_sums", less_pats, LessCancelSums.proc), |
196 ("natle_cancel_sums", le_pats, LeCancelSums.proc)]; |
203 ("natle_cancel_sums", le_pats, LeCancelSums.proc), |
|
204 ("natdiff_cancel_sums", diff_pats, DiffCancelSums.proc)]; |
197 |
205 |
198 val nat_cancel_factor = map prep_simproc |
206 val nat_cancel_factor = map prep_simproc |
199 [("nateq_cancel_factor", eq_pats, EqCancelFactor.proc), |
207 [("nateq_cancel_factor", eq_pats, EqCancelFactor.proc), |
200 ("natless_cancel_factor", less_pats, LessCancelFactor.proc), |
208 ("natless_cancel_factor", less_pats, LessCancelFactor.proc), |
201 ("natle_cancel_factor", le_pats, LeCancelFactor.proc)]; |
209 ("natle_cancel_factor", le_pats, LeCancelFactor.proc)]; |