CVCL::Theory Class Reference
[Theories, Theories]

Base class for theories. More...

#include <theory.h>

Inheritance diagram for CVCL::Theory:

Inheritance graph
[legend]
Collaboration diagram for CVCL::Theory:

Collaboration graph
[legend]
List of all members.

Public Member Functions

Core Framework Functionality
These methods provide convenient access to core functionality for the benefit of decision procedures.

Theory Helper Methods
These methods provide basic functionality needed by all theories.

Core Testers
Common Type and Expr Methods
Commonly Used Proof Rules


Protected Attributes

Private Member Functions

Private Attributes

Friends


Detailed Description

Base class for theories.

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.


Constructor & Destructor Documentation

Theory::Theory (  void   )  [private]
 

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.

CVCL::Theory::Theory (  TheoryCore *  theoryCore,
const std::string &  name
) 
 

Exposed constructor.

Note that each instance of Theory must have a name (mostly for debugging purposes).

Theory::~Theory (  void   )  [virtual]
 

Destructor.

Definition at line 51 of file theory.cpp.


Member Function Documentation

ExprManager* CVCL::Theory::getEM (   )  [inline]
 

Access to ExprManager.

Definition at line 98 of file theory.h.

References d_em.

Referenced by CVCL::BitvectorTheoremProducer::bitExtractBitwise(), CVCL::QuantTheoremProducer::boundVarElim(), CVCL::TheoryUF::checkType(), CVCL::TheoryRecords::checkType(), CVCL::TheoryDatatype::checkType(), TheoryCore::checkType(), CVCL::TheoryBitvector::checkType(), CVCL::TheoryArray::checkType(), CVCL::TheoryArith::checkType(), TheoryCore::collectBasicVars(), TheoryCore::collectModelValues(), CVCL::TheoryUF::computeModel(), CVCL::TheoryArray::computeModel(), CVCL::TheorySimulate::computeTCC(), CVCL::TheoryQuant::computeTCC(), CVCL::TheoryRecords::computeType(), CVCL::TypeComputerCore::computeType(), CVCL::TheoryArith::computeType(), CVCL::SearchEngine::getConcreteModel(), CVCL::TheoryDatatypeLazy::instantiate(), CVCL::TheoryDatatype::instantiate(), CVCL::TheoryBitvector::newBitvectorTypeExpr(), CVCL::TheoryBitvector::newBoolExtractExpr(), CVCL::TheoryBitvector::newBVConstExpr(), CVCL::TheoryBitvector::newBVExtractExpr(), CVCL::TheoryBitvector::newBVMultExpr(), CVCL::TheoryBitvector::newBVPlusExpr(), CVCL::TheoryBitvector::newFixedLeftShiftExpr(), CVCL::TheoryBitvector::newFixedRightShiftExpr(), CVCL::TheoryBitvector::newSXExpr(), CVCL::TheoryCore::CoreNotifyObj::notify(), TheoryCore::parseExpr(), CVCL::TheoryUF::parseExprOp(), CVCL::TheoryQuant::parseExprOp(), CVCL::TheoryDatatype::parseExprOp(), TheoryCore::parseExprOp(), CVCL::TheoryBitvector::parseExprOp(), CVCL::TheoryArray::parseExprOp(), CVCL::TheoryArith::parseExprOp(), CVCL::TheoryUF::print(), CVCL::TheoryQuant::print(), CVCL::TheoryDatatype::print(), TheoryCore::print(), CVCL::TheoryBitvector::rat(), CVCL::TheoryArith::rat(), CVCL::TheoryRecords::recordExpr(), CVCL::TheoryRecords::recordSelect(), CVCL::TheoryRecords::recordType(), CVCL::TheoryRecords::recordUpdate(), CVCL::TheoryArith::TheoryArith(), CVCL::TheoryArray::TheoryArray(), CVCL::TheoryBitvector::TheoryBitvector(), CVCL::TheoryDatatype::TheoryDatatype(), theoryOf(), CVCL::TheoryRecords::TheoryRecords(), CVCL::TheoryUF::TheoryUF(), CVCL::TheoryUF::transClosureExpr(), CVCL::TheoryRecords::tupleExpr(), CVCL::TheoryRecords::tupleSelect(), CVCL::TheoryRecords::tupleType(), and CVCL::TheoryRecords::tupleUpdate().

TheoryCore* CVCL::Theory::theoryCore (   )  [inline]
 

Get a pointer to theoryCore.

Definition at line 101 of file theory.h.

References d_theoryCore.

Referenced by CVCL::TheoryUF::assertFact(), CVCL::TheoryBitvector::assertFact(), CVCL::TheoryBitvector::assertTypePred(), CVCL::TheoryUF::createProofRules(), CVCL::TheorySimulate::createProofRules(), CVCL::TheoryRecords::createProofRules(), CVCL::TheoryQuant::createProofRules(), CVCL::TheoryArray::createProofRules(), CVCL::TheoryArith::createProofRules(), CVCL::TheoryQuant::goodSynMatch(), CVCL::TheoryDatatypeLazy::initializeLabels(), CVCL::TheoryDatatype::initializeLabels(), CVCL::TheoryQuant::mapTermsByType(), CVCL::TheoryQuant::naiveCheckSat(), CVCL::TheoryUF::parseExprOp(), CVCL::TheoryArith::pickMonomial(), CVCL::TheoryArith::print(), CVCL::TheoryArith::projectInequalities(), CVCL::TheoryQuant::recursiveMap(), CVCL::TheoryArray::renameExpr(), CVCL::TheoryQuant::semCheckSat(), CVCL::TheoryArray::setup(), CVCL::TheoryBitvector::setupExpr(), CVCL::TheoryQuant::synCheckSat(), and CVCL::TheoryBitvector::update().

CommonProofRules* CVCL::Theory::getCommonRules (   )  [inline]
 

Get a pointer to common proof rules.

Definition at line 104 of file theory.h.

References d_commonRules.

Referenced by CVCL::TheoryBitvector::assertFact(), CVCL::TheoryBitvector::bitBlastDisEqn(), CVCL::ExprTransform::ExprTransform(), CVCL::CoreTheoremProducer::IffToIte(), CVCL::CoreTheoremProducer::ImpToIte(), CVCL::TheoryArith::isIntegerDerive(), CVCL::CoreTheoremProducer::NotToIte(), CVCL::TheoryArith::processIntEq(), CVCL::TheoryArith::processSimpleIntEq(), CVCL::TheoryArray::renameExpr(), CVCL::TheoryArith::rewrite(), CVCL::TheoryBitvector::rewriteBoolean(), CVCL::TheoryUF::update(), and CVCL::TheoryArith::update().

const std::string& CVCL::Theory::getName (   )  const [inline]
 

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().

virtual bool CVCL::Theory::theoryUsed (   )  [inline, virtual]
 

Get whether theory has been used (for smtlib translator).

Reimplemented in CVCL::TheoryArith.

Definition at line 110 of file theory.h.

References d_theoryUsed.

bool Theory::inconsistent (   )  [virtual]
 

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().

void Theory::setInconsistent (  const Theorem &  e  )  [virtual]
 

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().

virtual void CVCL::Theory::setIncomplete (  const std::string &  reason  )  [virtual]
 

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().

Theorem Theory::simplify (  const Expr &  e,
bool  forceRebuild = true
)  [virtual]
 

Simplify a term e and return a Theorem(e==e').

See also:
simplifyExpr()

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().

Expr CVCL::Theory::simplifyExpr (  const Expr &  e,
bool  forceRebuild = true
)  [inline]
 

Simplify a term e w.r.t. the current context.

See also:
simplify

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().

Theorem Theory::simplifyRec (  const Expr &  e  )  [virtual]
 

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().

void Theory::enqueueFact (  const Theorem &  e  )  [virtual]
 

Submit a derived fact to the core from a decision procedure.

Parameters:
e is the Theorem for the new fact

Reimplemented in CVCL::TheoryCore.

Definition at line 129 of file theory.cpp.

References d_theoryCore, CVCL::TheoryCore::enqueueFact(), getName(), and CVCL::TRACE.

Referenced by CVCL::TheoryUF::assertFact(), CVCL::TheoryRecords::assertFact(), CVCL::TheoryQuant::assertFact(), CVCL::TheoryBitvector::assertFact(), CVCL::TheoryArith::assertFact(), CVCL::TheoryBitvector::assertTypePred(), assertTypePred(), CVCL::TheoryUF::checkSat(), CVCL::TheoryDatatypeLazy::checkSat(), CVCL::TheoryBitvector::checkSat(), CVCL::TheoryArith::checkSat(), CVCL::TheoryQuant::enqueueInst(), CVCL::TheoryDatatype::instantiate(), CVCL::TheoryArith::normalizeProjectIneqs(), CVCL::TheoryArith::processFiniteInterval(), CVCL::TheoryArith::projectInequalities(), CVCL::TheoryRecords::setup(), CVCL::TheoryDatatype::setup(), CVCL::TheoryBitvector::setupExpr(), CVCL::TheoryUF::update(), CVCL::TheoryDatatype::update(), CVCL::TheoryBitvector::update(), CVCL::TheoryArray::update(), CVCL::TheoryArith::update(), and updateCC().

void Theory::enqueueEquality (  const Theorem &  e  )  [virtual]
 

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().

void Theory::assertEqualities (  const Theorem &  e  )  [virtual]
 

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.

Expr Theory::parseExpr (  const Expr &  e  )  [virtual]
 

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().

void Theory::assignValue (  const Expr &  t,
const Expr &  val
)  [virtual]
 

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().

void Theory::assignValue (  const Theorem &  thm  )  [virtual]
 

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.

void CVCL::Theory::registerKinds (  Theory *  theory,
std::vector< int > &  kinds
) 
 

Register new kinds with the given theory.

void CVCL::Theory::registerTheory (  Theory *  theory,
std::vector< int > &  kinds,
bool  hasSolver = false
) 
 

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().

int Theory::getNumTheories (   ) 
 

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().

bool Theory::hasTheory (  int  kind  ) 
 

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().

Theory * Theory::theoryOf (  int  kind  ) 
 

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().

Theory * Theory::theoryOf (  const Expr &  e  ) 
 

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().

Theorem Theory::find (  const Expr &  e  ) 
 

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().

const Expr& CVCL::Theory::findExpr (  const Expr &  e  )  [inline]
 

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().

Expr Theory::getTCC (  const Expr &  e  ) 
 

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().

Type Theory::getBaseType (  const Expr &  e  ) 
 

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().

Type Theory::getBaseType (  const Type &  tp  ) 
 

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.

Expr Theory::getTypePred (  const Type &  t,
const Expr &  e
) 
 

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().

Theorem Theory::updateHelper (  const Expr &  e  ) 
 

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'.

See also:
update

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().

void Theory::setupCC (  const Expr &  e  ) 
 

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().

void Theory::updateCC (  const Theorem &  e,
const Expr &  d
) 
 

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().

Theorem Theory::rewriteCC (  const Expr &  e  ) 
 

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().

void CVCL::Theory::getModelTerm (  const Expr &  e,
std::vector< Expr > &  v
) 
 

Calls the correct theory to get all of the terms that need to be assigned values in the concrete model.

Referenced by TheoryCore::collectBasicVars().

Theorem Theory::getModelValue (  const Expr &  e  ) 
 

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().

void Theory::addSplitter (  const Expr &  e,
int  priority = 0
) 
 

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().

bool CVCL::Theory::isLeaf (  const Expr &  e  )  [inline]
 

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().

bool Theory::isLeafIn (  const Expr &  e1,
const Expr &  e2
) 
 

Test if e1 is an i-leaf in e2.

See also:
isLeaf

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().

bool Theory::leavesAreSimp (  const Expr &  e  ) 
 

Test if all i-leaves of e are simplified.

See also:
isLeaf

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.

Type CVCL::Theory::boolType (   )  [inline]
 

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().

const Expr& CVCL::Theory::falseExpr (   )  [inline]
 

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().

const Expr& CVCL::Theory::trueExpr (   )  [inline]
 

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().

Expr CVCL::Theory::newVar (  const std::string &  name,
const Type &  type
) 
 

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().

Expr CVCL::Theory::newVar (  const std::string &  name,
const Type &  type,
const Expr &  def
) 
 

Create a new named expression given its name, type, and definition.

Add the definition to the database for resolving IDs in parseExpr

Op CVCL::Theory::newFunction (  const std::string &  name,
const Type &  type,
bool  computeTransClosure
) 
 

Create a new uninterpreted function.

Add the definition to the database for resolving IDs in parseExpr

Op CVCL::Theory::newFunction (  const std::string &  name,
const Type &  type,
const Expr &  def
) 
 

Create a new defined function.

Add the definition to the database for resolving IDs in parseExpr

Expr CVCL::Theory::addBoundVar (  const std::string &  name,
const Type &  type
) 
 

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().

Expr CVCL::Theory::addBoundVar (  const std::string &  name,
const Type &  type,
const Expr &  def
) 
 

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

Expr CVCL::Theory::lookupVar (  const std::string &  name,
Type *  type
) 
 

Lookup variable and return it and its type. Return NULL Expr if it doesn't exist yet.

Type CVCL::Theory::newTypeExpr (  const std::string &  name  ) 
 

Create a new uninterpreted type with the given name.

Add the name to the global variable database d_globals

Type CVCL::Theory::newTypeExpr (  const std::string &  name,
const Type &  def
) 
 

Create a new type abbreviation with the given name.

Expr CVCL::Theory::resolveID (  const std::string &  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.

Returns:
an expression to use in place of the identifier, or Null if cannot resolve the name.

Referenced by CVCL::TheoryUF::assertFact(), CVCL::TheoryDatatype::checkType(), CVCL::TheoryUF::computeType(), CVCL::TheoryDatatype::getConstant(), TheoryCore::parseExpr(), and CVCL::TheoryUF::parseExprOp().

void CVCL::Theory::installID (  const std::string &  name,
const Expr &  e
) 
 

Install name as a new identifier associated with Expr e.

Theorem Theory::typePred (  const 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().

Theorem Theory::subtypePredicate (  const Expr &  e  ) 
 

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().

Theorem CVCL::Theory::reflexivityRule (  const Expr &  a  )  [inline]
 

==> 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().

Theorem CVCL::Theory::symmetryRule (  const Theorem &  a1_eq_a2  )  [inline]
 

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().

Theorem CVCL::Theory::transitivityRule (  const Theorem &  a1_eq_a2,
const Theorem &  a2_eq_a3
)  [inline]
 

(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().

Theorem CVCL::Theory::substitutivityRule (  const Op &  op,
const std::vector< Theorem > &  thms
)  [inline]
 

(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().

Theorem CVCL::Theory::substitutivityRule (  const Expr &  e,
const std::vector< unsigned > &  changed,
const std::vector< Theorem > &  thms
)  [inline]
 

Optimized: only positions which changed are included.

Definition at line 633 of file theory.h.

References d_commonRules, and CVCL::CommonProofRules::substitutivityRule().

Theorem CVCL::Theory::iffMP (  const Theorem &  e1,
const Theorem &  e1_iff_e2
)  [inline]
 

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().

Theorem CVCL::Theory::rewriteAnd (  const Expr &  e  )  [inline]
 

==> 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().

Theorem CVCL::Theory::rewriteOr (  const Expr &  e  )  [inline]
 

==> 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().


Friends And Related Function Documentation

friend class TheoryCore [friend]
 

Definition at line 73 of file theory.h.


Member Data Documentation

ExprManager* CVCL::Theory::d_em [private]
 

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().

TheoryCore* CVCL::Theory::d_theoryCore [private]
 

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().

CommonProofRules* CVCL::Theory::d_commonRules [private]
 

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().

std::string CVCL::Theory::d_name [private]
 

Name of the theory (for debugging).

Definition at line 78 of file theory.h.

Referenced by getName().

bool CVCL::Theory::d_theoryUsed [protected]
 

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().


The documentation for this class was generated from the following files:
Generated on Thu Apr 13 16:57:44 2006 for CVC Lite by  doxygen 1.4.4