Go to the documentation of this file.
12 #ifndef CPROVER_GOTO_CHECKER_SOLVER_FACTORY_H
13 #define CPROVER_GOTO_CHECKER_SOLVER_FACTORY_H
35 bool _output_xml_in_refinement);
43 explicit solvert(std::unique_ptr<decision_proceduret> p);
44 solvert(std::unique_ptr<decision_proceduret> p1, std::unique_ptr<propt> p2);
46 std::unique_ptr<decision_proceduret> p1,
47 std::unique_ptr<std::ofstream> p2);
54 void set_prop(std::unique_ptr<propt> p);
104 "(cvc4)(boolector)(yices)(z3)" \
107 "(incremental-smt2-solver):" \
108 "(external-sat-solver):" \
109 "(no-sat-preprocessor)" \
113 "(max-node-refinement):" \
115 "(refine-arithmetic)" \
117 "(write-solver-stats-to):"
119 #define HELP_SOLVER \
120 " --external-sat-solver cmd command to invoke SAT solver process\n" \
121 " --no-sat-preprocessor disable the SAT solver's simplifier\n" \
122 " --dimacs generate CNF in DIMACS format\n" \
123 " --beautify beautify the counterexample\n" \
124 " (greedy heuristic)\n" \
125 " --smt1 use default SMT1 solver (obsolete)\n" \
126 " --smt2 use default SMT2 solver (Z3)\n" \
127 " --boolector use Boolector\n" \
128 " --cprover-smt2 use CPROVER SMT2 solver\n" \
129 " --cvc3 use CVC3\n" \
130 " --cvc4 use CVC4\n" \
131 " --mathsat use MathSAT\n" \
132 " --yices use Yices\n" \
134 " --fpa use theory of floating-point arithmetic\n" \
135 " --refine use refinement procedure (experimental)\n" \
136 " --refine-arrays use refinement for arrays only\n" \
137 " --refine-arithmetic refinement of arithmetic expressions only\n" \
138 " --max-node-refinement maximum refinement iterations for\n" \
139 " arithmetic expressions\n" \
140 " --incremental-smt2-solver cmd\n" \
141 " command to invoke external SMT solver for\n" \
142 " incremental solving (experimental)\n" \
143 " --outfile filename output formula to given file\n" \
144 " --write-solver-stats-to json-file\n" \
145 " collect the solver query complexity\n"
147 #endif // CPROVER_GOTO_CHECKER_SOLVER_FACTORY_H
void set_decision_procedure(std::unique_ptr< decision_proceduret > p)
std::unique_ptr< solvert > get_dimacs()
void set_decision_procedure_time_limit(decision_proceduret &decision_procedure)
Sets the timeout of decision_procedure if the solver-time-limit option has a positive value (in secon...
void no_incremental_check()
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
std::unique_ptr< solvert > get_incremental_smt2(std::string solver_command)
std::unique_ptr< solvert > get_string_refinement()
the string refinement adds to the bit vector refinement specifications for functions from the Java st...
void parse_solver_options(const cmdlinet &cmdline, optionst &options)
Parse solver-related command-line parameters in cmdline and set corresponding values in options.
std::unique_ptr< solvert > get_bv_refinement()
virtual ~solver_factoryt()=default
void set_ofstream(std::unique_ptr< std::ofstream > p)
message_handlert & message_handler
solver_factoryt(const optionst &_options, const namespacet &_ns, message_handlert &_message_handler, bool _output_xml_in_refinement)
Note: The solver returned will hold a reference to the namespace ns.
std::unique_ptr< solvert > get_default()
virtual std::unique_ptr< solvert > get_solver()
Returns a solvert object.
stack_decision_proceduret & stack_decision_procedure() const
std::unique_ptr< solvert > get_external_sat()
std::unique_ptr< decision_proceduret > decision_procedure_ptr
void set_prop(std::unique_ptr< propt > p)
int solver(std::istream &in)
std::unique_ptr< std::ofstream > ofstream_ptr
const bool output_xml_in_refinement
std::unique_ptr< propt > prop_ptr
decision_proceduret & decision_procedure() const
smt2_dect::solvert get_smt2_solver_type() const
Uses the options to pick an SMT 2.0 solver.
std::unique_ptr< solvert > get_smt2(smt2_dect::solvert solver)