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}, |