Implement LFSCArithProof::equalityType. (#3740)
authorAlex Ozdemir <aozdemir@hmc.edu>
Tue, 11 Feb 2020 02:32:20 +0000 (18:32 -0800)
committerGitHub <noreply@github.com>
Tue, 11 Feb 2020 02:32:20 +0000 (18:32 -0800)
Also, missed an armType use.

src/proof/arith_proof.cpp
src/proof/arith_proof.h
src/proof/theory_proof.cpp

index f1d7c0e4307d346467eadac7a59fb654f79292c4..ee7bf5f9957e70ad7b9a08268ece45bf0b0bd215 100644 (file)
@@ -1341,4 +1341,9 @@ bool LFSCArithProof::printsAsBool(const Node& n)
   return n.getType().isBoolean() and (n.isVar() or n.isConst());
 }
 
+TypeNode LFSCArithProof::equalityType(const Expr& left, const Expr& right)
+{
+  return TypeNode::fromType(!left.getType().isInteger() ? left.getType() : right.getType());
+}
+
 } /* CVC4  namespace */
index 44e99cb76b539ca2a9844adfd9ff862a401f17ae..587569b1a734b6db3208ff942dfd20a492c1ee3a 100644 (file)
@@ -208,6 +208,8 @@ public:
    * Return whether this node, when serialized to LFSC, has sort `Bool`. Otherwise, the sort is `formula`.
    */
   bool printsAsBool(const Node& n) override;
+
+  TypeNode equalityType(const Expr& left, const Expr& right) override;
 };
 
 
index b516c250f4bdcc3aae00b77210fd25e7d964fa73..88a53062a31dc6a064fc4c2570c5c3997ac8bd8d 100644 (file)
@@ -971,7 +971,7 @@ void LFSCTheoryProofEngine::printCoreTerm(Expr term,
     }
     else
     {
-      printBoundTerm(term[2], os, map);
+      printBoundTerm(term[2], os, map, armType);
     }
     os << ")";
     return;