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 **) |