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 * Copyright (C) 2003 by the Board of Trustees of Leland Stanford 00012 * Junior University and by New York University. 00013 * 00014 * License to use, copy, modify, sell and/or distribute this software 00015 * and its documentation for any purpose is hereby granted without 00016 * royalty, subject to the terms and conditions defined in the \ref 00017 * LICENSE file provided with this distribution. In particular: 00018 * 00019 * - The above copyright notice and this permission notice must appear 00020 * in all copies of the software and related documentation. 00021 * 00022 * - THE SOFTWARE IS PROVIDED "AS-IS", WITHOUT ANY WARRANTIES, 00023 * EXPRESSED OR IMPLIED. USE IT AT YOUR OWN RISK. 00024 * 00025 * <hr> 00026 * 00027 */ 00028 /*****************************************************************************/ 00029 00030 00031 #include "decision_engine_dfs.h" 00032 #include "theory_core.h" 00033 #include "search.h" 00034 00035 00036 using namespace std; 00037 using namespace CVCL; 00038 00039 00040 bool DecisionEngineDFS::isBetter(const Expr& e1, const Expr& e2) 00041 { 00042 return false; 00043 } 00044 00045 00046 /*****************************************************************************/ 00047 /*! 00048 * Function: DecisionEngineDFS::DecisionEngineDFS 00049 * 00050 * Author: Clark Barrett 00051 * 00052 * Created: Sun Jul 13 22:52:51 2003 00053 * 00054 * Constructor 00055 */ 00056 /*****************************************************************************/ 00057 DecisionEngineDFS::DecisionEngineDFS(TheoryCore* core, SearchImplBase* se) 00058 : DecisionEngine(core, se) 00059 { 00060 } 00061 00062 00063 /*****************************************************************************/ 00064 /*! 00065 * Function: DecisionEngineDFS::findSplitter 00066 * 00067 * Author: Clark Barrett 00068 * 00069 * Created: Sun Jul 13 22:53:18 2003 00070 * 00071 * Main function to choose the next splitter. 00072 * \return NULL if all known splitters are assigned. 00073 */ 00074 /*****************************************************************************/ 00075 Expr DecisionEngineDFS::findSplitter(const Expr& e) { 00076 TRACE("splitters verbose", "findSplitter(", e, ") {"); 00077 Expr splitter; // Null by default 00078 d_visited.clear(); 00079 00080 if (!e.isNull()) { 00081 splitter = findSplitterRec(e); 00082 // It's OK not to find a splitter, since e may contain only "bad" 00083 // splitters, according to d_se->isGoodSplitter(e) 00084 00085 // DebugAssert(!splitter.isNull(), 00086 // "findSplitter: can't find splitter in non-literal: " 00087 // + e.toString()); 00088 IF_DEBUG(if(!splitter.isNull()) 00089 debugger.counter("splitters from decision engine")++); 00090 } 00091 TRACE("splitters verbose", "findSplitter => ", splitter, " }"); 00092 return splitter; 00093 } 00094 00095 00096 void DecisionEngineDFS::goalSatisfied() 00097 { 00098 }