7#include <boost/container/flat_map.hpp>
8#include <boost/container/flat_set.hpp>
11#include "lib/castable.h"
12#include "lib/cstring.h"
16using Constraint = IR::Expression;
20 bool operator()(
const IR::SymbolicVariable *s1,
const IR::SymbolicVariable *s2)
const {
21 return s1->operator<(*s2);
26using SymbolicMapping = boost::container::flat_map<
const IR::SymbolicVariable *,
29using SymbolicSet = boost::container::flat_set<const IR::SymbolicVariable *, SymbolicVarComp>;
50 virtual std::optional<bool>
checkSat(
const std::vector<const Constraint *> &asserts) = 0;
Provides a higher-level interface for an SMT solver.
Definition solver.h:32
virtual void comment(cstring comment)=0
virtual bool isInIncrementalMode() const =0
virtual void seed(unsigned seed)=0
virtual std::optional< bool > checkSat(const std::vector< const Constraint * > &asserts)=0
virtual const SymbolicMapping & getSymbolicMapping() const =0
virtual void toJSON(JSONGenerator &) const =0
Saves solver state to the given JSON generator.
virtual void timeout(unsigned tm)=0
Sets timeout for solver in milliseconds.
Definition json_generator.h:34
Comparator to compare SymbolicVariable pointers.
Definition solver.h:19