src/FOL/intprover.ML
changeset 58963 26bf09b95dda
parent 58957 c9e744ea8a38
child 59498 50b60f501b05
equal deleted inserted replaced
58960:4bee6d8c1500 58963:26bf09b95dda
    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*)