154 std::variant<BooleanFunction, std::pair<BooleanFunction, BooleanFunction>>
constraint;
233 std::map<std::string, std::tuple<u64, u16>>
model;
244 Model(
const std::map<std::string, std::tuple<u64, u16>>&
model = {});
friend std::ostream & operator<<(std::ostream &out, const Constraint &constraint)
std::string to_string() const
bool is_assignment() const
std::variant< BooleanFunction, std::pair< BooleanFunction, BooleanFunction > > constraint
A constraint that is either an assignment of two Boolean functions or a single Boolean function,...
Constraint(BooleanFunction &&constraint)
Result< const BooleanFunction * > get_function() const
Result< const std::pair< BooleanFunction, BooleanFunction > * > get_assignment() const
Model(const std::map< std::string, std::tuple< u64, u16 >> &model={})
friend std::ostream & operator<<(std::ostream &out, const Model &model)
static Result< Model > parse(const std::string &model_str, const SolverType &solver)
bool operator!=(const Model &other) const
std::map< std::string, std::tuple< u64, u16 > > model
maps variable identifiers to a (1) value and (2) its bit-size.
Result< BooleanFunction > evaluate(const BooleanFunction &bf) const
bool operator==(const Model &other) const
bool generate_model
Controls whether the SMT solver should generate a model in case formula is satisfiable.
QueryConfig & with_remote_solver()
SolverType solver
The SMT solver identifier.
u64 timeout_in_seconds
The timeout after which the SMT solver is killed in seconds.
QueryConfig & without_model_generation()
QueryConfig & with_model_generation()
SolverCall call
The calling format for the SMT solver.
QueryConfig & with_local_solver()
QueryConfig & with_timeout(u64 seconds)
QueryConfig & with_solver(SolverType solver)
friend std::ostream & operator<<(std::ostream &out, const QueryConfig &config)
QueryConfig & with_call(SolverCall call)
static SolverResult Unknown()
SolverResult()
Default constructor (required for Result<T> initialization)
friend std::ostream & operator<<(std::ostream &out, const SolverResult &result)
std::optional< Model > model
The (optional) model that is only available if type == SMT::ResultType::Sat and model generation is e...
static SolverResult Sat(const std::optional< Model > &model={})
bool is(const SolverResultType &type) const
static SolverResult UnSat()
SolverResultType type
Result type of the SMT query.