514 | SOME thm => SOME(mk_meta_eq(thm RS @{thm linorder_class.antisym_conv2})) |
514 | SOME thm => SOME(mk_meta_eq(thm RS @{thm linorder_class.antisym_conv2})) |
515 end |
515 end |
516 handle THM _ => NONE; |
516 handle THM _ => NONE; |
517 |
517 |
518 fun add_simprocs procs thy = |
518 fun add_simprocs procs thy = |
519 (Simplifier.change_simpset_of thy (fn ss => ss |
519 Simplifier.map_simpset (fn ss => ss |
520 addsimprocs (map (fn (name, raw_ts, proc) => |
520 addsimprocs (map (fn (name, raw_ts, proc) => |
521 Simplifier.simproc thy name raw_ts proc)) procs); thy); |
521 Simplifier.simproc thy name raw_ts proc) procs)) thy; |
522 fun add_solver name tac thy = |
522 fun add_solver name tac = |
523 (Simplifier.change_simpset_of thy (fn ss => ss addSolver |
523 Simplifier.map_simpset (fn ss => ss addSolver |
524 (mk_solver' name (fn ss => tac (MetaSimplifier.prems_of_ss ss) (MetaSimplifier.the_context ss)))); thy); |
524 mk_solver' name (fn ss => tac (Simplifier.prems_of_ss ss) (Simplifier.the_context ss))); |
525 |
525 |
526 in |
526 in |
527 add_simprocs [ |
527 add_simprocs [ |
528 ("antisym le", ["(x::'a::order) <= y"], prove_antisym_le), |
528 ("antisym le", ["(x::'a::order) <= y"], prove_antisym_le), |
529 ("antisym less", ["~ (x::'a::linorder) < y"], prove_antisym_less) |
529 ("antisym less", ["~ (x::'a::linorder) < y"], prove_antisym_less) |