Skip to content

Commit 014eea4

Browse files
author
Daniel Kroening
committed
add support for CPROVER SMT2 solver
1 parent 163bc94 commit 014eea4

File tree

6 files changed

+25
-2
lines changed

6 files changed

+25
-2
lines changed

src/cbmc/cbmc_parse_options.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,12 @@ void cbmc_parse_optionst::get_command_line_options(optionst &options)
327327
options.set_option("smt2", true);
328328
}
329329

330+
if(cmdline.isset("cprover-smt2"))
331+
{
332+
options.set_option("cprover-smt2", true), solver_set = true;
333+
options.set_option("smt2", true);
334+
}
335+
330336
if(cmdline.isset("mathsat"))
331337
{
332338
options.set_option("mathsat", true), solver_set=true;
@@ -955,8 +961,9 @@ void cbmc_parse_optionst::help()
955961
" --localize-faults localize faults (experimental)\n"
956962
" --smt2 use default SMT2 solver (Z3)\n"
957963
" --boolector use Boolector\n"
958-
" --mathsat use MathSAT\n"
964+
" --cprover-smt2 use CPROVER SMT2 solver\n"
959965
" --cvc4 use CVC4\n"
966+
" --mathsat use MathSAT\n"
960967
" --yices use Yices\n"
961968
" --z3 use Z3\n"
962969
" --refine use refinement procedure (experimental)\n"

src/cbmc/cbmc_parse_options.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ class optionst;
4646
OPT_GOTO_CHECK \
4747
"(no-assertions)(no-assumptions)" \
4848
"(xml-ui)(xml-interface)(json-ui)" \
49-
"(smt1)(smt2)(fpa)(cvc3)(cvc4)(boolector)(yices)(z3)(opensmt)(mathsat)" \
49+
"(smt1)(smt2)(fpa)" \
50+
"(cprover-smt2)(cvc3)(cvc4)(boolector)(yices)(z3)(opensmt)(mathsat)" \
5051
"(no-sat-preprocessor)" \
5152
"(beautify)" \
5253
"(dimacs)(refine)(max-node-refinement):(refine-arrays)(refine-arithmetic)"\

src/cbmc/cbmc_solvers.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ smt2_dect::solvert cbmc_solverst::get_smt2_solver_type() const
4141

4242
if(options.get_bool_option("boolector"))
4343
s=smt2_dect::solvert::BOOLECTOR;
44+
else if(options.get_bool_option("cprover-smt2"))
45+
s = smt2_dect::solvert::CPROVER_SMT2;
4446
else if(options.get_bool_option("mathsat"))
4547
s=smt2_dect::solvert::MATHSAT;
4648
else if(options.get_bool_option("cvc3"))

src/solvers/smt2/smt2_conv.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ void smt2_convt::write_header()
7272
{
7373
case solvert::GENERIC: break;
7474
case solvert::BOOLECTOR: out << "; Generated for Boolector\n"; break;
75+
case solvert::CPROVER_SMT2: out << "; Generated for the CPROVER SMT2 solver\n"; break;
7576
case solvert::CVC3: out << "; Generated for CVC 3\n"; break;
7677
case solvert::CVC4: out << "; Generated for CVC 4\n"; break;
7778
case solvert::MATHSAT: out << "; Generated for MathSAT\n"; break;

src/solvers/smt2/smt2_conv.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class smt2_convt:public prop_convt
3636
{
3737
GENERIC,
3838
BOOLECTOR,
39+
CPROVER_SMT2,
3940
CVC3,
4041
CVC4,
4142
MATHSAT,
@@ -76,6 +77,11 @@ class smt2_convt:public prop_convt
7677
case solvert::BOOLECTOR:
7778
break;
7879

80+
case solvert::CPROVER_SMT2:
81+
use_array_of_bool = true;
82+
emit_set_logic = false;
83+
break;
84+
7985
case solvert::CVC3:
8086
break;
8187

src/solvers/smt2/smt2_dec.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ std::string smt2_dect::decision_procedure_text() const
2525
" using "+
2626
(solver==solvert::GENERIC?"Generic":
2727
solver==solvert::BOOLECTOR?"Boolector":
28+
solver==solvert::CPROVER_SMT2?"CPROVER SMT2":
2829
solver==solvert::CVC3?"CVC3":
2930
solver==solvert::CVC4?"CVC4":
3031
solver==solvert::MATHSAT?"MathSAT":
@@ -56,6 +57,11 @@ decision_proceduret::resultt smt2_dect::dec_solve()
5657
argv = {"boolector", "--smt2", temp_file_problem(), "-m"};
5758
break;
5859

60+
case solvert::CPROVER_SMT2:
61+
argv = {"smt2_solver"};
62+
stdin_filename = temp_file_problem();
63+
break;
64+
5965
case solvert::CVC3:
6066
argv = {"cvc3",
6167
"+model",

0 commit comments

Comments
 (0)