/*****************************************************************************/
/*!
* \file decision_engine_dfs.cpp
* \brief Decision Engine
*
* Author: Clark Barrett
*
* Created: Sun Jul 13 22:44:55 2003
*
*
*
* License to use, copy, modify, sell and/or distribute this software
* and its documentation for any purpose is hereby granted without
* royalty, subject to the terms and conditions defined in the \ref
* LICENSE file provided with this distribution.
*
*
*
*/
/*****************************************************************************/
#include "decision_engine_dfs.h"
#include "theory_core.h"
#include "search.h"
using namespace std;
using namespace CVC3;
bool DecisionEngineDFS::isBetter(const Expr& e1, const Expr& e2)
{
return false;
}
/*****************************************************************************/
/*!
* Function: DecisionEngineDFS::DecisionEngineDFS
*
* Author: Clark Barrett
*
* Created: Sun Jul 13 22:52:51 2003
*
* Constructor
*/
/*****************************************************************************/
DecisionEngineDFS::DecisionEngineDFS(TheoryCore* core, SearchImplBase* se)
: DecisionEngine(core, se)
{
}
/*****************************************************************************/
/*!
* Function: DecisionEngineDFS::findSplitter
*
* Author: Clark Barrett
*
* Created: Sun Jul 13 22:53:18 2003
*
* Main function to choose the next splitter.
* \return NULL if all known splitters are assigned.
*/
/*****************************************************************************/
Expr DecisionEngineDFS::findSplitter(const Expr& e) {
TRACE("splitters verbose", "findSplitter(", e, ") {");
Expr splitter; // Null by default
d_visited.clear();
if (!e.isNull()) {
splitter = findSplitterRec(e);
// It's OK not to find a splitter, since e may contain only "bad"
// splitters, according to d_se->isGoodSplitter(e)
// DebugAssert(!splitter.isNull(),
// "findSplitter: can't find splitter in non-literal: "
// + e.toString());
IF_DEBUG(if(!splitter.isNull())
debugger.counter("splitters from decision engine")++);
}
TRACE("splitters verbose", "findSplitter => ", splitter, " }");
return splitter;
}
void DecisionEngineDFS::goalSatisfied()
{
}