#include <theory.h>
Inheritance diagram for CVCL::Theory:
Author: Clark Barrett
Created: Thu Jan 30 16:37:56 2003
This is an abstract class which all theories should inherit from. In addition to providing an abstract theory interface, it provides access functions to core functionality. However, in order to avoid duplicating the data structures which implement this functionality, all the functionality is stored in a separate class (which actually derives from this one) called TheoryCore. These two classes work closely together to provide the core functionality.
Definition at line 72 of file theory.h.
|
Private default constructor. Everyone besides TheoryCore has to use the public constructor which sets up all the provided functionality automatically. Definition at line 40 of file theory.cpp. |
|
Exposed constructor. Note that each instance of Theory must have a name (mostly for debugging purposes). |
|
Destructor.
Definition at line 51 of file theory.cpp. |
|
|
|
|
Get the name of the theory (for debugging purposes).
Definition at line 107 of file theory.h. References d_name. Referenced by addSplitter(), TheoryCore::assertFormula(), assignValue(), TheoryCore::buildModel(), TheoryCore::checkSATCore(), TheoryCore::collectModelValues(), CVCL::TypeComputerCore::computeType(), TheoryCore::enqueueEquality(), enqueueEquality(), enqueueFact(), getBaseType(), getTCC(), getTypePred(), CVCL::operator<<(), TheoryCore::parseExpr(), TheoryCore::processFactQueue(), TheoryCore::processNotify(), TheoryCore::refineCounterExample(), TheoryCore::rewriteCore(), TheoryCore::rewriteLiteral(), TheoryCore::setInconsistent(), setInconsistent(), setupCC(), TheoryCore::setupTerm(), simplify(), TheoryCore::simplifyFullRec(), simplifyRec(), TheoryCore::solve(), and updateCC(). |
|
Get whether theory has been used (for smtlib translator).
Reimplemented in CVCL::TheoryArith. Definition at line 110 of file theory.h. References d_theoryUsed. |
|
Check if the current context is inconsistent.
Reimplemented in CVCL::TheoryCore. Definition at line 89 of file theory.cpp. References d_theoryCore, and CVCL::TheoryCore::inconsistent(). Referenced by CVCL::TheoryArith::assignVariables(), CVCL::TheoryArith::checkSat(), CVCL::TheoryArith::processBuffer(), CVCL::TheoryRecords::update(), and CVCL::TheoryArith::update(). |
|
Make the context inconsistent; The formula proved by e must FALSE.
Reimplemented in CVCL::TheoryCore. Definition at line 95 of file theory.cpp. References CVCL::Debug::counter(), d_theoryCore, CVCL::debugger, getName(), IF_DEBUG(), CVCL::TheoryCore::setInconsistent(), and CVCL::TRACE. Referenced by CVCL::TheoryArith::assertFact(), CVCL::TheoryBitvector::collectSharedSubterms(), CVCL::TheoryDatatypeLazy::mergeLabels(), CVCL::TheoryDatatype::mergeLabels(), CVCL::TheoryArith::processBuffer(), and CVCL::TheoryArith::projectInequalities(). |
|
Mark the current decision branch as possibly incomplete. This should be set when a decision procedure uses an incomplete algorithm, and cannot guarantee satisfiability after the final checkSat() call with full effort. An example would be instantiation of universal quantifiers. A decision procedure can provide a reason for incompleteness, which will be reported back to the user. Reimplemented in CVCL::TheoryCore. Referenced by CVCL::TheoryArith::doSolve(), CVCL::TheoryQuant::naiveCheckSat(), CVCL::TheoryArith::projectInequalities(), CVCL::TheoryQuant::semCheckSat(), and CVCL::TheoryQuant::synCheckSat(). |
|
Simplify a term e and return a Theorem(e==e').
Reimplemented in CVCL::TheoryCore. Definition at line 111 of file theory.cpp. References d_theoryCore, getName(), CVCL::TheoryCore::simplify(), and CVCL::TRACE. Referenced by CVCL::TheoryBitvector::assertFact(), CVCL::TheoryBitvector::checkSat(), CVCL::TheoryBitvector::computeModel(), CVCL::TheoryBitvector::normalizeConcat(), CVCL::TheoryUF::rewrite(), CVCL::TheoryDatatype::rewrite(), CVCL::TheoryBitvector::rewriteAtomic(), CVCL::TheoryBitvector::rewriteBV(), and simplifyExpr(). |
|
Simplify a term e w.r.t. the current context.
Definition at line 393 of file theory.h. References CVCL::Theorem::getRHS(), and simplify(). Referenced by CVCL::TheoryArith::canonSimplify(), CVCL::SearchEngineFast::findSplitter(), CVCL::TheoryQuant::recGoodSemMatch(), CVCL::TheoryQuant::recSynMatch(), and CVCL::TheoryArray::setup(). |
|
Recursive call of the simplifier. Should only be called from simplifyOp().
Reimplemented in CVCL::TheoryCore. Definition at line 120 of file theory.cpp. References d_theoryCore, getName(), CVCL::TheoryCore::simplifyRec(), and CVCL::TRACE. Referenced by CVCL::TheoryBitvector::simplifyOp(), and simplifyOp(). |
|
|
Enqueue a new equality e: e1==e2, where e2 is i-leaf simplified.
Reimplemented in CVCL::TheoryCore. Definition at line 136 of file theory.cpp. References d_theoryCore, CVCL::TheoryCore::enqueueEquality(), getName(), CVCL::Theorem::isRewrite(), CVCL::Theorem::toString(), and CVCL::TRACE. Referenced by CVCL::TheoryRecords::update(), CVCL::TheoryBitvector::update(), CVCL::TheoryArray::update(), and CVCL::TheoryArith::update(). |
|
Handle new equalities (usually asserted through addFact). INVARIANT: the Theorem 'e' is an equality e1==e2, where e2 is i-leaf simplified in the current context, or a conjunction of such equalities. IMPORTANT: decision procedures should NOT use this function in update(); use enqueueEquality() instead. Reimplemented in CVCL::TheoryCore. Definition at line 146 of file theory.cpp. References CVCL::TheoryCore::assertEqualities(), and d_theoryCore. |
|
Parse the generic expression. This method should be used in parseExprOp() for recursive calls to subexpressions, and is the method called by the command processor. Reimplemented in CVCL::TheoryCore. Definition at line 383 of file theory.cpp. References d_theoryCore, CVCL::TheoryCore::parseExpr(), and CVCL::TRACE. Referenced by CVCL::TheoryUF::parseExprOp(), CVCL::TheoryRecords::parseExprOp(), CVCL::TheoryQuant::parseExprOp(), CVCL::TheoryDatatype::parseExprOp(), CVCL::TheoryBitvector::parseExprOp(), CVCL::TheoryArray::parseExprOp(), and CVCL::TheoryArith::parseExprOp(). |
|
Assigns t a concrete value val. Used in model generation.
Reimplemented in CVCL::TheoryCore. Definition at line 159 of file theory.cpp. References CVCL::TheoryCore::assignValue(), d_theoryCore, getName(), CVCL::Expr::toString(), and CVCL::TRACE. Referenced by CVCL::TheoryArith::assignVariables(), CVCL::TheoryUF::computeModel(), CVCL::TheoryRecords::computeModel(), CVCL::TheoryBitvector::computeModel(), CVCL::TheoryArray::computeModel(), and computeModel(). |
|
Record a derived assignment to a variable (LHS).
Reimplemented in CVCL::TheoryCore. Definition at line 167 of file theory.cpp. References CVCL::TheoryCore::assignValue(), d_theoryCore, getName(), and CVCL::TRACE. |
|
Register new kinds with the given theory.
|
|
Register a new theory.
Referenced by CVCL::TheoryArith::TheoryArith(), CVCL::TheoryArray::TheoryArray(), CVCL::TheoryBitvector::TheoryBitvector(), CVCL::TheoryDatatype::TheoryDatatype(), CVCL::TheoryQuant::TheoryQuant(), CVCL::TheoryRecords::TheoryRecords(), CVCL::TheorySimulate::TheorySimulate(), and CVCL::TheoryUF::TheoryUF(). |
|
Return the number of registered theories.
Definition at line 199 of file theory.cpp. References CVCL::TheoryCore::d_theories, and d_theoryCore. Referenced by TheoryCore::buildModel(), TheoryCore::checkSATCore(), TheoryCore::processFactQueue(), TheoryCore::refineCounterExample(), and TheoryCore::setInconsistent(). |
|
Test whether a kind maps to any theory.
Definition at line 205 of file theory.cpp. References d_theoryCore, and CVCL::TheoryCore::d_theoryMap. Referenced by TheoryCore::parseExpr(), and CVCL::PrettyPrinterCore::print(). |
|
Return the theory associated with a kind.
Definition at line 210 of file theory.cpp. References d_theoryCore, CVCL::TheoryCore::d_theoryMap, getEM(), and CVCL::ExprManager::getKindName(). Referenced by TheoryCore::assertFormula(), TheoryCore::buildModel(), CVCL::TypeComputerCore::checkType(), TheoryCore::collectBasicVars(), TheoryCore::collectModelValues(), TheoryCore::computeTCC(), CVCL::TypeComputerCore::computeType(), TheoryCore::computeTypePred(), getBaseType(), getTCC(), getTypePred(), isLeaf(), isLeafIn(), TheoryCore::parseExpr(), CVCL::PrettyPrinterCore::print(), TheoryCore::rewrite(), TheoryCore::rewriteCore(), TheoryCore::rewriteLiteral(), TheoryCore::rewriteN(), TheoryCore::setupSubFormulas(), TheoryCore::setupTerm(), TheoryCore::simplifyFullRec(), TheoryCore::solve(), and theoryOf(). |
|
Return the theory associated with an Expr.
Definition at line 218 of file theory.cpp. References d_theoryCore, CVCL::TheoryCore::d_theoryMap, getBaseType(), getEM(), CVCL::Type::getExpr(), CVCL::Expr::getKind(), CVCL::ExprManager::getKindName(), CVCL::Expr::getOpKind(), CVCL::Expr::isApply(), CVCL::Expr::isEq(), CVCL::Expr::isNot(), CVCL::Expr::isNull(), CVCL::Expr::isVar(), and theoryOf(). |
|
Return the theorem that e is equal to its find.
Definition at line 242 of file theory.cpp. References CVCL::Expr::getFind(), CVCL::Theorem::getLHS(), CVCL::Theorem::getRHS(), CVCL::Expr::hasFind(), reflexivityRule(), CVCL::Expr::setFind(), and transitivityRule(). Referenced by TheoryCore::assertEqualities(), TheoryCore::assertFormula(), TheoryCore::assignValue(), TheoryCore::buildModel(), CVCL::TheoryArith::canonSimplify(), TheoryCore::checkSat(), CVCL::TheoryBitvector::checkSat(), CVCL::SearchSimple::checkValidRec(), TheoryCore::collectBasicVars(), computeModel(), TheoryCore::computeModelBasic(), findExpr(), CVCL::TheoryArith::isStale(), CVCL::TheoryDatatypeLazy::mergeLabels(), TheoryCore::processEquality(), TheoryCore::processUpdates(), TheoryCore::rewrite(), CVCL::TheoryBitvector::rewriteAux(), CVCL::TheoryBitvector::rewriteBV(), TheoryCore::rewriteCore(), CVCL::TheoryRecords::setup(), TheoryCore::simplifyFullRec(), TheoryCore::simplifyInPlaceRec(), CVCL::TheoryUF::update(), CVCL::TheoryRecords::update(), CVCL::TheoryBitvector::update(), CVCL::TheoryArray::update(), CVCL::TheoryArith::update(), and updateHelper(). |
|
Return the find of e, or e if it has no find.
Definition at line 457 of file theory.h. References find(), CVCL::Theorem::getRHS(), and CVCL::Expr::hasFind(). Referenced by CVCL::TheoryArith::assignVariables(), CVCL::TheoryDatatype::canCollapse(), CVCL::TheoryDatatypeLazy::checkSat(), CVCL::TheoryDatatype::checkSat(), CVCL::TheoryArith::computeModelBasic(), CVCL::TheoryArith::computeModelTerm(), CVCL::TheoryArith::findRationalBound(), CVCL::DecisionEngine::findSplitterRec(), CVCL::TheoryDatatypeLazy::initializeLabels(), CVCL::TheoryDatatype::initializeLabels(), CVCL::TheoryDatatypeLazy::instantiate(), CVCL::TheoryDatatype::instantiate(), CVCL::TheoryDatatype::mergeLabels(), CVCL::TheoryArith::refineCounterExample(), and CVCL::TheoryUF::update(). |
|
Compute the TCC of e, or the subtyping predicate, if e is a type.
Definition at line 257 of file theory.cpp. References computeTCC(), CVCL::Expr::getKind(), getName(), CVCL::Expr::isNull(), CVCL::Expr::isVar(), CVCL::Expr::lookupTCC(), CVCL::Expr::setTCC(), theoryOf(), CVCL::TRACE, and trueExpr(). Referenced by CVCL::TheoryUF::computeTCC(), CVCL::TheoryQuant::computeTCC(), TheoryCore::computeTCC(), computeTCC(), and CVCL::CoreTheoremProducer::queryTCC(). |
|
Compute (or look up in cache) the base type of e and return the result.
Definition at line 273 of file theory.cpp. References CVCL::Expr::getType(). Referenced by CVCL::TheoryRecords::assertFact(), TheoryCore::assertFormula(), CVCL::TheoryBitvector::bitBlastEqn(), CVCL::BitvectorTheoremProducer::bitExtractConcatenation(), TheoryCore::buildModel(), CVCL::TheoryBitvector::BVSize(), checkRewriteType(), TheoryCore::collectBasicVars(), TheoryCore::collectModelValues(), CVCL::TheoryUF::computeBaseType(), CVCL::TheoryRecords::computeBaseType(), TheoryCore::computeBaseType(), CVCL::TheoryArray::computeBaseType(), CVCL::TheoryRecords::computeModel(), CVCL::TheoryArray::computeModel(), CVCL::TheoryUF::computeType(), CVCL::TheorySimulate::computeType(), CVCL::TheoryRecords::computeType(), CVCL::TheoryDatatype::computeType(), TheoryCore::computeType(), CVCL::TheoryBitvector::computeType(), CVCL::TheoryArray::computeType(), CVCL::TheoryArith::computeType(), CVCL::BitvectorTheoremProducer::eqToBits(), CVCL::RecordsTheoremProducer::expandRecord(), CVCL::RecordsTheoremProducer::expandTuple(), CVCL::TheoryQuant::findInstAssumptions(), CVCL::Translator::preprocessRec(), CVCL::TheoryArith::processRealEq(), CVCL::TheoryQuant::recGoodSemMatch(), CVCL::TheoryQuant::recInstantiate(), CVCL::TheoryQuant::recursiveMap(), CVCL::TheoryArith::refineCounterExample(), TheoryCore::rewriteLiteral(), CVCL::TheoryQuant::semCheckSat(), CVCL::TheoryRecords::setup(), CVCL::TheoryBitvector::setupExpr(), theoryOf(), CVCL::BitvectorTheoremProducer::typePredBit(), and CVCL::BitvectorTheoremProducer::zeroPaddingRule(). |
|
Compute the base type from an arbitrary type.
Definition at line 279 of file theory.cpp. References computeBaseType(), CVCL::Type::getExpr(), getName(), CVCL::Type::isNull(), CVCL::Expr::isNull(), CVCL::Expr::lookupType(), CVCL::Expr::setType(), theoryOf(), CVCL::Type::toString(), and CVCL::TRACE. |
|
Calls the correct theory to compute a type predicate.
Definition at line 298 of file theory.cpp. References computeTypePred(), CVCL::Type::getExpr(), CVCL::Expr::getKind(), getName(), theoryOf(), CVCL::Type::toString(), and CVCL::TRACE. Referenced by CVCL::TheoryUF::computeTCC(), CVCL::TheorySimulate::computeTCC(), CVCL::TheoryRecords::computeTCC(), CVCL::TheoryArray::computeTCC(), CVCL::TheoryRecords::computeTypePred(), TheoryCore::computeTypePred(), and CVCL::CoreTheoremProducer::typePred(). |
|
Update the children of the term e. When a decision procedure receives a call to update() because a child of a term 'e' has changed, this method can be called to compute the new value of 'e'.
Definition at line 309 of file theory.cpp. References CVCL::Expr::arity(), d_commonRules, find(), CVCL::Theorem::getLHS(), CVCL::Theorem::getRHS(), reflexivityRule(), and CVCL::CommonProofRules::substitutivityRule(). Referenced by CVCL::TheoryRecords::update(), CVCL::TheoryDatatypeLazy::update(), CVCL::TheoryDatatype::update(), CVCL::TheoryBitvector::update(), CVCL::TheoryArray::update(), CVCL::TheoryArith::update(), and updateCC(). |
|
Setup a term for congruence closure (must have sig and rep attributes).
Definition at line 329 of file theory.cpp. References CVCL::Expr::addToNotify(), CVCL::Expr::arity(), getName(), reflexivityRule(), CVCL::Expr::setRep(), CVCL::Expr::setSig(), and CVCL::TRACE. Referenced by CVCL::TheoryUF::setup(), CVCL::TheoryRecords::setup(), CVCL::TheoryDatatypeLazy::setup(), CVCL::TheoryDatatype::setup(), CVCL::TheoryBitvector::setup(), and CVCL::TheoryBitvector::setupExpr(). |
|
Update a term w.r.t. congruence closure (must be setup with setupCC()).
Definition at line 342 of file theory.cpp. References CVCL::Expr::addToNotify(), CVCL::Expr::arity(), enqueueFact(), CVCL::Theorem::getExpr(), getName(), CVCL::Expr::getRep(), CVCL::Theorem::getRHS(), CVCL::Expr::getSig(), CVCL::Theorem::isNull(), CVCL::Expr::setRep(), CVCL::Expr::setSig(), symmetryRule(), CVCL::Expr::toString(), CVCL::TRACE, transitivityRule(), and updateHelper(). Referenced by CVCL::TheoryUF::update(), CVCL::TheoryRecords::update(), and CVCL::TheoryBitvector::update(). |
|
Rewrite a term w.r.t. congruence closure (must be setup with setupCC()).
Definition at line 376 of file theory.cpp. References CVCL::Expr::getRep(), CVCL::Theorem::isNull(), reflexivityRule(), and symmetryRule(). Referenced by CVCL::TheoryBitvector::normalizeConcat(), CVCL::TheoryUF::rewrite(), CVCL::TheoryRecords::rewrite(), and CVCL::TheoryBitvector::rewriteBV(). |
|
Calls the correct theory to get all of the terms that need to be assigned values in the concrete model.
Referenced by TheoryCore::collectBasicVars(). |
|
Fetch the concrete assignment to the variable during model generation.
Reimplemented in CVCL::TheoryCore. Definition at line 405 of file theory.cpp. References d_theoryCore, and CVCL::TheoryCore::getModelValue(). Referenced by CVCL::TheoryUF::computeModel(), CVCL::TheoryRecords::computeModel(), CVCL::TheoryBitvector::computeModel(), and CVCL::TheoryArray::computeModel(). |
|
Suggest a splitter to the SearchEngine.
Definition at line 152 of file theory.cpp. References CVCL::TheoryCore::d_coreSatAPI, d_theoryCore, getName(), CVCL::int2string(), and CVCL::TRACE. Referenced by CVCL::TheoryArith::assertFact(), CVCL::TheoryDatatypeLazy::checkSat(), CVCL::TheoryDatatype::checkSat(), CVCL::TheoryArith::normalizeProjectIneqs(), and CVCL::TheoryArith::refineCounterExample(). |
|
Test if e is an i-leaf term for the current theory. A term 'e' is an i-leaf for a theory 'i', if it is a variable, or 'e' belongs to a different theory. This definition makes sense for a larger term which by itself belongs to the current theory 'i', but (some of) its children are variables or belong to different theories. Definition at line 507 of file theory.h. References CVCL::Expr::isVar(), and theoryOf(). Referenced by CVCL::TheoryArith::canonRec(), CVCL::TheoryBitvector::collectSharedSubterms(), isLeafIn(), CVCL::TheoryArith::isSyntacticUMinusVar(), CVCL::TheoryArith::kidsCanonical(), leavesAreSimp(), CVCL::TheoryArith::printMinus(), CVCL::TheoryArith::printPlus(), CVCL::TheoryArith::processRealEq(), CVCL::TheoryArith::rewrite(), CVCL::TheoryArith::solve(), and CVCL::TheoryArith::substAndCanonize(). |
|
Test if e1 is an i-leaf in e2.
Definition at line 410 of file theory.cpp. References CVCL::Expr::begin(), CVCL::Expr::end(), isLeaf(), and theoryOf(). Referenced by CVCL::TheoryArith::processRealEq(), and CVCL::TheoryArith::solve(). |
|
Test if all i-leaves of e are simplified.
Definition at line 421 of file theory.cpp. References CVCL::Expr::arity(), CVCL::Expr::getFind(), CVCL::Theorem::getRHS(), IF_DEBUG(), isLeaf(), CVCL::Expr::toString(), and CVCL::TRACE. |
|
Return BOOLEAN type.
Definition at line 527 of file theory.h. References d_em, and CVCL::Type::typeBool(). Referenced by TheoryCore::computeType(), CVCL::TheoryBitvector::computeType(), CVCL::TheoryArith::computeType(), and CVCL::TheoryQuant::mapTermsByType(). |
|
Return FALSE Expr.
Definition at line 530 of file theory.h. References d_em, and CVCL::ExprManager::falseExpr(). Referenced by CVCL::BitvectorTheoremProducer::bitExtractConstant(), CVCL::BitvectorTheoremProducer::bitExtractFixedLeftShift(), CVCL::BitvectorTheoremProducer::bitExtractFixedRightShift(), CVCL::BitvectorTheoremProducer::bvConstIneqn(), CVCL::BitvectorTheoremProducer::eqConst(), CVCL::BitvectorTheoremProducer::expandTypePred(), CVCL::BitvectorTheoremProducer::generalIneqn(), CVCL::SearchEngine::getConcreteModel(), CVCL::ExprTransform::getNeg(), CVCL::ExprTransform::ite_simplify(), CVCL::BitvectorTheoremProducer::lhsEqRhsIneqn(), CVCL::TheoryQuant::mapTermsByType(), CVCL::TheoryDatatypeLazy::mergeLabels(), CVCL::TheoryDatatype::mergeLabels(), CVCL::SearchImplBase::returnFromCheck(), CVCL::DatatypeTheoremProducer::rewriteTestCons(), CVCL::TheoryArith::rewriteToDiff(), CVCL::BitvectorTheoremProducer::signBVLTRule(), and CVCL::BitvectorTheoremProducer::zeroPaddingRule(). |
|
Return TRUE Expr.
Definition at line 533 of file theory.h. References d_em, and CVCL::ExprManager::trueExpr(). Referenced by CVCL::BitvectorTheoremProducer::bitExtractBVMult(), CVCL::BitvectorTheoremProducer::bitExtractConstant(), CVCL::BitvectorTheoremProducer::bvConstIneqn(), CVCL::TheoryUF::computeTCC(), CVCL::TheoryDatatype::computeTCC(), computeTCC(), CVCL::BitvectorTheoremProducer::eqConst(), CVCL::BitvectorTheoremProducer::generalIneqn(), CVCL::ExprTransform::getNeg(), getTCC(), CVCL::ExprTransform::ite_simplify(), CVCL::BitvectorTheoremProducer::lhsEqRhsIneqn(), CVCL::TheoryQuant::mapTermsByType(), CVCL::DatatypeTheoremProducer::rewriteTestCons(), CVCL::TheoryArith::rewriteToDiff(), CVCL::BitvectorTheoremProducer::signBVLTRule(), and CVCL::TheoryArith::update(). |
|
Create a new variable given its name and type. Add the variable to the database for resolving IDs in parseExpr Referenced by CVCL::TheoryDatatype::getConstant(). |
|
Create a new named expression given its name, type, and definition. Add the definition to the database for resolving IDs in parseExpr |
|
Create a new uninterpreted function. Add the definition to the database for resolving IDs in parseExpr |
|
Create a new defined function. Add the definition to the database for resolving IDs in parseExpr |
|
Create and add a new bound variable to the stack, for parseExprOp(). The stack is popped automatically upon return from the parseExprOp() which used this method. Bound variable names may repeat, in which case the latest declaration takes precedence. Referenced by CVCL::TheoryUF::parseExprOp(), CVCL::TheoryQuant::parseExprOp(), TheoryCore::parseExprOp(), and CVCL::TheoryArray::parseExprOp(). |
|
Create and add a new bound named def to the stack, for parseExprOp(). The stack is popped automatically upon return from the parseExprOp() which used this method. Bound variable names may repeat, in which case the latest declaration takes precedence. The type may be Null, but 'def' must always be a valid Expr |
|
Lookup variable and return it and its type. Return NULL Expr if it doesn't exist yet.
|
|
Create a new uninterpreted type with the given name. Add the name to the global variable database d_globals |
|
Create a new type abbreviation with the given name.
|
|
Resolve an identifier, for use in parseExprOp(). First, search the bound variable stack, and if the name is not found, search the global constant and type declarations.
Referenced by CVCL::TheoryUF::assertFact(), CVCL::TheoryDatatype::checkType(), CVCL::TheoryUF::computeType(), CVCL::TheoryDatatype::getConstant(), TheoryCore::parseExpr(), and CVCL::TheoryUF::parseExprOp(). |
|
Install name as a new identifier associated with Expr e.
|
|
Return BOOLEAN type.
Reimplemented in CVCL::TheoryCore. Definition at line 685 of file theory.cpp. References d_theoryCore, and CVCL::TheoryCore::typePred(). Referenced by CVCL::TheoryArith::isIntegerThm(), and CVCL::TheoryArith::rewrite(). |
|
e: T ==> |- [all the subtype-related facts for e and its subterms]
Reimplemented in CVCL::TheoryCore. Definition at line 690 of file theory.cpp. References d_theoryCore, and CVCL::TheoryCore::subtypePredicate(). |
|
==> a == a
Definition at line 615 of file theory.h. References d_commonRules, and CVCL::CommonProofRules::reflexivityRule(). Referenced by CVCL::TheoryBitvector::bitBlastEqn(), CVCL::TheoryBitvector::bitBlastTerm(), CVCL::BitvectorTheoremProducer::bvplusZeroConcatRule(), CVCL::TheoryArith::canon(), CVCL::ArithTheoremProducer::canonMultMtermMterm(), CVCL::TheoryArith::canonRec(), TheoryCore::collectModelValues(), CVCL::TheoryUF::computeModel(), CVCL::TheoryArray::computeModel(), CVCL::BitvectorTheoremProducer::extractBVPlus(), find(), CVCL::TheoryBitvector::flattenBVPlus(), CVCL::TheoryArith::normalize(), CVCL::TheoryBitvector::normalizeBVArith(), CVCL::TheoryBitvector::normalizeConcat(), CVCL::TheoryBitvector::pushNegation(), CVCL::TheoryBitvector::pushNegationRec(), CVCL::ExprTransform::pushNegationRec(), CVCL::TheoryUF::rewrite(), CVCL::TheorySimulate::rewrite(), CVCL::TheoryRecords::rewrite(), CVCL::TheoryDatatype::rewrite(), TheoryCore::rewrite(), CVCL::TheoryArith::rewrite(), rewrite(), CVCL::TheoryBitvector::rewriteAtomic(), rewriteAtomic(), CVCL::TheoryRecords::rewriteAux(), CVCL::TheoryBitvector::rewriteBoolean(), CVCL::TheoryBitvector::rewriteBV(), rewriteCC(), CVCL::TheoryBitvector::rewriteConst(), TheoryCore::rewriteCore(), TheoryCore::rewriteIte(), TheoryCore::rewriteLitCore(), TheoryCore::rewriteN(), CVCL::TheoryDatatypeLazy::setup(), CVCL::TheoryArray::setup(), setupCC(), CVCL::TheoryArith::setupRec(), CVCL::TheoryBitvector::signExtendBVLT(), TheoryCore::simplifyFullRec(), TheoryCore::simplifyInPlaceRec(), TheoryCore::simplifyOp(), CVCL::TheoryBitvector::simplifyOp(), simplifyOp(), CVCL::RefinedArithTheoremProducer::subst(), CVCL::TheoryArith::substAndCanonize(), CVCL::RefinedArithTheoremProducer::trans(), and updateHelper(). |
|
a1 == a2 ==> a2 == a1
Definition at line 619 of file theory.h. References d_commonRules, and CVCL::CommonProofRules::symmetryRule(). Referenced by TheoryCore::assertFormula(), TheoryCore::assignValue(), TheoryCore::checkSat(), CVCL::TheoryUF::computeModel(), CVCL::TheoryArray::computeModel(), CVCL::TheoryArith::doSolve(), CVCL::TheoryBitvector::normalizeConcat(), CVCL::TheoryArith::processFiniteInterval(), CVCL::TheoryArith::processSimpleIntEq(), TheoryCore::rewrite(), CVCL::TheoryBitvector::rewriteBV(), rewriteCC(), CVCL::TheoryRecords::setup(), CVCL::TheoryBitvector::setupExpr(), CVCL::TheoryDatatype::solve(), CVCL::TheoryBitvector::solve(), CVCL::TheoryArray::solve(), CVCL::TheoryArith::solve(), CVCL::RefinedArithTheoremProducer::symm(), CVCL::TheoryUF::update(), CVCL::TheoryDatatypeLazy::update(), CVCL::TheoryDatatype::update(), CVCL::TheoryBitvector::update(), CVCL::TheoryArray::update(), CVCL::TheoryArith::update(), and updateCC(). |
|
(a1 == a2) & (a2 == a3) ==> (a1 == a3)
Definition at line 623 of file theory.h. References d_commonRules, and CVCL::CommonProofRules::transitivityRule(). Referenced by TheoryCore::assertFormula(), TheoryCore::assignValue(), CVCL::TheoryBitvector::bitBlastDisEqn(), CVCL::TheoryBitvector::bitBlastEqn(), CVCL::TheoryBitvector::bitBlastTerm(), TheoryCore::buildModel(), CVCL::TheoryArith::canon(), CVCL::ArithTheoremProducer::canonDivide(), CVCL::TheoryArith::canonPredEquiv(), CVCL::TheoryArith::canonSimplify(), TheoryCore::checkSat(), TheoryCore::collectModelValues(), CVCL::TheoryUF::computeModel(), CVCL::TheoryRecords::computeModel(), CVCL::TheoryArray::computeModel(), find(), CVCL::TheoryArith::normalize(), CVCL::TheoryBitvector::normalizeBVArith(), CVCL::TheoryBitvector::normalizeConcat(), CVCL::TheoryBitvector::pushNegationRec(), CVCL::TheoryUF::rewrite(), CVCL::TheoryRecords::rewrite(), CVCL::TheoryDatatype::rewrite(), TheoryCore::rewrite(), CVCL::TheoryArith::rewrite(), CVCL::TheoryBitvector::rewriteAtomic(), CVCL::TheoryRecords::rewriteAux(), CVCL::TheoryBitvector::rewriteAux(), CVCL::TheoryBitvector::rewriteBoolean(), CVCL::TheoryBitvector::rewriteBV(), TheoryCore::rewriteCore(), TheoryCore::rewriteN(), CVCL::TheoryRecords::setup(), CVCL::TheoryBitvector::setupExpr(), CVCL::TheoryBitvector::signExtendBVLT(), TheoryCore::simplifyFullRec(), TheoryCore::simplifyInPlaceRec(), TheoryCore::simplifyOp(), CVCL::TheoryBitvector::simplifyOp(), CVCL::RefinedArithTheoremProducer::trans(), CVCL::TheoryUF::update(), CVCL::TheoryRecords::update(), CVCL::TheoryDatatypeLazy::update(), CVCL::TheoryDatatype::update(), CVCL::TheoryBitvector::update(), CVCL::TheoryArray::update(), CVCL::TheoryArith::update(), and updateCC(). |
|
(c_1 == d_1) & ... & (c_n == d_n) ==> op(c_1,...,c_n) == op(d_1,...,d_n)
Definition at line 628 of file theory.h. References d_commonRules, and CVCL::CommonProofRules::substitutivityRule(). Referenced by CVCL::TheoryBitvector::bitBlastDisEqn(), CVCL::TheoryBitvector::bitBlastEqn(), CVCL::TheoryBitvector::bitBlastTerm(), CVCL::TheoryArith::canon(), CVCL::ArithTheoremProducer::canonMultConstPlus(), CVCL::TheoryArith::canonPred(), CVCL::TheoryArith::canonPredEquiv(), CVCL::TheoryArith::canonRec(), CVCL::TheoryBitvector::checkSat(), CVCL::TheoryUF::computeModel(), CVCL::TheoryRecords::computeModel(), CVCL::TheoryArray::computeModel(), CVCL::TheoryBitvector::normalizeBVArith(), CVCL::TheoryBitvector::normalizeConcat(), CVCL::TheoryArith::processFiniteInterval(), CVCL::TheoryBitvector::pushNegationRec(), TheoryCore::rewrite(), CVCL::TheoryRecords::rewriteAux(), CVCL::TheoryBitvector::rewriteBoolean(), CVCL::TheoryBitvector::rewriteBV(), TheoryCore::rewriteN(), CVCL::TheoryRecords::setup(), CVCL::TheoryBitvector::setupExpr(), CVCL::TheoryBitvector::signExtendBVLT(), TheoryCore::simplifyInPlaceRec(), TheoryCore::simplifyOp(), CVCL::TheoryBitvector::simplifyOp(), CVCL::RefinedArithTheoremProducer::subst(), CVCL::TheoryArith::substAndCanonize(), and CVCL::TheoryArith::update(). |
|
Optimized: only positions which changed are included.
Definition at line 633 of file theory.h. References d_commonRules, and CVCL::CommonProofRules::substitutivityRule(). |
|
e1 AND (e1 IFF e2) ==> e2
Definition at line 639 of file theory.h. References d_commonRules, and CVCL::CommonProofRules::iffMP(). Referenced by CVCL::TheoryArith::addToBuffer(), CVCL::TheoryQuant::assertFact(), CVCL::TheoryBitvector::assertFact(), TheoryCore::assertFactCore(), CVCL::TheoryBitvector::bitBlastDisEqn(), CVCL::TheoryArith::canonPred(), TheoryCore::checkSat(), CVCL::TheoryBitvector::checkSat(), CVCL::TheoryArith::doSolve(), CVCL::TheoryArith::isolateVariable(), CVCL::TheoryArith::normalizeProjectIneqs(), CVCL::TheoryArith::processFiniteInterval(), CVCL::TheoryArith::processRealEq(), CVCL::TheoryArith::processSimpleIntEq(), CVCL::TheoryArith::projectInequalities(), CVCL::TheoryRecords::rewriteAux(), CVCL::SearchImplBase::simplify(), CVCL::TheoryBitvector::solve(), CVCL::TheoryArith::substAndCanonize(), and CVCL::TheoryArith::update(). |
|
==> AND(e1,e2) IFF [simplified expr]
Definition at line 644 of file theory.h. References d_commonRules, and CVCL::CommonProofRules::rewriteAnd(). Referenced by CVCL::TheoryUF::computeTCC(), CVCL::TheorySimulate::computeTCC(), CVCL::TheoryRecords::computeTCC(), TheoryCore::computeTCC(), CVCL::TheoryArray::computeTCC(), TheoryCore::rewrite(), CVCL::TheoryBitvector::rewriteBoolean(), and TheoryCore::simplifyOp(). |
|
==> OR(e1,...,en) IFF [simplified expr]
Definition at line 649 of file theory.h. References d_commonRules, and CVCL::CommonProofRules::rewriteOr(). Referenced by TheoryCore::computeTCC(), TheoryCore::rewrite(), CVCL::TheoryBitvector::rewriteBoolean(), and TheoryCore::simplifyOp(). |
|
|
|
Definition at line 75 of file theory.h. Referenced by TheoryCore::assertEqualities(), TheoryCore::assertFormula(), boolType(), TheoryCore::buildModel(), TheoryCore::computeModelBasic(), falseExpr(), getEM(), TheoryCore::refineCounterExample(), TheoryCore::rewrite(), TheoryCore::simplify(), trueExpr(), and TheoryCore::~TheoryCore(). |
|
Provides the core functionality.
Definition at line 76 of file theory.h. Referenced by addSplitter(), assertEqualities(), assignValue(), enqueueEquality(), enqueueFact(), getModelValue(), getNumTheories(), hasTheory(), inconsistent(), parseExpr(), setInconsistent(), simplify(), simplifyRec(), subtypePredicate(), theoryCore(), theoryOf(), and typePred(). |
|
Commonly used proof rules.
Definition at line 77 of file theory.h. Referenced by TheoryCore::assertFactCore(), TheoryCore::assertFormula(), TheoryCore::checkSat(), computeTCC(), getCommonRules(), iffMP(), TheoryCore::processEquality(), TheoryCore::processUpdates(), reflexivityRule(), TheoryCore::registerAtom(), TheoryCore::rewrite(), rewriteAnd(), TheoryCore::rewriteLitCore(), TheoryCore::rewriteLiteral(), rewriteOr(), TheoryCore::setupTerm(), TheoryCore::simplifyFullRec(), simplifyOp(), substitutivityRule(), TheoryCore::subtypePredicate(), symmetryRule(), transitivityRule(), and updateHelper(). |
|
Name of the theory (for debugging).
Definition at line 78 of file theory.h. Referenced by getName(). |
|
Definition at line 87 of file theory.h. Referenced by CVCL::TheoryUF::print(), CVCL::TheorySimulate::print(), CVCL::TheoryRecords::print(), CVCL::TheoryQuant::print(), CVCL::TheoryBitvector::print(), CVCL::TheoryArray::print(), and theoryUsed(). |