Preparation for central equality engine.
theory/quantifiers/instantiation_list.h
theory/quantifiers/lazy_trie.cpp
theory/quantifiers/lazy_trie.h
+ theory/quantifiers/master_eq_notify.cpp
+ theory/quantifiers/master_eq_notify.h
theory/quantifiers/proof_checker.cpp
theory/quantifiers/proof_checker.h
theory/quantifiers/quant_bound_inference.cpp
Assert(d_masterEqualityEngine == nullptr);
QuantifiersEngine* qe = d_te.getQuantifiersEngine();
Assert(qe != nullptr);
- d_masterEENotify.reset(new MasterNotifyClass(qe));
+ d_masterEENotify.reset(new quantifiers::MasterNotifyClass(qe));
d_masterEqualityEngine.reset(new eq::EqualityEngine(*d_masterEENotify.get(),
d_te.getSatContext(),
"theory::master",
}
}
-void EqEngineManagerDistributed::MasterNotifyClass::eqNotifyNewClass(TNode t)
-{
- // adds t to the quantifiers term database
- d_quantEngine->eqNotifyNewClass(t);
-}
-
} // namespace theory
} // namespace cvc5
#include <memory>
#include "theory/ee_manager.h"
+#include "theory/quantifiers/master_eq_notify.h"
namespace cvc5 {
namespace theory {
void notifyModel(bool incomplete) override;
private:
- /** notify class for master equality engine */
- class MasterNotifyClass : public theory::eq::EqualityEngineNotify
- {
- public:
- MasterNotifyClass(QuantifiersEngine* qe) : d_quantEngine(qe) {}
- /**
- * Called when a new equivalence class is created in the master equality
- * engine.
- */
- void eqNotifyNewClass(TNode t) override;
-
- bool eqNotifyTriggerPredicate(TNode predicate, bool value) override
- {
- return true;
- }
- bool eqNotifyTriggerTermEquality(TheoryId tag,
- TNode t1,
- TNode t2,
- bool value) override
- {
- return true;
- }
- void eqNotifyConstantTermMerge(TNode t1, TNode t2) override {}
- void eqNotifyMerge(TNode t1, TNode t2) override {}
- void eqNotifyDisequal(TNode t1, TNode t2, TNode reason) override {}
-
- private:
- /** Pointer to quantifiers engine */
- QuantifiersEngine* d_quantEngine;
- };
/** The master equality engine notify class */
- std::unique_ptr<MasterNotifyClass> d_masterEENotify;
+ std::unique_ptr<quantifiers::MasterNotifyClass> d_masterEENotify;
/** The master equality engine. */
std::unique_ptr<eq::EqualityEngine> d_masterEqualityEngine;
/** The equality engine of the shared solver / shared terms database. */
--- /dev/null
+/******************************************************************************
+ * Top contributors (to current version):
+ * Andrew Reynolds
+ *
+ * This file is part of the cvc5 project.
+ *
+ * Copyright (c) 2009-2021 by the authors listed in the file AUTHORS
+ * in the top-level source directory and their institutional affiliations.
+ * All rights reserved. See the file COPYING in the top-level source
+ * directory for licensing information.
+ * ****************************************************************************
+ *
+ * Notification class for the master equality engine
+ */
+
+#include "theory/quantifiers/master_eq_notify.h"
+
+#include "theory/quantifiers_engine.h"
+
+namespace cvc5 {
+namespace theory {
+namespace quantifiers {
+
+MasterNotifyClass::MasterNotifyClass(QuantifiersEngine* qe) : d_quantEngine(qe) {}
+
+void MasterNotifyClass::eqNotifyNewClass(TNode t)
+{
+ d_quantEngine->eqNotifyNewClass(t);
+}
+
+
+} // namespace quantifiers
+} // namespace theory
+} // namespace cvc5
--- /dev/null
+/******************************************************************************
+ * Top contributors (to current version):
+ * Andrew Reynolds
+ *
+ * This file is part of the cvc5 project.
+ *
+ * Copyright (c) 2009-2021 by the authors listed in the file AUTHORS
+ * in the top-level source directory and their institutional affiliations.
+ * All rights reserved. See the file COPYING in the top-level source
+ * directory for licensing information.
+ * ****************************************************************************
+ *
+ * Notification class for the master equality engine
+ */
+
+#include "cvc5_private.h"
+
+#ifndef CVC5__THEORY__QUANTIFIERS__MASTER_EQ_NOTIFY__H
+#define CVC5__THEORY__QUANTIFIERS__MASTER_EQ_NOTIFY__H
+
+#include <memory>
+
+#include "theory/uf/equality_engine_notify.h"
+
+namespace cvc5 {
+namespace theory {
+
+class QuantifiersEngine;
+
+namespace quantifiers {
+
+/** notify class for master equality engine */
+class MasterNotifyClass : public theory::eq::EqualityEngineNotify
+{
+ public:
+ MasterNotifyClass(QuantifiersEngine* qe);
+ /**
+ * Called when a new equivalence class is created in the master equality
+ * engine.
+ */
+ void eqNotifyNewClass(TNode t) override;
+
+ bool eqNotifyTriggerPredicate(TNode predicate, bool value) override
+ {
+ return true;
+ }
+ bool eqNotifyTriggerTermEquality(TheoryId tag,
+ TNode t1,
+ TNode t2,
+ bool value) override
+ {
+ return true;
+ }
+ void eqNotifyConstantTermMerge(TNode t1, TNode t2) override {}
+ void eqNotifyMerge(TNode t1, TNode t2) override {}
+ void eqNotifyDisequal(TNode t1, TNode t2, TNode reason) override {}
+
+ private:
+ /** Pointer to quantifiers engine */
+ QuantifiersEngine* d_quantEngine;
+};
+
+
+} // namespace quantifiers
+} // namespace theory
+} // namespace cvc5
+
+#endif /* CVC5__THEORY__QUANTIFIERS__MASTER_EQ_NOTIFY__H */