#include <theory_bitvector.h>
Inheritance diagram for CVC3::TheoryBitvector:
Author: Vijay Ganesh
Created:Wed May 5 15:35:07 PDT 2004
Definition at line 99 of file theory_bitvector.h.
TheoryBitvector::TheoryBitvector | ( | TheoryCore * | core | ) |
Definition at line 1838 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, CVC3::BOOLEXTRACT, CVC3::BVAND, CVC3::BVASHR, CVC3::BVCOMP, CVC3::BVCONST, CVC3::BVGE, CVC3::BVGT, CVC3::BVLE, CVC3::BVLSHR, CVC3::BVLT, CVC3::BVMULT, CVC3::BVNAND, CVC3::BVNEG, CVC3::BVNOR, CVC3::BVOR, CVC3::BVPLUS, CVC3::BVREPEAT, CVC3::BVROTL, CVC3::BVROTR, CVC3::BVSDIV, CVC3::BVSGE, CVC3::BVSGT, CVC3::BVSHL, CVC3::BVSLE, CVC3::BVSLT, CVC3::BVSMOD, CVC3::BVSREM, CVC3::BVSUB, CVC3::BVTOINT, CVC3::BVTYPEPRED, CVC3::BVUDIV, CVC3::BVUMINUS, CVC3::BVUREM, CVC3::BVXNOR, CVC3::BVXOR, CVC3::BVZEROEXTEND, CVC3::CONCAT, CVC3::CONST_WIDTH_LEFTSHIFT, createProofRules(), d_bvConstExprIndex, d_bvOne, d_bvZero, d_rules, CVC3::EXTRACT, CVC3::Theory::getEM(), CVC3::INTTOBV, CVC3::LEFTSHIFT, newBVConstExpr(), CVC3::ExprManager::newKind(), CVC3::ExprManager::registerSubclass(), CVC3::Theory::registerTheory(), CVC3::RIGHTSHIFT, and CVC3::SX.
TheoryBitvector::~TheoryBitvector | ( | ) |
const Expr& CVC3::TheoryBitvector::bvZero | ( | ) | const [inline, private] |
Return cached constant 0bin0.
Definition at line 184 of file theory_bitvector.h.
References d_bvZero.
const Expr& CVC3::TheoryBitvector::bvOne | ( | ) | const [inline, private] |
Return cached constant 0bin1.
Definition at line 186 of file theory_bitvector.h.
References d_bvOne.
functions which implement the DP strategy for bitblasting
Definition at line 58 of file theory_bitvector.cpp.
References CVC3::AND, CVC3::BitvectorProofRules::bitBlastEqnRule(), bitBlastTerm(), CVC3::BITVECTOR, CVC3::BitvectorProofRules::bitvectorFalseRule(), BVSize(), CVC3::Debug::counter(), d_bvBitBlastEq, d_rules, DebugAssert, CVC3::debugger, CVC3::Theory::getBaseType(), CVC3::Theorem::getLHS(), CVC3::Theorem::getRHS(), IF_DEBUG, CVC3::IFF, CVC3::Expr::isEq(), CVC3::Expr::isFalse(), CVC3::Theory::reflexivityRule(), rewriteBoolean(), CVC3::Theory::substitutivityRule(), CVC3::Theorem::toString(), CVC3::Expr::toString(), CVC3::TRACE, and CVC3::Theory::transitivityRule().
Referenced by checkSat(), rewriteAtomic(), setup(), and update().
functions which implement the DP strategy for bitblasting
Definition at line 132 of file theory_bitvector.cpp.
References CVC3::BitvectorProofRules::bitBlastDisEqnRule(), bitBlastTerm(), CVC3::BITVECTOR, CVC3::BitvectorProofRules::bitvectorTrueRule(), BVSize(), CVC3::Debug::counter(), d_bvBitBlastDiseq, d_rules, DebugAssert, CVC3::debugger, CVC3::Theory::getCommonRules(), CVC3::Theorem::getExpr(), CVC3::Theorem::getLHS(), CVC3::Theorem::getRHS(), CVC3::Expr::getType(), IF_DEBUG, CVC3::IFF, CVC3::Theory::iffMP(), CVC3::Expr::isNot(), CVC3::Expr::isTrue(), CVC3::OR, rewriteBoolean(), CVC3::Theory::substitutivityRule(), CVC3::Theorem::toString(), CVC3::Expr::toString(), CVC3::TRACE, and CVC3::Theory::transitivityRule().
functions which implement the DP strategy for bitblasting
The invariant maintained by this function is: accepts a bitvector term, t,and a bitPosition, i. returns a formula over the set of propositional variables defined using BOOLEXTRACT of bitvector variables in t at the position i.
Definition at line 345 of file theory_bitvector.cpp.
References CVC3::AND, CVC3::Expr::arity(), CVC3::Expr::begin(), CVC3::BitvectorProofRules::bitExtractAnd(), CVC3::BitvectorProofRules::bitExtractBVMult(), CVC3::BitvectorProofRules::bitExtractBVPlus(), CVC3::BitvectorProofRules::bitExtractConcatenation(), CVC3::BitvectorProofRules::bitExtractConstant(), CVC3::BitvectorProofRules::bitExtractConstBVMult(), CVC3::BitvectorProofRules::bitExtractExtraction(), CVC3::BitvectorProofRules::bitExtractFixedLeftShift(), CVC3::BitvectorProofRules::bitExtractNot(), CVC3::BitvectorProofRules::bitExtractOr(), CVC3::BITVECTOR, CVC3::BOOLEXTRACT, CVC3::BVAND, CVC3::BVCONST, CVC3::BVMULT, CVC3::BVNEG, CVC3::BVOR, CVC3::BVPLUS, CVC3::BitvectorProofRules::bvPlusAssociativityRule(), BVSize(), CVC3::CONCAT, CVC3::CONST_WIDTH_LEFTSHIFT, d_bitvecCache, d_rules, d_rwBitBlastFlag, DebugAssert, CVC3::Expr::end(), CVC3::EXTRACT, getBoolExtractIndex(), CVC3::Theorem::getExpr(), CVC3::Expr::getKind(), CVC3::Theorem::getLHS(), CVC3::Expr::getOpKind(), CVC3::Theorem::getRHS(), CVC3::Expr::getType(), IF_DEBUG, CVC3::Expr::isBoolConst(), CVC3::Theorem::isNull(), newBoolExtractExpr(), CVC3::NOT, CVC3::OR, CVC3::Theory::reflexivityRule(), rewriteBoolean(), rewriteBV(), CVC3::Theory::substitutivityRule(), CVC3::Theory::theoryOf(), CVC3::Expr::toString(), CVC3::Theorem::toString(), CVC3::TRACE, CVC3::Theory::transitivityRule(), and CVC3::BitvectorProofRules::zeroPaddingRule().
Referenced by bitBlastDisEqn(), bitBlastEqn(), bitBlastIneqn(), comparebv(), and setup().
function which implements the DP strtagey to bitblast Inequations
e | has the form e1 pred e2, where pred is < or <=. |
most significant bit of ei is denoted by msb(ei)
Definition at line 207 of file theory_bitvector.cpp.
References CVC3::AND, CVC3::Expr::arity(), bitBlastTerm(), CVC3::BVCONST, CVC3::BitvectorProofRules::bvConstIneqn(), CVC3::BVLE, CVC3::BVLT, BVSize(), d_rules, DebugAssert, CVC3::BitvectorProofRules::generalIneqn(), CVC3::Theorem::getExpr(), CVC3::Expr::getKind(), CVC3::Expr::getOpKind(), CVC3::Theorem::getRHS(), IF_DEBUG, CVC3::Expr::isBoolConst(), CVC3::BitvectorProofRules::lhsEqRhsIneqn(), CVC3::OR, CVC3::BitvectorProofRules::padBVLTRule(), CVC3::Theory::reflexivityRule(), rewriteBoolean(), rewriteBV(), CVC3::Theory::substitutivityRule(), CVC3::Theorem::toString(), CVC3::Expr::toString(), CVC3::TRACE, and CVC3::Theory::transitivityRule().
Referenced by rewriteAtomic(), and setup().
strategy fucntions for BVPLUS NORMAL FORM
strategy fucntions for BVPLUS NORMAL FORM
Definition at line 1186 of file theory_bitvector.cpp.
References CVC3::Expr::begin(), CVC3::BVPLUS, d_rules, DebugAssert, CVC3::Expr::end(), CVC3::BitvectorProofRules::flattenBVPlus(), CVC3::Expr::getOpKind(), CVC3::Theory::reflexivityRule(), and CVC3::Expr::toString().
Referenced by normalizeBVArith().
Implementation of the concatenation normal form.
Definition at line 600 of file theory_bitvector.cpp.
References CVC3::BitvectorProofRules::andConcat(), CVC3::BitvectorProofRules::andConst(), CVC3::BitvectorProofRules::andFlatten(), CVC3::BitvectorProofRules::andOne(), CVC3::BitvectorProofRules::andZero(), CVC3::Expr::arity(), CVC3::BVAND, CVC3::BVCONST, CVC3::BVMULT, CVC3::BVNEG, CVC3::BVOR, CVC3::BVPLUS, CVC3::BitvectorProofRules::bvplusZeroConcatRule(), BVSize(), CVC3::BVXOR, computeBVConst(), CVC3::CONCAT, CVC3::BitvectorProofRules::concatConst(), CVC3::BitvectorProofRules::concatFlatten(), CVC3::BitvectorProofRules::concatMergeExtract(), constantKids(), d_concatRewriteFlag, d_rules, DebugAssert, CVC3::EXTRACT, CVC3::BitvectorProofRules::extractAnd(), CVC3::BitvectorProofRules::extractBitwise(), CVC3::BitvectorProofRules::extractBVMult(), CVC3::BitvectorProofRules::extractBVPlus(), CVC3::BitvectorProofRules::extractConcat(), CVC3::BitvectorProofRules::extractConst(), CVC3::BitvectorProofRules::extractExtract(), CVC3::BitvectorProofRules::extractNeg(), CVC3::BitvectorProofRules::extractOr(), CVC3::BitvectorProofRules::extractWhole(), FatalAssert, getBVConstSize(), getBVConstValue(), getExtractHi(), getExtractLow(), CVC3::Expr::getKind(), CVC3::Theorem::getLHS(), CVC3::Expr::getOpKind(), CVC3::Theorem::getRHS(), CVC3::Expr::hasFind(), CVC3::BitvectorProofRules::negConcat(), CVC3::BitvectorProofRules::negConst(), CVC3::BitvectorProofRules::negNeg(), newConcatExpr(), CVC3::BitvectorProofRules::orConcat(), CVC3::BitvectorProofRules::orConst(), CVC3::BitvectorProofRules::orFlatten(), CVC3::BitvectorProofRules::orOne(), CVC3::BitvectorProofRules::orZero(), CVC3::BitvectorProofRules::padBVPlus(), CVC3::Theory::reflexivityRule(), rewriteBV(), CVC3::Theory::simplify(), CVC3::Theory::substitutivityRule(), CVC3::Theory::symmetryRule(), CVC3::Expr::toString(), CVC3::TRACE, and CVC3::Theory::transitivityRule().
Referenced by normalizeConcat(), and rewriteBV().
Implementation of the n-bit arithmetic normal form.
accepts an expression e, and returns a theorem e <==> BVPLUS_NORMAL_FORM(e) we always assume that kids of e are in bvplus normal form, and only the top-level needs normalization
Definition at line 1044 of file theory_bitvector.cpp.
References CVC3::Expr::arity(), CVC3::BITVECTOR, CVC3::BVCONST, CVC3::BitvectorProofRules::bvConstMultAssocRule(), CVC3::BVMULT, CVC3::BitvectorProofRules::bvmultConst(), CVC3::BitvectorProofRules::bvMultDistRule(), CVC3::BVPLUS, CVC3::BVUMINUS, CVC3::BitvectorProofRules::bvuminusToBVPlus(), CVC3::BitvectorProofRules::combineLikeTermsRule(), computeBVConst(), constantKids(), d_rules, DebugAssert, flattenBVPlus(), CVC3::BitvectorProofRules::flipBVMult(), CVC3::Theorem::getExpr(), CVC3::Theorem::getLHS(), CVC3::Expr::getOpKind(), CVC3::Theorem::getRHS(), CVC3::BitvectorProofRules::oneCoeffBVMult(), CVC3::BitvectorProofRules::padBVMult(), CVC3::BitvectorProofRules::padBVPlus(), pushNegation(), CVC3::Theory::reflexivityRule(), rewriteBV(), CVC3::Theory::substitutivityRule(), CVC3::Rational::toString(), CVC3::Expr::toString(), CVC3::TRACE, CVC3::Theory::transitivityRule(), and CVC3::BitvectorProofRules::zeroCoeffBVMult().
Referenced by normalizeBVArith(), and rewriteBV().
Theorem CVC3::TheoryBitvector::normalizeConcat | ( | const Theorem & | t, | |
bool | useFind | |||
) | [inline, private] |
Helper method for composing normalizations.
Definition at line 215 of file theory_bitvector.h.
References CVC3::Theorem::getRHS(), normalizeConcat(), and CVC3::Theory::transitivityRule().
Theorem CVC3::TheoryBitvector::normalizeBVArith | ( | const Theorem & | t, | |
bool | useFind | |||
) | [inline, private] |
Helper method for composing normalizations.
Definition at line 219 of file theory_bitvector.h.
References CVC3::Theorem::getRHS(), normalizeBVArith(), and CVC3::Theory::transitivityRule().
signextend e0 <=(s) e1 appropriately, then normalize and return
Definition at line 1210 of file theory_bitvector.cpp.
References CVC3::BVSLE, CVC3::BVSLT, d_rules, DebugAssert, CVC3::Theorem::getLHS(), CVC3::Expr::getOpKind(), CVC3::Theorem::getRHS(), CVC3::BitvectorProofRules::padBVSLTRule(), CVC3::Theory::reflexivityRule(), rewriteBV(), CVC3::BitvectorProofRules::signExtendRule(), CVC3::Theory::substitutivityRule(), CVC3::Expr::toString(), and CVC3::Theory::transitivityRule().
Referenced by rewriteBV().
Definition at line 1739 of file theory_bitvector.cpp.
References DebugAssert, CVC3::Theorem::getRHS(), CVC3::Theorem::isRewrite(), CVC3::Theorem::toString(), and CVC3::Theory::transitivityRule().
Referenced by CVC3::BitvectorTheoremProducer::collectOneTermOfPlus(), CVC3::BitvectorTheoremProducer::createNewPlusCollection(), pushNegation(), and pushNegationRec().
Definition at line 1754 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, CVC3::BVNEG, d_pushNegCache, CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), pushNegationRec(), and CVC3::Theory::reflexivityRule().
Referenced by normalizeBVArith(), and simplifyOp().
Top down simplifier.
Reimplemented from CVC3::Theory.
Definition at line 1767 of file theory_bitvector.cpp.
References CVC3::Expr::arity(), CVC3::BVCONST, CVC3::BVMULT, CVC3::BVNEG, CVC3::BVPLUS, CVC3::BitvectorProofRules::bvplusZeroConcatRule(), computeBVConst(), CVC3::CONCAT, CVC3::CONST_WIDTH_LEFTSHIFT, CVC3::BitvectorProofRules::constWidthLeftShiftToConcat(), d_pushNegationFlag, d_rules, CVC3::EXTRACT, CVC3::BitvectorProofRules::extractBVMult(), CVC3::BitvectorProofRules::extractBVPlus(), CVC3::Expr::getKind(), CVC3::Expr::getOpKind(), CVC3::Theorem::getRHS(), CVC3::Theorem::isNull(), CVC3::LEFTSHIFT, CVC3::BitvectorProofRules::leftShiftToConcat(), pushNegation(), CVC3::Theory::reflexivityRule(), CVC3::RIGHTSHIFT, CVC3::BitvectorProofRules::rightShiftToConcat(), CVC3::Theory::simplify(), CVC3::Theory::substitutivityRule(), and CVC3::Theory::transitivityRule().
Internal rewrite method for constants.
Definition at line 1248 of file theory_bitvector.cpp.
References CVC3::BitvectorProofRules::andConst(), CVC3::BitvectorProofRules::bitExtractConstant(), CVC3::BOOLEXTRACT, CVC3::BVAND, CVC3::BVMULT, CVC3::BitvectorProofRules::bvmultConst(), CVC3::BVNEG, CVC3::BVOR, CVC3::BVPLUS, CVC3::BitvectorProofRules::bvplusConst(), CVC3::CONCAT, CVC3::BitvectorProofRules::concatConst(), constantKids(), d_rules, CVC3::EQ, CVC3::BitvectorProofRules::eqConst(), CVC3::EXTRACT, CVC3::BitvectorProofRules::extractConst(), getBoolExtractIndex(), CVC3::Expr::getOpKind(), CVC3::BitvectorProofRules::negConst(), CVC3::BitvectorProofRules::orConst(), and CVC3::Theory::reflexivityRule().
Referenced by rewrite().
Internal rewrite method.
Definition at line 1300 of file theory_bitvector.cpp.
Referenced by bitBlastIneqn(), bitBlastTerm(), normalizeBVArith(), normalizeConcat(), rewrite(), rewriteBV(), and signExtendBVLT().
Rewrite children 'n' levels down (n==1 means "only the top level").
Definition at line 1545 of file theory_bitvector.cpp.
References rewriteBV().
Theorem CVC3::TheoryBitvector::rewriteBV | ( | const Theorem & | t, | |
int | n, | |||
bool | useFind | |||
) | [inline, private] |
Rewrite children 'n' levels down (n==1 means "only the top level").
Definition at line 239 of file theory_bitvector.h.
References CVC3::Theorem::getRHS(), rewriteBV(), and CVC3::Theory::transitivityRule().
Theorem TheoryBitvector::rewriteBV | ( | const Expr & | e, | |
ExprMap< Theorem > & | cache, | |||
bool | useFind | |||
) | [private] |
Internal rewrite method (implements the actual rewrites).
input: e0 <=(s) e1. output depends on whether the topbits(MSB) of e0 and e1 are constants. If they are constants then optimizations are done. In general, the following rule is implemented. Step1: e0 <=(s) e1 <==> pad(e0) <=(s) pad(e1) Step2: pad(e0) <=(s) pad(e1) <==> (e0[n-1] AND NOT e1[n-1]) OR (e0[n-1] = e1[n-1] AND e0[n-2:0] <= e1[n-2:0])
Definition at line 1306 of file theory_bitvector.cpp.
References CVC3::BitvectorProofRules::bitExtractConstant(), CVC3::BitvectorProofRules::bitExtractRewrite(), CVC3::BOOLEXTRACT, CVC3::BVAND, CVC3::BVCONST, CVC3::BitvectorProofRules::bvConstIneqn(), CVC3::BVLE, CVC3::BVLT, CVC3::BVMULT, CVC3::BVNAND, CVC3::BVNEG, CVC3::BVNOR, CVC3::BVOR, CVC3::BVPLUS, BVSize(), CVC3::BVSLE, CVC3::BVSLT, CVC3::BVSUB, CVC3::BVUMINUS, CVC3::BVXNOR, CVC3::BVXOR, computeBVConst(), CVC3::CONCAT, CVC3::CONST_WIDTH_LEFTSHIFT, constantKids(), CVC3::BitvectorProofRules::constWidthLeftShiftToConcat(), CVC3::Debug::counter(), d_lhsMinusRhsFlag, d_rules, DebugAssert, CVC3::debugger, CVC3::ExprMap< Data >::end(), CVC3::EQ, CVC3::BitvectorProofRules::eqConst(), CVC3::EXTRACT, CVC3::Theory::find(), CVC3::ExprMap< Data >::find(), getBoolExtractIndex(), CVC3::Theorem::getExpr(), getExtractHi(), getExtractLow(), CVC3::Expr::getKind(), CVC3::Theorem::getLHS(), CVC3::Expr::getOpKind(), CVC3::Theorem::getRHS(), CVC3::Expr::hasFind(), IF_DEBUG, CVC3::Theorem::isNull(), CVC3::LEFTSHIFT, CVC3::BitvectorProofRules::leftShiftToConcat(), CVC3::BitvectorProofRules::lhsEqRhsIneqn(), CVC3::BitvectorProofRules::lhsMinusRhsRule(), newBoolExtractExpr(), newBVExtractExpr(), normalizeBVArith(), normalizeConcat(), CVC3::BitvectorProofRules::padBVLTRule(), CVC3::Theory::reflexivityRule(), rewriteBV(), CVC3::BitvectorProofRules::rewriteBVSub(), CVC3::BitvectorProofRules::rewriteNAND(), CVC3::BitvectorProofRules::rewriteNOR(), CVC3::BitvectorProofRules::rewriteXNOR(), CVC3::BitvectorProofRules::rewriteXOR(), CVC3::RIGHTSHIFT, CVC3::BitvectorProofRules::rightShiftToConcat(), CVC3::BitvectorProofRules::signBVLTRule(), signExtendBVLT(), CVC3::BitvectorProofRules::signExtendRule(), CVC3::Theory::simplify(), CVC3::Theory::substitutivityRule(), CVC3::SX, CVC3::Theory::symmetryRule(), CVC3::TRACE, CVC3::Theory::transitivityRule(), and CVC3::BitvectorProofRules::zeroLeq().
Theorem TheoryBitvector::rewriteBV | ( | const Expr & | e, | |
ExprMap< Theorem > & | cache, | |||
int | n, | |||
bool | useFind | |||
) | [private] |
Rewrite children 'n' levels down (n==1 means "only the top level").
Definition at line 1551 of file theory_bitvector.cpp.
References CVC3::Expr::arity(), CVC3::Debug::counter(), DebugAssert, CVC3::debugger, CVC3::ExprMap< Data >::end(), CVC3::ExprMap< Data >::find(), CVC3::Theorem::getExpr(), CVC3::Theorem::getRHS(), IF_DEBUG, CVC3::Theorem::isNull(), CVC3::Theory::reflexivityRule(), rewriteBV(), CVC3::Theory::substitutivityRule(), CVC3::TRACE, and CVC3::Theory::transitivityRule().
Theorem CVC3::TheoryBitvector::rewriteBV | ( | const Theorem & | t, | |
ExprMap< Theorem > & | cache, | |||
int | n, | |||
bool | useFind | |||
) | [inline, private] |
Rewrite children 'n' levels down (n==1 means "only the top level").
Definition at line 248 of file theory_bitvector.h.
References CVC3::Theorem::getRHS(), rewriteBV(), and CVC3::Theory::transitivityRule().
rewrite input boolean expression e to a simpler form
Definition at line 4477 of file theory_bitvector.cpp.
References CVC3::AND, CVC3::Theory::getCommonRules(), CVC3::Expr::getKind(), CVC3::Theorem::getRHS(), CVC3::IFF, CVC3::Expr::isNot(), CVC3::Theorem::isNull(), CVC3::NOT, CVC3::OR, CVC3::Theory::reflexivityRule(), CVC3::Theory::rewriteAnd(), CVC3::CommonProofRules::rewriteIff(), CVC3::CommonProofRules::rewriteNotFalse(), CVC3::CommonProofRules::rewriteNotNot(), CVC3::CommonProofRules::rewriteNotTrue(), CVC3::Theory::rewriteOr(), CVC3::Theory::substitutivityRule(), and CVC3::Theory::transitivityRule().
Referenced by bitBlastDisEqn(), bitBlastEqn(), bitBlastIneqn(), and bitBlastTerm().
void TheoryBitvector::setupExpr | ( | const Expr & | e | ) | [private] |
Setup the NotifyList mechanism for the Expr e.
Definition at line 2162 of file theory_bitvector.cpp.
References FatalAssert.
BitvectorProofRules * TheoryBitvector::createProofRules | ( | ) |
Definition at line 1604 of file theory_bitvector.cpp.
References CVC3::Expr::arity(), CVC3::ExprMap< Data >::begin(), CVC3::Expr::begin(), CVC3::BVAND, CVC3::BVCONST, CVC3::BVMULT, CVC3::BVNEG, CVC3::BVOR, CVC3::BVPLUS, CVC3::BVXNOR, CVC3::BVXOR, CVC3::CONCAT, d_pushNegCache, d_rules, CVC3::Expr::end(), CVC3::Expr::getOp(), CVC3::Theorem::getRHS(), CVC3::Theorem::isRefl(), CVC3::BitvectorProofRules::negBVand(), CVC3::BitvectorProofRules::negBVor(), CVC3::BitvectorProofRules::negBVxnor(), CVC3::BitvectorProofRules::negBVxor(), CVC3::BitvectorProofRules::negConcat(), CVC3::BitvectorProofRules::negConst(), CVC3::BitvectorProofRules::negNeg(), newBVNegExpr(), pushNegationRec(), CVC3::Theory::reflexivityRule(), rewrite(), CVC3::Theory::substitutivityRule(), CVC3::TRACE, and CVC3::Theory::transitivityRule().
void TheoryBitvector::addSharedTerm | ( | const Expr & | e | ) | [virtual] |
Notify theory of a new shared term.
When a term e associated with theory i occurs as a child of an expression associated with theory j, the framework calls i->addSharedTerm(e) and j->addSharedTerm(e)
Reimplemented from CVC3::Theory.
Definition at line 1987 of file theory_bitvector.cpp.
References CVC3::Expr::addToNotify(), CVC3::Debug::counter(), d_sharedSubterms, d_sharedSubtermsList, CVC3::debugger, IF_DEBUG, CVC3::PRESENTATION_LANG, CVC3::Expr::toString(), and CVC3::TRACE.
Referenced by assertTypePred().
void TheoryBitvector::assertFact | ( | const Theorem & | e | ) | [virtual] |
Assert a new fact to the decision procedure.
Each fact that makes it into the core framework is assigned to exactly one theory: the theory associated with that fact. assertFact is called to inform the theory that a new fact has been assigned to the theory.
Implements CVC3::Theory.
Definition at line 2007 of file theory_bitvector.cpp.
References assertTypePred(), CVC3::BVTYPEPRED, CVC3::Theorem::getExpr(), CVC3::NOT, CVC3::PRESENTATION_LANG, CVC3::Expr::toString(), and CVC3::TRACE.
Receives all the type predicates for the types of the given theory.
Type predicates may be expensive to enqueue eagerly, and DPs may choose to postpone them, or transform them to something more efficient. By default, the asserted type predicate is immediately enqueued as a new fact.
Note: Used only by bitvector theory.
e | is the expression for which the type predicate is computed | |
pred | is the predicate theorem P(e) |
Reimplemented from CVC3::Theory.
Definition at line 2034 of file theory_bitvector.cpp.
References addSharedTerm(), CVC3::PRESENTATION_LANG, CVC3::Theory::theoryOf(), CVC3::Expr::toString(), and CVC3::TRACE.
Referenced by assertFact().
void TheoryBitvector::checkSat | ( | bool | fullEffort | ) | [virtual] |
Check for satisfiability in the theory.
fullEffort | when it is false, checkSat can do as much or as little work as it likes, though simple inferences and checks for consistency should be done to increase efficiency. If fullEffort is true, checkSat must check whether the set of facts given by assertFact together with the arrangement of shared terms (provided by addSharedTerm) induced by the global find database equivalence relation are satisfiable. If satisfiable, checkSat does nothing. |
Implements CVC3::Theory.
Definition at line 2062 of file theory_bitvector.cpp.
References bitBlastEqn(), CVC3::BVCONST, BVSize(), comparebv(), d_index1, d_sharedSubtermsList, DebugAssert, CVC3::Theory::enqueueFact(), CVC3::Theory::find(), CVC3::Theory::iffMP(), and CVC3::Theory::simplify().
Theory-specific rewrite rules.
By default, rewrite just returns a reflexive theorem stating that the input expression is equivalent to itself. However, rewrite is allowed to return any theorem which describes how the input expression is equivalent to some new expression. rewrite should be used to perform simplifications, normalization, and any other preprocessing on theory-specific expressions that needs to be done.
Reimplemented from CVC3::Theory.
Definition at line 2093 of file theory_bitvector.cpp.
References CVC3::Debug::counter(), d_rewriteFlag, CVC3::debugger, CVC3::Theory::find(), CVC3::Theorem::getLHS(), CVC3::Theorem::getRHS(), IF_DEBUG, rewriteBV(), rewriteConst(), and CVC3::Theory::transitivityRule().
Referenced by pushNegationRec().
Theory-specific rewrites for atomic formulas.
The intended use is to convert complex atomic formulas into an equivalent Boolean combination of simpler formulas. Such conversion may be harmful for algebraic rewrites, and is not always desirable to have in rewrite() method.
Note: Used only by bitvector theory and rewriteLiteral in core.
However, if rewrite() alone cannot solve the problem, and the SAT solver needs to be envoked, these additional rewrites may ease the job for the SAT solver.
Reimplemented from CVC3::Theory.
Definition at line 2109 of file theory_bitvector.cpp.
References bitBlastEqn(), bitBlastIneqn(), CVC3::BVLE, CVC3::BVLT, d_cnfBitBlastFlag, CVC3::Theory::reflexivityRule(), CVC3::Theory::simplify(), CVC3::Expr::toString(), CVC3::TRACE, and CVC3::Theory::transitivityRule().
void TheoryBitvector::setup | ( | const Expr & | e | ) | [virtual] |
Set up the term e for call-backs when e or its children change.
setup is called once for each expression associated with the theory. It is typically used to setup theory-specific data for an expression and to add call-back information for use with update.
Reimplemented from CVC3::Theory.
Definition at line 2130 of file theory_bitvector.cpp.
References bitBlastEqn(), bitBlastIneqn(), bitBlastTerm(), CVC3::BOOLEXTRACT, CVC3::BVLE, CVC3::BVLT, CVC3::BVTYPEPRED, CVC3::Theory::enqueueFact(), CVC3::EQ, FatalAssert, getBoolExtractIndex(), CVC3::Expr::getOpKind(), CVC3::Expr::isAtomicFormula(), CVC3::PRESENTATION_LANG, CVC3::Theory::simplify(), CVC3::Expr::toString(), CVC3::TRACE, and CVC3::Theory::transitivityRule().
Notify a theory of a new equality.
update is a call-back used by the notify mechanism of the core theory. It works as follows. When an equation t1 = t2 makes it into the core framework, the two find equivalence classes for t1 and t2 are merged. The result is that t2 is the new equivalence class representative and t1 is no longer an equivalence class representative. When this happens, the notify list of t1 is traversed. Notify list entries consist of a theory and an expression d. For each entry (i,d), i->update(e, d) is called, where e is the theorem corresponding to the equality t1=t2.
To add the entry (i,d) to a term t1's notify list, a call must be made to t1.addNotify(i,d). This is typically done in setup.
Reimplemented from CVC3::Theory.
Definition at line 2167 of file theory_bitvector.cpp.
References bitBlastEqn(), CVC3::BVCONST, d_sharedSubterms, DebugAssert, CVC3::Theory::enqueueFact(), CVC3::Theory::find(), CVC3::Theory::findExpr(), CVC3::Theorem::getExpr(), CVC3::Theorem::getLHS(), CVC3::Expr::getOpKind(), CVC3::Theorem::getRHS(), CVC3::Theory::iffMP(), CVC3::Theory::symmetryRule(), CVC3::Expr::toString(), and CVC3::Theory::transitivityRule().
An optional solver.
The solve method can be used to implement a Shostak-style solver. Since solvers do not in general combine, the following technique is used. One theory is designated as the primary solver (in our case, it is the theory of arithmetic). For each equation that enters the core framework, the primary solver is called to ensure that the equation is in solved form with respect to the primary theory.
After the primary solver, the solver for the theory associated with the equation is called. This solver can do whatever it likes, as long as the result is still in solved form with respect to the primary solver. This is a slight generalization of what is described in my (Clark)'s PhD thesis.
Reimplemented from CVC3::Theory.
Definition at line 2204 of file theory_bitvector.cpp.
References CVC3::BVCONST, d_rules, CVC3::BitvectorProofRules::eqConst(), CVC3::Expr::getKind(), CVC3::Theorem::getLHS(), CVC3::Theorem::getRHS(), CVC3::Theory::iffMP(), and CVC3::Theory::symmetryRule().
void TheoryBitvector::checkType | ( | const Expr & | e | ) | [virtual] |
Check that e is a valid Type expr.
Reimplemented from CVC3::Theory.
Definition at line 2221 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, FatalAssert, CVC3::Theory::getEM(), and CVC3::Expr::getOpKind().
void TheoryBitvector::computeType | ( | const Expr & | e | ) | [virtual] |
Compute and store the type of e.
e | is the expression whose type is computed. |
Reimplemented from CVC3::Theory.
Definition at line 2234 of file theory_bitvector.cpp.
References CVC3::Type::anyType(), CVC3::Expr::arity(), CVC3::Expr::begin(), CVC3::BITVECTOR, CVC3::BOOLEXTRACT, CVC3::Theory::boolType(), CVC3::BVAND, CVC3::BVASHR, CVC3::BVCOMP, CVC3::BVCONST, CVC3::BVGE, CVC3::BVGT, CVC3::BVLE, CVC3::BVLSHR, CVC3::BVLT, CVC3::BVMULT, CVC3::BVNAND, CVC3::BVNEG, CVC3::BVNOR, CVC3::BVOR, CVC3::BVPLUS, CVC3::BVREPEAT, CVC3::BVROTL, CVC3::BVROTR, CVC3::BVSDIV, CVC3::BVSGE, CVC3::BVSGT, CVC3::BVSHL, BVSize(), CVC3::BVSLE, CVC3::BVSLT, CVC3::BVSMOD, CVC3::BVSREM, CVC3::BVSUB, CVC3::BVTYPEPRED, CVC3::BVUDIV, CVC3::BVUMINUS, CVC3::BVUREM, CVC3::BVXNOR, CVC3::BVXOR, CVC3::BVZEROEXTEND, CVC3::CONCAT, CVC3::CONST_WIDTH_LEFTSHIFT, CVC3::Expr::end(), CVC3::EXTRACT, FatalAssert, CVC3::Theory::getBaseType(), getBoolExtractIndex(), getBVConstSize(), getBVIndex(), getBVMultParam(), getBVPlusParam(), CVC3::Theory::getEM(), CVC3::Type::getExpr(), getExtractHi(), getExtractLow(), getFixedLeftShiftParam(), getFixedRightShiftParam(), CVC3::Expr::getKind(), CVC3::Expr::getOpKind(), getSXIndex(), CVC3::Expr::getType(), CVC3::Expr::isApply(), CVC3::LEFTSHIFT, newBitvectorType(), newBitvectorTypeExpr(), CVC3::RIGHTSHIFT, CVC3::Expr::setType(), CVC3::SX, CVC3::Expr::toString(), and CVC3::TRACE.
Add variables from 'e' to 'v' for constructing a concrete model.
If e is already of primitive type, do NOT add it to v.
Reimplemented from CVC3::Theory.
Definition at line 2561 of file theory_bitvector.cpp.
References CVC3::Expr::begin(), CVC3::BITVECTOR, CVC3::BVAND, CVC3::BVCONST, CVC3::BVGE, CVC3::BVGT, CVC3::BVLE, CVC3::BVLT, CVC3::BVMULT, CVC3::BVNAND, CVC3::BVNEG, CVC3::BVNOR, CVC3::BVOR, CVC3::BVPLUS, CVC3::BVSGE, CVC3::BVSGT, CVC3::BVSLE, CVC3::BVSLT, CVC3::BVSUB, CVC3::BVUMINUS, CVC3::BVXNOR, CVC3::BVXOR, CVC3::CONCAT, CVC3::CONST_WIDTH_LEFTSHIFT, CVC3::Expr::end(), CVC3::EXTRACT, getBitvectorTypeParam(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), CVC3::LEFTSHIFT, newBoolExtractExpr(), and CVC3::RIGHTSHIFT.
Compute the value of a compound variable from the more primitive ones.
The more primitive variables for e are already assigned concrete values, and are available through getModelValue().
The new value for e must be assigned using assignValue() method.
e | is the compound type expression to assign a value; | |
vars | are the variables actually assigned. Normally, 'e' is the only element of vars. However, e.g. in the case of uninterpreted functions, assigning 'f' means assigning all relevant applications of 'f' to constant values (f(0), f(5), etc.). Such applications might not be known before the model is constructed (they may be of the form f(x), f(y+z), etc., where x,y,z are still unassigned). |
Reimplemented from CVC3::Theory.
Definition at line 2610 of file theory_bitvector.cpp.
References CVC3::Theory::assignValue(), CVC3::BITVECTOR, CVC3::BVAND, CVC3::BVCONST, CVC3::BVGE, CVC3::BVGT, CVC3::BVLE, CVC3::BVLT, CVC3::BVMULT, CVC3::BVNAND, CVC3::BVNEG, CVC3::BVNOR, CVC3::BVOR, CVC3::BVPLUS, CVC3::BVSGE, CVC3::BVSGT, CVC3::BVSLE, CVC3::BVSLT, CVC3::BVSUB, CVC3::BVUMINUS, CVC3::BVXNOR, CVC3::BVXOR, CVC3::CONCAT, CVC3::CONST_WIDTH_LEFTSHIFT, DebugAssert, CVC3::EXTRACT, FatalAssert, getBitvectorTypeParam(), CVC3::Theory::getModelValue(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), CVC3::LEFTSHIFT, newBoolExtractExpr(), newBVConstExpr(), CVC3::RIGHTSHIFT, CVC3::Theory::simplify(), CVC3::SX, and CVC3::Expr::toString().
Theory specific computation of the subtyping predicate for type t applied to the expression e.
By default returns true. Each theory needs to compute subtype predicates for the types associated with it. So, for example, the theory of records will take a record type [# f1: T1, f2: T2 #] and an expression e and will return the subtyping predicate for e, namely: computeTypePred(T1, e.f1) AND computeTypePred(T2, e.f2)
Reimplemented from CVC3::Theory.
Definition at line 2675 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, DebugAssert, CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), newBitvectorTypePred(), and CVC3::Type::toString().
Compute and cache the TCC of e.
e | is an expression (term or formula). This function computes the TCC of e which is true iff the expression is defined. |
The default implementation is to compute TCCs recursively for all children, and return their conjunction.
Reimplemented from CVC3::Theory.
Definition at line 2688 of file theory_bitvector.cpp.
References CVC3::Theory::computeTCC().
ExprStream & TheoryBitvector::print | ( | ExprStream & | os, | |
const Expr & | e | |||
) | [virtual] |
Theory-specific pretty-printing.
By default, print the top node in AST, and resume pretty-printing the children. The same call e.print(os) can be used in DP-specific printers to use AST printing for the given node. In fact, it is strongly recommended to add e.print(os) as the default for all the cases/kinds that are not handled by the particular pretty-printer.
Reimplemented from CVC3::Theory.
Definition at line 2701 of file theory_bitvector.cpp.
References CVC3::Expr::arity(), CVC3::Expr::begin(), CVC3::BITVECTOR, CVC3::BOOLEXTRACT, CVC3::BVAND, CVC3::BVASHR, CVC3::BVCOMP, CVC3::BVCONST, CVC3::BVGE, CVC3::BVGT, CVC3::BVLE, CVC3::BVLSHR, CVC3::BVLT, CVC3::BVMULT, CVC3::BVNAND, CVC3::BVNEG, CVC3::BVNOR, CVC3::BVOR, CVC3::BVPLUS, CVC3::BVREPEAT, CVC3::BVROTL, CVC3::BVROTR, CVC3::BVSDIV, CVC3::BVSGE, CVC3::BVSGT, CVC3::BVSHL, BVSize(), CVC3::BVSLE, CVC3::BVSLT, CVC3::BVSMOD, CVC3::BVSREM, CVC3::BVSUB, CVC3::BVTOINT, CVC3::BVTYPEPRED, CVC3::BVUDIV, CVC3::BVUMINUS, CVC3::BVUREM, CVC3::BVXNOR, CVC3::BVXOR, CVC3::BVZEROEXTEND, computeBVConst(), CVC3::CONCAT, CVC3::CONST_WIDTH_LEFTSHIFT, CVC3::Theory::d_theoryUsed, DebugAssert, CVC3::Expr::end(), CVC3::EXTRACT, FatalAssert, getBitvectorTypeParam(), getBoolExtractIndex(), getBVConstSize(), getBVConstValue(), getBVIndex(), getBVMultParam(), getBVPlusParam(), CVC3::Op::getExpr(), getExtractHi(), getExtractLow(), getFixedLeftShiftParam(), getFixedRightShiftParam(), CVC3::Expr::getOp(), CVC3::Expr::getOpKind(), getSXIndex(), CVC3::INTTOBV, CVC3::Expr::isApply(), CVC3::Rational::isInteger(), CVC3::ExprStream::lang(), CVC3::LEFTSHIFT, pad(), CVC3::pop(), CVC3::PRESENTATION_LANG, CVC3::Expr::printAST(), CVC3::push(), CVC3::RIGHTSHIFT, CVC3::SMTLIB_LANG, CVC3::space(), and CVC3::SX.
Theory-specific parsing implemented by the DP.
Reimplemented from CVC3::Theory.
Definition at line 3202 of file theory_bitvector.cpp.
References CVC3::Expr::arity(), CVC3::Expr::begin(), CVC3::BITVECTOR, CVC3::BOOLEXTRACT, CVC3::BVAND, CVC3::BVASHR, CVC3::BVCOMP, CVC3::BVCONST, CVC3::BVGE, CVC3::BVGT, CVC3::BVLE, CVC3::BVLSHR, CVC3::BVLT, CVC3::BVMULT, CVC3::BVNAND, CVC3::BVNEG, CVC3::BVNOR, CVC3::BVOR, CVC3::BVPLUS, CVC3::BVREPEAT, CVC3::BVROTL, CVC3::BVROTR, CVC3::BVSDIV, CVC3::BVSGE, CVC3::BVSGT, CVC3::BVSHL, BVSize(), CVC3::BVSLE, CVC3::BVSLT, CVC3::BVSMOD, CVC3::BVSREM, CVC3::BVSUB, CVC3::BVTOINT, CVC3::BVTYPEPRED, CVC3::BVUDIV, CVC3::BVUMINUS, CVC3::BVUREM, CVC3::BVXNOR, CVC3::BVXOR, CVC3::BVZEROEXTEND, computeBVConst(), CVC3::CONCAT, CVC3::CONST_WIDTH_LEFTSHIFT, CVC3::Theory::d_theoryUsed, DebugAssert, CVC3::Expr::end(), CVC3::EXTRACT, FatalAssert, CVC3::Theory::getBaseType(), CVC3::Theory::getEM(), CVC3::Type::getExpr(), CVC3::Rational::getInt(), CVC3::ExprManager::getKind(), CVC3::Expr::getKind(), CVC3::Expr::getOpKind(), CVC3::Expr::getRational(), CVC3::Expr::getString(), CVC3::Expr::getType(), CVC3::ID, CVC3::INTTOBV, CVC3::isRational(), CVC3::LEFTSHIFT, newBitvectorTypeExpr(), newBoolExtractExpr(), newBVAndExpr(), newBVCompExpr(), newBVConstExpr(), newBVExtractExpr(), newBVIndexExpr(), newBVLEExpr(), newBVLTExpr(), newBVMultExpr(), newBVNandExpr(), newBVNegExpr(), newBVNorExpr(), newBVOrExpr(), newBVPlusExpr(), newBVSLEExpr(), newBVSLTExpr(), newBVSubExpr(), newBVUminusExpr(), newBVXnorExpr(), newBVXorExpr(), newConcatExpr(), newFixedConstWidthLeftShiftExpr(), newFixedLeftShiftExpr(), newFixedRightShiftExpr(), newSXExpr(), pad(), CVC3::Theory::parseExpr(), CVC3::RAW_LIST, CVC3::RIGHTSHIFT, CVC3::SX, CVC3::Expr::toString(), and CVC3::TRACE.
Definition at line 291 of file theory_bitvector.h.
References CVC3::Theory::getEM(), and CVC3::ExprManager::newRatExpr().
pads e to be of length len
len | is the desired length of the resulting bitvector | |
e | is the original bitvector of arbitrary length |
Definition at line 4242 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, BVSize(), DebugAssert, CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), newBVExtractExpr(), newBVZeroString(), newConcatExpr(), and CVC3::Expr::toString().
Referenced by newBVConstExpr(), parseExprOp(), and print().
Definition at line 2046 of file theory_bitvector.cpp.
References bitBlastTerm(), BVSize(), FatalAssert, CVC3::Theorem::getRHS(), CVC3::Expr::isBoolConst(), and CVC3::Theory::simplifyExpr().
Referenced by checkSat().
int TheoryBitvector::BVSize | ( | const Expr & | e | ) |
Return the number of bits in the bitvector expression.
Definition at line 45 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, DebugAssert, CVC3::Theory::getBaseType(), getBitvectorTypeParam(), CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), and CVC3::Expr::toString().
Referenced by bitBlastDisEqn(), CVC3::BitvectorTheoremProducer::bitBlastDisEqnRule(), bitBlastEqn(), CVC3::BitvectorTheoremProducer::bitBlastEqnRule(), bitBlastIneqn(), bitBlastTerm(), CVC3::BitvectorTheoremProducer::bitExtractBitwise(), CVC3::BitvectorTheoremProducer::bitExtractBVMult(), CVC3::BitvectorTheoremProducer::bitExtractConcatenation(), CVC3::BitvectorTheoremProducer::bitExtractConstBVMult(), CVC3::BitvectorTheoremProducer::bitExtractExtraction(), CVC3::BitvectorTheoremProducer::bitExtractFixedLeftShift(), CVC3::BitvectorTheoremProducer::bitExtractFixedRightShift(), CVC3::BitvectorTheoremProducer::bitExtractNot(), CVC3::BitvectorTheoremProducer::bitExtractRewrite(), CVC3::BitvectorTheoremProducer::bitwiseConcat(), CVC3::BitvectorTheoremProducer::bitwiseConst(), CVC3::BitvectorTheoremProducer::bitwiseFlatten(), CVC3::BitvectorTheoremProducer::bvConstIneqn(), CVC3::BitvectorTheoremProducer::bvConstMultAssocRule(), CVC3::BitvectorTheoremProducer::bvMultAssocRule(), CVC3::BitvectorTheoremProducer::bvmultBVUminus(), CVC3::BitvectorTheoremProducer::bvmultConst(), CVC3::BitvectorTheoremProducer::bvMultDistRule(), CVC3::BitvectorTheoremProducer::bvPlusAssociativityRule(), CVC3::BitvectorTheoremProducer::bvplusZeroConcatRule(), CVC3::BitvectorTheoremProducer::bvuminusBVConst(), CVC3::BitvectorTheoremProducer::bvuminusBVMult(), CVC3::BitvectorTheoremProducer::bvuminusToBVPlus(), CVC3::BitvectorTheoremProducer::bvuminusVar(), checkSat(), CVC3::BitvectorTheoremProducer::combineLikeTermsRule(), comparebv(), computeType(), CVC3::BitvectorTheoremProducer::constMultToPlus(), CVC3::BitvectorTheoremProducer::constWidthLeftShiftToConcat(), CVC3::BitvectorTheoremProducer::createNewPlusCollection(), CVC3::BitvectorTheoremProducer::eqToBits(), CVC3::BitvectorTheoremProducer::extractBVMult(), CVC3::BitvectorTheoremProducer::extractBVPlus(), CVC3::BitvectorTheoremProducer::extractConcat(), CVC3::BitvectorTheoremProducer::extractWhole(), CVC3::BitvectorTheoremProducer::flattenBVPlus(), CVC3::BitvectorTheoremProducer::flipBVMult(), CVC3::BitvectorTheoremProducer::generalIneqn(), CVC3::BitvectorTheoremProducer::iteExtractRule(), CVC3::BitvectorTheoremProducer::lhsMinusRhsRule(), newBVAndExpr(), newBVCompExpr(), newBVExtractExpr(), newBVNandExpr(), newBVNorExpr(), newBVOrExpr(), newBVSubExpr(), newBVXnorExpr(), newBVXorExpr(), normalizeConcat(), CVC3::BitvectorTheoremProducer::oneCoeffBVMult(), pad(), CVC3::BitvectorTheoremProducer::pad(), CVC3::BitvectorTheoremProducer::padBVMult(), CVC3::BitvectorTheoremProducer::padBVPlus(), parseExprOp(), print(), rewriteBV(), CVC3::BitvectorTheoremProducer::rewriteBVSub(), CVC3::BitvectorTheoremProducer::rightShiftToConcat(), CVC3::BitvectorTheoremProducer::signBVLTRule(), CVC3::BitvectorTheoremProducer::signExtendRule(), CVC3::BitvectorTheoremProducer::typePredBit(), CVC3::BitvectorTheoremProducer::zeroCoeffBVMult(), and CVC3::BitvectorTheoremProducer::zeroPaddingRule().
Type CVC3::TheoryBitvector::newBitvectorType | ( | int | i | ) | [inline] |
Definition at line 301 of file theory_bitvector.h.
References newBitvectorTypeExpr().
Referenced by CVC3::VCL::bitvecType(), and computeType().
Definition at line 3746 of file theory_bitvector.cpp.
References CVC3::BVTYPEPRED, and CVC3::Type::getExpr().
Referenced by computeTypePred().
Expr TheoryBitvector::newBitvectorTypeExpr | ( | int | i | ) |
Definition at line 3736 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, d_maxLength, DebugAssert, and CVC3::Theory::getEM().
Referenced by computeType(), newBitvectorType(), and parseExprOp().
Definition at line 3751 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, CVC3::BVAND, BVSize(), DebugAssert, CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), and CVC3::Expr::toString().
Referenced by CVC3::BitvectorTheoremProducer::bitwiseConcat(), CVC3::BitvectorTheoremProducer::bitwiseConst(), CVC3::BitvectorTheoremProducer::negBVor(), CVC3::VCL::newBVAndExpr(), parseExprOp(), CVC3::BitvectorTheoremProducer::rewriteNAND(), CVC3::BitvectorTheoremProducer::rewriteXNOR(), and CVC3::BitvectorTheoremProducer::rewriteXOR().
Definition at line 3764 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, CVC3::BVAND, BVSize(), DebugAssert, and CVC3::Theory::getEM().
Definition at line 3783 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, CVC3::BVOR, BVSize(), DebugAssert, CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), and CVC3::Expr::toString().
Referenced by CVC3::BitvectorTheoremProducer::bitwiseConcat(), CVC3::BitvectorTheoremProducer::bitwiseConst(), CVC3::BitvectorTheoremProducer::negBVand(), CVC3::VCL::newBVOrExpr(), parseExprOp(), CVC3::BitvectorTheoremProducer::rewriteNOR(), CVC3::BitvectorTheoremProducer::rewriteXNOR(), and CVC3::BitvectorTheoremProducer::rewriteXOR().
Definition at line 3796 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, CVC3::BVOR, BVSize(), DebugAssert, and CVC3::Theory::getEM().
Definition at line 3844 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, BVSize(), CVC3::BVXOR, DebugAssert, CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), and CVC3::Expr::toString().
Referenced by CVC3::BitvectorTheoremProducer::negBVxnor(), CVC3::BitvectorTheoremProducer::negBVxor(), CVC3::VCL::newBVXorExpr(), and parseExprOp().
Definition at line 3857 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, BVSize(), CVC3::BVXOR, DebugAssert, and CVC3::Theory::getEM().
Definition at line 3876 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, BVSize(), CVC3::BVXNOR, DebugAssert, CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), and CVC3::Expr::toString().
Referenced by CVC3::BitvectorTheoremProducer::negBVxnor(), CVC3::VCL::newBVXnorExpr(), and parseExprOp().
Definition at line 3902 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, BVSize(), CVC3::BVXNOR, DebugAssert, and CVC3::Theory::getEM().
Definition at line 3816 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, CVC3::BVNAND, BVSize(), DebugAssert, CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), and CVC3::Expr::toString().
Referenced by CVC3::VCL::newBVNandExpr(), and parseExprOp().
Definition at line 3830 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, CVC3::BVNOR, BVSize(), DebugAssert, CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), and CVC3::Expr::toString().
Referenced by CVC3::VCL::newBVNorExpr(), and parseExprOp().
Definition at line 3889 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, CVC3::BVCOMP, BVSize(), DebugAssert, CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), and CVC3::Expr::toString().
Referenced by parseExprOp().
Definition at line 3921 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, CVC3::BVLT, DebugAssert, CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), and CVC3::Expr::toString().
Referenced by CVC3::BitvectorTheoremProducer::generalIneqn(), CVC3::VCL::newBVLTExpr(), CVC3::BitvectorTheoremProducer::notBVLTRule(), CVC3::BitvectorTheoremProducer::padBVLTRule(), parseExprOp(), and CVC3::BitvectorTheoremProducer::signBVLTRule().
Definition at line 3930 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, CVC3::BVLE, DebugAssert, CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), and CVC3::Expr::toString().
Referenced by CVC3::BitvectorTheoremProducer::generalIneqn(), CVC3::VCL::newBVLEExpr(), CVC3::BitvectorTheoremProducer::notBVLTRule(), CVC3::BitvectorTheoremProducer::padBVLTRule(), parseExprOp(), and CVC3::BitvectorTheoremProducer::signBVLTRule().
Definition at line 3939 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, DebugAssert, CVC3::Theory::getEM(), CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), CVC3::SX, and CVC3::Expr::toString().
Referenced by CVC3::VCL::newSXExpr(), CVC3::BitvectorTheoremProducer::padBVSLTRule(), and parseExprOp().
Definition at line 3952 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, CVC3::BVREPEAT, DebugAssert, CVC3::Theory::getEM(), CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), and CVC3::Expr::toString().
Referenced by parseExprOp().
Definition at line 3966 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, CVC3::BVSLT, DebugAssert, CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), and CVC3::Expr::toString().
Referenced by CVC3::VCL::newBVSLTExpr(), CVC3::BitvectorTheoremProducer::padBVSLTRule(), and parseExprOp().
Definition at line 3975 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, CVC3::BVSLE, DebugAssert, CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), and CVC3::Expr::toString().
Referenced by CVC3::VCL::newBVSLEExpr(), CVC3::BitvectorTheoremProducer::padBVSLTRule(), and parseExprOp().
Definition at line 3984 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, CVC3::BVNEG, DebugAssert, CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), and CVC3::Expr::toString().
Referenced by CVC3::BitvectorTheoremProducer::bvuminusToBVPlus(), CVC3::BitvectorTheoremProducer::constMultToPlus(), CVC3::BitvectorTheoremProducer::iteBVnegRule(), CVC3::BitvectorTheoremProducer::negBVand(), CVC3::BitvectorTheoremProducer::negBVor(), CVC3::BitvectorTheoremProducer::negBVxor(), CVC3::BitvectorTheoremProducer::negConcat(), CVC3::VCL::newBVNegExpr(), parseExprOp(), pushNegationRec(), CVC3::BitvectorTheoremProducer::rewriteNAND(), CVC3::BitvectorTheoremProducer::rewriteNOR(), CVC3::BitvectorTheoremProducer::rewriteXNOR(), CVC3::BitvectorTheoremProducer::rewriteXOR(), and CVC3::BitvectorTheoremProducer::sameKidCheck().
Definition at line 3993 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, CVC3::BVUMINUS, DebugAssert, CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), and CVC3::Expr::toString().
Referenced by CVC3::BitvectorTheoremProducer::lhsMinusRhsRule(), CVC3::VCL::newBVUminusExpr(), parseExprOp(), and CVC3::BitvectorTheoremProducer::rewriteBVSub().
Definition at line 4001 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, CVC3::BOOLEXTRACT, DebugAssert, CVC3::Theory::getEM(), CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), and CVC3::Expr::toString().
Referenced by bitBlastTerm(), CVC3::BitvectorTheoremProducer::bitExtractBitwise(), CVC3::BitvectorTheoremProducer::bitExtractBVMult(), CVC3::BitvectorTheoremProducer::bitExtractBVPlus(), CVC3::BitvectorTheoremProducer::bitExtractBVPlusPreComputed(), CVC3::BitvectorTheoremProducer::bitExtractConcatenation(), CVC3::BitvectorTheoremProducer::bitExtractConstant(), CVC3::BitvectorTheoremProducer::bitExtractConstBVMult(), CVC3::BitvectorTheoremProducer::bitExtractExtraction(), CVC3::BitvectorTheoremProducer::bitExtractFixedLeftShift(), CVC3::BitvectorTheoremProducer::bitExtractFixedRightShift(), CVC3::BitvectorTheoremProducer::bitExtractNot(), CVC3::BitvectorTheoremProducer::bitExtractRewrite(), CVC3::BitvectorTheoremProducer::bitExtractSXRule(), computeModel(), computeModelTerm(), parseExprOp(), rewriteBV(), and CVC3::BitvectorTheoremProducer::zeroPaddingRule().
Definition at line 4013 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, DebugAssert, CVC3::Theory::getEM(), CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), CVC3::LEFTSHIFT, and CVC3::Expr::toString().
Referenced by CVC3::BitvectorTheoremProducer::bitExtractBVMult(), CVC3::BitvectorTheoremProducer::constMultToPlus(), CVC3::VCL::newFixedLeftShiftExpr(), and parseExprOp().
Definition at line 4025 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, CVC3::CONST_WIDTH_LEFTSHIFT, DebugAssert, CVC3::Theory::getEM(), CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), and CVC3::Expr::toString().
Referenced by CVC3::BitvectorTheoremProducer::bitExtractConstBVMult(), newBVExtractExpr(), CVC3::VCL::newFixedConstWidthLeftShiftExpr(), and parseExprOp().
Definition at line 4037 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, DebugAssert, CVC3::Theory::getEM(), CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), CVC3::RIGHTSHIFT, and CVC3::Expr::toString().
Referenced by CVC3::VCL::newFixedRightShiftExpr(), and parseExprOp().
Definition at line 4050 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, CVC3::CONCAT, DebugAssert, CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), and CVC3::Expr::toString().
Referenced by CVC3::BitvectorTheoremProducer::bitwiseConcat(), CVC3::BitvectorTheoremProducer::constWidthLeftShiftToConcat(), CVC3::BitvectorTheoremProducer::extractConcat(), CVC3::BitvectorTheoremProducer::leftShiftToConcat(), CVC3::BitvectorTheoremProducer::negConcat(), CVC3::VCL::newConcatExpr(), normalizeConcat(), pad(), CVC3::BitvectorTheoremProducer::pad(), parseExprOp(), CVC3::BitvectorTheoremProducer::rightShiftToConcat(), and CVC3::BitvectorTheoremProducer::signExtendRule().
Definition at line 4059 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, CVC3::CONCAT, DebugAssert, CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), and CVC3::Expr::toString().
Definition at line 4072 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, CVC3::CONCAT, DebugAssert, and CVC3::Theory::getEM().
Expr TheoryBitvector::newBVConstExpr | ( | const std::string & | s, | |
int | base = 2 | |||
) |
Definition at line 4160 of file theory_bitvector.cpp.
References d_bvConstExprIndex, DebugAssert, CVC3::Theory::getEM(), and CVC3::ExprManager::newExpr().
Referenced by CVC3::BitvectorTheoremProducer::BitvectorTheoremProducer(), CVC3::BitvectorTheoremProducer::bitwiseConst(), CVC3::BitvectorTheoremProducer::bvConstMultAssocRule(), CVC3::BitvectorTheoremProducer::bvmultBVUminus(), CVC3::BitvectorTheoremProducer::bvmultConst(), CVC3::BitvectorTheoremProducer::bvplusConst(), CVC3::BitvectorTheoremProducer::bvuminusBVConst(), CVC3::BitvectorTheoremProducer::bvuminusBVMult(), CVC3::BitvectorTheoremProducer::bvuminusToBVPlus(), CVC3::BitvectorTheoremProducer::bvuminusVar(), computeModel(), CVC3::BitvectorTheoremProducer::concatConst(), CVC3::BitvectorTheoremProducer::constMultToPlus(), CVC3::BitvectorTheoremProducer::constWidthLeftShiftToConcat(), CVC3::BitvectorTheoremProducer::createNewPlusCollection(), CVC3::BitvectorTheoremProducer::extractConst(), CVC3::BitvectorTheoremProducer::leftShiftToConcat(), CVC3::BitvectorTheoremProducer::negConst(), CVC3::VCL::newBVConstExpr(), newBVConstExpr(), newBVOneString(), newBVZeroString(), parseExprOp(), and TheoryBitvector().
Expr TheoryBitvector::newBVConstExpr | ( | const std::vector< bool > & | bits | ) |
Definition at line 4123 of file theory_bitvector.cpp.
References d_bvConstExprIndex, DebugAssert, CVC3::Theory::getEM(), and CVC3::ExprManager::newExpr().
Definition at line 4131 of file theory_bitvector.cpp.
References DebugAssert, CVC3::Rational::isInteger(), newBVConstExpr(), pad(), and CVC3::Rational::toString().
Expr TheoryBitvector::newBVZeroString | ( | int | r | ) |
produces a string of 0's of length bvLength
Definition at line 4100 of file theory_bitvector.cpp.
References DebugAssert, and newBVConstExpr().
Referenced by CVC3::BitvectorTheoremProducer::bitExtractBVMult(), CVC3::BitvectorTheoremProducer::bitExtractConstBVMult(), CVC3::BitvectorTheoremProducer::bitwiseFlatten(), CVC3::BitvectorTheoremProducer::bvmultBVUminus(), CVC3::BitvectorTheoremProducer::bvuminusBVMult(), CVC3::BitvectorTheoremProducer::lhsMinusRhsRule(), pad(), CVC3::BitvectorTheoremProducer::pad(), CVC3::BitvectorTheoremProducer::rightShiftToConcat(), CVC3::BitvectorTheoremProducer::sumNormalizedElements(), and CVC3::BitvectorTheoremProducer::zeroCoeffBVMult().
Expr TheoryBitvector::newBVOneString | ( | int | r | ) |
produces a string of 1's of length bvLength
Definition at line 4112 of file theory_bitvector.cpp.
References DebugAssert, and newBVConstExpr().
Referenced by CVC3::BitvectorTheoremProducer::bitwiseFlatten().
hi and low are bit indices
Definition at line 4181 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, BVSize(), DebugAssert, CVC3::EXTRACT, CVC3::Theory::getEM(), CVC3::Type::getExpr(), getFixedLeftShiftParam(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), CVC3::LEFTSHIFT, newFixedConstWidthLeftShiftExpr(), and CVC3::Expr::toString().
Referenced by CVC3::BitvectorTheoremProducer::bitExtractRewrite(), CVC3::BitvectorTheoremProducer::bitExtractToExtract(), CVC3::BitvectorTheoremProducer::bitwiseConcat(), CVC3::BitvectorTheoremProducer::concatMergeExtract(), CVC3::BitvectorTheoremProducer::constWidthLeftShiftToConcat(), CVC3::BitvectorTheoremProducer::eqToBits(), CVC3::BitvectorTheoremProducer::expandTypePred(), CVC3::BitvectorTheoremProducer::extractBitwise(), CVC3::BitvectorTheoremProducer::extractBVMult(), CVC3::BitvectorTheoremProducer::extractBVPlus(), CVC3::BitvectorTheoremProducer::extractConcat(), CVC3::BitvectorTheoremProducer::extractExtract(), CVC3::BitvectorTheoremProducer::generalIneqn(), CVC3::BitvectorTheoremProducer::iteExtractRule(), CVC3::VCL::newBVExtractExpr(), pad(), CVC3::BitvectorTheoremProducer::pad(), parseExprOp(), rewriteBV(), CVC3::BitvectorTheoremProducer::rightShiftToConcat(), CVC3::BitvectorTheoremProducer::signBVLTRule(), and CVC3::BitvectorTheoremProducer::signExtendRule().
Definition at line 4203 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, BVSize(), CVC3::BVSUB, DebugAssert, CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), and CVC3::Expr::toString().
Referenced by CVC3::VCL::newBVSubExpr(), and parseExprOp().
'numbits' is the number of bits in the result
Definition at line 4218 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, CVC3::BVPLUS, DebugAssert, and CVC3::Theory::getEM().
Referenced by CVC3::BitvectorTheoremProducer::bitExtractBVMult(), CVC3::BitvectorTheoremProducer::bitExtractConstBVMult(), CVC3::BitvectorTheoremProducer::bvMultDistRule(), CVC3::BitvectorTheoremProducer::bvPlusAssociativityRule(), CVC3::BitvectorTheoremProducer::bvplusZeroConcatRule(), CVC3::BitvectorTheoremProducer::bvuminusToBVPlus(), CVC3::BitvectorTheoremProducer::constMultToPlus(), CVC3::BitvectorTheoremProducer::extractBVPlus(), CVC3::BitvectorTheoremProducer::flattenBVPlus(), CVC3::BitvectorTheoremProducer::lhsMinusRhsRule(), CVC3::VCL::newBVPlusExpr(), CVC3::BitvectorTheoremProducer::padBVPlus(), parseExprOp(), CVC3::BitvectorTheoremProducer::rewriteBVSub(), and CVC3::BitvectorTheoremProducer::sumNormalizedElements().
accepts an integer, r, and bitvector, t1, and returns r.t1
Definition at line 4085 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, CVC3::BVMULT, DebugAssert, CVC3::Theory::getEM(), CVC3::Type::getExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getType(), and CVC3::Expr::toString().
Referenced by CVC3::BitvectorTheoremProducer::bvConstMultAssocRule(), CVC3::BitvectorTheoremProducer::bvMultAssocRule(), CVC3::BitvectorTheoremProducer::bvmultBVUminus(), CVC3::BitvectorTheoremProducer::bvMultDistRule(), CVC3::BitvectorTheoremProducer::bvuminusBVMult(), CVC3::BitvectorTheoremProducer::bvuminusVar(), CVC3::BitvectorTheoremProducer::createNewPlusCollection(), CVC3::BitvectorTheoremProducer::extractBVMult(), CVC3::BitvectorTheoremProducer::flipBVMult(), CVC3::VCL::newBVMultExpr(), CVC3::BitvectorTheoremProducer::padBVMult(), CVC3::BitvectorTheoremProducer::padBVPlus(), and parseExprOp().
int TheoryBitvector::getBitvectorTypeParam | ( | const Expr & | e | ) |
Definition at line 4267 of file theory_bitvector.cpp.
References CVC3::BITVECTOR, DebugAssert, CVC3::Rational::getInt(), CVC3::Expr::getKind(), CVC3::Expr::getRational(), and CVC3::Expr::toString().
Referenced by BVSize(), computeModel(), computeModelTerm(), CVC3::BitvectorTheoremProducer::expandTypePred(), getBitvectorTypeParam(), print(), and CVC3::Translator::printArrayExpr().
int CVC3::TheoryBitvector::getBitvectorTypeParam | ( | const Type & | t | ) | [inline] |
Definition at line 356 of file theory_bitvector.h.
References getBitvectorTypeParam(), and CVC3::Type::getExpr().
Definition at line 4275 of file theory_bitvector.cpp.
References CVC3::BVTYPEPRED, DebugAssert, CVC3::Expr::getOpExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::isApply(), and CVC3::Expr::toString().
Referenced by CVC3::BitvectorTheoremProducer::expandTypePred().
Definition at line 4282 of file theory_bitvector.cpp.
References CVC3::BVTYPEPRED, DebugAssert, CVC3::Expr::getOpKind(), and CVC3::Expr::toString().
Referenced by CVC3::BitvectorTheoremProducer::expandTypePred().
int TheoryBitvector::getSXIndex | ( | const Expr & | e | ) |
Definition at line 4295 of file theory_bitvector.cpp.
References DebugAssert, CVC3::Rational::getInt(), CVC3::Expr::getOpExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getRational(), CVC3::Expr::isApply(), CVC3::SX, and CVC3::Expr::toString().
Referenced by computeType(), and print().
int TheoryBitvector::getBVIndex | ( | const Expr & | e | ) |
Definition at line 4301 of file theory_bitvector.cpp.
References CVC3::BVREPEAT, CVC3::BVROTL, CVC3::BVROTR, CVC3::BVZEROEXTEND, DebugAssert, CVC3::Rational::getInt(), CVC3::Expr::getOpExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getRational(), CVC3::Expr::isApply(), and CVC3::Expr::toString().
Referenced by computeType(), and print().
int TheoryBitvector::getBoolExtractIndex | ( | const Expr & | e | ) |
Definition at line 4288 of file theory_bitvector.cpp.
References CVC3::BOOLEXTRACT, DebugAssert, CVC3::Rational::getInt(), CVC3::Expr::getOpExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getRational(), CVC3::Expr::isApply(), and CVC3::Expr::toString().
Referenced by CVC3::BitvectorTheoremProducer::bitBlastDisEqnRule(), CVC3::BitvectorTheoremProducer::bitBlastEqnRule(), bitBlastTerm(), CVC3::BitvectorTheoremProducer::bitExtractBVPlusPreComputed(), CVC3::BitvectorTheoremProducer::bitExtractRewrite(), CVC3::BitvectorTheoremProducer::bitExtractToExtract(), CVC3::BitvectorTheoremProducer::bitvectorFalseRule(), CVC3::BitvectorTheoremProducer::bitvectorTrueRule(), computeType(), CVC3::BitvectorTheoremProducer::generalIneqn(), print(), rewriteBV(), rewriteConst(), and setup().
int TheoryBitvector::getFixedLeftShiftParam | ( | const Expr & | e | ) |
Definition at line 4311 of file theory_bitvector.cpp.
References CVC3::CONST_WIDTH_LEFTSHIFT, DebugAssert, CVC3::Rational::getInt(), CVC3::Expr::getOpExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getRational(), CVC3::Expr::isApply(), CVC3::LEFTSHIFT, and CVC3::Expr::toString().
Referenced by CVC3::BitvectorTheoremProducer::bitExtractFixedLeftShift(), computeType(), CVC3::BitvectorTheoremProducer::constWidthLeftShiftToConcat(), CVC3::BitvectorTheoremProducer::leftShiftToConcat(), newBVExtractExpr(), and print().
int TheoryBitvector::getFixedRightShiftParam | ( | const Expr & | e | ) |
Definition at line 4321 of file theory_bitvector.cpp.
References DebugAssert, CVC3::Rational::getInt(), CVC3::Expr::getOpExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getRational(), CVC3::Expr::isApply(), CVC3::RIGHTSHIFT, and CVC3::Expr::toString().
Referenced by CVC3::BitvectorTheoremProducer::bitExtractFixedRightShift(), computeType(), print(), and CVC3::BitvectorTheoremProducer::rightShiftToConcat().
int TheoryBitvector::getExtractHi | ( | const Expr & | e | ) |
Definition at line 4335 of file theory_bitvector.cpp.
References DebugAssert, CVC3::EXTRACT, CVC3::Rational::getInt(), CVC3::Expr::getOpExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getRational(), CVC3::Expr::isApply(), and CVC3::Expr::toString().
Referenced by CVC3::BitvectorTheoremProducer::bitExtractExtraction(), computeType(), CVC3::BitvectorTheoremProducer::concatMergeExtract(), CVC3::BitvectorTheoremProducer::extractBitwise(), CVC3::BitvectorTheoremProducer::extractBVMult(), CVC3::BitvectorTheoremProducer::extractBVPlus(), CVC3::BitvectorTheoremProducer::extractConcat(), CVC3::BitvectorTheoremProducer::extractConst(), CVC3::BitvectorTheoremProducer::extractExtract(), CVC3::BitvectorTheoremProducer::extractWhole(), CVC3::BitvectorTheoremProducer::iteExtractRule(), normalizeConcat(), print(), and rewriteBV().
int TheoryBitvector::getExtractLow | ( | const Expr & | e | ) |
Definition at line 4328 of file theory_bitvector.cpp.
References DebugAssert, CVC3::EXTRACT, CVC3::Rational::getInt(), CVC3::Expr::getOpExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getRational(), CVC3::Expr::isApply(), and CVC3::Expr::toString().
Referenced by CVC3::BitvectorTheoremProducer::bitExtractExtraction(), computeType(), CVC3::BitvectorTheoremProducer::concatMergeExtract(), CVC3::BitvectorTheoremProducer::extractBitwise(), CVC3::BitvectorTheoremProducer::extractBVMult(), CVC3::BitvectorTheoremProducer::extractBVPlus(), CVC3::BitvectorTheoremProducer::extractConcat(), CVC3::BitvectorTheoremProducer::extractConst(), CVC3::BitvectorTheoremProducer::extractExtract(), CVC3::BitvectorTheoremProducer::extractWhole(), CVC3::BitvectorTheoremProducer::iteExtractRule(), normalizeConcat(), print(), and rewriteBV().
int TheoryBitvector::getBVPlusParam | ( | const Expr & | e | ) |
Definition at line 4342 of file theory_bitvector.cpp.
References CVC3::AST_LANG, CVC3::BVPLUS, DebugAssert, CVC3::Rational::getInt(), CVC3::Expr::getOpExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getRational(), CVC3::Expr::isApply(), and CVC3::Expr::toString().
Referenced by CVC3::BitvectorTheoremProducer::bitExtractBVPlus(), CVC3::BitvectorTheoremProducer::bitExtractBVPlusPreComputed(), CVC3::BitvectorTheoremProducer::bvplusConst(), CVC3::BitvectorTheoremProducer::bvplusZeroConcatRule(), computeType(), and print().
int TheoryBitvector::getBVMultParam | ( | const Expr & | e | ) |
Definition at line 4350 of file theory_bitvector.cpp.
References CVC3::AST_LANG, CVC3::BVMULT, DebugAssert, CVC3::Rational::getInt(), CVC3::Expr::getOpExpr(), CVC3::Expr::getOpKind(), CVC3::Expr::getRational(), CVC3::Expr::isApply(), and CVC3::Expr::toString().
Referenced by computeType(), and print().
unsigned CVC3::TheoryBitvector::getBVConstSize | ( | const Expr & | e | ) |
Definition at line 4407 of file theory_bitvector.cpp.
References CVC3::BVCONST, DebugAssert, CVC3::Expr::getExprValue(), and CVC3::Expr::getKind().
Referenced by CVC3::BitvectorTheoremProducer::andOne(), CVC3::BitvectorTheoremProducer::bitwiseConst(), computeBVConst(), computeNegBVConst(), computeType(), CVC3::BitvectorTheoremProducer::concatConst(), CVC3::BitvectorTheoremProducer::negConst(), normalizeConcat(), CVC3::BitvectorTheoremProducer::orOne(), and print().
bool CVC3::TheoryBitvector::getBVConstValue | ( | const Expr & | e, | |
int | i | |||
) |
Definition at line 4415 of file theory_bitvector.cpp.
References CVC3::BVCONST, DebugAssert, CVC3::Expr::getExprValue(), and CVC3::Expr::getKind().
Referenced by CVC3::BitvectorTheoremProducer::andOne(), CVC3::BitvectorTheoremProducer::bitExtractConstant(), CVC3::BitvectorTheoremProducer::bitExtractConstBVMult(), CVC3::BitvectorTheoremProducer::bitwiseConst(), computeBVConst(), computeNegBVConst(), CVC3::BitvectorTheoremProducer::concatConst(), CVC3::BitvectorTheoremProducer::extractConst(), CVC3::BitvectorTheoremProducer::negConst(), normalizeConcat(), CVC3::BitvectorTheoremProducer::orOne(), and print().
computes the integer value of a bitvector constant
Definition at line 4424 of file theory_bitvector.cpp.
References CVC3::BVCONST, d_bv32Flag, DebugAssert, getBVConstSize(), getBVConstValue(), CVC3::Expr::getKind(), and CVC3::Expr::toString().
Referenced by CVC3::BitvectorTheoremProducer::andZero(), CVC3::BitvectorTheoremProducer::bvConstIneqn(), CVC3::BitvectorTheoremProducer::bvConstMultAssocRule(), CVC3::BitvectorTheoremProducer::bvmultConst(), CVC3::BitvectorTheoremProducer::bvplusConst(), CVC3::BitvectorTheoremProducer::bvplusZeroConcatRule(), CVC3::BitvectorTheoremProducer::bvuminusBVConst(), CVC3::BitvectorTheoremProducer::collectLikeTermsOfPlus(), normalizeBVArith(), normalizeConcat(), CVC3::BitvectorTheoremProducer::oneCoeffBVMult(), CVC3::BitvectorTheoremProducer::orZero(), parseExprOp(), print(), rewriteBV(), CVC3::BitvectorTheoremProducer::signBVLTRule(), simplifyOp(), and CVC3::BitvectorTheoremProducer::zeroCoeffBVMult().
computes the integer value of ~c+1 or BVUMINUS(c)
Definition at line 4443 of file theory_bitvector.cpp.
References CVC3::BVCONST, d_bv32Flag, DebugAssert, getBVConstSize(), getBVConstValue(), CVC3::Expr::getKind(), and CVC3::Expr::toString().
Referenced by CVC3::BitvectorTheoremProducer::bvmultBVUminus(), CVC3::BitvectorTheoremProducer::bvuminusBVConst(), and CVC3::BitvectorTheoremProducer::bvuminusBVMult().
int CVC3::TheoryBitvector::getMaxSize | ( | ) | [inline] |
Definition at line 100 of file theory_bitvector.h.
Referenced by bitBlastDisEqn(), bitBlastEqn(), bitBlastIneqn(), bitBlastTerm(), flattenBVPlus(), normalizeBVArith(), normalizeConcat(), pushNegationRec(), rewriteBV(), rewriteConst(), signExtendBVLT(), simplifyOp(), solve(), TheoryBitvector(), and ~TheoryBitvector().
size_t CVC3::TheoryBitvector::d_bvConstExprIndex [private] |
MemoryManager index for BVConstExpr subclass.
Definition at line 102 of file theory_bitvector.h.
Referenced by newBVConstExpr(), and TheoryBitvector().
size_t CVC3::TheoryBitvector::d_bvPlusExprIndex [private] |
Definition at line 103 of file theory_bitvector.h.
size_t CVC3::TheoryBitvector::d_bvParameterExprIndex [private] |
Definition at line 104 of file theory_bitvector.h.
size_t CVC3::TheoryBitvector::d_bvTypePredExprIndex [private] |
Definition at line 105 of file theory_bitvector.h.
counts bitblasted equalities
Definition at line 120 of file theory_bitvector.h.
Referenced by bitBlastEqn().
counts bitblasted disequalities
Definition at line 122 of file theory_bitvector.h.
Referenced by bitBlastDisEqn().
const bool* CVC3::TheoryBitvector::d_booleanRWFlag [private] |
const bool* CVC3::TheoryBitvector::d_boolExtractCacheFlag [private] |
const bool* CVC3::TheoryBitvector::d_bv32Flag [private] |
flag which indicates that all arithmetic is 32 bit with no overflow
Definition at line 130 of file theory_bitvector.h.
Referenced by computeBVConst(), and computeNegBVConst().
const bool* CVC3::TheoryBitvector::d_rewriteFlag [private] |
Command line flag: rewrite bitvector expressions.
Definition at line 132 of file theory_bitvector.h.
Referenced by rewrite().
const bool* CVC3::TheoryBitvector::d_concatRewriteFlag [private] |
Command line flag: concatenation normal form rewrite bitvector expressions.
Definition at line 134 of file theory_bitvector.h.
Referenced by normalizeConcat().
const bool* CVC3::TheoryBitvector::d_bvplusRewriteFlag [private] |
Command line flag: bvplus normal form rewrite bitvector expressions.
Definition at line 136 of file theory_bitvector.h.
const bool* CVC3::TheoryBitvector::d_rwBitBlastFlag [private] |
Commant line flag: rewrite while bit-blasting.
Definition at line 138 of file theory_bitvector.h.
Referenced by bitBlastTerm().
const bool* CVC3::TheoryBitvector::d_cnfBitBlastFlag [private] |
Commant line flag: bit-blast equalities in CNF converter.
Definition at line 140 of file theory_bitvector.h.
Referenced by rewriteAtomic().
const bool* CVC3::TheoryBitvector::d_lhsMinusRhsFlag [private] |
Command line flag: enable lhs-minus-rhs-rule for lhs=rhs.
Definition at line 142 of file theory_bitvector.h.
Referenced by rewriteBV().
const bool* CVC3::TheoryBitvector::d_pushNegationFlag [private] |
Command line flag: enable pushnegation.
Definition at line 144 of file theory_bitvector.h.
Referenced by simplifyOp().
CDMap<Expr,Theorem> CVC3::TheoryBitvector::d_bitvecCache [private] |
Cache for storing the results of the bitBlastTerm function.
Definition at line 147 of file theory_bitvector.h.
Referenced by bitBlastTerm().
ExprMap<Theorem> CVC3::TheoryBitvector::d_pushNegCache [private] |
Cache for pushNegation(). it is ok that this is cache is.
Definition at line 152 of file theory_bitvector.h.
Referenced by pushNegation(), and pushNegationRec().
CDList<Theorem> CVC3::TheoryBitvector::d_eq [private] |
Backtracking queue for equalities (to delay them till checkSat() call).
Definition at line 155 of file theory_bitvector.h.
CDO<size_t> CVC3::TheoryBitvector::d_eqIdx [private] |
CDO<size_t> CVC3::TheoryBitvector::d_eqBlastIdx [private] |
Pointer to the next equality in d_eq which is not bit-blasted yet.
Definition at line 159 of file theory_bitvector.h.
CDList<Theorem> CVC3::TheoryBitvector::d_diseq [private] |
Backtracking queue for disequalities (to delay them till checkSat() call).
Definition at line 161 of file theory_bitvector.h.
CDO<size_t> CVC3::TheoryBitvector::d_diseqIdx [private] |
Pointer to the next unasserted disequality in d_diseq.
Definition at line 163 of file theory_bitvector.h.
CDMap<Expr,bool> CVC3::TheoryBitvector::d_staleDB [private] |
CDList<Theorem> CVC3::TheoryBitvector::d_tccs [private] |
CDO<size_t> CVC3::TheoryBitvector::d_tccsIdx [private] |
CDMap<Expr,Expr> CVC3::TheoryBitvector::d_sharedSubterms [private] |
Backtracking database of subterms of shared terms.
Definition at line 171 of file theory_bitvector.h.
Referenced by addSharedTerm(), and update().
Backtracking database of subterms of shared terms.
Definition at line 173 of file theory_bitvector.h.
Referenced by addSharedTerm(), and checkSat().
CDMap<Expr, Theorem> CVC3::TheoryBitvector::d_typePredsCache [private] |
Expr CVC3::TheoryBitvector::d_bvZero [private] |
Constant 1-bit bit-vector 0bin0.
Definition at line 180 of file theory_bitvector.h.
Referenced by bvZero(), and TheoryBitvector().
Expr CVC3::TheoryBitvector::d_bvOne [private] |
Constant 1-bit bit-vector 0bin0.
Definition at line 182 of file theory_bitvector.h.
Referenced by bvOne(), and TheoryBitvector().
int CVC3::TheoryBitvector::d_maxLength [private] |
Max size of any bitvector we've seen.
Definition at line 189 of file theory_bitvector.h.
Referenced by getMaxSize(), and newBitvectorTypeExpr().
CDO<unsigned> CVC3::TheoryBitvector::d_index1 [private] |
Definition at line 263 of file theory_bitvector.h.
Referenced by CVC3::BitvectorTheoremProducer::computeCarryPreComputed().
Definition at line 264 of file theory_bitvector.h.
Referenced by CVC3::BitvectorTheoremProducer::computeCarryPreComputed().