src/HOL/SMT/SMT.thy
author paulson
Sat, 06 Mar 2010 17:19:29 +0000
changeset 35621 1c084dda4c3c
parent 33472 e88f67d679c4
child 34983 e5cb3a016094
permissions -rw-r--r--
simplified

(*  Title:      HOL/SMT/SMT.thy
    Author:     Sascha Boehme, TU Muenchen
*)

header {* Bindings to several SMT solvers *}

theory SMT
imports SMT_Base Z3
uses
  "Tools/cvc3_solver.ML"
  "Tools/yices_solver.ML"
begin

setup {* CVC3_Solver.setup #> Yices_Solver.setup *}



section {* Setup *}

text {*
Without further ado, the SMT solvers CVC3 and Z3 are provided
remotely via an SMT server. For faster responses, the solver
environment variables CVC3_SOLVER, YICES_SOLVER, and Z3_SOLVER
need to point to the respective SMT solver executable.
*}



section {* Available configuration options *}

text {* Choose the SMT solver to be applied (one of cvc3, yices, or z3): *}

declare [[ smt_solver = z3 ]]

text {* Restrict the runtime of an SMT solver (in seconds): *}

declare [[ smt_timeout = 20 ]]


subsection {* Z3-specific options *}

text {* Enable proof reconstruction for Z3: *}

declare [[ z3_proofs = false ]]

text {* Pass extra command-line arguments to Z3
to control its behaviour: *}

declare [[ z3_options = "" ]]


subsection {* Special configuration options *}

text {*
Trace the problem file, the result of the SMT solver and
further information: *}

declare [[ smt_trace = false ]]

text {* Unfold (some) definitions passed to the SMT solver: *}

declare [[ smt_unfold_defs = true ]]

text {*
Produce or use certificates (to avoid repeated invocation of an
SMT solver again and again). The value is an absolute path
pointing to the problem file. See also the examples. *}

declare [[ smt_keep = "", smt_cert = "" ]]

end