CVCL::Theory Class Reference
[TheoriesTheories]

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