equal
deleted
inserted
replaced
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 |