From 1f80df98e2766a0202741d9e924bf842ba2225b5 Mon Sep 17 00:00:00 2001 From: Tim King Date: Mon, 19 Nov 2012 17:16:16 +0000 Subject: [PATCH] Changed the splitting-on-demand lemmas of arithmetic to no longer contain the equality being split on. Instead of issuing 'x != y implies (x < y or x > y)', the lemma is now '(x <= y or x >= y)'. This resolves bug 450. --- src/theory/arith/constraint.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/theory/arith/constraint.cpp b/src/theory/arith/constraint.cpp index 792d4b16c..392d04f6c 100644 --- a/src/theory/arith/constraint.cpp +++ b/src/theory/arith/constraint.cpp @@ -590,10 +590,10 @@ Node ConstraintValue::split(){ TNode lhs = eqNode[0]; TNode rhs = eqNode[1]; - Node ltNode = NodeBuilder<2>(kind::LT) << lhs << rhs; - Node gtNode = NodeBuilder<2>(kind::GT) << lhs << rhs; + Node leqNode = NodeBuilder<2>(kind::LEQ) << lhs << rhs; + Node geqNode = NodeBuilder<2>(kind::GEQ) << lhs << rhs; - Node lemma = NodeBuilder<3>(OR) << eqNode << ltNode << gtNode; + Node lemma = NodeBuilder<3>(OR) << leqNode << geqNode; eq->d_database->pushSplitWatch(eq); -- 2.30.2