00001 /*****************************************************************************/ 00002 /*! 00003 * \file decision_engine_caching.h 00004 * 00005 * <hr> 00006 * 00007 * License to use, copy, modify, sell and/or distribute this software 00008 * and its documentation for any purpose is hereby granted without 00009 * royalty, subject to the terms and conditions defined in the \ref 00010 * LICENSE file provided with this distribution. 00011 * 00012 * <hr> 00013 * 00014 */ 00015 /*****************************************************************************/ 00016 00017 #ifndef _cvc3__search__decision_engine_caching_h_ 00018 #define _cvc3__search__decision_engine_caching_h_ 00019 00020 #include "decision_engine.h" 00021 00022 namespace CVC3 { 00023 00024 class DecisionEngineCaching : public DecisionEngine { 00025 00026 class CacheEntry 00027 { 00028 public: 00029 Expr d_expr; 00030 int d_rank; 00031 int d_trust; 00032 00033 CacheEntry() : d_rank(0), d_trust(0) {} 00034 }; 00035 00036 int d_startLevel; 00037 int d_bottomLevel; 00038 int d_topLevel; 00039 bool d_topLevelLock; 00040 int d_height; 00041 00042 std::vector<CacheEntry> d_cache; 00043 ExprMap<int> d_index; 00044 00045 protected: 00046 virtual bool isBetter(const Expr& e1, const Expr& e2); 00047 00048 public: 00049 DecisionEngineCaching(TheoryCore* core, SearchImplBase* se); 00050 virtual ~DecisionEngineCaching() { } 00051 00052 virtual Expr findSplitter(const Expr& e); 00053 virtual void goalSatisfied(); 00054 }; 00055 00056 } 00057 00058 #endif