740 subgoal_tac, loop_tacs, (unsafe_solvers, _)) => |
739 subgoal_tac, loop_tacs, (unsafe_solvers, _)) => |
741 (congs, procs, mk_rews, termless, subgoal_tac, loop_tacs, (unsafe_solvers, [solver]))); |
740 (congs, procs, mk_rews, termless, subgoal_tac, loop_tacs, (unsafe_solvers, [solver]))); |
742 |
741 |
743 fun ss addSSolver solver = ss |> map_simpset2 (fn (congs, procs, mk_rews, termless, |
742 fun ss addSSolver solver = ss |> map_simpset2 (fn (congs, procs, mk_rews, termless, |
744 subgoal_tac, loop_tacs, (unsafe_solvers, solvers)) => (congs, procs, mk_rews, termless, |
743 subgoal_tac, loop_tacs, (unsafe_solvers, solvers)) => (congs, procs, mk_rews, termless, |
745 subgoal_tac, loop_tacs, (unsafe_solvers, merge_solvers solvers [solver]))); |
744 subgoal_tac, loop_tacs, (unsafe_solvers, insert eq_solver solver solvers))); |
746 |
745 |
747 fun ss setSolver solver = ss |> map_simpset2 (fn (congs, procs, mk_rews, termless, |
746 fun ss setSolver solver = ss |> map_simpset2 (fn (congs, procs, mk_rews, termless, |
748 subgoal_tac, loop_tacs, (_, solvers)) => (congs, procs, mk_rews, termless, |
747 subgoal_tac, loop_tacs, (_, solvers)) => (congs, procs, mk_rews, termless, |
749 subgoal_tac, loop_tacs, ([solver], solvers))); |
748 subgoal_tac, loop_tacs, ([solver], solvers))); |
750 |
749 |
751 fun ss addSolver solver = ss |> map_simpset2 (fn (congs, procs, mk_rews, termless, |
750 fun ss addSolver solver = ss |> map_simpset2 (fn (congs, procs, mk_rews, termless, |
752 subgoal_tac, loop_tacs, (unsafe_solvers, solvers)) => (congs, procs, mk_rews, termless, |
751 subgoal_tac, loop_tacs, (unsafe_solvers, solvers)) => (congs, procs, mk_rews, termless, |
753 subgoal_tac, loop_tacs, (merge_solvers unsafe_solvers [solver], solvers))); |
752 subgoal_tac, loop_tacs, (insert eq_solver solver unsafe_solvers, solvers))); |
754 |
753 |
755 fun set_solvers solvers = map_simpset2 (fn (congs, procs, mk_rews, termless, |
754 fun set_solvers solvers = map_simpset2 (fn (congs, procs, mk_rews, termless, |
756 subgoal_tac, loop_tacs, _) => (congs, procs, mk_rews, termless, |
755 subgoal_tac, loop_tacs, _) => (congs, procs, mk_rews, termless, |
757 subgoal_tac, loop_tacs, (solvers, solvers))); |
756 subgoal_tac, loop_tacs, (solvers, solvers))); |
758 |
757 |
793 val bounds' = if #1 bounds1 < #1 bounds2 then bounds2 else bounds1; |
792 val bounds' = if #1 bounds1 < #1 bounds2 then bounds2 else bounds1; |
794 val congs' = merge (eq_cong o pairself #2) (congs1, congs2); |
793 val congs' = merge (eq_cong o pairself #2) (congs1, congs2); |
795 val weak' = merge (op =) (weak1, weak2); |
794 val weak' = merge (op =) (weak1, weak2); |
796 val procs' = Net.merge eq_proc (procs1, procs2); |
795 val procs' = Net.merge eq_proc (procs1, procs2); |
797 val loop_tacs' = AList.merge (op =) (K true) (loop_tacs1, loop_tacs2); |
796 val loop_tacs' = AList.merge (op =) (K true) (loop_tacs1, loop_tacs2); |
798 val unsafe_solvers' = merge_solvers unsafe_solvers1 unsafe_solvers2; |
797 val unsafe_solvers' = merge eq_solver (unsafe_solvers1, unsafe_solvers2); |
799 val solvers' = merge_solvers solvers1 solvers2; |
798 val solvers' = merge eq_solver (solvers1, solvers2); |
800 in |
799 in |
801 make_simpset ((rules', prems', bounds', NONE), ((congs', weak'), procs', |
800 make_simpset ((rules', prems', bounds', NONE), ((congs', weak'), procs', |
802 mk_rews, termless, subgoal_tac, loop_tacs', (unsafe_solvers', solvers'))) |
801 mk_rews, termless, subgoal_tac, loop_tacs', (unsafe_solvers', solvers'))) |
803 end; |
802 end; |
804 |
803 |