#ifndef __DecisionProcedure__
#define __DecisionProcedure__
#include "Forwards.hpp"
namespace DP {
using namespace Lib;
using namespace Kernel;
class DecisionProcedure {
public:
enum Status {
SATISFIABLE,
UNSATISFIABLE,
UNKNOWN,
};
virtual ~DecisionProcedure() {}
virtual void addLiterals(LiteralIterator lits, bool onlyEqualites = false) = 0;
virtual Status getStatus(bool getMultipleCores=false) = 0;
virtual void getModel(LiteralStack& model) = 0;
virtual unsigned getUnsatCoreCount() = 0;
virtual void getUnsatCore(LiteralStack& res, unsigned coreIndex=0) = 0;
virtual void reset() = 0;
};
}
#endif