equal
deleted
inserted
replaced
32 |
32 |
33 (*options*) |
33 (*options*) |
34 val oracle: bool Config.T |
34 val oracle: bool Config.T |
35 val filter_only: bool Config.T |
35 val filter_only: bool Config.T |
36 val datatypes: bool Config.T |
36 val datatypes: bool Config.T |
|
37 val keep_assms: bool Config.T |
37 val timeout: int Config.T |
38 val timeout: int Config.T |
38 val with_timeout: Proof.context -> ('a -> 'b) -> 'a -> 'b |
39 val with_timeout: Proof.context -> ('a -> 'b) -> 'a -> 'b |
39 val traceN: string |
40 val traceN: string |
40 val trace: bool Config.T |
41 val trace: bool Config.T |
41 val trace_msg: Proof.context -> ('a -> string) -> 'a -> unit |
42 val trace_msg: Proof.context -> ('a -> string) -> 'a -> unit |
120 |
121 |
121 val (filter_only, setup_filter_only) = |
122 val (filter_only, setup_filter_only) = |
122 Attrib.config_bool "smt_filter_only" (K false) |
123 Attrib.config_bool "smt_filter_only" (K false) |
123 |
124 |
124 val (datatypes, setup_datatypes) = Attrib.config_bool "smt_datatypes" (K false) |
125 val (datatypes, setup_datatypes) = Attrib.config_bool "smt_datatypes" (K false) |
|
126 |
|
127 val (keep_assms, setup_keep_assms) = |
|
128 Attrib.config_bool "smt_keep_assms" (K true) |
125 |
129 |
126 val (timeout, setup_timeout) = Attrib.config_int "smt_timeout" (K 30) |
130 val (timeout, setup_timeout) = Attrib.config_int "smt_timeout" (K 30) |
127 |
131 |
128 fun with_timeout ctxt f x = |
132 fun with_timeout ctxt f x = |
129 TimeLimit.timeLimit (Time.fromSeconds (Config.get ctxt timeout)) f x |
133 TimeLimit.timeLimit (Time.fromSeconds (Config.get ctxt timeout)) f x |
292 info |
296 info |
293 val {extra_norm, translate} = interface |
297 val {extra_norm, translate} = interface |
294 val (with_datatypes, translate') = |
298 val (with_datatypes, translate') = |
295 set_has_datatypes (Config.get ctxt datatypes) translate |
299 set_has_datatypes (Config.get ctxt datatypes) translate |
296 val cmd = (rm, env_var, is_remote, name) |
300 val cmd = (rm, env_var, is_remote, name) |
|
301 val keep = Config.get ctxt keep_assms |
297 in |
302 in |
298 (irules, ctxt) |
303 (irules, ctxt) |
299 |-> SMT_Normalize.normalize extra_norm with_datatypes |
304 |-> SMT_Normalize.normalize trace_msg keep extra_norm with_datatypes |
300 |-> invoke translate' name cmd more_options options |
305 |-> invoke translate' name cmd more_options options |
301 |-> reconstruct |
306 |-> reconstruct |
302 |-> (fn (idxs, thm) => fn ctxt' => thm |
307 |-> (fn (idxs, thm) => fn ctxt' => thm |
303 |> singleton (ProofContext.export ctxt' ctxt) |
308 |> singleton (ProofContext.export ctxt' ctxt) |
304 |> discharge_definitions |
309 |> discharge_definitions |
429 val ctxt = |
434 val ctxt = |
430 Proof.context_of st |
435 Proof.context_of st |
431 |> Config.put timeout (Time.toSeconds time_limit) |
436 |> Config.put timeout (Time.toSeconds time_limit) |
432 |> Config.put oracle false |
437 |> Config.put oracle false |
433 |> Config.put filter_only true |
438 |> Config.put filter_only true |
|
439 |> Config.put keep_assms false |
434 val cprop = |
440 val cprop = |
435 Thm.cprem_of goal i |
441 Thm.cprem_of goal i |
436 |> Thm.rhs_of o SMT_Normalize.atomize_conv ctxt |
442 |> Thm.rhs_of o SMT_Normalize.atomize_conv ctxt |
437 |> Thm.capply @{cterm Trueprop} o Thm.capply @{cterm Not} o Thm.dest_arg |
443 |> Thm.capply @{cterm Trueprop} o Thm.capply @{cterm Not} o Thm.dest_arg |
438 val irs = map (pair ~1) (Thm.assume cprop :: facts) |
444 val irs = map (pair ~1) (Thm.assume cprop :: facts) |
481 (Thm.declaration_attribute o K o select_solver)) |
487 (Thm.declaration_attribute o K o select_solver)) |
482 "SMT solver configuration" #> |
488 "SMT solver configuration" #> |
483 setup_oracle #> |
489 setup_oracle #> |
484 setup_filter_only #> |
490 setup_filter_only #> |
485 setup_datatypes #> |
491 setup_datatypes #> |
|
492 setup_keep_assms #> |
486 setup_timeout #> |
493 setup_timeout #> |
487 setup_trace #> |
494 setup_trace #> |
488 setup_trace_used_facts #> |
495 setup_trace_used_facts #> |
489 setup_fixed_certificates #> |
496 setup_fixed_certificates #> |
490 Attrib.setup @{binding smt_certificates} |
497 Attrib.setup @{binding smt_certificates} |