CVC3

decision_engine_dfs.cpp

Go to the documentation of this file.
00001 /*****************************************************************************/
00002 /*!
00003  * \file decision_engine_dfs.cpp
00004  * \brief Decision Engine
00005  * 
00006  * Author: Clark Barrett
00007  * 
00008  * Created: Sun Jul 13 22:44:55 2003
00009  *
00010  * <hr>
00011  *
00012  * License to use, copy, modify, sell and/or distribute this software
00013  * and its documentation for any purpose is hereby granted without
00014  * royalty, subject to the terms and conditions defined in the \ref
00015  * LICENSE file provided with this distribution.
00016  * 
00017  * <hr>
00018  * 
00019  */
00020 /*****************************************************************************/
00021 
00022 
00023 #include "decision_engine_dfs.h"
00024 #include "theory_core.h"
00025 #include "search.h"
00026 
00027 
00028 using namespace std;
00029 using namespace CVC3;
00030 
00031 
00032 bool DecisionEngineDFS::isBetter(const Expr& e1, const Expr& e2)
00033 {
00034   return false;
00035 }
00036 
00037 
00038 /*****************************************************************************/
00039 /*!
00040  * Function: DecisionEngineDFS::DecisionEngineDFS
00041  *
00042  * Author: Clark Barrett
00043  *
00044  * Created: Sun Jul 13 22:52:51 2003
00045  *
00046  * Constructor
00047  */
00048 /*****************************************************************************/
00049 DecisionEngineDFS::DecisionEngineDFS(TheoryCore* core, SearchImplBase* se)
00050   : DecisionEngine(core, se)
00051 {
00052 }
00053 
00054 
00055 /*****************************************************************************/
00056 /*!
00057  * Function: DecisionEngineDFS::findSplitter
00058  *
00059  * Author: Clark Barrett
00060  *
00061  * Created: Sun Jul 13 22:53:18 2003
00062  *
00063  * Main function to choose the next splitter.
00064  * \return NULL if all known splitters are assigned.
00065  */
00066 /*****************************************************************************/
00067 Expr DecisionEngineDFS::findSplitter(const Expr& e) {
00068   TRACE("splitters verbose", "findSplitter(", e, ") {");
00069   Expr splitter; // Null by default
00070   d_visited.clear();
00071 
00072   if (!e.isNull()) {
00073     splitter = findSplitterRec(e);
00074     // It's OK not to find a splitter, since e may contain only "bad"
00075     // splitters, according to d_se->isGoodSplitter(e)
00076 
00077 //     DebugAssert(!splitter.isNull(),
00078 //    "findSplitter: can't find splitter in non-literal: "
00079 //    + e.toString());
00080     IF_DEBUG(if(!splitter.isNull())
00081        debugger.counter("splitters from decision engine")++;)
00082   }
00083   TRACE("splitters verbose", "findSplitter => ", splitter, " }");
00084   return splitter;
00085 }
00086 
00087 
00088 void DecisionEngineDFS::goalSatisfied()
00089 {
00090 }