equal
deleted
inserted
replaced
18 signature INT_PROVER = |
18 signature INT_PROVER = |
19 sig |
19 sig |
20 val best_tac: Proof.context -> int -> tactic |
20 val best_tac: Proof.context -> int -> tactic |
21 val best_dup_tac: Proof.context -> int -> tactic |
21 val best_dup_tac: Proof.context -> int -> tactic |
22 val fast_tac: Proof.context -> int -> tactic |
22 val fast_tac: Proof.context -> int -> tactic |
23 val inst_step_tac: int -> tactic |
23 val inst_step_tac: Proof.context -> int -> tactic |
24 val safe_step_tac: Proof.context -> int -> tactic |
24 val safe_step_tac: Proof.context -> int -> tactic |
25 val safe_brls: (bool * thm) list |
25 val safe_brls: (bool * thm) list |
26 val safe_tac: Proof.context -> tactic |
26 val safe_tac: Proof.context -> tactic |
27 val step_tac: Proof.context -> int -> tactic |
27 val step_tac: Proof.context -> int -> tactic |
28 val step_dup_tac: Proof.context -> int -> tactic |
28 val step_dup_tac: Proof.context -> int -> tactic |
72 |
72 |
73 (*Repeatedly attack subgoals using safe inferences -- it's deterministic!*) |
73 (*Repeatedly attack subgoals using safe inferences -- it's deterministic!*) |
74 fun safe_tac ctxt = REPEAT_DETERM_FIRST (safe_step_tac ctxt); |
74 fun safe_tac ctxt = REPEAT_DETERM_FIRST (safe_step_tac ctxt); |
75 |
75 |
76 (*These steps could instantiate variables and are therefore unsafe.*) |
76 (*These steps could instantiate variables and are therefore unsafe.*) |
77 val inst_step_tac = |
77 fun inst_step_tac ctxt = |
78 assume_tac APPEND' mp_tac APPEND' |
78 assume_tac ctxt APPEND' mp_tac APPEND' |
79 biresolve_tac (safe0_brls @ safep_brls); |
79 biresolve_tac (safe0_brls @ safep_brls); |
80 |
80 |
81 (*One safe or unsafe step. *) |
81 (*One safe or unsafe step. *) |
82 fun step_tac ctxt i = FIRST [safe_tac ctxt, inst_step_tac i, biresolve_tac haz_brls i]; |
82 fun step_tac ctxt i = FIRST [safe_tac ctxt, inst_step_tac ctxt i, biresolve_tac haz_brls i]; |
83 |
83 |
84 fun step_dup_tac ctxt i = FIRST [safe_tac ctxt, inst_step_tac i, biresolve_tac haz_dup_brls i]; |
84 fun step_dup_tac ctxt i = FIRST [safe_tac ctxt, inst_step_tac ctxt i, biresolve_tac haz_dup_brls i]; |
85 |
85 |
86 (*Dumb but fast*) |
86 (*Dumb but fast*) |
87 fun fast_tac ctxt = SELECT_GOAL (DEPTH_SOLVE (step_tac ctxt 1)); |
87 fun fast_tac ctxt = SELECT_GOAL (DEPTH_SOLVE (step_tac ctxt 1)); |
88 |
88 |
89 (*Slower but smarter than fast_tac*) |
89 (*Slower but smarter than fast_tac*) |