Node TheoryBags::getModelValue(TNode node) { return Node::null(); }
-void TheoryBags::preRegisterTerm(TNode node) {}
+void TheoryBags::preRegisterTerm(TNode n)
+{
+ Trace("bags::TheoryBags::preRegisterTerm") << n << std::endl;
+ switch (n.getKind())
+ {
+ case BAG_CARD:
+ case BAG_FROM_SET:
+ case BAG_TO_SET:
+ case BAG_IS_SINGLETON:
+ case DUPLICATE_REMOVAL:
+ {
+ std::stringstream ss;
+ ss << "Term of kind " << n.getKind() << " is not supported yet";
+ throw LogicException(ss.str());
+ }
+ default: break;
+ }
+}
TrustNode TheoryBags::expandDefinition(Node n)
{
#include "theory/bags/bag_solver.h"
#include "theory/bags/bags_rewriter.h"
#include "theory/bags/bags_statistics.h"
-#include "theory/bags/inference_manager.h"
#include "theory/bags/inference_generator.h"
+#include "theory/bags/inference_manager.h"
#include "theory/bags/solver_state.h"
#include "theory/theory.h"
#include "theory/theory_eq_notify.h"
TrustNode explain(TNode) override;
Node getModelValue(TNode) override;
std::string identify() const override { return "THEORY_BAGS"; }
- void preRegisterTerm(TNode node) override;
+ void preRegisterTerm(TNode n) override;
TrustNode expandDefinition(Node n) override;
void presolve() override;