src/HOL/Tools/numeral_simprocs.ML
changeset 62913 13252110a6fe
parent 61694 6571c78c9667
child 63950 cdc1e59aa513
equal deleted inserted replaced
62912:745d31e63c21 62913:13252110a6fe
   449       @{term "(l::'a::field) / (m * n)"},
   449       @{term "(l::'a::field) / (m * n)"},
   450       @{term "((numeral v)::'a::field) / (numeral w)"},
   450       @{term "((numeral v)::'a::field) / (numeral w)"},
   451       @{term "((numeral v)::'a::field) / (- numeral w)"},
   451       @{term "((numeral v)::'a::field) / (- numeral w)"},
   452       @{term "((- numeral v)::'a::field) / (numeral w)"},
   452       @{term "((- numeral v)::'a::field) / (numeral w)"},
   453       @{term "((- numeral v)::'a::field) / (- numeral w)"}],
   453       @{term "((- numeral v)::'a::field) / (- numeral w)"}],
   454     proc = K DivideCancelNumeralFactor.proc,
   454     proc = K DivideCancelNumeralFactor.proc}
   455     identifier = []}
       
   456 
   455 
   457 val field_cancel_numeral_factors =
   456 val field_cancel_numeral_factors =
   458   [Simplifier.make_simproc @{context} "field_eq_cancel_numeral_factor"
   457   [Simplifier.make_simproc @{context} "field_eq_cancel_numeral_factor"
   459     {lhss =
   458     {lhss =
   460        [@{term "(l::'a::field) * m = n"},
   459        [@{term "(l::'a::field) * m = n"},
   461         @{term "(l::'a::field) = m * n"}],
   460         @{term "(l::'a::field) = m * n"}],
   462       proc = K EqCancelNumeralFactor.proc,
   461       proc = K EqCancelNumeralFactor.proc},
   463       identifier = []},
       
   464    field_divide_cancel_numeral_factor]
   462    field_divide_cancel_numeral_factor]
   465 
   463 
   466 
   464 
   467 (** Declarations for ExtractCommonTerm **)
   465 (** Declarations for ExtractCommonTerm **)
   468 
   466 
   691   | _ => NONE) handle TERM _ => NONE | CTERM _ => NONE | THM _ => NONE
   689   | _ => NONE) handle TERM _ => NONE | CTERM _ => NONE | THM _ => NONE
   692 
   690 
   693 val add_frac_frac_simproc =
   691 val add_frac_frac_simproc =
   694   Simplifier.make_simproc @{context} "add_frac_frac_simproc"
   692   Simplifier.make_simproc @{context} "add_frac_frac_simproc"
   695    {lhss = [@{term "(x::'a::field) / y + (w::'a::field) / z"}],
   693    {lhss = [@{term "(x::'a::field) / y + (w::'a::field) / z"}],
   696     proc = K proc, identifier = []}
   694     proc = K proc}
   697 
   695 
   698 val add_frac_num_simproc =
   696 val add_frac_num_simproc =
   699   Simplifier.make_simproc @{context} "add_frac_num_simproc"
   697   Simplifier.make_simproc @{context} "add_frac_num_simproc"
   700    {lhss = [@{term "(x::'a::field) / y + z"}, @{term "z + (x::'a::field) / y"}],
   698    {lhss = [@{term "(x::'a::field) / y + z"}, @{term "z + (x::'a::field) / y"}],
   701     proc = K proc2, identifier = []}
   699     proc = K proc2}
   702 
   700 
   703 val ord_frac_simproc =
   701 val ord_frac_simproc =
   704   Simplifier.make_simproc @{context} "ord_frac_simproc"
   702   Simplifier.make_simproc @{context} "ord_frac_simproc"
   705    {lhss =
   703    {lhss =
   706      [@{term "(a::'a::{field,ord}) / b < c"},
   704      [@{term "(a::'a::{field,ord}) / b < c"},
   707       @{term "(a::'a::{field,ord}) / b \<le> c"},
   705       @{term "(a::'a::{field,ord}) / b \<le> c"},
   708       @{term "c < (a::'a::{field,ord}) / b"},
   706       @{term "c < (a::'a::{field,ord}) / b"},
   709       @{term "c \<le> (a::'a::{field,ord}) / b"},
   707       @{term "c \<le> (a::'a::{field,ord}) / b"},
   710       @{term "c = (a::'a::{field,ord}) / b"},
   708       @{term "c = (a::'a::{field,ord}) / b"},
   711       @{term "(a::'a::{field, ord}) / b = c"}],
   709       @{term "(a::'a::{field, ord}) / b = c"}],
   712     proc = K proc3, identifier = []}
   710     proc = K proc3}
   713 
   711 
   714 val ths =
   712 val ths =
   715  [@{thm "mult_numeral_1"}, @{thm "mult_numeral_1_right"},
   713  [@{thm "mult_numeral_1"}, @{thm "mult_numeral_1_right"},
   716   @{thm "divide_numeral_1"},
   714   @{thm "divide_numeral_1"},
   717   @{thm "divide_zero"}, @{thm divide_zero_left},
   715   @{thm "divide_zero"}, @{thm divide_zero_left},