CVC3
Public Member Functions | Private Member Functions | Private Attributes

CVC3::SearchEngineTheoremProducer Class Reference

#include <search_theorem_producer.h>

Inherits CVC3::SearchEngineRules, and CVC3::TheoremProducer.

Collaboration diagram for CVC3::SearchEngineTheoremProducer:
Collaboration graph
[legend]

List of all members.

Public Member Functions

Private Member Functions

Private Attributes


Detailed Description

Definition at line 32 of file search_theorem_producer.h.


Constructor & Destructor Documentation

SearchEngineTheoremProducer::SearchEngineTheoremProducer ( TheoremManager tm)

Definition at line 62 of file search_theorem_producer.cpp.

virtual CVC3::SearchEngineTheoremProducer::~SearchEngineTheoremProducer ( ) [inline, virtual]

Definition at line 48 of file search_theorem_producer.h.


Member Function Documentation

void SearchEngineTheoremProducer::verifyConflict ( const Theorem thm,
TheoremMap m 
) [private]

Definition at line 192 of file search_theorem_producer.cpp.

References CHECK_SOUND, and CVC3::Theorem::getAssumptionsRef().

Referenced by conflictClause().

void SearchEngineTheoremProducer::checkSoundNoSkolems ( const Expr e,
ExprMap< bool > &  visited,
const ExprMap< bool > &  skolems 
) [private]
void SearchEngineTheoremProducer::checkSoundNoSkolems ( const Theorem t,
ExprMap< bool > &  visited,
const ExprMap< bool > &  skolems 
) [private]
Theorem SearchEngineTheoremProducer::proofByContradiction ( const Expr a,
const Theorem pfFalse 
) [virtual]
Theorem SearchEngineTheoremProducer::negIntro ( const Expr not_a,
const Theorem pfFalse 
) [virtual]

Negation introduction:

\[\frac{\Gamma, A \vdash\mathrm{FALSE}}{\Gamma\vdash\neg A}\]

.

Parameters:
not_ais the formula $\neg A$. We pass the negation $\neg A$, and not just A, for efficiency: building $\neg A$ is more expensive (due to uniquifying pointers in Expr package) than extracting A from $\neg A$.
pfFalseis the theorem $\Gamma, A \vdash\mathrm{FALSE}$

Implements CVC3::SearchEngineRules.

Definition at line 105 of file search_theorem_producer.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Theorem::getAssumptionsRef(), CVC3::Theorem::getExpr(), CVC3::Theorem::getProof(), CVC3::Expr::isFalse(), CVC3::Expr::isNot(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newTheorem(), CVC3::Expr::toString(), CVC3::Theorem::toString(), and CVC3::TheoremProducer::withProof().

Theorem SearchEngineTheoremProducer::caseSplit ( const Expr a,
const Theorem a_proves_c,
const Theorem not_a_proves_c 
) [virtual]

Case split:

\[\frac{\Gamma_1, A\vdash C \quad \Gamma_2, \neg A\vdash C} {\Gamma_1\cup\Gamma_2\vdash C}\]

.

Parameters:
ais the assumption A to split on
a_proves_cis the theorem $\Gamma_1, A\vdash C$
not_a_proves_cis the theorem $\Gamma_2, \neg A\vdash C$

Implements CVC3::SearchEngineRules.

Definition at line 135 of file search_theorem_producer.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Theorem::getAssumptionsRef(), CVC3::Theorem::getExpr(), CVC3::Theorem::getProof(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newTheorem(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Theorem SearchEngineTheoremProducer::eliminateSkolemAxioms ( const Theorem tFalse,
const std::vector< Theorem > &  delta 
) [virtual]
Theorem SearchEngineTheoremProducer::conflictClause ( const Theorem thm,
const std::vector< Theorem > &  lits,
const std::vector< Theorem > &  gamma 
) [virtual]
Theorem SearchEngineTheoremProducer::cutRule ( const std::vector< Theorem > &  thmsA,
const Theorem as_prove_b 
) [virtual]
Theorem SearchEngineTheoremProducer::unitProp ( const std::vector< Theorem > &  thms,
const Theorem clause,
unsigned  i 
) [virtual]

Unit propagation rule:

\[\frac{\Gamma_j\vdash\neg A_j\mbox{ for }j\in[1\ldots n]-\{i\} \quad \Gamma\vdash A_1\vee\cdots\vee A_n} {\bigcup_{j\in[1\ldots n]-\{i\}}\Gamma_j\cup\Gamma\vdash A_i}\]

.

Parameters:
clauseis the proof of the clause $ \Gamma\vdash A_1\vee\cdots\vee A_n$
iis the index (0..n-1) of the literal to be unit-propagated
thmsis the vector of theorems $\Gamma_j\vdash\neg A_j$ for all literals except Ai

Implements CVC3::SearchEngineRules.

Definition at line 511 of file search_theorem_producer.cpp.

References CVC3::Assumptions::add(), CHECK_PROOFS, CHECK_SOUND, CVC3::Theorem::getExpr(), CVC3::Theorem::getProof(), CVC3::int2string(), CVC3::Expr::isNot(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newTheorem(), CVC3::Theorem::toString(), and CVC3::TheoremProducer::withProof().

Theorem SearchEngineTheoremProducer::conflictRule ( const std::vector< Theorem > &  thms,
const Theorem clause 
) [virtual]
Theorem SearchEngineTheoremProducer::propAndrAF ( const Theorem andr_th,
bool  left,
const Theorem b_th 
) [virtual]
Theorem SearchEngineTheoremProducer::propAndrAT ( const Theorem andr_th,
const Theorem l_th,
const Theorem r_th 
) [virtual]
void SearchEngineTheoremProducer::propAndrLRT ( const Theorem andr_th,
const Theorem a_th,
Theorem l_th,
Theorem r_th 
) [virtual]
Theorem SearchEngineTheoremProducer::propAndrLF ( const Theorem andr_th,
const Theorem a_th,
const Theorem r_th 
) [virtual]
Theorem SearchEngineTheoremProducer::propAndrRF ( const Theorem andr_th,
const Theorem a_th,
const Theorem l_th 
) [virtual]
Theorem SearchEngineTheoremProducer::confAndrAT ( const Theorem andr_th,
const Theorem a_th,
bool  left,
const Theorem b_th 
) [virtual]
Theorem SearchEngineTheoremProducer::confAndrAF ( const Theorem andr_th,
const Theorem a_th,
const Theorem l_th,
const Theorem r_th 
) [virtual]
Theorem SearchEngineTheoremProducer::propIffr ( const Theorem iffr_th,
int  p,
const Theorem a_th,
const Theorem b_th 
) [virtual]
Theorem SearchEngineTheoremProducer::confIffr ( const Theorem iffr_th,
const Theorem i_th,
const Theorem l_th,
const Theorem r_th 
) [virtual]
Theorem SearchEngineTheoremProducer::propIterIte ( const Theorem iter_th,
bool  left,
const Theorem if_th,
const Theorem then_th 
) [virtual]
void SearchEngineTheoremProducer::propIterIfThen ( const Theorem iter_th,
bool  left,
const Theorem ite_th,
const Theorem then_th,
Theorem if_th,
Theorem else_th 
) [virtual]
Theorem SearchEngineTheoremProducer::propIterThen ( const Theorem iter_th,
const Theorem ite_th,
const Theorem if_th 
) [virtual]
Theorem SearchEngineTheoremProducer::confIterThenElse ( const Theorem iter_th,
const Theorem ite_th,
const Theorem then_th,
const Theorem else_th 
) [virtual]
Theorem SearchEngineTheoremProducer::confIterIfThen ( const Theorem iter_th,
bool  left,
const Theorem ite_th,
const Theorem if_th,
const Theorem then_th 
) [virtual]
Theorem SearchEngineTheoremProducer::andCNFRule ( const Theorem thm) [virtual]

AND(x1,...,xn) <=> v |- CNF[AND(x1,...,xn) <=> v].

Implements CVC3::SearchEngineRules.

Definition at line 1160 of file search_theorem_producer.cpp.

References AND, and opCNFRule().

Theorem SearchEngineTheoremProducer::orCNFRule ( const Theorem thm) [virtual]

OR(x1,...,xn) <=> v |- CNF[OR(x1,...,xn) <=> v].

Implements CVC3::SearchEngineRules.

Definition at line 1165 of file search_theorem_producer.cpp.

References opCNFRule(), and OR.

Theorem SearchEngineTheoremProducer::impCNFRule ( const Theorem thm) [virtual]

(x1 => x2) <=> v |- CNF[(x1 => x2) <=> v]

Implements CVC3::SearchEngineRules.

Definition at line 1170 of file search_theorem_producer.cpp.

References IMPLIES, and opCNFRule().

Theorem SearchEngineTheoremProducer::iffCNFRule ( const Theorem thm) [virtual]

(x1 <=> x2) <=> v |- CNF[(x1 <=> x2) <=> v]

Implements CVC3::SearchEngineRules.

Definition at line 1175 of file search_theorem_producer.cpp.

References IFF, and opCNFRule().

Theorem SearchEngineTheoremProducer::iteCNFRule ( const Theorem thm) [virtual]

ITE(c, x1, x2) <=> v |- CNF[ITE(c, x1, x2) <=> v].

Implements CVC3::SearchEngineRules.

Definition at line 1180 of file search_theorem_producer.cpp.

References ITE, and opCNFRule().

Theorem SearchEngineTheoremProducer::iteToClauses ( const Theorem ite) [virtual]
Theorem SearchEngineTheoremProducer::iffToClauses ( const Theorem iff) [virtual]
Theorem SearchEngineTheoremProducer::satProof ( const Expr queryExpr,
const Proof satProof 
) [virtual]
Theorem SearchEngineTheoremProducer::opCNFRule ( const Theorem thm,
int  kind,
const std::string &  ruleName 
) [private]
Expr SearchEngineTheoremProducer::convertToCNF ( const Expr v,
const Expr phi 
) [private]
Expr SearchEngineTheoremProducer::findInLocalCache ( const Expr i,
ExprMap< Expr > &  localCache,
std::vector< Expr > &  boundVars 
) [private]

checks if phi has v in local cache of opCNFRule, if so reuse v.

similarly for ( ! ... ! (phi))

Definition at line 1382 of file search_theorem_producer.cpp.

References CVC3::TheoremProducer::d_em, CVC3::ExprMap< Data >::end(), CVC3::ExprMap< Data >::find(), CVC3::Expr::getType(), IF_DEBUG, CVC3::Expr::iffExpr(), CVC3::Expr::isNot(), CVC3::ExprManager::newBoundVarExpr(), CVC3::Expr::toString(), and TRACE.

Referenced by opCNFRule().


Member Data Documentation

Definition at line 36 of file search_theorem_producer.h.

Referenced by satProof().


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