| CVC3 | 
#include <common_proof_rules.h>
Inherited by CVC3::CommonTheoremProducer.
Definition at line 46 of file common_proof_rules.h.
| virtual CVC3::CommonProofRules::~CommonProofRules | ( | ) |  [inline, virtual] | 
Destructor.
Definition at line 49 of file common_proof_rules.h.
| virtual Theorem3 CVC3::CommonProofRules::queryTCC | ( | const Theorem & | phi, | 
| const Theorem & | D_phi | ||
| ) |  [pure virtual] | 
Convert 2-valued formula to 3-valued by discharging its TCC (  ):
): 
![\[\frac{\Gamma_1\vdash_2 \phi\quad \Gamma_2\vdash_2 D_{\phi}} {\Gamma_1,\,\Gamma_2\vdash_3\phi}\]](form_225.png) 
.
Implemented in CVC3::CommonTheoremProducer.
| virtual Theorem3 CVC3::CommonProofRules::implIntro3 | ( | const Theorem3 & | phi, | 
| const std::vector< Expr > & | assump, | ||
| const std::vector< Theorem > & | tccs | ||
| ) |  [pure virtual] | 
3-valued implication introduction rule:
![\[\frac{\Gamma_0,\,\alpha_1\,\ldots,\,\alpha_n\vdash_3\phi\quad (\Gamma_i\vdash D_{\alpha_i})_{i\in[1..n]}} {\Gamma_0,\,\Gamma_1, \ldots, \Gamma_n\vdash_3 (\bigwedge_{i=1}^n\alpha_i)\to\phi}\]](form_226.png) 
| phi | is the formula   | 
| assump | is the vector of assumptions   | 
| tccs | is the vector of TCCs for assumptions   | 
Implemented in CVC3::CommonTheoremProducer.
![\[\frac{}{a = a}\quad or \quad\frac{}{a \Leftrightarrow a}\]](form_230.png) 
Implemented in CVC3::CommonTheoremProducer.
Referenced by SAT::CNF_Manager::concreteThm(), CVC3::ExprTransform::newPP(), CVC3::ExprTransform::newPPrec(), CVC3::ExprTransform::preprocess(), CVC3::ExprTransform::pushNegation(), CVC3::ExprTransform::pushNegation1(), CVC3::ExprTransform::pushNegationRec(), CVC3::Theory::reflexivityRule(), CVC3::SearchImplBase::replaceITE(), SAT::CNF_Manager::replaceITErec(), CVC3::TheoryCore::rewrite(), CVC3::ExprTransform::simplifyWithCare(), CVC3::ExprTransform::specialSimplify(), CVC3::ExprTransform::substitute(), and SAT::CNF_Manager::translateExprRec().
==> (a == a) IFF TRUE
Implemented in CVC3::CommonTheoremProducer.
![\[\frac{a_1=a_2}{a_2=a_1}\]](form_231.png) 
(same for IFF)
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::SearchImplBase::applyCNFRules(), CVC3::SearchSimple::checkValidMain(), CVC3::SearchEngineFast::checkValidMain(), CVC3::SearchImplBase::enqueueCNFrec(), SAT::CNF_Manager::replaceITErec(), and CVC3::Theory::symmetryRule().
| virtual Theorem CVC3::CommonProofRules::rewriteUsingSymmetry | ( | const Expr & | a1_eq_a2 | ) |  [pure virtual] | 
![\[\frac{}{(a_1=a_2)\Leftrightarrow (a_2=a_1)}\]](form_232.png) 
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::TheoryArray::rewrite(), CVC3::TheoryArithOld::rewrite(), CVC3::TheoryArith3::rewrite(), and CVC3::TheoryCore::update().
| virtual Theorem CVC3::CommonProofRules::transitivityRule | ( | const Theorem & | a1_eq_a2, | 
| const Theorem & | a2_eq_a3 | ||
| ) |  [pure virtual] | 
![\[\frac{a_1=a_2\quad a_2=a_3}{a_1=a_3}\]](form_233.png) 
(same for IFF)
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::SearchImplBase::applyCNFRules(), CVC3::SearchImplBase::enqueueCNFrec(), CVC3::SearchImplBase::findInCNFCache(), CVC3::ExprTransform::newPPrec(), CVC3::ExprTransform::preprocess(), CVC3::ExprTransform::pushNegation1(), CVC3::ExprTransform::pushNegationRec(), CVC3::SearchImplBase::replaceITE(), CVC3::ExprTransform::simplifyWithCare(), CVC3::ExprTransform::substitute(), and CVC3::Theory::transitivityRule().
| virtual Theorem CVC3::CommonProofRules::substitutivityRule | ( | const Expr & | e, | 
| const Theorem & | thm | ||
| ) |  [pure virtual] | 
Optimized case for expr with one child.
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::SearchImplBase::applyCNFRules(), CVC3::TheoryArith3::assertFact(), CVC3::SearchImplBase::enqueueCNFrec(), CVC3::Theory::findReduce(), CVC3::ExprTransform::newPPrec(), CVC3::ExprTransform::pushNegation1(), CVC3::ExprTransform::pushNegationRec(), SAT::CNF_Manager::replaceITErec(), CVC3::TheoryCore::simplifyOp(), CVC3::Theory::simplifyOp(), CVC3::ExprTransform::specialSimplify(), CVC3::ExprTransform::substitute(), CVC3::Theory::substitutivityRule(), CVC3::TheoryCore::update(), and CVC3::Theory::updateHelper().
| virtual Theorem CVC3::CommonProofRules::substitutivityRule | ( | const Expr & | e, | 
| const Theorem & | thm1, | ||
| const Theorem & | thm2 | ||
| ) |  [pure virtual] | 
Optimized case for expr with two children.
Implemented in CVC3::CommonTheoremProducer.
| virtual Theorem CVC3::CommonProofRules::substitutivityRule | ( | const Op & | op, | 
| const std::vector< Theorem > & | thms | ||
| ) |  [pure virtual] | 
![\[\frac{(c_1=d_1)\wedge\ldots\wedge(c_n=d_n)} {op(c_1,\ldots,c_n)=op(d_1,\ldots,d_n)}\]](form_234.png) 
Implemented in CVC3::CommonTheoremProducer.
| virtual Theorem CVC3::CommonProofRules::substitutivityRule | ( | const Expr & | e, | 
| const std::vector< unsigned > & | changed, | ||
| const std::vector< Theorem > & | thms | ||
| ) |  [pure virtual] | 
![\[\frac{(c_1=d_1)\wedge\ldots\wedge(c_n=d_n)} {op(c_1,\ldots,c_n)=op(d_1,\ldots,d_n)}\]](form_234.png) 
 except that only those arguments are given that  .
. 
| e | is the original expression  . | 
| changed | is the vector of indices of changed kids | 
| thms | are the theorems  for the changed kids. | 
Implemented in CVC3::CommonTheoremProducer.
| virtual Theorem CVC3::CommonProofRules::substitutivityRule | ( | const Expr & | e, | 
| const int | changed, | ||
| const Theorem & | thm | ||
| ) |  [pure virtual] | 
Implemented in CVC3::CommonTheoremProducer.
| virtual Theorem CVC3::CommonProofRules::contradictionRule | ( | const Theorem & | e, | 
| const Theorem & | not_e | ||
| ) |  [pure virtual] | 
![\[\frac{\Gamma_1\vdash e\quad\Gamma_2\vdash \neg e} {\Gamma_1\cup\Gamma_2\vdash \mathrm{FALSE}} \]](form_238.png) 
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::SearchEngineFast::addLiteralFact(), and CVC3::SearchEngineFast::recordFact().
Implemented in CVC3::CommonTheoremProducer.
![\[\frac{\Gamma\vdash e}{\Gamma\vdash e\Leftrightarrow\mathrm{TRUE}}\]](form_239.png) 
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::TheoryArithOld::rewrite(), CVC3::TheoryArith3::rewrite(), and CVC3::TheoryCore::simplifyOp().
![\[\frac{\Gamma\vdash e}{\Gamma\vdash\neg e\Leftrightarrow\mathrm{FALSE}}\]](form_240.png) 
Implemented in CVC3::CommonTheoremProducer.
![\[\frac{\Gamma\vdash e\Leftrightarrow\mathrm{TRUE}}{\Gamma\vdash e}\]](form_241.png) 
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::TheoryCore::registerAtom(), CVC3::SearchEngineFast::split(), CVC3::TheoryUF::update(), and CVC3::TheoryCore::update().
![\[\frac{\Gamma\vdash e\Leftrightarrow\mathrm{FALSE}}{\Gamma\vdash\neg e}\]](form_242.png) 
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::TheoryCore::registerAtom(), CVC3::SearchEngineFast::split(), and CVC3::TheoryCore::update().
e1 <=> e2 ==> ~e1 <=> ~e2
![\[\frac{\Gamma\vdash e_1\Leftrightarrow e_2} {\Gamma\vdash\sim e_1\Leftrightarrow\sim e_2}\]](form_243.png) 
Where ~e is the inverse of e (that is, ~(!e') = e').
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::SearchImplBase::addToCNFCache(), CVC3::SearchImplBase::applyCNFRules(), CVC3::SearchSimple::checkValidMain(), CVC3::SearchEngineFast::checkValidMain(), CVC3::SearchImplBase::findInCNFCache(), and CVC3::TheoryCore::rewriteLiteral().
![\[\frac{\Gamma\vdash\neg\neg e}{\Gamma\vdash e}\]](form_244.png) 
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::SearchImplBase::enqueueCNFrec(), and CVC3::SearchEngineFast::split().
| virtual Theorem CVC3::CommonProofRules::iffMP | ( | const Theorem & | e1, | 
| const Theorem & | e1_iff_e2 | ||
| ) |  [pure virtual] | 
![\[\frac{\Gamma_1\vdash e_1\quad \Gamma_2\vdash(e_1\Leftrightarrow e_2)} {\Gamma_1\cup\Gamma_2\vdash e_2} \]](form_245.png) 
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::SearchSimple::checkValidMain(), CVC3::SearchEngineFast::checkValidMain(), CVC3::SearchImplBase::enqueueCNFrec(), CVC3::SearchEngineFast::fixConflict(), CVC3::TheoryArithNew::getVariableIntroThm(), CVC3::Theory::iffMP(), CVC3::ExprTransform::preprocess(), CVC3::SearchImplBase::replaceITE(), and SAT::CNF_Manager::replaceITErec().
| virtual Theorem CVC3::CommonProofRules::implMP | ( | const Theorem & | e1, | 
| const Theorem & | e1_impl_e2 | ||
| ) |  [pure virtual] | 
![\[\frac{\Gamma_1\vdash e_1\quad \Gamma_2\vdash(e_1\Rightarrow e_2)} {\Gamma_1\cup\Gamma_2\vdash e_2} \]](form_246.png) 
Implemented in CVC3::CommonTheoremProducer.
![\[\frac{\vdash e_1\wedge\cdots\wedge e_n}{\vdash e_i}\]](form_247.png) 
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::SearchEngineFast::addNonLiteralFact(), CVC3::SearchImplBase::applyCNFRules(), CVC3::TheoryCore::assertEqualities(), CVC3::TheoryArithOld::checkAssertEqInvariant(), CVC3::TheoryArith3::checkAssertEqInvariant(), CVC3::TheoryCore::checkSolved(), CVC3::SearchImplBase::enqueueCNFrec(), CVC3::SearchSat::newUserAssumptionIntHelper(), and CVC3::TheoryBitvector::solve().
| virtual Theorem CVC3::CommonProofRules::andIntro | ( | const std::vector< Theorem > & | es | ) |  [pure virtual] | 
![\[\frac{\Gamma_1\vdash e_1\quad \cdots \quad\Gamma_n\vdash e_n} {\bigcup_{i=1}^n\Gamma_i\vdash \bigwedge_{i=1}^n e_i} \]](form_249.png) 
Implemented in CVC3::CommonTheoremProducer.
| virtual Theorem CVC3::CommonProofRules::implIntro | ( | const Theorem & | phi, | 
| const std::vector< Expr > & | assump | ||
| ) |  [pure virtual] | 
Implication introduction rule:
![\[\frac{\Gamma,\,\alpha_1\,\ldots,\,\alpha_n\vdash\phi} {\Gamma\vdash(\bigwedge_{i=1}^n\alpha_i)\to\phi}\]](form_250.png) 
.
| phi | is the formula   | 
| assump | is the vector of assumptions   | 
Implemented in CVC3::CommonTheoremProducer.
e1 => e2 ==> ~e2 => ~e1
![\[\frac{\Gamma\vdash e_1\Rightarrow e_2} {\Gamma\vdash\sim e_2\Rightarrow\sim e_1}\]](form_251.png) 
Where ~e is the inverse of e (that is, ~(!e') = e').
Implemented in CVC3::CommonTheoremProducer.
==> ITE(TRUE, e1, e2) == e1
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::Theory::rewriteIte().
==> ITE(FALSE, e1, e2) == e2
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::Theory::rewriteIte().
==> ITE(c, e, e) == e
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::Theory::rewriteIte(), and CVC3::TheoryCore::simplifyOp().
![\[\frac{\vdash\neg e}{\vdash e\Leftrightarrow\mathrm{FALSE}}\]](form_252.png) 
Implemented in CVC3::CommonTheoremProducer.
==> (e1 <=> e2) <=> [simplified expr]
Rewrite formulas like FALSE/TRUE <=> e, e <=> NOT e, etc.
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::TheoryCore::rewrite().
==> AND(e1,e2) IFF [simplified expr]
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::TheoryBitvector::computeTCC(), CVC3::Theory::computeTCC(), and CVC3::Theory::rewriteAnd().
==> OR(e1,...,en) IFF [simplified expr]
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::SearchEngineFast::fixConflict(), and CVC3::Theory::rewriteOr().
==> NOT TRUE IFF FALSE
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::ExprTransform::pushNegation1(), and CVC3::ExprTransform::pushNegationRec().
==> NOT FALSE IFF TRUE
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::ExprTransform::pushNegation1(), and CVC3::ExprTransform::pushNegationRec().
==> NOT NOT e IFF e, takes !!e
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::SearchImplBase::findInCNFCache(), CVC3::ExprTransform::pushNegation1(), and CVC3::ExprTransform::pushNegationRec().
==> NOT FORALL (vars): e IFF EXISTS (vars) NOT e
Implemented in CVC3::CommonTheoremProducer.
==> NOT EXISTS (vars): e IFF FORALL (vars) NOT e
Implemented in CVC3::CommonTheoremProducer.
skolem rewrite rule: Introduces axiom |- Exists(x) phi(x) <=> phi(c) where c is a constant defined by the expression Exists(x) phi(x)
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::TheoryArithNew::getVariableIntroThm().
Special version of skolemizeRewrite for "EXISTS x. t = x".
Implemented in CVC3::CommonTheoremProducer.
|- EXISTS x. e = x
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::TheoryArithNew::getVariableIntroThm().
If thm is (EXISTS x: phi(x)), create the Skolemized version and add it to the database. Otherwise returns just thm.
| thm | is the Theorem(EXISTS x: phi(x)) | 
Implemented in CVC3::CommonTheoremProducer.
Retrun a theorem "|- e = v" for a new Skolem constant v.
This is equivalent to skolemize(d_core->varIntroRule(e)), only more efficient.
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::SearchImplBase::applyCNFRules(), CVC3::SearchImplBase::enqueueCNFrec(), CVC3::Theory::renameExpr(), CVC3::SearchImplBase::replaceITE(), SAT::CNF_Manager::replaceITErec(), and CVC3::TheoryArithOld::TheoryArithOld().
| virtual Theorem CVC3::CommonProofRules::trueTheorem | ( | ) |  [pure virtual] | 
==> TRUE
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::SearchSimple::SearchSimple().
AND(e1,e2) ==> [simplified expr].
Implemented in CVC3::CommonTheoremProducer.
OR(e1,...,en) ==> [simplified expr].
Implemented in CVC3::CommonTheoremProducer.
| virtual std::vector<Theorem>& CVC3::CommonProofRules::getSkolemAxioms | ( | ) |  [pure virtual] | 
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::SearchImplBase::processResult().
| virtual void CVC3::CommonProofRules::clearSkolemAxioms | ( | ) |  [pure virtual] | 
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::SearchImplBase::checkValid().
| virtual Theorem CVC3::CommonProofRules::ackermann | ( | const Expr & | e1, | 
| const Expr & | e2 | ||
| ) |  [pure virtual] | 
Implemented in CVC3::CommonTheoremProducer.
Implemented in CVC3::CommonTheoremProducer.
Referenced by CVC3::ExprTransform::newPPrec(), and CVC3::ExprTransform::simplifyWithCare().
 1.7.3
 1.7.3