src/HOL/Tools/SMT/smt_systems.ML
changeset 66551 4df6b0ae900d
parent 64461 be149db8207a
child 67399 eab6ce8368fa
equal deleted inserted replaced
66550:e5d82cf3c387 66551:4df6b0ae900d
    60   parse_proof = NONE,
    60   parse_proof = NONE,
    61   replay = NONE }
    61   replay = NONE }
    62 
    62 
    63 end
    63 end
    64 
    64 
       
    65 
    65 (* CVC4 *)
    66 (* CVC4 *)
    66 
    67 
    67 val cvc4_extensions = Attrib.setup_config_bool @{binding cvc4_extensions} (K false)
    68 val cvc4_extensions = Attrib.setup_config_bool @{binding cvc4_extensions} (K false)
    68 
    69 
    69 local
    70 local
    73     "--lang=smt2",
    74     "--lang=smt2",
    74     "--continued-execution",
    75     "--continued-execution",
    75     "--tlimit", string_of_int (Real.ceil (1000.0 * Config.get ctxt SMT_Config.timeout))]
    76     "--tlimit", string_of_int (Real.ceil (1000.0 * Config.get ctxt SMT_Config.timeout))]
    76 
    77 
    77   fun select_class ctxt =
    78   fun select_class ctxt =
    78     if Config.get ctxt cvc4_extensions then CVC4_Interface.smtlib_cvc4C
    79     if Config.get ctxt cvc4_extensions then
    79     else SMTLIB_Interface.smtlibC
    80       if Config.get ctxt SMT_Config.higher_order then
       
    81         CVC4_Interface.hosmtlib_cvc4C
       
    82       else
       
    83         CVC4_Interface.smtlib_cvc4C
       
    84     else
       
    85       if Config.get ctxt SMT_Config.higher_order then
       
    86         SMTLIB_Interface.hosmtlibC
       
    87       else
       
    88         SMTLIB_Interface.smtlibC
    80 in
    89 in
    81 
    90 
    82 val cvc4: SMT_Solver.solver_config = {
    91 val cvc4: SMT_Solver.solver_config = {
    83   name = "cvc4",
    92   name = "cvc4",
    84   class = select_class,
    93   class = select_class,
    91   parse_proof = SOME (K CVC4_Proof_Parse.parse_proof),
   100   parse_proof = SOME (K CVC4_Proof_Parse.parse_proof),
    92   replay = NONE }
   101   replay = NONE }
    93 
   102 
    94 end
   103 end
    95 
   104 
       
   105 
    96 (* veriT *)
   106 (* veriT *)
       
   107 
       
   108 local
       
   109   fun select_class ctxt =
       
   110     if Config.get ctxt SMT_Config.higher_order then
       
   111       SMTLIB_Interface.hosmtlibC
       
   112     else
       
   113       SMTLIB_Interface.smtlibC
       
   114 in
    97 
   115 
    98 val veriT: SMT_Solver.solver_config = {
   116 val veriT: SMT_Solver.solver_config = {
    99   name = "verit",
   117   name = "verit",
   100   class = K SMTLIB_Interface.smtlibC,
   118   class = select_class,
   101   avail = make_avail "VERIT",
   119   avail = make_avail "VERIT",
   102   command = make_command "VERIT",
   120   command = make_command "VERIT",
   103   options = (fn ctxt => [
   121   options = (fn ctxt => [
   104     "--proof-version=1",
   122     "--proof-version=1",
   105     "--proof-prune",
   123     "--proof-prune",
   110   smt_options = [(":produce-proofs", "true")],
   128   smt_options = [(":produce-proofs", "true")],
   111   default_max_relevant = 200 (* FUDGE *),
   129   default_max_relevant = 200 (* FUDGE *),
   112   outcome = on_first_non_unsupported_line (outcome_of "unsat" "sat" "unknown"),
   130   outcome = on_first_non_unsupported_line (outcome_of "unsat" "sat" "unknown"),
   113   parse_proof = SOME (K VeriT_Proof_Parse.parse_proof),
   131   parse_proof = SOME (K VeriT_Proof_Parse.parse_proof),
   114   replay = NONE }
   132   replay = NONE }
       
   133 
       
   134 end
       
   135 
   115 
   136 
   116 (* Z3 *)
   137 (* Z3 *)
   117 
   138 
   118 val z3_extensions = Attrib.setup_config_bool @{binding z3_extensions} (K false)
   139 val z3_extensions = Attrib.setup_config_bool @{binding z3_extensions} (K false)
   119 
   140