summaryrefslogtreecommitdiff
path: root/src/theory/arith/constraint.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/theory/arith/constraint.h')
-rw-r--r--src/theory/arith/constraint.h32
1 files changed, 28 insertions, 4 deletions
diff --git a/src/theory/arith/constraint.h b/src/theory/arith/constraint.h
index fe10ecc4a..5b49dd54d 100644
--- a/src/theory/arith/constraint.h
+++ b/src/theory/arith/constraint.h
@@ -828,14 +828,38 @@ public:
*/
Constraint getConstraint(ArithVar v, ConstraintType t, const DeltaRational& r);
+ /**
+ * Outputs a minimal set of unate implications onto the vector for the variable.
+ * This outputs lemmas of the general forms
+ * (= p c) implies (<= p d) for c < d, or
+ * (= p c) implies (not (= p d)) for c != d.
+ */
+ void outputUnateEqualityLemmas(std::vector<Node>& lemmas) const;
+ void outputUnateEqualityLemmas(std::vector<Node>& lemmas, ArithVar v) const;
/**
- * Outputs a minimal set of unate implications on the output channel
- * for all variables.
+ * Outputs a minimal set of unate implications onto the vector for the variable.
+ *
+ * If ineqs is true, this outputs lemmas of the general form
+ * (<= p c) implies (<= p d) for c < d.
*/
- void outputAllUnateLemmas(std::vector<Node>& lemmas) const;
+ void outputUnateInequalityLemmas(std::vector<Node>& lemmas) const;
+ void outputUnateInequalityLemmas(std::vector<Node>& lemmas, ArithVar v) const;
+
+
+ void unatePropLowerBound(Constraint curr, Constraint prev);
+ void unatePropUpperBound(Constraint curr, Constraint prev);
+ void unatePropEquality(Constraint curr, Constraint prevLB, Constraint prevUB);
+
+private:
+ class Statistics {
+ public:
+ IntStat d_unatePropagateCalls;
+ IntStat d_unatePropagateImplications;
- void outputAllUnateLemmas(std::vector<Node>& lemmas, ArithVar v) const;
+ Statistics();
+ ~Statistics();
+ } d_statistics;
}; /* ConstraintDatabase */
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback