klee
|
#include <IncompleteSolver.h>
Public Types | |
enum | PartialValidity { MustBeTrue = 1 , MustBeFalse = -1 , MayBeTrue = 2 , MayBeFalse = -2 , TrueOrFalse = 0 , None = 3 } |
Public Member Functions | |
IncompleteSolver () | |
virtual | ~IncompleteSolver () |
virtual IncompleteSolver::PartialValidity | computeValidity (const Query &) |
virtual IncompleteSolver::PartialValidity | computeTruth (const Query &)=0 |
virtual bool | computeValue (const Query &, ref< Expr > &result)=0 |
computeValue - Attempt to compute a value for the given expression. More... | |
virtual bool | computeInitialValues (const Query &, const std::vector< const Array * > &objects, std::vector< std::vector< unsigned char > > &values, bool &hasSolution)=0 |
Static Public Member Functions | |
static PartialValidity | negatePartialValidity (PartialValidity pv) |
IncompleteSolver - Base class for incomplete solver implementations.
Incomplete solvers are useful for implementing optimizations which may quickly compute an answer, but cannot always compute the correct answer. They can be used with the StagedSolver to provide a complete Solver implementation.
Definition at line 25 of file IncompleteSolver.h.
PartialValidity - Represent a possibility incomplete query validity.
Definition at line 29 of file IncompleteSolver.h.
|
inline |
Definition at line 54 of file IncompleteSolver.h.
|
inlinevirtual |
Definition at line 55 of file IncompleteSolver.h.
|
pure virtual |
computeInitialValues - Attempt to compute the constant values for the initial state of each given object. If a correct result is not found, then the values array must be unmodified.
Implemented in FastCexSolver.
Referenced by klee::StagedSolverImpl::computeInitialValues().
|
pure virtual |
computeValidity - Compute a partial validity for the given query.
The passed expression is non-constant with bool type.
Implemented in FastCexSolver.
Referenced by klee::StagedSolverImpl::computeTruth(), and computeValidity().
|
virtual |
computeValidity - Compute a partial validity for the given query.
The passed expression is non-constant with bool type.
The IncompleteSolver class provides an implementation of computeValidity using computeTruth. Sub-classes may override this if a more efficient implementation is available.
Definition at line 32 of file IncompleteSolver.cpp.
References computeTruth(), MayBeFalse, MayBeTrue, MustBeFalse, MustBeTrue, klee::Query::negateExpr(), None, and TrueOrFalse.
Referenced by klee::StagedSolverImpl::computeValidity().
|
pure virtual |
computeValue - Attempt to compute a value for the given expression.
Implemented in FastCexSolver.
Referenced by klee::StagedSolverImpl::computeValue().
|
static |
Definition at line 20 of file IncompleteSolver.cpp.
References MayBeFalse, MayBeTrue, MustBeFalse, MustBeTrue, and TrueOrFalse.