CVC3::TheoryQuant Class Reference
[Theories]

This theory handles quantifiers. More...

#include <theory_quant.h>

Inheritance diagram for CVC3::TheoryQuant:

Inheritance graph
[legend]
Collaboration diagram for CVC3::TheoryQuant:

Collaboration graph
[legend]

List of all members.

Classes

Public Member Functions

Private Types

Private Member Functions

Private Attributes

Static Private Attributes


Detailed Description

This theory handles quantifiers.

Author: Daniel Wichs

Created: Wednesday July 2, 2003

Definition at line 184 of file theory_quant.h.


Member Typedef Documentation

typedef std::map<Type, std::vector<size_t>, TypeComp > CVC3::TheoryQuant::typeMap [private]

used to facilitate instantiation of universal quantifiers

Definition at line 197 of file theory_quant.h.


Constructor & Destructor Documentation

TheoryQuant::TheoryQuant ( TheoryCore core  ) 

TheoryQuant::~TheoryQuant (  ) 

Destructor.

Definition at line 234 of file theory_quant.cpp.

References d_contextMap, and d_rules.


Member Function Documentation

Theorem TheoryQuant::rewrite ( const Expr e  )  [private, virtual]

Theory-specific rewrite rules.

By default, rewrite just returns a reflexive theorem stating that the input expression is equivalent to itself. However, rewrite is allowed to return any theorem which describes how the input expression is equivalent to some new expression. rewrite should be used to perform simplifications, normalization, and any other preprocessing on theory-specific expressions that needs to be done.

Reimplemented from CVC3::Theory.

Definition at line 254 of file theory_quant.cpp.

References d_rules, CVC3::Expr::isExists(), CVC3::Expr::isForall(), CVC3::Expr::isNot(), CVC3::QuantProofRules::normalizeQuant(), and CVC3::Theory::reflexivityRule().

Theorem TheoryQuant::theoryPreprocess ( const Expr e  )  [private, virtual]

bool TheoryQuant::recursiveMap ( const Expr e  )  [private]

categorizes all the terms contained in an expressions by type.

categorizes all the terms contained in an expressions by type.

Updates d_contextTerms, d_contextMap, d_contextCache accordingly. returns true if the expression does not contain bound variables, false otherwise.

Definition at line 8433 of file theory_quant.cpp.

References CVC3::Expr::arity(), CVC3::Expr::begin(), CVC3::BOUND_VAR, CVC3::ExprMap< Data >::count(), CVC3::CDMap< Key, Data, HashFcn >::count(), d_contextCache, d_contextMap, d_contextTerms, d_savedCache, CVC3::Expr::end(), CVC3::EXISTS, CVC3::FORALL, CVC3::Theory::getBaseType(), CVC3::Expr::getBody(), CVC3::TheoryCore::getCM(), CVC3::ContextManager::getCurrentContext(), CVC3::Expr::getKind(), CVC3::Type::isBool(), CVC3::CDList< T >::push_back(), CVC3::CDList< T >::size(), CVC3::Theory::theoryCore(), CVC3::Type::toString(), CVC3::Expr::toString(), and CVC3::TRACE.

Referenced by mapTermsByType().

void TheoryQuant::mapTermsByType ( const CDList< Expr > &  terms  )  [private]

categorizes all the terms contained in a vector of expressions by type.

Updates d_contextTerms, d_contextMap, d_contextCache accordingly.

Definition at line 8405 of file theory_quant.cpp.

References CVC3::Theory::boolType(), d_contextMap, d_contextTerms, d_univs, CVC3::Theory::falseExpr(), CVC3::TheoryCore::getCM(), CVC3::ContextManager::getCurrentContext(), CVC3::CDList< T >::push_back(), recursiveMap(), CVC3::CDList< T >::size(), CVC3::Theory::theoryCore(), and CVC3::Theory::trueExpr().

Referenced by naiveCheckSat().

void TheoryQuant::instantiate ( Theorem  univ,
bool  all,
bool  savedMap,
size_t  newIndex 
) [private]

Queues up all possible instantiations of bound variables.

The savedMap boolean indicates whether to use savedMap or d_contextMap the all boolean indicates weather to use all instantiation or only new ones and newIndex is the index where new instantiations begin.

Definition at line 8318 of file theory_quant.cpp.

References d_contextTerms, d_savedTerms, recInstantiate(), CVC3::CDList< T >::size(), and CVC3::TRACE.

Referenced by naiveCheckSat().

void TheoryQuant::recInstantiate ( Theorem univ,
bool  all,
bool  savedMap,
size_t  newIndex,
std::vector< Expr > &  varReplacements 
) [private]

void TheoryQuant::findInstAssumptions ( const Theorem thm  )  [private]

void TheoryQuant::arrayIndexName ( const Expr e  )  [private]

Definition at line 2563 of file theory_quant.cpp.

References d_arrayIndic, getBoundVars(), getSubTerms(), CVC3::READ, and CVC3::WRITE.

Referenced by checkSat(), and setupTriggers().

int TheoryQuant::getExprScore ( const Expr e  )  [inline, private]

bool TheoryQuant::transFound ( const Expr comb  )  [inline, private]

Definition at line 6842 of file theory_quant.cpp.

References CVC3::CDMap< Key, Data, HashFcn >::count(), and d_trans_found.

Referenced by synNewInst().

void TheoryQuant::setTransFound ( const Expr comb  )  [inline, private]

Definition at line 6846 of file theory_quant.cpp.

References d_trans_found.

Referenced by synNewInst().

bool TheoryQuant::trans2Found ( const Expr comb  )  [inline, private]

Definition at line 6850 of file theory_quant.cpp.

References CVC3::CDMap< Key, Data, HashFcn >::count(), and d_trans2_found.

Referenced by synNewInst().

void TheoryQuant::setTrans2Found ( const Expr comb  )  [inline, private]

Definition at line 6854 of file theory_quant.cpp.

References d_trans2_found.

Referenced by synNewInst().

CDList< Expr > & TheoryQuant::backList ( const Expr ex  )  [inline, private]

Definition at line 6859 of file theory_quant.cpp.

References CVC3::ExprMap< Data >::count(), d_trans_back, and null_cdlist.

Referenced by iterBKList(), and update().

CDList< Expr > & TheoryQuant::forwList ( const Expr ex  )  [inline, private]

Definition at line 6868 of file theory_quant.cpp.

References CVC3::ExprMap< Data >::count(), d_trans_forw, and null_cdlist.

Referenced by iterFWList(), and update().

void TheoryQuant::iterFWList ( const Expr sr,
const Expr dt,
size_t  univ_id,
const Expr gterm 
) [inline, private]

Definition at line 7093 of file theory_quant.cpp.

References enqueueInst(), forwList(), and CVC3::CDList< T >::size().

Referenced by synNewInst().

void TheoryQuant::iterBKList ( const Expr sr,
const Expr dt,
size_t  univ_id,
const Expr gterm 
) [inline, private]

Definition at line 7104 of file theory_quant.cpp.

References backList(), enqueueInst(), and CVC3::CDList< T >::size().

Referenced by synNewInst().

Expr TheoryQuant::getHead ( const Expr e  )  [private]

Expr TheoryQuant::getHeadExpr ( const Expr e  )  [private]

void TheoryQuant::pushBackList ( const Expr node,
Expr  ex 
) [inline, private]

void TheoryQuant::pushForwList ( const Expr node,
Expr  ex 
) [inline, private]

void TheoryQuant::collectChangedTerms ( CDList< Expr > &  changed_terms  )  [private]

int TheoryQuant::loc_gterm ( const std::vector< Expr > &  border,
const Expr gterm,
int  pos 
) [private]

Definition at line 6558 of file theory_quant.cpp.

References d_mtrigs_bvorder, and DebugAssert.

void CVC3::TheoryQuant::recSearchCover ( const std::vector< Expr > &  border,
const std::vector< Expr > &  mtrigs,
int  cur_depth,
std::vector< std::vector< Expr > > &  instSet,
std::vector< Expr > &  cur_inst 
) [private]

void CVC3::TheoryQuant::searchCover ( const Expr thm,
const std::vector< Expr > &  border,
std::vector< std::vector< Expr > > &  instSet 
) [private]

void TheoryQuant::addNotify ( const Expr e  )  [private]

Definition at line 1033 of file theory_quant.cpp.

int TheoryQuant::sendInstNew (  )  [private]

const std::vector< Expr > & TheoryQuant::getSubTerms ( const Expr e  )  [private]

void TheoryQuant::simplifyExprMap ( ExprMap< Expr > &  orgExprMap  )  [private]

void TheoryQuant::simplifyVectorExprMap ( std::vector< ExprMap< Expr > > &  orgVectorExprMap  )  [private]

Definition at line 546 of file theory_quant.cpp.

References simplifyExprMap().

Referenced by newTopMatch().

std::string TheoryQuant::exprMap2string ( const ExprMap< Expr > &  vec  )  [private]

Definition at line 493 of file theory_quant.cpp.

Referenced by newTopMatch().

std::string TheoryQuant::exprMap2stringSimplify ( const ExprMap< Expr > &  vec  )  [private]

Definition at line 507 of file theory_quant.cpp.

Referenced by newTopMatch().

std::string TheoryQuant::exprMap2stringSig ( const ExprMap< Expr > &  vec  )  [private]

Definition at line 519 of file theory_quant.cpp.

Referenced by newTopMatch().

void CVC3::TheoryQuant::enqueueInst ( const   Theorem,
const   Theorem 
) [private]

void TheoryQuant::enqueueInst ( const Theorem univ,
const std::vector< Expr > &  bind,
const Expr gterm 
) [private]

void TheoryQuant::enqueueInst ( size_t  univ_id,
const std::vector< Expr > &  bind,
const Expr gterm 
) [private]

void TheoryQuant::enqueueInst ( const Theorem univ,
Trigger trig,
const std::vector< Expr > &  binds,
const Expr gterm 
) [private]

Definition at line 987 of file theory_quant.cpp.

References enqueueInst().

void TheoryQuant::synCheckSat ( ExprMap< ExprMap< std::vector< dynTrig > * > * > &  new_trigs,
bool  fullEffort 
) [private]

void CVC3::TheoryQuant::synCheckSat ( bool   )  [private]

void TheoryQuant::semCheckSat ( bool  fullEffort  )  [private]

Definition at line 8249 of file theory_quant.cpp.

Referenced by checkSat().

void TheoryQuant::naiveCheckSat ( bool  fullEffort  )  [private]

bool CVC3::TheoryQuant::insted ( const Theorem univ,
const std::vector< Expr > &  binds 
) [private]

void CVC3::TheoryQuant::synInst ( const Theorem univ,
const CDList< Expr > &  allterms,
size_t  tBegin 
) [private]

void CVC3::TheoryQuant::synFullInst ( const Theorem univ,
const CDList< Expr > &  allterms,
size_t  tBegin 
) [private]

void TheoryQuant::arrayHeuristic ( const Trigger trig,
size_t  univid 
) [private]

Definition at line 7081 of file theory_quant.cpp.

References d_arrayIndic, enqueueInst(), and CVC3::Trigger::head.

Referenced by synCheckSat().

Expr TheoryQuant::simpRAWList ( const Expr org  )  [private]

Definition at line 7117 of file theory_quant.cpp.

References CVC3::Expr::arity(), CVC3::RAW_LIST, and CVC3::Theory::simplifyExpr().

Referenced by synNewInst().

void TheoryQuant::synNewInst ( size_t  univ_id,
const std::vector< Expr > &  binds,
const Expr gterm,
const Trigger trig 
) [private]

void CVC3::TheoryQuant::synMultInst ( const Theorem univ,
const CDList< Expr > &  allterms,
size_t  tBegin 
) [private]

void CVC3::TheoryQuant::synPartInst ( const Theorem univ,
const CDList< Expr > &  allterms,
size_t  tBegin 
) [private]

void CVC3::TheoryQuant::semInst ( const Theorem univ,
size_t  tBegin 
) [private]

void CVC3::TheoryQuant::goodSynMatch ( const Expr e,
const std::vector< Expr > &  boundVars,
std::vector< std::vector< Expr > > &  instBindsTerm,
std::vector< Expr > &  instGterm,
const CDList< Expr > &  allterms,
size_t  tBegin 
) [private]

void CVC3::TheoryQuant::goodSynMatchNewTrig ( const Trigger trig,
const std::vector< Expr > &  boundVars,
std::vector< std::vector< Expr > > &  instBinds,
std::vector< Expr > &  instGterms,
const CDList< Expr > &  allterms,
size_t  tBegin 
) [private]

bool CVC3::TheoryQuant::goodSynMatchNewTrig ( const Trigger trig,
const std::vector< Expr > &  boundVars,
std::vector< std::vector< Expr > > &  instBinds,
std::vector< Expr > &  instGterms,
const Expr gterm 
) [private]

void TheoryQuant::matchListOld ( const CDList< Expr > &  list,
size_t  gbegin,
size_t  gend 
) [private]

void TheoryQuant::matchListNew ( ExprMap< ExprMap< std::vector< dynTrig > * > * > &  new_trigs,
const CDList< Expr > &  list,
size_t  gbegin,
size_t  gend 
) [private]

void TheoryQuant::delNewTrigs ( ExprMap< ExprMap< std::vector< dynTrig > * > * > &  new_trigs  )  [private]

void TheoryQuant::combineOldNewTrigs ( ExprMap< ExprMap< std::vector< dynTrig > * > * > &  new_trigs  )  [private]

void TheoryQuant::add_parent ( const Expr parent  )  [inline, private]

void TheoryQuant::newTopMatch ( const Expr gterm,
const Expr vterm,
std::vector< ExprMap< Expr > > &  binds,
const Trigger trig 
) [private]

void TheoryQuant::newTopMatchSig ( const Expr gterm,
const Expr vterm,
std::vector< ExprMap< Expr > > &  binds,
const Trigger trig 
) [private]

void TheoryQuant::newTopMatchNoSig ( const Expr gterm,
const Expr vterm,
std::vector< ExprMap< Expr > > &  binds,
const Trigger trig 
) [private]

void CVC3::TheoryQuant::newTopMatchBackupOnly ( const Expr gterm,
const Expr vterm,
std::vector< ExprMap< Expr > > &  binds,
const Trigger trig 
) [private]

bool CVC3::TheoryQuant::synMatchTopPred ( const Expr gterm,
const Trigger  trig,
ExprMap< Expr > &  env 
) [private]

bool CVC3::TheoryQuant::recSynMatch ( const Expr gterm,
const Expr vterm,
ExprMap< Expr > &  env 
) [private]

bool TheoryQuant::recMultMatch ( const Expr gterm,
const Expr vterm,
std::vector< ExprMap< Expr > > &  binds 
) [private]

bool TheoryQuant::recMultMatchDebug ( const Expr gterm,
const Expr vterm,
std::vector< ExprMap< Expr > > &  binds 
) [private]

bool CVC3::TheoryQuant::recMultMatchNewWay ( const Expr gterm,
const Expr vterm,
std::vector< ExprMap< Expr > > &  binds 
) [private]

bool TheoryQuant::recMultMatchOldWay ( const Expr gterm,
const Expr vterm,
std::vector< ExprMap< Expr > > &  binds 
) [private]

bool TheoryQuant::multMatchChild ( const Expr gterm,
const Expr vterm,
std::vector< ExprMap< Expr > > &  binds,
bool  top = false 
) [inline, private]

bool TheoryQuant::multMatchTop ( const Expr gterm,
const Expr vterm,
std::vector< ExprMap< Expr > > &  binds 
) [inline, private]

Definition at line 3914 of file theory_quant.cpp.

References recMultMatch().

Referenced by newTopMatchNoSig(), and newTopMatchSig().

bool CVC3::TheoryQuant::recSynMatchBackupOnly ( const Expr gterm,
const Expr vterm,
ExprMap< Expr > &  env 
) [private]

bool CVC3::TheoryQuant::hasGoodSynInstNewTrigOld ( Trigger trig,
std::vector< Expr > &  boundVars,
std::vector< std::vector< Expr > > &  instBinds,
std::vector< Expr > &  instGterms,
const CDList< Expr > &  allterms,
size_t  tBegin 
) [private]

bool CVC3::TheoryQuant::hasGoodSynInstNewTrig ( Trigger trig,
const std::vector< Expr > &  boundVars,
std::vector< std::vector< Expr > > &  instBinds,
std::vector< Expr > &  instGterms,
const CDList< Expr > &  allterms,
size_t  tBegin 
) [private]

bool CVC3::TheoryQuant::hasGoodSynMultiInst ( const Expr e,
std::vector< Expr > &  bVars,
std::vector< std::vector< Expr > > &  instSet,
const CDList< Expr > &  allterms,
size_t  tBegin 
) [private]

void TheoryQuant::recGoodSemMatch ( const Expr e,
const std::vector< Expr > &  bVars,
std::vector< Expr > &  newInst,
std::set< std::vector< Expr > > &  instSet 
) [private]

bool CVC3::TheoryQuant::hasGoodSemInst ( const Expr e,
std::vector< Expr > &  bVars,
std::set< std::vector< Expr > > &  instSet,
size_t  tBegin 
) [private]

bool TheoryQuant::isTransLike ( const std::vector< Expr > &  cur_trig  )  [private]

Definition at line 2769 of file theory_quant.cpp.

References canGetHead(), d_useTrans, getBoundVars(), and getHead().

Referenced by setupTriggers().

bool TheoryQuant::isTrans2Like ( const std::vector< Expr > &  all_terms,
const Expr tr2 
) [private]

Definition at line 2812 of file theory_quant.cpp.

References d_useTrans2.

Referenced by setupTriggers().

Expr CVC3::TheoryQuant::recGeneralTrig ( const Expr trig,
ExprMap< Expr > &  bvs,
size_t &  mybvs_count 
) [private]

Expr CVC3::TheoryQuant::generalTrig ( const Expr trig,
ExprMap< Expr > &  bvs 
) [private]

void TheoryQuant::registerTrig ( ExprMap< ExprMap< std::vector< dynTrig > * > * > &  cur_trig_map,
Trigger  trig,
const std::vector< Expr thmBVs,
size_t  univ_id 
) [private]

void CVC3::TheoryQuant::registerTrigReal ( Trigger  trig,
const std::vector< Expr ,
size_t  univ_id 
) [private]

bool TheoryQuant::canMatch ( const Expr t1,
const Expr t2,
ExprMap< Expr > &  env 
) [private]

void CVC3::TheoryQuant::setGround ( const Expr gterm,
const Expr trig,
const Theorem univ,
const std::vector< Expr > &  subTerms 
) [private]

void TheoryQuant::setupTriggers ( ExprMap< ExprMap< std::vector< dynTrig > * > * > &  trig_maps,
const Theorem thm,
size_t  univs_id 
) [private]

Definition at line 2863 of file theory_quant.cpp.

References arrayIndexName(), CVC3::BOUND_VAR, canGetHead(), canMatch(), CVC3::TheoryQuant::TheoryQuant::multTrigsInfo::common_pos, CVC3::ExprMap< Data >::count(), d_all_multTrigsInfo, d_fullTrigs, d_hasTriggers, d_multitrigs_maps, d_multTriggers, d_multTrigs, d_offset_multi_trig, d_trans2_num, d_trans_num, d_transThm, d_univs, d_useManTrig, d_usePolarity, d_useTrans2, DebugAssert, exprScore(), findPolarity(), getBoundVars(), CVC3::Theorem::getExpr(), getHead(), getHeadExpr(), CVC3::Expr::getIndex(), CVC3::Expr::getKind(), getSubTrig(), CVC3::Expr::getTrigs(), CVC3::Expr::getType(), CVC3::Expr::getVars(), goodMultiTriggers(), CVC3::int2string(), CVC3::Type::isBool(), isGoodFullTrigger(), isGoodMultiTrigger(), isSimpleTrig(), isSuperSimpleTrig(), isSysPred(), isTrans2Like(), isTransLike(), locVar(), CVC3::Trigger::multiId, CVC3::Trigger::multiIndex, CVC3::Neg, CVC3::Pos, CVC3::PosNeg, CVC3::CDList< T >::push_back(), CVC3::READ, registerTrig(), CVC3::Trigger::setHead(), CVC3::Trigger::setMultiTrig(), CVC3::Trigger::setRWOp(), CVC3::Trigger::setSimp(), CVC3::Trigger::setSuperSimp(), CVC3::Trigger::setTrans(), CVC3::Trigger::setTrans2(), CVC3::ExprMap< Data >::size(), CVC3::Expr::subExprOf(), CVC3::Theory::theoryCore(), CVC3::Expr::toString(), CVC3::TRACE, trigInitScore(), CVC3::Ukn, CVC3::TheoryQuant::TheoryQuant::multTrigsInfo::uncomm_list, CVC3::TheoryQuant::TheoryQuant::multTrigsInfo::univ_id, CVC3::TheoryQuant::TheoryQuant::multTrigsInfo::univThm, CVC3::TheoryQuant::TheoryQuant::multTrigsInfo::var_binds_found, CVC3::TheoryQuant::TheoryQuant::multTrigsInfo::var_pos, and CVC3::WRITE.

Referenced by checkSat().

void TheoryQuant::saveContext (  )  [private]

QuantProofRules * TheoryQuant::createProofRules (  ) 

Destructor.

Definition at line 39 of file quant_theorem_producer.cpp.

References CVC3::Theory::theoryCore().

Referenced by TheoryQuant().

void CVC3::TheoryQuant::addSharedTerm ( const Expr e  )  [inline, virtual]

Theory interface.

Reimplemented from CVC3::Theory.

Definition at line 726 of file theory_quant.h.

void TheoryQuant::assertFact ( const Theorem thm  )  [virtual]

Theory interface function to assert quantified formulas.

pushes in negations and converts to either universally or existentially quantified theorems. Universals are stored in a database while existentials are enqueued to be handled by the search engine.

pushes in negations and converts to either universally or existentially quantified theorems. Universals are stored in a database while existentials are enqueued to be handled by the search engine.

Implements CVC3::Theory.

Definition at line 3435 of file theory_quant.cpp.

References CVC3::QuantProofRules::boundVarElim(), d_maxILReached, d_rawUnivs, d_rules, d_translate, d_univs, d_useGFact, d_useNew, DebugAssert, CVC3::Theory::enqueueFact(), CVC3::Theorem::getExpr(), CVC3::Theory::iffMP(), CVC3::Expr::isExists(), CVC3::Expr::isForall(), CVC3::Expr::isNot(), CVC3::QuantProofRules::packVar(), CVC3::CDList< T >::push_back(), CVC3::QuantProofRules::rewriteNotExists(), CVC3::QuantProofRules::rewriteNotForall(), CVC3::Expr::toString(), CVC3::Theorem::toString(), and CVC3::TRACE.

void TheoryQuant::checkSat ( bool  fullEffort  )  [virtual]

Check for satisfiability in the theory.

Parameters:
fullEffort when it is false, checkSat can do as much or as little work as it likes, though simple inferences and checks for consistency should be done to increase efficiency. If fullEffort is true, checkSat must check whether the set of facts given by assertFact together with the arrangement of shared terms (provided by addSharedTerm) induced by the global find database equivalence relation are satisfiable. If satisfiable, checkSat does nothing.
If satisfiability can be acheived by merging some of the shared terms, a new fact must be enqueued using enqueueFact (this fact need not be a literal). If there is no way to make things satisfiable, setInconsistent must be called.

Implements CVC3::Theory.

Definition at line 7516 of file theory_quant.cpp.

References CVC3::QuantProofRules::addNewConst(), arrayIndexName(), CVC3::ExprMap< Data >::begin(), canGetHead(), CVC3::ExprMap< Data >::clear(), combineOldNewTrigs(), CVC3::ExprMap< Data >::count(), d_abInstCount, d_all_multTrigsInfo, d_eqs, d_eqsUpdate, d_gBindQueue, d_gUnivQueue, d_inEnd, d_instThisRound, d_lastEqsUpdatePos, d_lastPredsPos, d_lastTermsPos, d_maxILReached, d_maxNaiveCall, d_rawUnivs, d_rules, d_same_head_expr, d_simplifiedThmQueue, d_tempBinds, d_translate, d_univs, d_univsQueue, d_useFullTrig, d_useGFact, d_useLazyInst, d_useNaiveInst, d_useNew, d_useSemMatch, DebugAssert, delNewTrigs(), CVC3::ExprMap< Data >::end(), std::endl(), CVC3::Theory::enqueueFact(), enqueueInst(), CVC3::Expr::eqExpr(), FatalAssert, CVC3::Theory::findExpr(), CVC3::TheoryCore::getCM(), CVC3::ContextManager::getCurrentContext(), CVC3::Theory::getEM(), getHead(), CVC3::Expr::getKind(), CVC3::TheoryCore::getPredicates(), CVC3::Theorem::getRHS(), CVC3::TheoryCore::getTerms(), CVC3::Expr::getVars(), CVC3::Expr::isEq(), naiveCheckSat(), CVC3::ExprManager::newVarExpr(), CVC3::CDList< T >::push_back(), CVC3::READ, saveContext(), semCheckSat(), sendInstNew(), CVC3::Expr::setType(), setupTriggers(), CVC3::Theory::simplifyExpr(), CVC3::ExprMap< Data >::size(), CVC3::CDList< T >::size(), synCheckSat(), CVC3::Theory::theoryCore(), CVC3::TheoryQuant::TheoryQuant::multTrigsInfo::uncomm_list, CVC3::TheoryQuant::TheoryQuant::multTrigsInfo::univ_id, CVC3::TheoryQuant::TheoryQuant::multTrigsInfo::univThm, and CVC3::WRITE.

void TheoryQuant::setup ( const Expr e  )  [virtual]

Set up the term e for call-backs when e or its children change.

setup is called once for each expression associated with the theory. It is typically used to setup theory-specific data for an expression and to add call-back information for use with update.

See also:
update

Reimplemented from CVC3::Theory.

Definition at line 331 of file theory_quant.cpp.

int TheoryQuant::help ( int  i  ) 

Definition at line 333 of file theory_quant.cpp.

References d_curMaxExprScore.

void TheoryQuant::update ( const Theorem e,
const Expr d 
) [virtual]

Notify a theory of a new equality.

update is a call-back used by the notify mechanism of the core theory. It works as follows. When an equation t1 = t2 makes it into the core framework, the two find equivalence classes for t1 and t2 are merged. The result is that t2 is the new equivalence class representative and t1 is no longer an equivalence class representative. When this happens, the notify list of t1 is traversed. Notify list entries consist of a theory and an expression d. For each entry (i,d), i->update(e, d) is called, where e is the theorem corresponding to the equality t1=t2.

To add the entry (i,d) to a term t1's notify list, a call must be made to t1.addNotify(i,d). This is typically done in setup.

See also:
setup

Reimplemented from CVC3::Theory.

Definition at line 412 of file theory_quant.cpp.

References backList(), d_eqsUpdate, forwList(), CVC3::Theorem::getExpr(), CVC3::Theorem::getLHS(), CVC3::Theorem::getRHS(), CVC3::CDList< T >::push_back(), CVC3::CDList< T >::size(), and CVC3::TRACE.

void TheoryQuant::debug ( int  i  ) 

void TheoryQuant::notifyInconsistent ( const Theorem thm  )  [virtual]

Used to notify the quantifier algorithm of possible instantiations that were used in proving a context inconsistent.

Reimplemented from CVC3::Theory.

Definition at line 8489 of file theory_quant.cpp.

References d_savedTerms, d_univs, DebugAssert, std::endl(), CVC3::Theorem::getAssumptionsRef(), CVC3::Theorem::getExpr(), CVC3::Theorem::getLeafAssumptions(), CVC3::Expr::isFalse(), CVC3::CDList< T >::size(), CVC3::Theorem::toString(), CVC3::Assumptions::toString(), and CVC3::TRACE.

void TheoryQuant::computeType ( const Expr e  )  [virtual]

computes the type of a quantified term. Always a boolean.

Reimplemented from CVC3::Theory.

Definition at line 8551 of file theory_quant.cpp.

References DebugAssert, CVC3::EXISTS, CVC3::FORALL, CVC3::Expr::getBody(), CVC3::Expr::getKind(), CVC3::Expr::getType(), CVC3::Type::isBool(), CVC3::Expr::setType(), CVC3::Type::toString(), and CVC3::Expr::toString().

Expr TheoryQuant::computeTCC ( const Expr e  )  [virtual]

TCC(forall x.phi(x)) = (forall x. TCC(phi(x))) OR (exists x. TCC(phi(x)) & !phi(x)) TCC(exists x.phi(x)) = (forall x. TCC(phi(x))) OR (exists x. TCC(phi(x)) & phi(x))

Reimplemented from CVC3::Theory.

Definition at line 8582 of file theory_quant.cpp.

References DebugAssert, CVC3::EXISTS, CVC3::FORALL, CVC3::Expr::getBody(), CVC3::Theory::getEM(), CVC3::Expr::getKind(), CVC3::Theory::getTCC(), CVC3::Expr::getVars(), CVC3::Expr::isQuantifier(), CVC3::ExprManager::newClosureExpr(), and CVC3::Expr::toString().

Expr TheoryQuant::parseExprOp ( const Expr e  )  [virtual]

ExprStream & TheoryQuant::print ( ExprStream os,
const Expr e 
) [virtual]

Theory-specific pretty-printing.

By default, print the top node in AST, and resume pretty-printing the children. The same call e.print(os) can be used in DP-specific printers to use AST printing for the given node. In fact, it is strongly recommended to add e.print(os) as the default for all the cases/kinds that are not handled by the particular pretty-printer.

Reimplemented from CVC3::Theory.

Definition at line 8597 of file theory_quant.cpp.

References CVC3::Theory::d_theoryUsed, d_translate, CVC3::EXISTS, CVC3::FORALL, CVC3::Expr::getBody(), CVC3::Theory::getEM(), CVC3::Expr::getKind(), CVC3::Expr::getTrigs(), CVC3::Expr::getVars(), CVC3::Expr::isQuantifier(), CVC3::ExprStream::lang(), CVC3::LISP_LANG, CVC3::nodag(), CVC3::pop(), CVC3::popdag(), CVC3::PRESENTATION_LANG, CVC3::Expr::print(), CVC3::push(), CVC3::pushdag(), CVC3::SIMPLIFY_LANG, CVC3::SMTLIB_LANG, CVC3::space(), and CVC3::TPTP_LANG.


Member Data Documentation

Definition at line 202 of file theory_quant.h.

Referenced by assertFact(), checkSat(), and saveContext().

Definition at line 204 of file theory_quant.h.

Referenced by registerTrig(), saveContext(), and synCheckSat().

Definition at line 205 of file theory_quant.h.

Referenced by saveContext(), and synCheckSat().

universally quantified formulas to be instantiated, the var bindings is in d_bingQueue and the ground term matched with the trigger is in d_gtermQueue

Definition at line 208 of file theory_quant.h.

Referenced by checkSat().

Definition at line 210 of file theory_quant.h.

Referenced by checkSat(), enqueueInst(), and sendInstNew().

Definition at line 212 of file theory_quant.h.

Referenced by checkSat(), enqueueInst(), and sendInstNew().

std::queue<Expr> CVC3::TheoryQuant::d_gBindQueue [private]

Definition at line 214 of file theory_quant.h.

Referenced by checkSat(), enqueueInst(), and sendInstNew().

ExprMap<std::set<std::vector<Expr> > > CVC3::TheoryQuant::d_tempBinds [private]

Definition at line 217 of file theory_quant.h.

Referenced by checkSat().

tracks the possition of preds

Definition at line 220 of file theory_quant.h.

Referenced by checkSat(), saveContext(), and synCheckSat().

tracks the possition of terms

Definition at line 222 of file theory_quant.h.

Referenced by checkSat(), saveContext(), and synCheckSat().

tracks the positions of preds for partial instantiation

Definition at line 225 of file theory_quant.h.

tracks the possition of terms for partial instantiation

Definition at line 227 of file theory_quant.h.

tracks a possition in the database of universals for partial instantiation

Definition at line 229 of file theory_quant.h.

the last decision level on which partial instantion is called

Definition at line 232 of file theory_quant.h.

Definition at line 234 of file theory_quant.h.

Referenced by TheoryQuant().

the max instantiation level reached

Definition at line 237 of file theory_quant.h.

Referenced by assertFact(), checkSat(), and synCheckSat().

useful gterms for matching

Definition at line 242 of file theory_quant.h.

Referenced by debug(), saveContext(), and synCheckSat().

tracks the position in d_usefulGterms

Definition at line 245 of file theory_quant.h.

Referenced by saveContext(), and synCheckSat().

tracks a possition in the savedTerms map

Definition at line 248 of file theory_quant.h.

Referenced by naiveCheckSat().

tracks a possition in the database of universals

Definition at line 250 of file theory_quant.h.

Referenced by naiveCheckSat(), saveContext(), and synCheckSat().

Definition at line 251 of file theory_quant.h.

Referenced by saveContext().

tracks a possition in the database of universals

Definition at line 253 of file theory_quant.h.

tracks a possition in the database of universals if fulleffort mode, the d_univsSavedPos now uesed when fulleffort=0 only.

Definition at line 256 of file theory_quant.h.

Referenced by naiveCheckSat().

number of instantiations made in given context

Definition at line 259 of file theory_quant.h.

Referenced by naiveCheckSat(), recInstantiate(), and TheoryQuant().

set if the fullEffort = 1

Definition at line 262 of file theory_quant.h.

Referenced by checkSat(), and synCheckSat().

Definition at line 264 of file theory_quant.h.

Referenced by matchListNew(), matchListOld(), and synCheckSat().

std::map<Type, CDList<size_t>* ,TypeComp> CVC3::TheoryQuant::d_contextMap [private]

a map of types to posisitions in the d_contextTerms list

Definition at line 267 of file theory_quant.h.

Referenced by mapTermsByType(), recInstantiate(), recursiveMap(), and ~TheoryQuant().

a list of all the terms appearing in the current context

chache of expressions

Definition at line 270 of file theory_quant.h.

Referenced by instantiate(), mapTermsByType(), naiveCheckSat(), recInstantiate(), and recursiveMap().

Definition at line 271 of file theory_quant.h.

Referenced by recursiveMap().

a map of types to positions in the d_savedTerms vector

Definition at line 274 of file theory_quant.h.

Referenced by findInstAssumptions(), and recInstantiate().

cache of expressions

Definition at line 275 of file theory_quant.h.

Referenced by findInstAssumptions(), and recursiveMap().

std::vector<Expr> CVC3::TheoryQuant::d_savedTerms [private]

a vector of all of the terms that have produced conflicts.

Definition at line 277 of file theory_quant.h.

Referenced by findInstAssumptions(), instantiate(), naiveCheckSat(), notifyInconsistent(), and recInstantiate().

ExprMap<std::vector<Expr> > CVC3::TheoryQuant::d_insts [private]

a map of instantiated universals to a vector of their instantiations

Definition at line 280 of file theory_quant.h.

Referenced by findInstAssumptions(), and recInstantiate().

quantifier theorem production rules

Definition at line 283 of file theory_quant.h.

Referenced by assertFact(), checkSat(), enqueueInst(), recInstantiate(), rewrite(), theoryPreprocess(), TheoryQuant(), and ~TheoryQuant().

const int* CVC3::TheoryQuant::d_maxQuantInst [private]

Command line option.

Definition at line 285 of file theory_quant.h.

Referenced by naiveCheckSat(), and recInstantiate().

const bool* CVC3::TheoryQuant::d_useNew [private]

Definition at line 323 of file theory_quant.h.

Referenced by assertFact(), and checkSat().

const bool* CVC3::TheoryQuant::d_useLazyInst [private]

use new way of instantiation

Definition at line 324 of file theory_quant.h.

Referenced by checkSat().

const bool* CVC3::TheoryQuant::d_useSemMatch [private]

use lazy instantiation

Definition at line 325 of file theory_quant.h.

Referenced by checkSat().

const bool* CVC3::TheoryQuant::d_useCompleteInst [private]

use semantic matching

Definition at line 326 of file theory_quant.h.

const bool* CVC3::TheoryQuant::d_translate [private]

Try complete instantiation.

Definition at line 327 of file theory_quant.h.

Referenced by assertFact(), checkSat(), and print().

const bool* CVC3::TheoryQuant::d_usePart [private]

translate only

Definition at line 329 of file theory_quant.h.

const bool* CVC3::TheoryQuant::d_useMult [private]

use partial instantiaion

Definition at line 330 of file theory_quant.h.

const bool* CVC3::TheoryQuant::d_useInstLCache [private]

Definition at line 332 of file theory_quant.h.

Referenced by enqueueInst().

const bool* CVC3::TheoryQuant::d_useInstGCache [private]

Definition at line 333 of file theory_quant.h.

Referenced by enqueueInst(), and sendInstNew().

const bool* CVC3::TheoryQuant::d_useInstThmCache [private]

Definition at line 334 of file theory_quant.h.

Referenced by enqueueInst().

const bool* CVC3::TheoryQuant::d_useInstTrue [private]

Definition at line 335 of file theory_quant.h.

Referenced by enqueueInst().

const bool* CVC3::TheoryQuant::d_usePullVar [private]

Definition at line 336 of file theory_quant.h.

const bool* CVC3::TheoryQuant::d_useExprScore [private]

Definition at line 337 of file theory_quant.h.

Referenced by synCheckSat().

const int* CVC3::TheoryQuant::d_useTrigLoop [private]

Definition at line 338 of file theory_quant.h.

const int* CVC3::TheoryQuant::d_maxInst [private]

Definition at line 339 of file theory_quant.h.

const int* CVC3::TheoryQuant::d_maxIL [private]

Definition at line 341 of file theory_quant.h.

Referenced by synCheckSat().

const bool* CVC3::TheoryQuant::d_useTrans [private]

Definition at line 342 of file theory_quant.h.

Referenced by isTransLike().

const bool* CVC3::TheoryQuant::d_useTrans2 [private]

Definition at line 343 of file theory_quant.h.

Referenced by isTrans2Like(), and setupTriggers().

const bool* CVC3::TheoryQuant::d_useManTrig [private]

Definition at line 344 of file theory_quant.h.

Referenced by newTopMatchSig(), and setupTriggers().

const bool* CVC3::TheoryQuant::d_useGFact [private]

Definition at line 345 of file theory_quant.h.

Referenced by assertFact(), checkSat(), enqueueInst(), sendInstNew(), and synCheckSat().

const int* CVC3::TheoryQuant::d_gfactLimit [private]

Definition at line 346 of file theory_quant.h.

Referenced by enqueueInst(), and sendInstNew().

const bool* CVC3::TheoryQuant::d_useInstAll [private]

Definition at line 347 of file theory_quant.h.

const bool* CVC3::TheoryQuant::d_usePolarity [private]

Definition at line 348 of file theory_quant.h.

Referenced by newTopMatchNoSig(), newTopMatchSig(), and setupTriggers().

const bool* CVC3::TheoryQuant::d_useEqu [private]

Definition at line 349 of file theory_quant.h.

const bool* CVC3::TheoryQuant::d_useNewEqu [private]

Definition at line 350 of file theory_quant.h.

Referenced by recMultMatch(), recMultMatchDebug(), and synNewInst().

const int* CVC3::TheoryQuant::d_maxNaiveCall [private]

Definition at line 351 of file theory_quant.h.

Referenced by checkSat().

const bool* CVC3::TheoryQuant::d_useNaiveInst [private]

Definition at line 352 of file theory_quant.h.

Referenced by checkSat().

Definition at line 357 of file theory_quant.h.

Referenced by checkSat(), and synCheckSat().

Definition at line 358 of file theory_quant.h.

Definition at line 359 of file theory_quant.h.

CDMap<Expr, std::vector<Expr> > CVC3::TheoryQuant::d_arrayIndic [private]

Definition at line 362 of file theory_quant.h.

Referenced by arrayHeuristic(), and arrayIndexName().

std::vector<Expr> CVC3::TheoryQuant::d_allInsts [private]

Definition at line 365 of file theory_quant.h.

all instantiations

Definition at line 367 of file theory_quant.h.

Referenced by TheoryQuant().

Definition at line 368 of file theory_quant.h.

Referenced by setupTriggers(), and TheoryQuant().

Definition at line 370 of file theory_quant.h.

Referenced by checkSat(), enqueueInst(), and sendInstNew().

Definition at line 371 of file theory_quant.h.

Referenced by synCheckSat().

Definition at line 373 of file theory_quant.h.

Definition at line 379 of file theory_quant.h.

Referenced by setupTriggers().

Definition at line 380 of file theory_quant.h.

Definition at line 382 of file theory_quant.h.

Referenced by setupTriggers().

Definition at line 384 of file theory_quant.h.

Referenced by setupTriggers().

Definition at line 385 of file theory_quant.h.

Definition at line 388 of file theory_quant.h.

std::map<ExprIndex, int> CVC3::TheoryQuant::d_indexScore [private]

Definition at line 390 of file theory_quant.h.

Definition at line 392 of file theory_quant.h.

the score for a full trigger

Definition at line 398 of file theory_quant.h.

Referenced by setupTriggers().

Definition at line 399 of file theory_quant.h.

Definition at line 401 of file theory_quant.h.

Referenced by setupTriggers(), and TheoryQuant().

Definition at line 402 of file theory_quant.h.

Referenced by setupTriggers(), and TheoryQuant().

Definition at line 415 of file theory_quant.h.

Referenced by setupTriggers().

Definition at line 416 of file theory_quant.h.

Referenced by checkSat(), setupTriggers(), and synNewInst().

Definition at line 418 of file theory_quant.h.

Referenced by backList(), and pushBackList().

Definition at line 419 of file theory_quant.h.

Referenced by forwList(), and pushForwList().

Definition at line 420 of file theory_quant.h.

Referenced by setTransFound(), and transFound().

Definition at line 421 of file theory_quant.h.

Referenced by setTrans2Found(), and trans2Found().

Definition at line 440 of file theory_quant.h.

Referenced by getHeadExpr(), and TheoryQuant().

Definition at line 441 of file theory_quant.h.

Referenced by getHeadExpr(), and TheoryQuant().

Definition at line 442 of file theory_quant.h.

Referenced by getHeadExpr(), and TheoryQuant().

Definition at line 443 of file theory_quant.h.

Referenced by getHeadExpr(), and TheoryQuant().

Definition at line 444 of file theory_quant.h.

Referenced by getHeadExpr(), and TheoryQuant().

Definition at line 445 of file theory_quant.h.

Referenced by getHeadExpr(), and TheoryQuant().

Definition at line 446 of file theory_quant.h.

Referenced by getHeadExpr(), and TheoryQuant().

Definition at line 453 of file theory_quant.h.

Referenced by backList(), and forwList().

Definition at line 455 of file theory_quant.h.

Referenced by setupTriggers().

ExprMap<CDList<std::vector<Expr> >* > CVC3::TheoryQuant::d_mtrigs_inst [private]

Definition at line 461 of file theory_quant.h.

Definition at line 463 of file theory_quant.h.

Referenced by checkSat(), recMultMatchDebug(), and recMultMatchOldWay().

Definition at line 464 of file theory_quant.h.

Definition at line 466 of file theory_quant.h.

Referenced by checkSat(), saveContext(), and update().

Definition at line 467 of file theory_quant.h.

Referenced by checkSat(), and saveContext().

Definition at line 469 of file theory_quant.h.

Referenced by checkSat(), and collectChangedTerms().

CDO<size_t > CVC3::TheoryQuant::d_eqs_pos [private]

Definition at line 470 of file theory_quant.h.

Referenced by collectChangedTerms().

ExprMap<CDO<size_t>* > CVC3::TheoryQuant::d_eq_pos [private]

Definition at line 472 of file theory_quant.h.

Definition at line 474 of file theory_quant.h.

Referenced by add_parent(), and collectChangedTerms().

Definition at line 476 of file theory_quant.h.

Referenced by loc_gterm().

std::map<Type, std::vector<Expr>,TypeComp > CVC3::TheoryQuant::d_typeExprMap [private]

Definition at line 495 of file theory_quant.h.

Referenced by recGoodSemMatch().

std::set<std::string> CVC3::TheoryQuant::cacheHead [private]

Definition at line 496 of file theory_quant.h.

Definition at line 498 of file theory_quant.h.

Referenced by enqueueInst(), and sendInstNew().

Definition at line 499 of file theory_quant.h.

Referenced by enqueueInst().

Definition at line 500 of file theory_quant.h.

Referenced by enqueueInst().

Definition at line 501 of file theory_quant.h.

Referenced by enqueueInst().

Definition at line 502 of file theory_quant.h.

Referenced by checkSat().

Definition at line 510 of file theory_quant.h.

Definition at line 511 of file theory_quant.h.

Referenced by TheoryQuant().

CDMap<Expr, std::set<std::vector<Expr> > > CVC3::TheoryQuant::d_instHistory [private]

Definition at line 517 of file theory_quant.h.

Definition at line 520 of file theory_quant.h.

Referenced by enqueueInst(), and sendInstNew().

Definition at line 521 of file theory_quant.h.

Referenced by enqueueInst().

Definition at line 523 of file theory_quant.h.

Referenced by enqueueInst().

Definition at line 524 of file theory_quant.h.

Referenced by enqueueInst(), and sendInstNew().

Definition at line 526 of file theory_quant.h.

Referenced by enqueueInst().

ExprMap<std::set<std::vector<Expr> > > CVC3::TheoryQuant::d_instHistoryGlobal [private]

Definition at line 528 of file theory_quant.h.

ExprMap<std::vector<Expr> > CVC3::TheoryQuant::d_subTermsMap [private]

Definition at line 531 of file theory_quant.h.

Referenced by getSubTerms().

const size_t CVC3::TheoryQuant::MAX_TRIG_BVS = 15 [static, private]

Definition at line 681 of file theory_quant.h.

Referenced by TheoryQuant().

Definition at line 682 of file theory_quant.h.

Referenced by TheoryQuant().

Definition at line 687 of file theory_quant.h.

Referenced by combineOldNewTrigs(), and matchListOld().

Definition at line 689 of file theory_quant.h.


The documentation for this class was generated from the following files:

Generated on Thu Oct 15 22:23:01 2009 for CVC3 by  doxygen 1.5.8