diff options
author | Guy <katz911@gmail.com> | 2016-06-03 14:27:00 -0700 |
---|---|---|
committer | Guy <katz911@gmail.com> | 2016-06-03 14:27:00 -0700 |
commit | 8bfab32eed06973d53ce8ae066a9a26d4ae8a489 (patch) | |
tree | 4fb698b165bfe4aa80560d91f7334f27965dc641 /src/proof/bitvector_proof.cpp | |
parent | 90b909a89c78c75afae69e119feea20b478c0795 (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.cpp | 30 |
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 */ |