src/HOL/Tools/numeral_simprocs.ML
changeset 35030 f2f1e50bf65d
parent 35020 862a20ffa8e2
parent 35028 108662d50512
child 35043 07dbdf60d5ad
equal deleted inserted replaced
35025:0ea45a4d32f3 35030:f2f1e50bf65d
   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",