SolverImpl.h

Go to the documentation of this file.
00001 //===-- SolverImpl.h --------------------------------------------*- C++ -*-===//
00002 //
00003 //                     The KLEE Symbolic Virtual Machine
00004 //
00005 // This file is distributed under the University of Illinois Open Source
00006 // License. See LICENSE.TXT for details.
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     // DO NOT IMPLEMENT.
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

Generated on Fri Jun 5 03:31:31 2009 for klee by  doxygen 1.5.8