src/Provers/blast.ML
changeset 30609 983e8b6e4e69
parent 30558 2ef9892114fd
child 30722 623d4831c8cf
equal deleted inserted replaced
30608:d9805c5b5d2e 30609:983e8b6e4e69
    46   val notE              : thm           (* [| ~P;  P |] ==> R *)
    46   val notE              : thm           (* [| ~P;  P |] ==> R *)
    47   val ccontr            : thm
    47   val ccontr            : thm
    48   val contr_tac         : int -> tactic
    48   val contr_tac         : int -> tactic
    49   val dup_intr          : thm -> thm
    49   val dup_intr          : thm -> thm
    50   val hyp_subst_tac     : bool -> int -> tactic
    50   val hyp_subst_tac     : bool -> int -> tactic
    51   val claset            : unit -> claset
       
    52   val rep_cs    : (* dependent on classical.ML *)
    51   val rep_cs    : (* dependent on classical.ML *)
    53       claset -> {safeIs: thm list, safeEs: thm list,
    52       claset -> {safeIs: thm list, safeEs: thm list,
    54                  hazIs: thm list, hazEs: thm list,
    53                  hazIs: thm list, hazEs: thm list,
    55                  swrappers: (string * wrapper) list,
    54                  swrappers: (string * wrapper) list,
    56                  uwrappers: (string * wrapper) list,
    55                  uwrappers: (string * wrapper) list,
    75     | $  of term*term;
    74     | $  of term*term;
    76   type branch
    75   type branch
    77   val depth_tac         : claset -> int -> int -> tactic
    76   val depth_tac         : claset -> int -> int -> tactic
    78   val depth_limit       : int Config.T
    77   val depth_limit       : int Config.T
    79   val blast_tac         : claset -> int -> tactic
    78   val blast_tac         : claset -> int -> tactic
    80   val Blast_tac         : int -> tactic
       
    81   val setup             : theory -> theory
    79   val setup             : theory -> theory
    82   (*debugging tools*)
    80   (*debugging tools*)
    83   val stats             : bool ref
    81   val stats             : bool ref
    84   val trace             : bool ref
    82   val trace             : bool ref
    85   val fullTrace         : branch list list ref
    83   val fullTrace         : branch list list ref
    87   val fromTerm          : theory -> Term.term -> term
    85   val fromTerm          : theory -> Term.term -> term
    88   val fromSubgoal       : theory -> Term.term -> term
    86   val fromSubgoal       : theory -> Term.term -> term
    89   val instVars          : term -> (unit -> unit)
    87   val instVars          : term -> (unit -> unit)
    90   val toTerm            : int -> term -> Term.term
    88   val toTerm            : int -> term -> Term.term
    91   val readGoal          : theory -> string -> term
    89   val readGoal          : theory -> string -> term
    92   val tryInThy          : theory -> int -> string ->
    90   val tryInThy          : theory -> claset -> int -> string ->
    93                   (int->tactic) list * branch list list * (int*int*exn) list
    91                   (int->tactic) list * branch list list * (int*int*exn) list
    94   val normBr            : branch -> branch
    92   val normBr            : branch -> branch
    95   end;
    93   end;
    96 
    94 
    97 
    95 
  1281      THEN flexflex_tac) st
  1279      THEN flexflex_tac) st
  1282     handle TRANS s =>
  1280     handle TRANS s =>
  1283       ((if !trace then warning ("blast: " ^ s) else ());
  1281       ((if !trace then warning ("blast: " ^ s) else ());
  1284        Seq.empty);
  1282        Seq.empty);
  1285 
  1283 
  1286 fun Blast_tac i = blast_tac (Data.claset()) i;
       
  1287 
  1284 
  1288 
  1285 
  1289 (*** For debugging: these apply the prover to a subgoal and return
  1286 (*** For debugging: these apply the prover to a subgoal and return
  1290      the resulting tactics, trace, etc.                            ***)
  1287      the resulting tactics, trace, etc.                            ***)
  1291 
  1288 
  1292 val fullTrace = ref ([]: branch list list);
  1289 val fullTrace = ref ([]: branch list list);
  1293 
  1290 
  1294 (*Read a string to make an initial, singleton branch*)
  1291 (*Read a string to make an initial, singleton branch*)
  1295 fun readGoal thy s = Syntax.read_prop_global thy s |> fromTerm thy |> rand |> mkGoal;
  1292 fun readGoal thy s = Syntax.read_prop_global thy s |> fromTerm thy |> rand |> mkGoal;
  1296 
  1293 
  1297 fun tryInThy thy lim s =
  1294 fun tryInThy thy cs lim s =
  1298   let
  1295   let
  1299     val state as State {fullTrace = ft, ...} = initialize thy;
  1296     val state as State {fullTrace = ft, ...} = initialize thy;
  1300     val res = timeap prove
  1297     val res = timeap prove
  1301       (state, start_timing(), Data.claset(), [initBranch ([readGoal thy s], lim)], I);
  1298       (state, start_timing(), cs, [initBranch ([readGoal thy s], lim)], I);
  1302     val _ = fullTrace := !ft;
  1299     val _ = fullTrace := !ft;
  1303   in res end;
  1300   in res end;
  1304 
  1301 
  1305 
  1302 
  1306 (** method setup **)
  1303 (** method setup **)