summaryrefslogtreecommitdiff
path: root/src/theory/quantifiers/quantifiers_state.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/theory/quantifiers/quantifiers_state.h')
-rw-r--r--src/theory/quantifiers/quantifiers_state.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/theory/quantifiers/quantifiers_state.h b/src/theory/quantifiers/quantifiers_state.h
index 76baab7ca..d45938f98 100644
--- a/src/theory/quantifiers/quantifiers_state.h
+++ b/src/theory/quantifiers/quantifiers_state.h
@@ -17,6 +17,7 @@
#ifndef CVC4__THEORY__QUANTIFIERS__QUANTIFIERS_STATE_H
#define CVC4__THEORY__QUANTIFIERS__QUANTIFIERS_STATE_H
+#include "theory/theory.h"
#include "theory/theory_state.h"
namespace CVC4 {
@@ -31,6 +32,44 @@ class QuantifiersState : public TheoryState
public:
QuantifiersState(context::Context* c, context::UserContext* u, Valuation val);
~QuantifiersState() {}
+ /**
+ * Increment the instantiation counters, called once at the beginning of when
+ * we perform a check with quantifiers engine for the given effort.
+ */
+ void incrementInstRoundCounters(Theory::Effort e);
+ /**
+ * Get whether we need to check at effort e based on the inst-when mode. This
+ * option determines the policy of quantifier instantiation and theory
+ * combination, e.g. does it run before, after, or interleaved with theory
+ * combination. This is based on the state of the counters maintained by this
+ * class.
+ */
+ bool getInstWhenNeedsCheck(Theory::Effort e) const;
+ /** Get the number of instantiation rounds performed in this SAT context */
+ uint64_t getInstRoundDepth() const;
+ /** Get the total number of instantiation rounds performed */
+ uint64_t getInstRounds() const;
+ /** debug print equality engine on trace c */
+ void debugPrintEqualityEngine(const char* c) const;
+
+ private:
+ /** The number of instantiation rounds in this SAT context */
+ context::CDO<uint64_t> d_ierCounterc;
+ /** The number of total instantiation rounds (full effort) */
+ uint64_t d_ierCounter;
+ /** The number of total instantiation rounds (last call effort) */
+ uint64_t d_ierCounterLc;
+ /**
+ * A counter to remember the last value of d_ierCounterLc where we a
+ * full effort check. This is used for interleaving theory combination
+ * and quantifier instantiation rounds.
+ */
+ uint64_t d_ierCounterLastLc;
+ /**
+ * The number of instantiation rounds we run for each call to theory
+ * combination.
+ */
+ uint64_t d_instWhenPhase;
};
} // namespace quantifiers
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback