/*****************************************************************************/
/*!
 * \file decision_engine_mbtf.h
 * 
 * <hr>
 *
 * 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.
 * 
 * <hr>
 * 
 */
/*****************************************************************************/

#ifndef _cvc3__search__decision_engine_mbtf_h_
#define _cvc3__search__decision_engine_mbtf_h_

#include "decision_engine.h"

namespace CVC3 {

class DecisionEngineMBTF : public DecisionEngine {

  class CacheEntry
  {
  public:
    Expr d_expr;
    int d_rank;
    int d_trust;

    CacheEntry() : d_rank(0), d_trust(0) {}
  };

  int d_startLevel;
  int d_bottomLevel;
  int d_topLevel;
  bool d_topLevelLock;
  int d_height;

  std::vector<CacheEntry> d_cache;
  ExprMap<int> d_index;

protected:
  virtual bool isBetter(const Expr& e1, const Expr& e2);

public:
  DecisionEngineMBTF(TheoryCore* core, SearchImplBase* se);
  virtual ~DecisionEngineMBTF() { }

  virtual Expr findSplitter(const Expr& e);
  virtual void goalSatisfied();
};

}

#endif


syntax highlighted by Code2HTML, v. 0.9.1