#include <bitvector_theorem_producer.h>
Inheritance diagram for CVCL::BitvectorTheoremProducer:
Author: Vijay Ganesh, May-August, 2004
Definition at line 49 of file bitvector_theorem_producer.h.
|
Constructor: constructs an instance of bitvector DP.
Definition at line 56 of file bitvector_theorem_producer.cpp. References d_bvOne, d_bvZero, d_theoryBitvector, and CVCL::TheoryBitvector::newBVConstExpr(). |
|
Definition at line 92 of file bitvector_theorem_producer.h. |
|
Return cached constant 0bin0.
Definition at line 58 of file bitvector_theorem_producer.h. References d_bvZero. Referenced by bitExtractToExtract(), expandTypePred(), signBVLTRule(), and typePredBit(). |
|
Return cached constant 0bin1.
Definition at line 60 of file bitvector_theorem_producer.h. References d_bvOne. Referenced by bitExtractToExtract(), expandTypePred(), signBVLTRule(), and typePredBit(). |
|
Collect all of: a*x1+b*x1 + c*x2-x2 + d*x3 + ~x3 + ~x4 +e into (a+b, x1) , (c-1 , x2), (d-1, x3), (-1, x4) and the constant e-2. The constant is calculated from the formula -x = ~x+1 (or -x-1=~x). Definition at line 3362 of file bitvector_theorem_producer.cpp. References CVCL::Expr::begin(), CVCL::BVCONST, CVCL::BVMULT, CVCL::BVUMINUS, CVCL::ExprMap< Data >::clear(), collectOneTermOfPlus(), CVCL::TheoryBitvector::computeBVConst(), d_theoryBitvector, CVCL::Expr::end(), CVCL::Expr::getOpKind(), and CVCL::Expr::toString(). Referenced by combineLikeTermsRule(). |
|
Collect a single coefficient*var pair into likeTerms. Update the counter of likeTerms[var] += coefficient. Potentially update the constant additive plusConstant. Definition at line 3332 of file bitvector_theorem_producer.cpp. References d_theoryBitvector, CVCL::ExprMap< Data >::empty(), CVCL::ExprMap< Data >::end(), CVCL::ExprMap< Data >::find(), CVCL::Theorem::getRHS(), and CVCL::TheoryBitvector::pushNegationRec(). Referenced by collectLikeTermsOfPlus(). |
|
Create a vector which will form the next PVPLUS. Use the colleciton of likeTerms, and the constant additive plusConstant Definition at line 3424 of file bitvector_theorem_producer.cpp. References CVCL::ExprMap< Data >::begin(), CVCL::BITVECTOR, boundedModulo(), CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::ExprMap< Data >::end(), CVCL::Type::getExpr(), CVCL::Expr::getOpKind(), CVCL::Theorem::getRHS(), CVCL::Expr::getType(), CVCL::TheoryBitvector::newBVConstExpr(), CVCL::TheoryBitvector::newBVMultExpr(), CVCL::TheoryBitvector::pushNegationRec(), and CVCL::Expr::toString(). Referenced by combineLikeTermsRule(). |
|
Create expression by applying plus to all elements. All elements should be normalized and ready. If there are too few elements, a non BVPLUS expression will be created. Definition at line 3484 of file bitvector_theorem_producer.cpp. References d_theoryBitvector, CVCL::TheoryBitvector::newBVPlusExpr(), and CVCL::TheoryBitvector::newBVZeroString(). Referenced by combineLikeTermsRule(). |
|
Implements CVCL::BitvectorProofRules. Definition at line 71 of file bitvector_theorem_producer.cpp. References CVCL::BOOLEXTRACT, d_theoryBitvector, CVCL::Expr::eqExpr(), CVCL::TheoryBitvector::getBoolExtractIndex(), CVCL::Theorem::getExpr(), CVCL::Expr::iffExpr(), CVCL::Expr::isIff(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
Implements CVCL::BitvectorProofRules. Definition at line 105 of file bitvector_theorem_producer.cpp. References CVCL::BOOLEXTRACT, d_theoryBitvector, CVCL::Expr::eqExpr(), CVCL::Theorem::getAssumptionsCopy(), CVCL::TheoryBitvector::getBoolExtractIndex(), CVCL::Theorem::getExpr(), CVCL::Theorem::getProof(), CVCL::Expr::iffExpr(), CVCL::Expr::isIff(), CVCL::Expr::negate(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newTheorem(), CVCL::NOT, CVCL::Expr::toString(), CVCL::TheoremProducer::withAssumptions(), and CVCL::TheoremProducer::withProof(). |
|
Implements CVCL::BitvectorProofRules. Definition at line 144 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BITVECTOR, CVCL::BOOLEXTRACT, CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::TheoryBitvector::getBoolExtractIndex(), CVCL::Type::getExpr(), CVCL::Expr::getOpKind(), CVCL::Expr::getType(), CVCL::int2string(), CVCL::Expr::isAnd(), CVCL::Expr::isEq(), CVCL::Expr::isIff(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
Implements CVCL::BitvectorProofRules. Definition at line 228 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BITVECTOR, CVCL::BOOLEXTRACT, CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::Theorem::getAssumptionsCopy(), CVCL::TheoryBitvector::getBoolExtractIndex(), CVCL::Type::getExpr(), CVCL::Theorem::getExpr(), CVCL::Expr::getOpKind(), CVCL::Theorem::getProof(), CVCL::Expr::getType(), CVCL::int2string(), CVCL::Expr::isEq(), CVCL::Expr::isIff(), CVCL::Expr::isNot(), CVCL::Expr::isOr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newTheorem(), CVCL::Expr::toString(), CVCL::Theorem::toString(), CVCL::TRACE, CVCL::TheoremProducer::withAssumptions(), and CVCL::TheoremProducer::withProof(). |
|
sign extend the input SX(e) appropriately
Implements CVCL::BitvectorProofRules. Definition at line 346 of file bitvector_theorem_producer.cpp. References CVCL::BITVECTOR, CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::Type::getExpr(), CVCL::Expr::getOpKind(), CVCL::Expr::getType(), CVCL::TheoryBitvector::newBVExtractExpr(), CVCL::TheoryBitvector::newConcatExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::SX, CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). Referenced by bitExtractSXRule(). |
|
Pad the kids of BVLT/BVLE to make their length equal.
Implements CVCL::BitvectorProofRules. Definition at line 311 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BITVECTOR, CVCL::BVLE, CVCL::BVLT, d_theoryBitvector, CVCL::Expr::getOpKind(), CVCL::int2string(), CVCL::TheoryBitvector::newBVLEExpr(), CVCL::TheoryBitvector::newBVLTExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), pad(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
Sign Extend the kids of SBVLT/SBVLE to make their length equal.
Implements CVCL::BitvectorProofRules. Definition at line 406 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BITVECTOR, d_theoryBitvector, CVCL::Expr::getOpKind(), CVCL::int2string(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::TheoryBitvector::newSBVLEExpr(), CVCL::TheoryBitvector::newSBVLTExpr(), CVCL::TheoryBitvector::newSXExpr(), CVCL::SBVLE, CVCL::SBVLT, CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
|
NOT(e[0][0] < e[0][1]) <==> (e[0][1] <= e[0][0]), NOT(e[0][0] <= e[0][1]) <==> (e[0][1] < e[0][0]) Implements CVCL::BitvectorProofRules. Definition at line 627 of file bitvector_theorem_producer.cpp. References CVCL::BVLE, CVCL::BVLT, d_theoryBitvector, CVCL::Expr::getKind(), CVCL::Expr::getOpKind(), CVCL::TheoryBitvector::newBVLEExpr(), CVCL::TheoryBitvector::newBVLTExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::NOT, CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
if(lhs==rhs) then we have (lhs < rhs <==> false),(lhs <= rhs <==> true)
Implements CVCL::BitvectorProofRules. Definition at line 658 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BVLE, CVCL::BVLT, d_theoryBitvector, CVCL::Theory::falseExpr(), CVCL::Expr::getOpKind(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), CVCL::Theory::trueExpr(), and CVCL::TheoremProducer::withProof(). |
|
if indeed e[0] < e[1] then (e<==>true) else (e<==>false)
Implements CVCL::BitvectorProofRules. Definition at line 686 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BVCONST, CVCL::BVLE, CVCL::BVLT, CVCL::TheoryBitvector::BVSize(), CVCL::TheoryBitvector::computeBVConst(), d_theoryBitvector, CVCL::Theory::falseExpr(), CVCL::Expr::getOpKind(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), CVCL::Theory::trueExpr(), and CVCL::TheoremProducer::withProof(). |
|
|
t[i] ==> t[i:i] = 0bin1 or NOT t[i] ==> t[i:i] = 0bin0
Implements CVCL::BitvectorProofRules. Definition at line 877 of file bitvector_theorem_producer.cpp. References CVCL::BOOLEXTRACT, bvOne(), bvZero(), d_theoryBitvector, CVCL::Theorem::getAssumptionsCopy(), CVCL::TheoryBitvector::getBoolExtractIndex(), CVCL::Theorem::getExpr(), CVCL::Expr::getOpKind(), CVCL::Theorem::getProof(), CVCL::Expr::isNot(), CVCL::TheoryBitvector::newBVExtractExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), CVCL::TheoremProducer::withAssumptions(), and CVCL::TheoremProducer::withProof(). |
|
t[i] <=> t[i:i][0] (to use rewriter for simplifying t[i:i])
Implements CVCL::BitvectorProofRules. Definition at line 901 of file bitvector_theorem_producer.cpp. References CVCL::BOOLEXTRACT, CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::TheoryBitvector::getBoolExtractIndex(), CVCL::Expr::getOpKind(), CVCL::int2string(), CVCL::TheoryBitvector::newBoolExtractExpr(), CVCL::TheoryBitvector::newBVExtractExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
Implements CVCL::BitvectorProofRules. Definition at line 930 of file bitvector_theorem_producer.cpp. References CVCL::BVCONST, d_theoryBitvector, CVCL::Theory::falseExpr(), CVCL::TheoryBitvector::getBVConstValue(), CVCL::Expr::getKind(), CVCL::int2string(), CVCL::TheoryBitvector::newBoolExtractExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), rat(), CVCL::TRACE, CVCL::Theory::trueExpr(), and CVCL::TheoremProducer::withProof(). |
|
Implements CVCL::BitvectorProofRules. Definition at line 968 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BITVECTOR, CVCL::TheoryBitvector::BVSize(), CVCL::CONCAT, d_theoryBitvector, CVCL::Theory::getBaseType(), CVCL::Type::getExpr(), CVCL::Expr::getOpKind(), CVCL::int2string(), CVCL::Expr::isNull(), CVCL::TheoryBitvector::newBoolExtractExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), rat(), CVCL::Expr::toString(), CVCL::TRACE, and CVCL::TheoremProducer::withProof(). |
|
Implements CVCL::BitvectorProofRules. Definition at line 1023 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BITVECTOR, CVCL::BVCONST, CVCL::BVMULT, CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::TheoryBitvector::getBVConstValue(), CVCL::Type::getExpr(), CVCL::Expr::getOpKind(), CVCL::Expr::getType(), CVCL::int2string(), CVCL::mult(), CVCL::TheoryBitvector::newBoolExtractExpr(), CVCL::TheoryBitvector::newBVPlusExpr(), CVCL::TheoryBitvector::newBVZeroString(), CVCL::TheoryBitvector::newFixedLeftShiftExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), pad(), rat(), CVCL::Expr::toString(), CVCL::TRACE, and CVCL::TheoremProducer::withProof(). |
|
Implements CVCL::BitvectorProofRules. Definition at line 1090 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BITVECTOR, CVCL::BVCONST, CVCL::BVMULT, CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::Type::getExpr(), CVCL::Expr::getOpKind(), CVCL::Expr::getType(), CVCL::Expr::iffExpr(), CVCL::int2string(), CVCL::Expr::iteExpr(), CVCL::mult(), CVCL::TheoryBitvector::newBoolExtractExpr(), CVCL::TheoryBitvector::newBVPlusExpr(), CVCL::TheoryBitvector::newBVZeroString(), CVCL::TheoryBitvector::newFixedLeftShiftExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), rat(), CVCL::Expr::toString(), CVCL::TRACE, CVCL::Theory::trueExpr(), and CVCL::TheoremProducer::withProof(). |
|
Implements CVCL::BitvectorProofRules. Definition at line 1153 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BITVECTOR, CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::EXTRACT, CVCL::Type::getExpr(), CVCL::TheoryBitvector::getExtractHi(), CVCL::TheoryBitvector::getExtractLow(), CVCL::Expr::getOpKind(), CVCL::Expr::getType(), CVCL::int2string(), CVCL::TheoryBitvector::newBoolExtractExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), rat(), CVCL::Expr::toString(), CVCL::TRACE, and CVCL::TheoremProducer::withProof(). |
|
Implements CVCL::BitvectorProofRules. Definition at line 1205 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::Expr::begin(), CVCL::BVPLUS, computeCarry(), d_theoryBitvector, CVCL::TheoryBitvector::getBVPlusParam(), CVCL::Expr::getOpKind(), CVCL::Expr::iffExpr(), CVCL::int2string(), CVCL::TheoryBitvector::newBoolExtractExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), rat(), CVCL::Expr::toString(), CVCL::TRACE, and CVCL::TheoremProducer::withProof(). |
|
|
Implements CVCL::BitvectorProofRules. Definition at line 1468 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BITVECTOR, CVCL::BVPLUS, CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::Type::getExpr(), CVCL::Expr::getKids(), CVCL::Expr::getOpKind(), CVCL::Expr::getType(), CVCL::TheoryBitvector::newBVPlusExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), CVCL::TRACE, and CVCL::TheoremProducer::withProof(). |
|
Implements CVCL::BitvectorProofRules. Definition at line 1511 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BITVECTOR, CVCL::BVNEG, CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::Type::getExpr(), CVCL::Expr::getOpKind(), CVCL::Expr::getType(), CVCL::int2string(), CVCL::TheoryBitvector::newBoolExtractExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), rat(), CVCL::Expr::toString(), CVCL::TRACE, and CVCL::TheoremProducer::withProof(). |
|
|
Implements CVCL::BitvectorProofRules. Definition at line 1593 of file bitvector_theorem_producer.cpp. References bitExtractBitwise(), and CVCL::BVAND. |
|
Implements CVCL::BitvectorProofRules. Definition at line 1599 of file bitvector_theorem_producer.cpp. References bitExtractBitwise(), and CVCL::BVOR. |
|
Implements CVCL::BitvectorProofRules. Definition at line 1604 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BITVECTOR, CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::Theory::falseExpr(), CVCL::Type::getExpr(), CVCL::TheoryBitvector::getFixedLeftShiftParam(), CVCL::Expr::getOpKind(), CVCL::Expr::getType(), CVCL::int2string(), CVCL::LEFTSHIFT, CVCL::TheoryBitvector::newBoolExtractExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), rat(), CVCL::Expr::toString(), CVCL::TRACE, and CVCL::TheoremProducer::withProof(). |
|
|
Implements CVCL::BitvectorProofRules. Definition at line 1440 of file bitvector_theorem_producer.cpp. References CVCL::BITVECTOR, CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::Theory::falseExpr(), CVCL::Theory::getBaseType(), CVCL::Type::getExpr(), CVCL::Expr::getOpKind(), CVCL::Expr::getType(), CVCL::int2string(), CVCL::TheoryBitvector::newBoolExtractExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), rat(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
bitExtractSXRule
Implements CVCL::BitvectorProofRules. Definition at line 388 of file bitvector_theorem_producer.cpp. References d_theoryBitvector, CVCL::Theorem::getRHS(), CVCL::TheoryBitvector::newBoolExtractExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), rat(), signExtendRule(), and CVCL::TheoremProducer::withProof(). |
|
c1=c2 <=> TRUE/FALSE (equality of constant bitvectors)
Implements CVCL::BitvectorProofRules. Definition at line 1713 of file bitvector_theorem_producer.cpp. References constantKids(), d_theoryBitvector, CVCL::Theory::falseExpr(), CVCL::Expr::isEq(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), CVCL::Theory::trueExpr(), and CVCL::TheoremProducer::withProof(). |
|
|- c1=c2 ==> |- AND(c1[i:i] = c2[i:i]) - expanding equalities into bits
Implements CVCL::BitvectorProofRules. Definition at line 1732 of file bitvector_theorem_producer.cpp. References CVCL::andExpr(), CVCL::BITVECTOR, CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::Expr::eqExpr(), CVCL::Theorem::getAssumptionsCopy(), CVCL::Theory::getBaseType(), CVCL::Theorem::getExpr(), CVCL::Type::getExpr(), CVCL::Theorem::getLHS(), CVCL::Expr::getOpKind(), CVCL::Theorem::getProof(), CVCL::Theorem::getRHS(), CVCL::Theorem::isRewrite(), CVCL::TheoryBitvector::newBVExtractExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newTheorem(), CVCL::Theorem::toString(), CVCL::TheoremProducer::withAssumptions(), and CVCL::TheoremProducer::withProof(). |
|
t<<n = c @ 0bin00...00, takes e == (t<<n)
Implements CVCL::BitvectorProofRules. Definition at line 1768 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), d_theoryBitvector, CVCL::TheoryBitvector::getFixedLeftShiftParam(), CVCL::Expr::getOpKind(), CVCL::LEFTSHIFT, CVCL::TheoryBitvector::newBVConstExpr(), CVCL::TheoryBitvector::newConcatExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
t>>m = 0bin00...00 @ t[bvlength-1:m], takes e == (t>>n)
Implements CVCL::BitvectorProofRules. Definition at line 1795 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::TheoryBitvector::getFixedRightShiftParam(), CVCL::Expr::getOpKind(), CVCL::TheoryBitvector::newBVExtractExpr(), CVCL::TheoryBitvector::newBVZeroString(), CVCL::TheoryBitvector::newConcatExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::RIGHTSHIFT, CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
k*t = BVPLUS(n, <sum of shifts of t>) -- translation of k*t to BVPLUS If k = 2^m, return k*t = t@0...0 Implements CVCL::BitvectorProofRules. Definition at line 1830 of file bitvector_theorem_producer.cpp. References CVCL::abs(), CVCL::Expr::arity(), CVCL::BVMULT, CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::Expr::getOpKind(), CVCL::Expr::getRational(), CVCL::Rational::isInteger(), CVCL::Expr::isRational(), CVCL::TheoryBitvector::newBVConstExpr(), CVCL::TheoryBitvector::newBVNegExpr(), CVCL::TheoryBitvector::newBVPlusExpr(), CVCL::TheoryBitvector::newFixedLeftShiftExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), rat(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
0bin0...0 @ BVPLUS(n, args) = BVPLUS(n+k, args) where k is the size of the 0bin0...0 Implements CVCL::BitvectorProofRules. Definition at line 1879 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::Expr::begin(), CVCL::BVCONST, CVCL::BVPLUS, CVCL::TheoryBitvector::BVSize(), CVCL::TheoryBitvector::computeBVConst(), CVCL::CONCAT, d_theoryBitvector, CVCL::Expr::end(), CVCL::TheoryBitvector::getBVPlusParam(), CVCL::Expr::getKids(), CVCL::Expr::getOpKind(), CVCL::TheoryBitvector::newBVPlusExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Theory::reflexivityRule(), CVCL::Expr::toString(), CVCL::TRACE, and CVCL::TheoremProducer::withProof(). |
|
|
|
t1*a <==> a*t1
Implements CVCL::BitvectorProofRules. Definition at line 3036 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BVMULT, CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::Expr::getOpKind(), CVCL::TheoryBitvector::newBVMultExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
converts e to a bitvector of length rat
Definition at line 3058 of file bitvector_theorem_producer.cpp. References CVCL::BITVECTOR, CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::Type::getExpr(), CVCL::Expr::getOpKind(), CVCL::Expr::getType(), CVCL::int2string(), CVCL::TheoryBitvector::newBVExtractExpr(), CVCL::TheoryBitvector::newBVZeroString(), CVCL::TheoryBitvector::newConcatExpr(), and CVCL::Expr::toString(). Referenced by bitExtractConstBVMult(), oneCoeffBVMult(), padBVLTRule(), padBVMult(), and padBVPlus(). |
|
Pad the kids of BVMULT to make their bvLength = # of output-bits.
Implements CVCL::BitvectorProofRules. Definition at line 3083 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::Expr::begin(), CVCL::BVMULT, CVCL::BVPLUS, CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::Expr::end(), CVCL::Expr::getOpKind(), CVCL::TheoryBitvector::newBVMultExpr(), CVCL::TheoryBitvector::newBVPlusExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), pad(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
Pad the kids of BVMULT to make their bvLength = # of output-bits.
Implements CVCL::BitvectorProofRules. Definition at line 3114 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BITVECTOR, CVCL::BVMULT, CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::Expr::getOpKind(), CVCL::TheoryBitvector::newBVMultExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), pad(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
a*(b*t) <==> (a*b)*t, where a,b,t have same bvLength
Implements CVCL::BitvectorProofRules. Definition at line 3139 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BVCONST, CVCL::BVMULT, CVCL::TheoryBitvector::BVSize(), CVCL::TheoryBitvector::computeBVConst(), d_theoryBitvector, CVCL::Expr::getOpKind(), CVCL::TheoryBitvector::newBVConstExpr(), CVCL::TheoryBitvector::newBVMultExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
(t1*t2)*t3 <==> t1*(t2*t3), where t1<t2<t3
Implements CVCL::BitvectorProofRules. Definition at line 3178 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BVCONST, CVCL::BVMULT, CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::Expr::getOpKind(), CVCL::TheoryBitvector::newBVMultExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
a*(t1+...+tn) <==> (a*t1+...+a*tn), where all kids are equibvLength
Implements CVCL::BitvectorProofRules. Definition at line 3253 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::Expr::begin(), CVCL::BVMULT, CVCL::BVPLUS, CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::Expr::end(), CVCL::Expr::getOpKind(), CVCL::TheoryBitvector::newBVMultExpr(), CVCL::TheoryBitvector::newBVPlusExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
input BVPLUS expression e.output e <==> e', where e' has no BVPLUS
Implements CVCL::BitvectorProofRules. Definition at line 3294 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BVPLUS, CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::Expr::getOpKind(), CVCL::TheoryBitvector::newBVPlusExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
|
|
(x *[n] y)[m:k] = (x *[m+1] y)[m:k], where m < n
Implements CVCL::BitvectorProofRules. Definition at line 3857 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BVMULT, CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::EXTRACT, CVCL::TheoryBitvector::getExtractHi(), CVCL::TheoryBitvector::getExtractLow(), CVCL::Expr::getOpKind(), CVCL::TheoryBitvector::newBVExtractExpr(), CVCL::TheoryBitvector::newBVMultExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
(x +[n] y)[m:k] = (x +[m+1] y)[m:k], where m < n
Implements CVCL::BitvectorProofRules. Definition at line 3890 of file bitvector_theorem_producer.cpp. References CVCL::BVPLUS, CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::EXTRACT, CVCL::TheoryBitvector::getExtractHi(), CVCL::TheoryBitvector::getExtractLow(), CVCL::Expr::getKids(), CVCL::Expr::getOpKind(), CVCL::TheoryBitvector::newBVExtractExpr(), CVCL::TheoryBitvector::newBVPlusExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Theory::reflexivityRule(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
ite(c,t1,t2)[i:j] <=> ite(c,t1[i:j],t2[i:j])
Implements CVCL::BitvectorProofRules. Definition at line 2157 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BITVECTOR, CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::EXTRACT, CVCL::TheoryBitvector::getExtractHi(), CVCL::TheoryBitvector::getExtractLow(), CVCL::Expr::getOpKind(), CVCL::ITE, CVCL::TheoryBitvector::newBVExtractExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
~ite(c,t1,t2) <=> ite(c,~t1,~t2)
Implements CVCL::BitvectorProofRules. Definition at line 2194 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BITVECTOR, CVCL::BVNEG, d_theoryBitvector, CVCL::Expr::getOpKind(), CVCL::ITE, CVCL::TheoryBitvector::newBVNegExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
-0 <==> 0, -c <==> ~c+1
Implements CVCL::BitvectorProofRules. Definition at line 3653 of file bitvector_theorem_producer.cpp. References CVCL::BVCONST, CVCL::TheoryBitvector::BVSize(), CVCL::BVUMINUS, CVCL::TheoryBitvector::computeBVConst(), CVCL::TheoryBitvector::computeNegBVConst(), d_theoryBitvector, CVCL::Expr::getKind(), CVCL::Expr::getOpKind(), CVCL::TheoryBitvector::newBVConstExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
-(c*t)<=>(-c)*t; if -c==0 return e<=>0. if(-c==1) return e<=>t
Implements CVCL::BitvectorProofRules. Definition at line 3681 of file bitvector_theorem_producer.cpp. References CVCL::BVCONST, CVCL::BVMULT, CVCL::TheoryBitvector::BVSize(), CVCL::BVUMINUS, CVCL::TheoryBitvector::computeNegBVConst(), d_theoryBitvector, CVCL::Expr::getOpKind(), CVCL::TheoryBitvector::newBVConstExpr(), CVCL::TheoryBitvector::newBVMultExpr(), CVCL::TheoryBitvector::newBVZeroString(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
-(-e) <==> e
Implements CVCL::BitvectorProofRules. Definition at line 3728 of file bitvector_theorem_producer.cpp. References CVCL::BVUMINUS, CVCL::Expr::getOpKind(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
-v <==> -1*v
Implements CVCL::BitvectorProofRules. Definition at line 3750 of file bitvector_theorem_producer.cpp. References CVCL::TheoryBitvector::BVSize(), CVCL::BVUMINUS, d_theoryBitvector, CVCL::Expr::getOpKind(), CVCL::TheoryBitvector::newBVConstExpr(), CVCL::TheoryBitvector::newBVMultExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
|
|
-(c1*t1+...+cn*tn) <==> (-(c1*t1)+...+-(cn*tn))
Implements CVCL::BitvectorProofRules. Definition at line 3821 of file bitvector_theorem_producer.cpp. References CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), and CVCL::TheoremProducer::withProof(). |
|
c1[i:j] = c (extraction from a constant bitvector)
Implements CVCL::BitvectorProofRules. Definition at line 1926 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), constantKids(), d_theoryBitvector, CVCL::EXTRACT, CVCL::TheoryBitvector::getBVConstValue(), CVCL::TheoryBitvector::getExtractHi(), CVCL::TheoryBitvector::getExtractLow(), CVCL::Expr::getOpKind(), CVCL::TheoryBitvector::newBVConstExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
t[n-1:0] = t for n-bit t
Implements CVCL::BitvectorProofRules. Definition at line 1959 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::EXTRACT, CVCL::TheoryBitvector::getExtractHi(), CVCL::TheoryBitvector::getExtractLow(), CVCL::Expr::getOpKind(), CVCL::int2string(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
t[i:j][k:l] = t[k+j:l+j] (eliminate double extraction)
Implements CVCL::BitvectorProofRules. Definition at line 1984 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), d_theoryBitvector, CVCL::EXTRACT, CVCL::TheoryBitvector::getExtractHi(), CVCL::TheoryBitvector::getExtractLow(), CVCL::Expr::getOpKind(), CVCL::int2string(), CVCL::TheoryBitvector::newBVExtractExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
(t1 @ t2)[i:j] = t1[...] @ t2[...] (push extraction through concat)
Implements CVCL::BitvectorProofRules. Definition at line 2029 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::Expr::begin(), CVCL::TheoryBitvector::BVSize(), CVCL::CONCAT, d_theoryBitvector, CVCL::Expr::end(), CVCL::EXTRACT, CVCL::Theorem::getExpr(), CVCL::TheoryBitvector::getExtractHi(), CVCL::TheoryBitvector::getExtractLow(), CVCL::Expr::getOpKind(), CVCL::int2string(), CVCL::TheoryBitvector::newBVExtractExpr(), CVCL::TheoryBitvector::newConcatExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), CVCL::TRACE, and CVCL::TheoremProducer::withProof(). |
|
Auxiliary function: (t1 op t2)[i:j] = t1[i:j] op t2[i:j].
Implements CVCL::BitvectorProofRules. Referenced by extractAnd(), extractNeg(), and extractOr(). |
|
(t1 & t2)[i:j] = t1[i:j] & t2[i:j] (push extraction through OR)
Implements CVCL::BitvectorProofRules. Definition at line 2137 of file bitvector_theorem_producer.cpp. References CVCL::BVAND, and extractBitwise(). |
|
(t1 | t2)[i:j] = t1[i:j] | t2[i:j] (push extraction through AND)
Implements CVCL::BitvectorProofRules. Definition at line 2144 of file bitvector_theorem_producer.cpp. References CVCL::BVOR, and extractBitwise(). |
|
(~t)[i:j] = ~(t[i:j]) (push extraction through NEG)
Implements CVCL::BitvectorProofRules. Definition at line 2151 of file bitvector_theorem_producer.cpp. References CVCL::BVNEG, and extractBitwise(). |
|
~c1 = c (bit-wise negation of a constant bitvector)
Implements CVCL::BitvectorProofRules. Definition at line 2223 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BVNEG, constantKids(), d_theoryBitvector, CVCL::TheoryBitvector::getBVConstSize(), CVCL::TheoryBitvector::getBVConstValue(), CVCL::Expr::getOpKind(), CVCL::TheoryBitvector::newBVConstExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
~(t1@...@tn) = (~t1)@...@(~tn) -- push negation through concat
Implements CVCL::BitvectorProofRules. Definition at line 2247 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::Expr::begin(), CVCL::BVNEG, CVCL::CONCAT, d_theoryBitvector, CVCL::Expr::end(), CVCL::Expr::getOpKind(), CVCL::TheoryBitvector::newBVNegExpr(), CVCL::TheoryBitvector::newConcatExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
~(~t) = t -- eliminate double negation
Implements CVCL::BitvectorProofRules. Definition at line 2273 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BVNEG, CVCL::Expr::getOpKind(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
~(t1 & t2) <=> ~t1 | ~t2 -- DeMorgan's Laws
Implements CVCL::BitvectorProofRules. Definition at line 2290 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::Expr::begin(), CVCL::BVAND, CVCL::BVNEG, d_theoryBitvector, CVCL::Expr::end(), CVCL::Expr::getOpKind(), CVCL::TheoryBitvector::newBVNegExpr(), CVCL::TheoryBitvector::newBVOrExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
~(t1 | t2) <=> ~t1 & ~t2 -- DeMorgan's Laws
Implements CVCL::BitvectorProofRules. Definition at line 2313 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::Expr::begin(), CVCL::BVNEG, CVCL::BVOR, d_theoryBitvector, CVCL::Expr::end(), CVCL::Expr::getOpKind(), CVCL::TheoryBitvector::newBVAndExpr(), CVCL::TheoryBitvector::newBVNegExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
Auxiliary method for andConst() and orConst(). c1&c2 = c (bit-wise AND constant bitvectors) c1 op c2 = c -- bit-wise AND and OR of constant bitvectors Definition at line 2337 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BVAND, CVCL::BVCONST, CVCL::BVOR, CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::TheoryBitvector::getBVConstSize(), CVCL::TheoryBitvector::getBVConstValue(), CVCL::Expr::getKind(), CVCL::Expr::getOpKind(), CVCL::int2string(), CVCL::TheoryBitvector::newBVAndExpr(), CVCL::TheoryBitvector::newBVConstExpr(), CVCL::TheoryBitvector::newBVOrExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), rat(), CVCL::RAW_LIST, CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). Referenced by andConst(), and orConst(). |
|
Auxiliary method for andConcat() and orConcat(). Lifts concatenation to the top of bit-wise AND. Takes the bit-wise AND expression 'e' and the index 'i' of the concatenation. Definition at line 2419 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BVAND, CVCL::BVOR, CVCL::TheoryBitvector::BVSize(), CVCL::CONCAT, d_theoryBitvector, CVCL::Expr::getOpKind(), CVCL::int2string(), CVCL::TheoryBitvector::newBVAndExpr(), CVCL::TheoryBitvector::newBVExtractExpr(), CVCL::TheoryBitvector::newBVOrExpr(), CVCL::TheoryBitvector::newConcatExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), rat(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). Referenced by andConcat(), and orConcat(). |
|
Auxiliary method for andFlatten() and orFlatten().
Definition at line 2471 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::Expr::begin(), CVCL::BVAND, CVCL::BVOR, CVCL::TheoryBitvector::BVSize(), d_theoryBitvector, CVCL::Expr::end(), CVCL::Expr::getOp(), CVCL::Expr::getOpKind(), CVCL::TheoryBitvector::newBVOneString(), CVCL::TheoryBitvector::newBVZeroString(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), sameKidCheck(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). Referenced by andFlatten(), and orFlatten(). |
|
c1&c2&t = c&t -- compute bit-wise AND of constant bitvector arguments
Implements CVCL::BitvectorProofRules. Definition at line 2548 of file bitvector_theorem_producer.cpp. References bitwiseConst(). |
|
0bin0...0 & t = 0bin0...0 -- bit-wise AND with zero bitvector
Implements CVCL::BitvectorProofRules. Definition at line 2558 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BVAND, CVCL::BVCONST, CVCL::TheoryBitvector::computeBVConst(), d_theoryBitvector, CVCL::Expr::getOpKind(), CVCL::int2string(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), rat(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
0bin1...1 & t = t -- bit-wise AND with bitvector of 1's
Implements CVCL::BitvectorProofRules. |
|
... & (t1@...@tk) & ... = (...& t1 &...)@...@(...& tk &...) Lifts concatenation to the top of bit-wise AND. Takes the bit-wise AND expression 'e' and the index 'i' of the concatenation. Implements CVCL::BitvectorProofRules. Definition at line 2639 of file bitvector_theorem_producer.cpp. References bitwiseConcat(). |
|
(t1 & (t2 & t3) & t4) = t1 & t2 & t3 & t4 -- flatten bit-wise AND Also reorders the terms according to a fixed total ordering Implements CVCL::BitvectorProofRules. Definition at line 2647 of file bitvector_theorem_producer.cpp. References bitwiseFlatten(). |
|
c1|c2|t = c|t -- compute bit-wise OR of constant bitvector arguments
Implements CVCL::BitvectorProofRules. Definition at line 2654 of file bitvector_theorem_producer.cpp. References bitwiseConst(). |
|
0bin1...1 | t = 0bin1...1 -- bit-wise OR with bitvector of 1's
Implements CVCL::BitvectorProofRules. Definition at line 2665 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::BVCONST, CVCL::BVOR, d_theoryBitvector, CVCL::TheoryBitvector::getBVConstSize(), CVCL::TheoryBitvector::getBVConstValue(), CVCL::Expr::getOpKind(), CVCL::int2string(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), rat(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
0bin0...0 | t = t -- bit-wise OR with bitvector of 0's
Implements CVCL::BitvectorProofRules. |
|
... | (t1@...@tk) | ... = (...| t1 |...)@...@(...| tk |...) Lifts concatenation to the top of bit-wise OR. Takes the bit-wise OR expression 'e' and the index 'i' of the concatenation. Implements CVCL::BitvectorProofRules. Definition at line 2806 of file bitvector_theorem_producer.cpp. References bitwiseConcat(). |
|
(t1 | (t2 | t3) | t4) = t1 | t2 | t3 | t4 -- flatten bit-wise OR Also reorders the terms according to a fixed total ordering Implements CVCL::BitvectorProofRules. Definition at line 2814 of file bitvector_theorem_producer.cpp. References bitwiseFlatten(). |
|
checks if e is already present in likeTerms without conflicts. if yes return 1, else{ if conflict return -1 else return 0 } we have conflict if 1. the kind of e is BVNEG, and e[0] is already present in likeTerms 2. ~e is present in likeTerms already Definition at line 2749 of file bitvector_theorem_producer.cpp. References CVCL::BVNEG, d_theoryBitvector, CVCL::ExprMap< Data >::end(), CVCL::ExprMap< Data >::find(), CVCL::Expr::getOpKind(), and CVCL::TheoryBitvector::newBVNegExpr(). Referenced by bitwiseFlatten(). |
|
c1@c2@...@cn = c (concatenation of constant bitvectors)
Implements CVCL::BitvectorProofRules. Definition at line 2821 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::CONCAT, constantKids(), d_theoryBitvector, CVCL::TheoryBitvector::getBVConstSize(), CVCL::TheoryBitvector::getBVConstValue(), CVCL::Expr::getOpKind(), CVCL::TheoryBitvector::newBVConstExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
Flatten one level of nested concatenation, e.g.: x@(y@z)@w = x@y@z@w.
Implements CVCL::BitvectorProofRules. Definition at line 2844 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::Expr::begin(), CVCL::CONCAT, CVCL::Expr::end(), CVCL::Expr::getOp(), CVCL::Expr::getOpKind(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
Merge n-ary concat. of adjacent extractions: x[15:8]@x[7:0] = x[15:0].
Implements CVCL::BitvectorProofRules. Definition at line 2867 of file bitvector_theorem_producer.cpp. References CVCL::Expr::arity(), CVCL::CONCAT, d_theoryBitvector, CVCL::EXTRACT, CVCL::TheoryBitvector::getExtractHi(), CVCL::TheoryBitvector::getExtractLow(), CVCL::Expr::getOpKind(), CVCL::int2string(), CVCL::TheoryBitvector::newBVExtractExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
BVPLUS(n, c1,c2,...,cn) = c (bit-vector plus of constant bitvectors).
Implements CVCL::BitvectorProofRules. Definition at line 2919 of file bitvector_theorem_producer.cpp. References CVCL::Expr::begin(), CVCL::BVPLUS, CVCL::TheoryBitvector::computeBVConst(), constantKids(), d_theoryBitvector, CVCL::Expr::end(), CVCL::floor(), CVCL::TheoryBitvector::getBVPlusParam(), CVCL::Expr::getOpKind(), CVCL::int2string(), CVCL::mod(), CVCL::TheoryBitvector::newBVConstExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Rational::toString(), CVCL::Expr::toString(), CVCL::TRACE, and CVCL::TheoremProducer::withProof(). |
|
n*c1 = c, where n >= 0 (multiplication of a constant bitvector by a non-negative constant)
Implements CVCL::BitvectorProofRules. Definition at line 2959 of file bitvector_theorem_producer.cpp. References CVCL::BVMULT, CVCL::TheoryBitvector::BVSize(), CVCL::TheoryBitvector::computeBVConst(), constantKids(), d_theoryBitvector, CVCL::floor(), CVCL::Type::getExpr(), CVCL::Expr::getOpKind(), CVCL::Expr::getType(), CVCL::mod(), CVCL::TheoryBitvector::newBVConstExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newRWTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
|- t=0 OR t=1 for any 1-bit bitvector t
Implements CVCL::BitvectorProofRules. Definition at line 3927 of file bitvector_theorem_producer.cpp. References CVCL::BITVECTOR, bvOne(), CVCL::TheoryBitvector::BVSize(), bvZero(), d_theoryBitvector, CVCL::Expr::eqExpr(), CVCL::Theory::getBaseType(), CVCL::Type::getExpr(), CVCL::Expr::getOpKind(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newTheorem(), CVCL::Expr::toString(), and CVCL::TheoremProducer::withProof(). |
|
Expand the type predicate wrapper (compute the actual type predicate).
Implements CVCL::BitvectorProofRules. Definition at line 3945 of file bitvector_theorem_producer.cpp. References CVCL::andExpr(), bvOne(), CVCL::BVTYPEPRED, bvZero(), d_theoryBitvector, CVCL::Expr::eqExpr(), CVCL::Theory::falseExpr(), CVCL::Theorem::getAssumptionsCopy(), CVCL::TheoryBitvector::getBitvectorTypeParam(), CVCL::Theorem::getExpr(), CVCL::Expr::getKind(), CVCL::Expr::getOpKind(), CVCL::Theorem::getProof(), CVCL::TheoryBitvector::getTypePredExpr(), CVCL::TheoryBitvector::getTypePredType(), CVCL::TheoryBitvector::newBVExtractExpr(), CVCL::TheoremProducer::newPf(), CVCL::TheoremProducer::newTheorem(), CVCL::NOT, CVCL::Expr::toString(), CVCL::TheoremProducer::withAssumptions(), and CVCL::TheoremProducer::withProof(). |
|
Create Expr from Rational (for convenience) Definition at line 503 of file bitvector_theorem_producer.h. References CVCL::TheoremProducer::d_em, and CVCL::ExprManager::newRatExpr(). Referenced by andZero(), bitExtractBitwise(), bitExtractBVMult(), bitExtractBVPlus(), bitExtractBVPlusPreComputed(), bitExtractConcatenation(), bitExtractConstant(), bitExtractConstBVMult(), bitExtractExtraction(), bitExtractFixedLeftShift(), bitExtractFixedRightShift(), bitExtractNot(), bitExtractSXRule(), bitwiseConcat(), bitwiseConst(), computeCarryPreComputed(), constMultToPlus(), orOne(), and zeroPaddingRule(). |
|
Definition at line 1274 of file bitvector_theorem_producer.cpp. References CVCL::Expr::andExpr(), and CVCL::orExpr(). Referenced by bitExtractBVPlus(). |
|
compute carryout of the current bits and cache them, and return
Definition at line 1376 of file bitvector_theorem_producer.cpp. References CVCL::Expr::andExpr(), CVCL::TheoryBitvector::d_bvPlusCarryCacheLeftBV, CVCL::TheoryBitvector::d_bvPlusCarryCacheRightBV, d_theoryBitvector, CVCL::ExprMap< Data >::end(), CVCL::ExprMap< Data >::find(), CVCL::Theorem::getLHS(), CVCL::Theorem::getRHS(), CVCL::ExprMap< Data >::insert(), CVCL::Expr::orExpr(), and rat(). Referenced by bitExtractBVPlusPreComputed(). |
|
|
Constant 1-bit bit-vector 0bin0. instance of bitvector DP Definition at line 54 of file bitvector_theorem_producer.h. Referenced by BitvectorTheoremProducer(), and bvZero(). |
|
Constant 1-bit bit-vector 0bin1.
Definition at line 56 of file bitvector_theorem_producer.h. Referenced by BitvectorTheoremProducer(), and bvOne(). |