253 "(l::'a::number_ring) = m - n", |
253 "(l::'a::number_ring) = m - n", |
254 "(l::'a::number_ring) * m = n", |
254 "(l::'a::number_ring) * m = n", |
255 "(l::'a::number_ring) = m * n"], |
255 "(l::'a::number_ring) = m * n"], |
256 K EqCancelNumerals.proc), |
256 K EqCancelNumerals.proc), |
257 ("intless_cancel_numerals", |
257 ("intless_cancel_numerals", |
258 ["(l::'a::{ordered_idom,number_ring}) + m < n", |
258 ["(l::'a::{linordered_idom,number_ring}) + m < n", |
259 "(l::'a::{ordered_idom,number_ring}) < m + n", |
259 "(l::'a::{linordered_idom,number_ring}) < m + n", |
260 "(l::'a::{ordered_idom,number_ring}) - m < n", |
260 "(l::'a::{linordered_idom,number_ring}) - m < n", |
261 "(l::'a::{ordered_idom,number_ring}) < m - n", |
261 "(l::'a::{linordered_idom,number_ring}) < m - n", |
262 "(l::'a::{ordered_idom,number_ring}) * m < n", |
262 "(l::'a::{linordered_idom,number_ring}) * m < n", |
263 "(l::'a::{ordered_idom,number_ring}) < m * n"], |
263 "(l::'a::{linordered_idom,number_ring}) < m * n"], |
264 K LessCancelNumerals.proc), |
264 K LessCancelNumerals.proc), |
265 ("intle_cancel_numerals", |
265 ("intle_cancel_numerals", |
266 ["(l::'a::{ordered_idom,number_ring}) + m <= n", |
266 ["(l::'a::{linordered_idom,number_ring}) + m <= n", |
267 "(l::'a::{ordered_idom,number_ring}) <= m + n", |
267 "(l::'a::{linordered_idom,number_ring}) <= m + n", |
268 "(l::'a::{ordered_idom,number_ring}) - m <= n", |
268 "(l::'a::{linordered_idom,number_ring}) - m <= n", |
269 "(l::'a::{ordered_idom,number_ring}) <= m - n", |
269 "(l::'a::{linordered_idom,number_ring}) <= m - n", |
270 "(l::'a::{ordered_idom,number_ring}) * m <= n", |
270 "(l::'a::{linordered_idom,number_ring}) * m <= n", |
271 "(l::'a::{ordered_idom,number_ring}) <= m * n"], |
271 "(l::'a::{linordered_idom,number_ring}) <= m * n"], |
272 K LeCancelNumerals.proc)]; |
272 K LeCancelNumerals.proc)]; |
273 |
273 |
274 structure CombineNumeralsData = |
274 structure CombineNumeralsData = |
275 struct |
275 struct |
276 type coeff = int |
276 type coeff = int |
429 [("ring_eq_cancel_numeral_factor", |
429 [("ring_eq_cancel_numeral_factor", |
430 ["(l::'a::{idom,number_ring}) * m = n", |
430 ["(l::'a::{idom,number_ring}) * m = n", |
431 "(l::'a::{idom,number_ring}) = m * n"], |
431 "(l::'a::{idom,number_ring}) = m * n"], |
432 K EqCancelNumeralFactor.proc), |
432 K EqCancelNumeralFactor.proc), |
433 ("ring_less_cancel_numeral_factor", |
433 ("ring_less_cancel_numeral_factor", |
434 ["(l::'a::{ordered_idom,number_ring}) * m < n", |
434 ["(l::'a::{linordered_idom,number_ring}) * m < n", |
435 "(l::'a::{ordered_idom,number_ring}) < m * n"], |
435 "(l::'a::{linordered_idom,number_ring}) < m * n"], |
436 K LessCancelNumeralFactor.proc), |
436 K LessCancelNumeralFactor.proc), |
437 ("ring_le_cancel_numeral_factor", |
437 ("ring_le_cancel_numeral_factor", |
438 ["(l::'a::{ordered_idom,number_ring}) * m <= n", |
438 ["(l::'a::{linordered_idom,number_ring}) * m <= n", |
439 "(l::'a::{ordered_idom,number_ring}) <= m * n"], |
439 "(l::'a::{linordered_idom,number_ring}) <= m * n"], |
440 K LeCancelNumeralFactor.proc), |
440 K LeCancelNumeralFactor.proc), |
441 ("int_div_cancel_numeral_factors", |
441 ("int_div_cancel_numeral_factors", |
442 ["((l::'a::{semiring_div,number_ring}) * m) div n", |
442 ["((l::'a::{semiring_div,number_ring}) * m) div n", |
443 "(l::'a::{semiring_div,number_ring}) div (m * n)"], |
443 "(l::'a::{semiring_div,number_ring}) div (m * n)"], |
444 K DivCancelNumeralFactor.proc), |
444 K DivCancelNumeralFactor.proc), |
579 map (Arith_Data.prep_simproc @{theory}) |
579 map (Arith_Data.prep_simproc @{theory}) |
580 [("ring_eq_cancel_factor", |
580 [("ring_eq_cancel_factor", |
581 ["(l::'a::idom) * m = n", |
581 ["(l::'a::idom) * m = n", |
582 "(l::'a::idom) = m * n"], |
582 "(l::'a::idom) = m * n"], |
583 K EqCancelFactor.proc), |
583 K EqCancelFactor.proc), |
584 ("ordered_ring_le_cancel_factor", |
584 ("linlinordered_ring_le_cancel_factor", |
585 ["(l::'a::ordered_ring) * m <= n", |
585 ["(l::'a::linordered_ring) * m <= n", |
586 "(l::'a::ordered_ring) <= m * n"], |
586 "(l::'a::linordered_ring) <= m * n"], |
587 K LeCancelFactor.proc), |
587 K LeCancelFactor.proc), |
588 ("ordered_ring_less_cancel_factor", |
588 ("linlinordered_ring_less_cancel_factor", |
589 ["(l::'a::ordered_ring) * m < n", |
589 ["(l::'a::linordered_ring) * m < n", |
590 "(l::'a::ordered_ring) < m * n"], |
590 "(l::'a::linordered_ring) < m * n"], |
591 K LessCancelFactor.proc), |
591 K LessCancelFactor.proc), |
592 ("int_div_cancel_factor", |
592 ("int_div_cancel_factor", |
593 ["((l::'a::semiring_div) * m) div n", "(l::'a::semiring_div) div (m * n)"], |
593 ["((l::'a::semiring_div) * m) div n", "(l::'a::semiring_div) div (m * n)"], |
594 K DivCancelFactor.proc), |
594 K DivCancelFactor.proc), |
595 ("int_mod_cancel_factor", |
595 ("int_mod_cancel_factor", |