SolverImpl.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef KLEE_SOLVERIMPL_H
00011 #define KLEE_SOLVERIMPL_H
00012
00013 #include <vector>
00014
00015 namespace klee {
00016 class Array;
00017 class ExecutionState;
00018 class Expr;
00019 struct Query;
00020
00022 class SolverImpl {
00023
00024 SolverImpl(const SolverImpl&);
00025 void operator=(const SolverImpl&);
00026
00027 public:
00028 SolverImpl() {}
00029 virtual ~SolverImpl();
00030
00040 virtual bool computeValidity(const Query& query, Solver::Validity &result);
00041
00046 virtual bool computeTruth(const Query& query, bool &isValid) = 0;
00047
00051 virtual bool computeValue(const Query& query, ref<Expr> &result) = 0;
00052
00053 virtual bool computeInitialValues(const Query& query,
00054 const std::vector<const Array*>
00055 &objects,
00056 std::vector< std::vector<unsigned char> >
00057 &values,
00058 bool &hasSolution) = 0;
00059 };
00060
00061 }
00062
00063 #endif