CVCL::CommonProofRules Class Reference

#include <common_proof_rules.h>

Inheritance diagram for CVCL::CommonProofRules:

Inheritance graph
[legend]
List of all members.

Public Member Functions


Detailed Description

Definition at line 54 of file common_proof_rules.h.


Constructor & Destructor Documentation

virtual CVCL::CommonProofRules::~CommonProofRules  )  [inline, virtual]
 

Destructor.

Definition at line 57 of file common_proof_rules.h.


Member Function Documentation

virtual Theorem CVCL::CommonProofRules::assumpRule const Expr a,
int  scope = -1
[pure virtual]
 

\[\frac{}{a\vdash a}\]

Implemented in CVCL::CommonTheoremProducer.

Referenced by CVCL::SearchSat::assertLit(), CVCL::SearchSat::check(), CVCL::ExprTransform::ite_simplify(), CVCL::SearchImplBase::newIntAssumption(), CVCL::SearchSat::newUserAssumption(), and CVCL::SearchImplBase::newUserAssumption().

virtual Theorem CVCL::CommonProofRules::reflexivityRule const Expr a  )  [pure virtual]
 

\[\frac{}{a = a}\quad or \quad\frac{}{a \Leftrightarrow a}\]

Implemented in CVCL::CommonTheoremProducer.

Referenced by CVCL::CoreTheoremProducer::IffToIte(), CVCL::CoreTheoremProducer::ImpToIte(), CVCL::ExprTransform::ite_convert(), CVCL::ExprTransform::preprocess(), CVCL::ExprTransform::pushNegation(), CVCL::ExprTransform::pushNegation1(), CVCL::ExprTransform::pushNegationRec(), CVCL::Theory::reflexivityRule(), CVCL::SearchImplBase::replaceITE(), SAT::CNF_Manager::replaceITErec(), TheoryCore::rewrite(), and TheoryCore::setupTerm().

virtual Theorem CVCL::CommonProofRules::rewriteReflexivity const Expr a_eq_a  )  [pure virtual]
 

==> (a == a) IFF TRUE

Implemented in CVCL::CommonTheoremProducer.

Referenced by TheoryCore::rewriteLitCore().

virtual Theorem CVCL::CommonProofRules::symmetryRule const Theorem a1_eq_a2  )  [pure virtual]
 

\[\frac{a_1=a_2}{a_2=a_1}\]

(same for IFF)

Implemented in CVCL::CommonTheoremProducer.

Referenced by CVCL::SearchImplBase::applyCNFRules(), CVCL::SearchSimple::checkValidMain(), CVCL::SearchEngineFast::checkValidMain(), CVCL::SearchImplBase::enqueueCNFrec(), SAT::CNF_Manager::replaceITErec(), and CVCL::Theory::symmetryRule().

virtual Theorem CVCL::CommonProofRules::rewriteUsingSymmetry const Expr a1_eq_a2  )  [pure virtual]
 

\[\frac{}{(a_1=a_2)\Leftrightarrow (a_2=a_1)}\]

Implemented in CVCL::CommonTheoremProducer.

Referenced by TheoryCore::assertFormula(), and TheoryCore::rewriteLitCore().

virtual Theorem CVCL::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}\]

(same for IFF)

Implemented in CVCL::CommonTheoremProducer.

Referenced by CVCL::SearchImplBase::applyCNFRules(), CVCL::SearchImplBase::enqueueCNFrec(), CVCL::SearchImplBase::findInCNFCache(), CVCL::ExprTransform::ite_convert(), CVCL::ExprTransform::ite_simplify(), CVCL::ExprTransform::preprocess(), CVCL::ExprTransform::pushNegation1(), CVCL::ExprTransform::pushNegationRec(), CVCL::SearchImplBase::replaceITE(), and CVCL::Theory::transitivityRule().

virtual Theorem CVCL::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)}\]

Implemented in CVCL::CommonTheoremProducer.

Referenced by CVCL::SearchImplBase::applyCNFRules(), CVCL::SearchImplBase::enqueueCNFrec(), CVCL::ExprTransform::ite_convert(), CVCL::ExprTransform::ite_simplify(), CVCL::ExprTransform::pushNegation1(), CVCL::ExprTransform::pushNegationRec(), SAT::CNF_Manager::replaceITErec(), CVCL::Theory::simplifyOp(), CVCL::Theory::substitutivityRule(), and CVCL::Theory::updateHelper().

virtual Theorem CVCL::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)}\]

except that only those arguments are given that $c_i\not=d_i$ .

Parameters:
e is the original expression $op(c_1,\ldots,c_n)$ .
changed is the vector of indices of changed kids
thms are the theorems $c_i=d_i$ for the changed kids.

Implemented in CVCL::CommonTheoremProducer.

virtual Theorem CVCL::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}} \]

Implemented in CVCL::CommonTheoremProducer.

Referenced by CVCL::SearchEngineFast::addLiteralFact(), TheoryCore::assertFormula(), TheoryCore::processEquality(), and CVCL::SearchEngineFast::recordFact().

virtual Theorem CVCL::CommonProofRules::iffTrue const Theorem e  )  [pure virtual]
 

\[\frac{\Gamma\vdash e}{\Gamma\vdash e\Leftrightarrow\mathrm{TRUE}}\]

Implemented in CVCL::CommonTheoremProducer.

Referenced by TheoryCore::assertFormula(), CVCL::ExprTransform::ite_simplify(), CVCL::TheoryArith::rewrite(), and TheoryCore::simplifyFullRec().

virtual Theorem CVCL::CommonProofRules::iffNotFalse const Theorem e  )  [pure virtual]
 

\[\frac{\Gamma\vdash e}{\Gamma\vdash\neg e\Leftrightarrow\mathrm{FALSE}}\]

Implemented in CVCL::CommonTheoremProducer.

virtual Theorem CVCL::CommonProofRules::iffTrueElim const Theorem e  )  [pure virtual]
 

\[\frac{\Gamma\vdash e\Leftrightarrow\mathrm{TRUE}}{\Gamma\vdash e}\]

Implemented in CVCL::CommonTheoremProducer.

Referenced by TheoryCore::processUpdates(), TheoryCore::registerAtom(), CVCL::SearchEngineFast::split(), and CVCL::TheoryUF::update().

virtual Theorem CVCL::CommonProofRules::iffFalseElim const Theorem e  )  [pure virtual]
 

\[\frac{\Gamma\vdash e\Leftrightarrow\mathrm{FALSE}}{\Gamma\vdash\neg e}\]

Implemented in CVCL::CommonTheoremProducer.

Referenced by TheoryCore::assertFormula(), TheoryCore::processEquality(), TheoryCore::processUpdates(), TheoryCore::registerAtom(), and CVCL::SearchEngineFast::split().

virtual Theorem CVCL::CommonProofRules::iffContrapositive const Theorem thm  )  [pure virtual]
 

e1 <=> e2 ==> ~e1 <=> ~e2

\[\frac{\Gamma\vdash e_1\Leftrightarrow e_2} {\Gamma\vdash\sim e_1\Leftrightarrow\sim e_2}\]

Where ~e is the inverse of e (that is, ~(!e') = e').

Implemented in CVCL::CommonTheoremProducer.

Referenced by CVCL::SearchImplBase::addToCNFCache(), CVCL::SearchImplBase::applyCNFRules(), CVCL::TheoryBitvector::bitBlastDisEqn(), CVCL::SearchSimple::checkValidMain(), CVCL::SearchEngineFast::checkValidMain(), CVCL::SearchImplBase::findInCNFCache(), and TheoryCore::rewriteLiteral().

virtual Theorem CVCL::CommonProofRules::notNotElim const Theorem not_not_e  )  [pure virtual]
 

\[\frac{\Gamma\vdash\neg\neg e}{\Gamma\vdash e}\]

Implemented in CVCL::CommonTheoremProducer.

Referenced by CVCL::SearchImplBase::enqueueCNFrec(), and CVCL::SearchEngineFast::split().

virtual Theorem CVCL::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} \]

Implemented in CVCL::CommonTheoremProducer.

Referenced by CVCL::SearchSimple::checkValidMain(), CVCL::SearchEngineFast::checkValidMain(), CVCL::SearchSimple::checkValidRec(), CVCL::SearchImplBase::enqueueCNFrec(), CVCL::SearchEngineFast::fixConflict(), CVCL::Theory::iffMP(), CVCL::ExprTransform::preprocess(), CVCL::SearchImplBase::replaceITE(), and SAT::CNF_Manager::replaceITErec().

virtual Theorem CVCL::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} \]

Implemented in CVCL::CommonTheoremProducer.

virtual Theorem CVCL::CommonProofRules::andElim const Theorem e,
int  i
[pure virtual]
 

\[\frac{\vdash e_1\wedge\cdots\wedge e_n}{\vdash e_i}\]

Implemented in CVCL::CommonTheoremProducer.

Referenced by CVCL::SearchEngineFast::addNonLiteralFact(), CVCL::SearchImplBase::applyCNFRules(), TheoryCore::assertFactCore(), CVCL::SearchImplBase::enqueueCNFrec(), TheoryCore::processEquality(), and CVCL::TheoryArith::processIntEq().

virtual Theorem CVCL::CommonProofRules::andIntro const Theorem e1,
const Theorem e2
[pure virtual]
 

\[\frac{\Gamma_1\vdash e_1\quad \Gamma_2\vdash e_2} {\Gamma_1\cup\Gamma_2\vdash e_1\wedge e_2} \]

Implemented in CVCL::CommonTheoremProducer.

Referenced by CVCL::SearchSimple::addNonLiteralFact(), CVCL::TheoryArith::processSimpleIntEq(), and TheoryCore::subtypePredicate().

virtual Theorem CVCL::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} \]

Implemented in CVCL::CommonTheoremProducer.

virtual Theorem CVCL::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}\]

.

Parameters:
phi is the formula $\phi$
assump is the vector of assumptions $\alpha_1\ldots\alpha_n$

Implemented in CVCL::CommonTheoremProducer.

virtual Theorem CVCL::CommonProofRules::implContrapositive const Theorem thm  )  [pure virtual]
 

e1 => e2 ==> ~e2 => ~e1

\[\frac{\Gamma\vdash e_1\Rightarrow e_2} {\Gamma\vdash\sim e_2\Rightarrow\sim e_1}\]

Where ~e is the inverse of e (that is, ~(!e') = e').

Implemented in CVCL::CommonTheoremProducer.

virtual Theorem CVCL::CommonProofRules::notToIff const Theorem not_e  )  [pure virtual]
 

\[\frac{\vdash\neg e}{\vdash e\Leftrightarrow\mathrm{FALSE}}\]

Implemented in CVCL::CommonTheoremProducer.

Referenced by TheoryCore::assertFormula(), and TheoryCore::checkSat().

virtual Theorem CVCL::CommonProofRules::rewriteIff const Expr e  )  [pure virtual]
 

==> (e1 <=> e2) <=> [simplified expr]

Rewrite formulas like FALSE/TRUE <=> e, e <=> NOT e, etc.

Implemented in CVCL::CommonTheoremProducer.

Referenced by TheoryCore::rewrite(), and CVCL::TheoryBitvector::rewriteBoolean().

virtual Theorem CVCL::CommonProofRules::rewriteAnd const Expr e  )  [pure virtual]
 

==> AND(e1,e2) IFF [simplified expr]

Implemented in CVCL::CommonTheoremProducer.

Referenced by CVCL::Theory::computeTCC(), CVCL::Theory::rewriteAnd(), and TheoryCore::subtypePredicate().

virtual Theorem CVCL::CommonProofRules::rewriteOr const Expr e  )  [pure virtual]
 

==> OR(e1,...,en) IFF [simplified expr]

Implemented in CVCL::CommonTheoremProducer.

Referenced by CVCL::SearchEngineFast::fixConflict(), and CVCL::Theory::rewriteOr().

virtual Theorem CVCL::CommonProofRules::rewriteNotTrue const Expr e  )  [pure virtual]
 

==> NOT TRUE IFF FALSE

Implemented in CVCL::CommonTheoremProducer.

Referenced by CVCL::CoreTheoremProducer::NotToIte(), CVCL::ExprTransform::pushNegation1(), CVCL::ExprTransform::pushNegationRec(), CVCL::TheoryBitvector::rewriteBoolean(), and TheoryCore::rewriteLitCore().

virtual Theorem CVCL::CommonProofRules::rewriteNotFalse const Expr e  )  [pure virtual]
 

==> NOT FALSE IFF TRUE

Implemented in CVCL::CommonTheoremProducer.

Referenced by CVCL::CoreTheoremProducer::NotToIte(), CVCL::ExprTransform::pushNegation1(), CVCL::ExprTransform::pushNegationRec(), CVCL::TheoryBitvector::rewriteBoolean(), and TheoryCore::rewriteLitCore().

virtual Theorem CVCL::CommonProofRules::rewriteNotNot const Expr e  )  [pure virtual]
 

==> NOT NOT e IFF e, takes !!e

Implemented in CVCL::CommonTheoremProducer.

Referenced by CVCL::SearchImplBase::findInCNFCache(), CVCL::ExprTransform::pushNegation1(), CVCL::ExprTransform::pushNegationRec(), CVCL::TheoryBitvector::rewriteBoolean(), and TheoryCore::rewriteLitCore().

virtual Theorem CVCL::CommonProofRules::rewriteNotForall const Expr forallExpr  )  [pure virtual]
 

==> NOT FORALL (vars): e IFF EXISTS (vars) NOT e

Implemented in CVCL::CommonTheoremProducer.

virtual Theorem CVCL::CommonProofRules::rewriteNotExists const Expr existsExpr  )  [pure virtual]
 

==> NOT EXISTS (vars): e IFF FORALL (vars) NOT e

Implemented in CVCL::CommonTheoremProducer.

virtual Expr CVCL::CommonProofRules::skolemize const Expr e  )  [pure virtual]
 

Implemented in CVCL::CommonTheoremProducer.

Referenced by TheoryCore::assertFactCore(), TheoryCore::assertFormula(), CVCL::SearchEngineFast::bcp(), TheoryCore::processEquality(), and CVCL::TheoryArith::processSimpleIntEq().

virtual Theorem CVCL::CommonProofRules::skolemizeRewrite const Expr e  )  [pure virtual]
 

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 CVCL::CommonTheoremProducer.

virtual Theorem CVCL::CommonProofRules::skolemizeRewriteVar const Expr e  )  [pure virtual]
 

Special version of skolemizeRewrite for "EXISTS x. t = x".

Implemented in CVCL::CommonTheoremProducer.

virtual Theorem CVCL::CommonProofRules::varIntroRule const Expr e  )  [pure virtual]
 

|- EXISTS x. e = x

Implemented in CVCL::CommonTheoremProducer.

virtual Theorem CVCL::CommonProofRules::skolemize const Theorem thm  )  [pure virtual]
 

If thm is (EXISTS x: phi(x)), create the Skolemized version and add it to the database. Otherwise returns just thm.

Parameters:
thm is the Theorem(EXISTS x: phi(x))

Implemented in CVCL::CommonTheoremProducer.

virtual Theorem CVCL::CommonProofRules::varIntroSkolem const Expr e  )  [pure virtual]
 

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 CVCL::CommonTheoremProducer.

Referenced by CVCL::SearchImplBase::applyCNFRules(), CVCL::SearchImplBase::enqueueCNFrec(), CVCL::TheoryArray::renameExpr(), CVCL::SearchImplBase::replaceITE(), and SAT::CNF_Manager::replaceITErec().

virtual Theorem CVCL::CommonProofRules::trueTheorem  )  [pure virtual]
 

==> TRUE

Implemented in CVCL::CommonTheoremProducer.

Referenced by CVCL::SearchSat::check(), and CVCL::SearchSimple::SearchSimple().

virtual Theorem CVCL::CommonProofRules::rewriteAnd const Theorem e  )  [pure virtual]
 

AND(e1,e2) ==> [simplified expr].

Implemented in CVCL::CommonTheoremProducer.

virtual Theorem CVCL::CommonProofRules::rewriteOr const Theorem e  )  [pure virtual]
 

OR(e1,...,en) ==> [simplified expr].

Implemented in CVCL::CommonTheoremProducer.

virtual std::vector<Theorem>& CVCL::CommonProofRules::getSkolemAxioms  )  [pure virtual]
 

Implemented in CVCL::CommonTheoremProducer.

Referenced by CVCL::SearchImplBase::processResult().

virtual void CVCL::CommonProofRules::clearSkolemAxioms  )  [pure virtual]
 

Implemented in CVCL::CommonTheoremProducer.

Referenced by CVCL::SearchImplBase::checkValid().


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