Minor update to term util (#3208)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Fri, 23 Aug 2019 15:15:43 +0000 (10:15 -0500)
committerGitHub <noreply@github.com>
Fri, 23 Aug 2019 15:15:43 +0000 (10:15 -0500)
src/theory/quantifiers/term_util.cpp

index 1243d8d4ad0f6e0b80d9b49ee4ed53ebff4f8f3c..94bc2c3f81618d65e8a4a8c2069a937ec8853217 100644 (file)
@@ -612,14 +612,21 @@ bool TermUtil::containsUninterpretedConstant( Node n ) {
   return n.getAttribute(ContainsUConstAttribute())!=0;
 }
 
-Node TermUtil::simpleNegate( Node n ){
+Node TermUtil::simpleNegate(Node n)
+{
+  Assert(n.getType().isBoolean());
+  NodeManager* nm = NodeManager::currentNM();
   if( n.getKind()==OR || n.getKind()==AND ){
     std::vector< Node > children;
     for (const Node& cn : n)
     {
       children.push_back(simpleNegate(cn));
     }
-    return NodeManager::currentNM()->mkNode( n.getKind()==OR ? AND : OR, children );
+    return nm->mkNode(n.getKind() == OR ? AND : OR, children);
+  }
+  else if (n.isConst())
+  {
+    return nm->mkConst(!n.getConst<bool>());
   }
   return n.negate();
 }