summaryrefslogtreecommitdiff
path: root/src/proof/bitvector_proof.cpp
diff options
context:
space:
mode:
authorGuy <katz911@gmail.com>2016-06-03 14:27:00 -0700
committerGuy <katz911@gmail.com>2016-06-03 14:27:00 -0700
commit8bfab32eed06973d53ce8ae066a9a26d4ae8a489 (patch)
tree4fb698b165bfe4aa80560d91f7334f27965dc641 /src/proof/bitvector_proof.cpp
parent90b909a89c78c75afae69e119feea20b478c0795 (diff)
Better infrastructure for proving constant disequality.
Added support for the BV case
Diffstat (limited to 'src/proof/bitvector_proof.cpp')
-rw-r--r--src/proof/bitvector_proof.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/proof/bitvector_proof.cpp b/src/proof/bitvector_proof.cpp
index 3fe426f15..b2d6fdecf 100644
--- a/src/proof/bitvector_proof.cpp
+++ b/src/proof/bitvector_proof.cpp
@@ -1000,4 +1000,34 @@ bool LFSCBitVectorProof::hasAlias(Expr expr) {
return d_assignedAliases.find(expr) != d_assignedAliases.end();
}
+void LFSCBitVectorProof::printConstantDisequalityProof(std::ostream& os, Expr c1, Expr c2) {
+ Assert (c1.isConst());
+ Assert (c2.isConst());
+ Assert (utils::getSize(c1) == utils::getSize(c2));
+
+ os << "(bv_disequal_constants " << utils::getSize(c1) << " ";
+
+ std::ostringstream paren;
+
+ for (int i = utils::getSize(c1) - 1; i >= 0; --i) {
+ os << "(bvc ";
+ os << (utils::getBit(c1, i) ? "b1" : "b0") << " ";
+ paren << ")";
+ }
+ os << "bvn";
+ os << paren.str();
+
+ os << " ";
+
+ for (int i = utils::getSize(c2) - 1; i >= 0; --i) {
+ os << "(bvc ";
+ os << (utils::getBit(c2, i) ? "b1" : "b0") << " ";
+
+ }
+ os << "bvn";
+ os << paren.str();
+
+ os << ")";
+}
+
} /* namespace CVC4 */
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback