102 command = make_command "CVC4", |
102 command = make_command "CVC4", |
103 options = cvc4_options, |
103 options = cvc4_options, |
104 smt_options = [(":produce-unsat-cores", "true")], |
104 smt_options = [(":produce-unsat-cores", "true")], |
105 good_slices = |
105 good_slices = |
106 (* FUDGE *) |
106 (* FUDGE *) |
|
107 [((4, false, false, 512, meshN), ["--full-saturate-quant", "--inst-when=full-last-call", "--inst-no-entail", "--term-db-mode=relevant", "--multi-trigger-linear"]), |
|
108 ((4, false, false, 64, meshN), ["--decision=internal", "--simplification=none", "--full-saturate-quant"]), |
|
109 ((4, false, true, 256, mepoN), ["--trigger-sel=max", "--full-saturate-quant"]), |
|
110 ((4, false, false, 1024, meshN), ["--relevant-triggers", "--full-saturate-quant"]), |
|
111 ((4, false, false, 32, meshN), ["--term-db-mode=relevant", "--full-saturate-quant"]), |
|
112 ((4, false, false, 128, meshN), ["--no-e-matching", "--full-saturate-quant"]), |
|
113 ((4, false, false, 256, meshN), ["--finite-model-find", "--fmf-inst-engine"])], |
|
114 outcome = on_first_line (outcome_of "unsat" "sat" "unknown" "timeout"), |
|
115 parse_proof = SOME (K CVC_Proof_Parse.parse_proof), |
|
116 replay = NONE } |
|
117 |
|
118 val cvc5: SMT_Solver.solver_config = { |
|
119 name = "cvc5", |
|
120 class = select_class, |
|
121 avail = make_avail "CVC5", |
|
122 command = make_command "CVC5", |
|
123 options = cvc5_options, |
|
124 smt_options = [(":produce-unsat-cores", "true")], |
|
125 good_slices = |
|
126 (* FUDGE *) |
107 [((2, false, false, 512, meshN), ["--full-saturate-quant", "--inst-when=full-last-call", "--inst-no-entail", "--term-db-mode=relevant", "--multi-trigger-linear"]), |
127 [((2, false, false, 512, meshN), ["--full-saturate-quant", "--inst-when=full-last-call", "--inst-no-entail", "--term-db-mode=relevant", "--multi-trigger-linear"]), |
108 ((2, false, false, 64, meshN), ["--decision=internal", "--simplification=none", "--full-saturate-quant"]), |
128 ((2, false, false, 64, meshN), ["--decision=internal", "--simplification=none", "--full-saturate-quant"]), |
109 ((2, false, true, 256, mepoN), ["--trigger-sel=max", "--full-saturate-quant"]), |
129 ((2, false, true, 256, mepoN), ["--trigger-sel=max", "--full-saturate-quant"]), |
110 ((2, false, false, 1024, meshN), ["--relevant-triggers", "--full-saturate-quant"]), |
130 ((2, false, false, 1024, meshN), ["--relevant-triggers", "--full-saturate-quant"]), |
111 ((2, false, false, 32, meshN), ["--term-db-mode=relevant", "--full-saturate-quant"]), |
131 ((2, false, false, 32, meshN), ["--term-db-mode=relevant", "--full-saturate-quant"]), |
113 ((2, false, false, 256, meshN), ["--finite-model-find", "--fmf-inst-engine"])], |
133 ((2, false, false, 256, meshN), ["--finite-model-find", "--fmf-inst-engine"])], |
114 outcome = on_first_line (outcome_of "unsat" "sat" "unknown" "timeout"), |
134 outcome = on_first_line (outcome_of "unsat" "sat" "unknown" "timeout"), |
115 parse_proof = SOME (K CVC_Proof_Parse.parse_proof), |
135 parse_proof = SOME (K CVC_Proof_Parse.parse_proof), |
116 replay = NONE } |
136 replay = NONE } |
117 |
137 |
118 val cvc5: SMT_Solver.solver_config = { |
|
119 name = "cvc5", |
|
120 class = select_class, |
|
121 avail = make_avail "CVC5", |
|
122 command = make_command "CVC5", |
|
123 options = cvc5_options, |
|
124 smt_options = [(":produce-unsat-cores", "true")], |
|
125 good_slices = |
|
126 (* FUDGE *) |
|
127 [((2, false, false, 512, meshN), ["--full-saturate-quant", "--inst-when=full-last-call", "--inst-no-entail", "--term-db-mode=relevant", "--multi-trigger-linear"]), |
|
128 ((2, false, false, 64, meshN), ["--decision=internal", "--simplification=none", "--full-saturate-quant"]), |
|
129 ((2, false, true, 256, mepoN), ["--trigger-sel=max", "--full-saturate-quant"]), |
|
130 ((2, false, false, 1024, meshN), ["--relevant-triggers", "--full-saturate-quant"]), |
|
131 ((2, false, false, 32, meshN), ["--term-db-mode=relevant", "--full-saturate-quant"]), |
|
132 ((2, false, false, 128, meshN), ["--no-e-matching", "--full-saturate-quant"]), |
|
133 ((2, false, false, 256, meshN), ["--finite-model-find", "--fmf-inst-engine"])], |
|
134 outcome = on_first_line (outcome_of "unsat" "sat" "unknown" "timeout"), |
|
135 parse_proof = SOME (K CVC_Proof_Parse.parse_proof), |
|
136 replay = NONE } |
|
137 |
|
138 (* |
138 (* |
139 We need different options for alethe proof production by cvc5 and the smt_options |
139 We need different options for alethe proof production by cvc5 and the smt_options |
140 cannot be changed, so different configuration. |
140 cannot be changed, so different configuration. |
141 *) |
141 *) |
142 val cvc5_proof: SMT_Solver.solver_config = { |
142 val cvc5_proof: SMT_Solver.solver_config = { |
146 command = make_command "CVC5", |
146 command = make_command "CVC5", |
147 options = cvc5_options, |
147 options = cvc5_options, |
148 smt_options = [(":produce-proofs", "true")], |
148 smt_options = [(":produce-proofs", "true")], |
149 good_slices = |
149 good_slices = |
150 (* FUDGE *) |
150 (* FUDGE *) |
151 [((2, false, false, 512, meshN), ["--full-saturate-quant", "--inst-when=full-last-call", "--inst-no-entail", "--term-db-mode=relevant", "--multi-trigger-linear"]), |
151 [((4, false, false, 512, meshN), ["--full-saturate-quant", "--inst-when=full-last-call", "--inst-no-entail", "--term-db-mode=relevant", "--multi-trigger-linear"]), |
152 ((2, false, false, 64, meshN), ["--decision=internal", "--simplification=none", "--full-saturate-quant"]), |
152 ((4, false, false, 64, meshN), ["--decision=internal", "--simplification=none", "--full-saturate-quant"]), |
153 ((2, false, true, 256, mepoN), ["--trigger-sel=max", "--full-saturate-quant"]), |
153 ((4, false, true, 256, mepoN), ["--trigger-sel=max", "--full-saturate-quant"]), |
154 ((2, false, false, 1024, meshN), ["--relevant-triggers", "--full-saturate-quant"]), |
154 ((4, false, false, 1024, meshN), ["--relevant-triggers", "--full-saturate-quant"]), |
155 ((2, false, false, 32, meshN), ["--term-db-mode=relevant", "--full-saturate-quant"]), |
155 ((4, false, false, 32, meshN), ["--term-db-mode=relevant", "--full-saturate-quant"]), |
156 ((2, false, false, 128, meshN), ["--no-e-matching", "--full-saturate-quant"]), |
156 ((4, false, false, 128, meshN), ["--no-e-matching", "--full-saturate-quant"]), |
157 ((2, false, false, 256, meshN), ["--finite-model-find", "--fmf-inst-engine"])], |
157 ((4, false, false, 256, meshN), ["--finite-model-find", "--fmf-inst-engine"])], |
158 outcome = on_first_line (outcome_of "unsat" "sat" "unknown" "timeout"), |
158 outcome = on_first_line (outcome_of "unsat" "sat" "unknown" "timeout"), |
159 parse_proof = SOME (K CVC_Proof_Parse.parse_proof), |
159 parse_proof = SOME (K CVC_Proof_Parse.parse_proof), |
160 replay = SOME CVC5_Replay.replay } |
160 replay = SOME CVC5_Replay.replay } |
161 |
161 |
162 end |
162 end |
191 command = the o check_tool "ISABELLE_VERIT", |
191 command = the o check_tool "ISABELLE_VERIT", |
192 options = veriT_options, |
192 options = veriT_options, |
193 smt_options = [(":produce-proofs", "true")], |
193 smt_options = [(":produce-proofs", "true")], |
194 good_slices = |
194 good_slices = |
195 (* FUDGE *) |
195 (* FUDGE *) |
196 [((2, false, false, 1024, meshN), []), |
196 [((4, false, false, 1024, meshN), []), |
197 ((2, false, false, 512, mashN), []), |
197 ((4, false, false, 512, mashN), []), |
198 ((2, false, true, 128, meshN), []), |
198 ((4, false, true, 128, meshN), []), |
199 ((2, false, false, 64, meshN), []), |
199 ((4, false, false, 64, meshN), []), |
200 ((2, false, false, 256, mepoN), []), |
200 ((4, false, false, 256, mepoN), []), |
201 ((2, false, false, 32, meshN), [])], |
201 ((4, false, false, 32, meshN), [])], |
202 outcome = on_first_non_unsupported_line (outcome_of "unsat" "sat" "unknown" "Time limit exceeded"), |
202 outcome = on_first_non_unsupported_line (outcome_of "unsat" "sat" "unknown" "Time limit exceeded"), |
203 parse_proof = SOME (K Lethe_Proof_Parse.parse_proof), |
203 parse_proof = SOME (K Lethe_Proof_Parse.parse_proof), |
204 replay = SOME Verit_Replay.replay } |
204 replay = SOME Verit_Replay.replay } |
205 |
205 |
206 end |
206 end |
232 command = fn () => [getenv "Z3_SOLVER", "-in"], |
232 command = fn () => [getenv "Z3_SOLVER", "-in"], |
233 options = z3_options, |
233 options = z3_options, |
234 smt_options = [(":produce-proofs", "true")], |
234 smt_options = [(":produce-proofs", "true")], |
235 good_slices = |
235 good_slices = |
236 (* FUDGE *) |
236 (* FUDGE *) |
237 [((2, false, false, 1024, meshN), []), |
237 [((4, false, false, 1024, meshN), []), |
238 ((2, false, false, 512, mepoN), []), |
238 ((4, false, false, 512, mepoN), []), |
239 ((2, false, false, 64, meshN), []), |
239 ((4, false, false, 64, meshN), []), |
240 ((2, false, true, 256, meshN), []), |
240 ((4, false, true, 256, meshN), []), |
241 ((2, false, false, 128, mashN), []), |
241 ((4, false, false, 128, mashN), []), |
242 ((2, false, false, 32, meshN), [])], |
242 ((4, false, false, 32, meshN), [])], |
243 outcome = on_first_line (outcome_of "unsat" "sat" "unknown" "timeout"), |
243 outcome = on_first_line (outcome_of "unsat" "sat" "unknown" "timeout"), |
244 parse_proof = SOME Z3_Replay.parse_proof, |
244 parse_proof = SOME Z3_Replay.parse_proof, |
245 replay = SOME Z3_Replay.replay } |
245 replay = SOME Z3_Replay.replay } |
246 |
246 |
247 end |
247 end |