equal
deleted
inserted
replaced
19 type solver |
19 type solver |
20 val mk_solver: string -> (thm list -> int -> tactic) -> solver |
20 val mk_solver: string -> (thm list -> int -> tactic) -> solver |
21 type simpset |
21 type simpset |
22 val empty_ss: simpset |
22 val empty_ss: simpset |
23 val rep_ss: simpset -> |
23 val rep_ss: simpset -> |
24 {mss: meta_simpset, |
24 {mss: MetaSimplifier.meta_simpset, |
25 mk_cong: thm -> thm, |
25 mk_cong: thm -> thm, |
26 subgoal_tac: simpset -> int -> tactic, |
26 subgoal_tac: simpset -> int -> tactic, |
27 loop_tacs: (string * (int -> tactic)) list, |
27 loop_tacs: (string * (int -> tactic)) list, |
28 unsafe_solvers: solver list, |
28 unsafe_solvers: solver list, |
29 solvers: solver list}; |
29 solvers: solver list}; |
150 |
150 |
151 (* type simpset *) |
151 (* type simpset *) |
152 |
152 |
153 datatype simpset = |
153 datatype simpset = |
154 Simpset of { |
154 Simpset of { |
155 mss: meta_simpset, |
155 mss: MetaSimplifier.meta_simpset, |
156 mk_cong: thm -> thm, |
156 mk_cong: thm -> thm, |
157 subgoal_tac: simpset -> int -> tactic, |
157 subgoal_tac: simpset -> int -> tactic, |
158 loop_tacs: (string * (int -> tactic)) list, |
158 loop_tacs: (string * (int -> tactic)) list, |
159 unsafe_solvers: solver list, |
159 unsafe_solvers: solver list, |
160 solvers: solver list}; |
160 solvers: solver list}; |
409 val solvs = app_sols (if safe then solvers else unsafe_solvers); |
409 val solvs = app_sols (if safe then solvers else unsafe_solvers); |
410 fun simp_loop_tac i = |
410 fun simp_loop_tac i = |
411 asm_rewrite_goal_tac mode |
411 asm_rewrite_goal_tac mode |
412 (solve_all_tac (mk_cong, subgoal_tac, loop_tacs, unsafe_solvers)) |
412 (solve_all_tac (mk_cong, subgoal_tac, loop_tacs, unsafe_solvers)) |
413 mss i |
413 mss i |
414 THEN (solvs (prems_of_mss mss) i ORELSE |
414 THEN (solvs (MetaSimplifier.prems_of_mss mss) i ORELSE |
415 TRY ((loop_tac loop_tacs THEN_ALL_NEW simp_loop_tac) i)) |
415 TRY ((loop_tac loop_tacs THEN_ALL_NEW simp_loop_tac) i)) |
416 in simp_loop_tac end; |
416 in simp_loop_tac end; |
417 |
417 |
418 val simp_tac = generic_simp_tac false (false, false, false); |
418 val simp_tac = generic_simp_tac false (false, false, false); |
419 val asm_simp_tac = generic_simp_tac false (false, true, false); |
419 val asm_simp_tac = generic_simp_tac false (false, true, false); |