381 "(l::'a::number_ring) = m - n", |
381 "(l::'a::number_ring) = m - n", |
382 "(l::'a::number_ring) * m = n", |
382 "(l::'a::number_ring) * m = n", |
383 "(l::'a::number_ring) = m * n"], |
383 "(l::'a::number_ring) = m * n"], |
384 EqCancelNumerals.proc), |
384 EqCancelNumerals.proc), |
385 ("intless_cancel_numerals", |
385 ("intless_cancel_numerals", |
386 ["(l::'a::{ordered_ring,number_ring}) + m < n", |
386 ["(l::'a::{ordered_idom,number_ring}) + m < n", |
387 "(l::'a::{ordered_ring,number_ring}) < m + n", |
387 "(l::'a::{ordered_idom,number_ring}) < m + n", |
388 "(l::'a::{ordered_ring,number_ring}) - m < n", |
388 "(l::'a::{ordered_idom,number_ring}) - m < n", |
389 "(l::'a::{ordered_ring,number_ring}) < m - n", |
389 "(l::'a::{ordered_idom,number_ring}) < m - n", |
390 "(l::'a::{ordered_ring,number_ring}) * m < n", |
390 "(l::'a::{ordered_idom,number_ring}) * m < n", |
391 "(l::'a::{ordered_ring,number_ring}) < m * n"], |
391 "(l::'a::{ordered_idom,number_ring}) < m * n"], |
392 LessCancelNumerals.proc), |
392 LessCancelNumerals.proc), |
393 ("intle_cancel_numerals", |
393 ("intle_cancel_numerals", |
394 ["(l::'a::{ordered_ring,number_ring}) + m <= n", |
394 ["(l::'a::{ordered_idom,number_ring}) + m <= n", |
395 "(l::'a::{ordered_ring,number_ring}) <= m + n", |
395 "(l::'a::{ordered_idom,number_ring}) <= m + n", |
396 "(l::'a::{ordered_ring,number_ring}) - m <= n", |
396 "(l::'a::{ordered_idom,number_ring}) - m <= n", |
397 "(l::'a::{ordered_ring,number_ring}) <= m - n", |
397 "(l::'a::{ordered_idom,number_ring}) <= m - n", |
398 "(l::'a::{ordered_ring,number_ring}) * m <= n", |
398 "(l::'a::{ordered_idom,number_ring}) * m <= n", |
399 "(l::'a::{ordered_ring,number_ring}) <= m * n"], |
399 "(l::'a::{ordered_idom,number_ring}) <= m * n"], |
400 LeCancelNumerals.proc)]; |
400 LeCancelNumerals.proc)]; |
401 |
401 |
402 |
402 |
403 structure CombineNumeralsData = |
403 structure CombineNumeralsData = |
404 struct |
404 struct |
543 end; |
543 end; |
544 |
544 |
545 val fast_int_arith_simproc = |
545 val fast_int_arith_simproc = |
546 Simplifier.simproc (Theory.sign_of (the_context())) |
546 Simplifier.simproc (Theory.sign_of (the_context())) |
547 "fast_int_arith" |
547 "fast_int_arith" |
548 ["(m::'a::{ordered_ring,number_ring}) < n", |
548 ["(m::'a::{ordered_idom,number_ring}) < n", |
549 "(m::'a::{ordered_ring,number_ring}) <= n", |
549 "(m::'a::{ordered_idom,number_ring}) <= n", |
550 "(m::'a::{ordered_ring,number_ring}) = n"] Fast_Arith.lin_arith_prover; |
550 "(m::'a::{ordered_idom,number_ring}) = n"] Fast_Arith.lin_arith_prover; |
551 |
551 |
552 Addsimprocs [fast_int_arith_simproc] |
552 Addsimprocs [fast_int_arith_simproc] |
553 |
553 |
554 |
554 |
555 (* Some test data |
555 (* Some test data |