<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>CVC3: CVC3::SearchEngineRules Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.7.4 --> <div id="top"> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">CVC3 <span id="projectnumber">2.4.1</span></div> </td> </tr> </tbody> </table> </div> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="classes.html"><span>Class Index</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="namespaceCVC3.html">CVC3</a> </li> <li class="navelem"><a class="el" href="classCVC3_1_1SearchEngineRules.html">SearchEngineRules</a> </li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#pub-methods">Public Member Functions</a> </div> <div class="headertitle"> <div class="title">CVC3::SearchEngineRules Class Reference<div class="ingroups"><a class="el" href="group__SE__Rules.html">Proof Rules for the Search Engines</a></div></div> </div> </div> <div class="contents"> <!-- doxytag: class="CVC3::SearchEngineRules" --> <p>API to the proof rules for the Search Engines. <a href="classCVC3_1_1SearchEngineRules.html#details">More...</a></p> <p><code>#include <<a class="el" href="search__rules_8h_source.html">search_rules.h</a>></code></p> <div class="dynheader"> Inheritance diagram for CVC3::SearchEngineRules:</div> <div class="dyncontent"> <div class="center"> <img src="classCVC3_1_1SearchEngineRules.png" usemap="#CVC3::SearchEngineRules_map" alt=""/> <map id="CVC3::SearchEngineRules_map" name="CVC3::SearchEngineRules_map"> <area href="classCVC3_1_1SearchEngineTheoremProducer.html" alt="CVC3::SearchEngineTheoremProducer" shape="rect" coords="0,56,234,80"/> </map> </div></div> <p><a href="classCVC3_1_1SearchEngineRules-members.html">List of all members.</a></p> <h2><a name="pub-methods"></a> Public Member Functions</h2> <ul> <li>virtual <a class="el" href="group__SE__Rules.html#gae48ac99bc858fb09857649a89af81f43">~SearchEngineRules</a> () <dl class="el"><dd class="mdescRight">Destructor. <a href="group__SE__Rules.html#gae48ac99bc858fb09857649a89af81f43"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#ga3ddf95924d2ff2efb59e84dc78a19821">eliminateSkolemAxioms</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &tFalse, const std::vector< <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> > &delta)=0 <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#ga64c9fb7058e52c324ce76f15fcea37e2">proofByContradiction</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &a, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &pfFalse)=0 <dl class="el"><dd class="mdescRight"><a class="el" href="classCVC3_1_1Proof.html">Proof</a> by contradiction: </p> <p class="formulaDsp"> <img class="formulaDsp" alt="\[\frac{\Gamma, \neg A \vdash\mathrm{FALSE}}{\Gamma \vdash A}\]" src="form_293.png"/> </p> <p>. <a href="group__SE__Rules.html#ga64c9fb7058e52c324ce76f15fcea37e2"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#ga846c2bdc33f6ff2080e76637ea618626">negIntro</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &not_a, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &pfFalse)=0 <dl class="el"><dd class="mdescRight">Negation introduction: </p> <p class="formulaDsp"> <img class="formulaDsp" alt="\[\frac{\Gamma, A \vdash\mathrm{FALSE}}{\Gamma\vdash\neg A}\]" src="form_296.png"/> </p> <p>. <a href="group__SE__Rules.html#ga846c2bdc33f6ff2080e76637ea618626"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#ga7db620d19846bd5947321a8d6f9e7da4">caseSplit</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &a, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &a_proves_c, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &not_a_proves_c)=0 <dl class="el"><dd class="mdescRight">Case split: </p> <p class="formulaDsp"> <img class="formulaDsp" alt="\[\frac{\Gamma_1, A\vdash C \quad \Gamma_2, \neg A\vdash C} {\Gamma_1\cup\Gamma_2\vdash C}\]" src="form_298.png"/> </p> <p>. <a href="group__SE__Rules.html#ga7db620d19846bd5947321a8d6f9e7da4"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#ga03be39f8ffe84a1bcc09bba60f45245c">conflictClause</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &thm, const std::vector< <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> > &lits, const std::vector< <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> > &gamma)=0 <dl class="el"><dd class="mdescRight">Conflict clause rule: </p> <p class="formulaDsp"> <img class="formulaDsp" alt="\[\frac{\Gamma,A_1,\ldots,A_n\vdash\mathrm{FALSE}} {\Gamma\vdash\neg A_1\vee\cdots\vee \neg A_n}\]" src="form_301.png"/> </p> <p>. <a href="group__SE__Rules.html#ga03be39f8ffe84a1bcc09bba60f45245c"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#gac1ef0687c058a3d4bd1d9ed88cd27abe">cutRule</a> (const std::vector< <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> > &thmsA, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &as_prove_b)=0 <dl class="el"><dd class="mdescRight">Cut rule: </p> <p class="formulaDsp"> <img class="formulaDsp" alt="\[\frac{\Gamma_1\vdash A_1\quad\cdots\quad\Gamma_n\vdash A_n \quad \Gamma', A_1,\ldots,A_n\vdash B} {\bigcup_{i=1}^n\Gamma_i\cup\Gamma'\vdash B}\]" src="form_303.png"/> </p> <p>. <a href="group__SE__Rules.html#gac1ef0687c058a3d4bd1d9ed88cd27abe"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#gae7221bb8b77313a9b53a4beca9cc0aa0">unitProp</a> (const std::vector< <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> > &thms, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &clause, unsigned i)=0 <dl class="el"><dd class="mdescRight">Unit propagation rule: </p> <p class="formulaDsp"> <img class="formulaDsp" alt="\[\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}\]" src="form_306.png"/> </p> <p>. <a href="group__SE__Rules.html#gae7221bb8b77313a9b53a4beca9cc0aa0"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#ga9c74425b4471d411f58f16781951c441">conflictRule</a> (const std::vector< <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> > &thms, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &clause)=0 <dl class="el"><dd class="mdescRight">"Conflict" rule (all literals in a clause become FALSE) </p> <p class="formulaDsp"> <img class="formulaDsp" alt="\[\frac{\Gamma_j\vdash\neg A_j\mbox{ for }j\in[1\ldots n] \quad \Gamma\vdash A_1\vee\cdots\vee A_n} {\bigcup_{j\in[1\ldots n]}\Gamma_j\cup\Gamma \vdash\mathrm{FALSE}}\]" src="form_309.png"/> </p> <a href="group__SE__Rules.html#ga9c74425b4471d411f58f16781951c441"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#gaf5a18f8bcdc2f71632f05bcfe0bc533e">propAndrAF</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &andr_th, bool left, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &b_th)=0 <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#gac7998bdcac234b0f3dc202d44b49c69c">propAndrAT</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &andr_th, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &l_th, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &r_th)=0 <li>virtual void <a class="el" href="group__SE__Rules.html#gad0150b04c296a6b8e05579c1dbd365f8">propAndrLRT</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &andr_th, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &a_th, <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> *l_th, <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> *r_th)=0 <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#ga8c8fc73c8b0413f5ca3fa7d72e687f5b">propAndrLF</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &andr_th, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &a_th, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &r_th)=0 <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#ga1158c41e7b7ed199271391d4404ce1b2">propAndrRF</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &andr_th, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &a_th, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &l_th)=0 <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#ga09d987f2d81c19d798d7185b125879b6">confAndrAT</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &andr_th, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &a_th, bool left, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &b_th)=0 <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#gadb878db4f9d24a21b62f50df2713ecca">confAndrAF</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &andr_th, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &a_th, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &l_th, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &r_th)=0 <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#ga9bc3e3eab4b1fe4fb2c0a0172ca25ee9">propIffr</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &iffr_th, int p, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &a_th, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &b_th)=0 <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#gaef31b1a5f6d6e9f270a1ab28ee361b14">confIffr</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &iffr_th, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &i_th, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &l_th, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &r_th)=0 <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#ga979ad08269cd2799993628eaaccc146f">propIterIte</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &iter_th, bool left, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &if_th, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &then_th)=0 <li>virtual void <a class="el" href="group__SE__Rules.html#gad35217bbc9f4a27b4d23af173e9ea2c7">propIterIfThen</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &iter_th, bool left, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &ite_th, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &then_th, <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> *if_th, <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> *else_th)=0 <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#gab7b07d3b350b2cc7f3f596233abb54ea">propIterThen</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &iter_th, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &ite_th, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &if_th)=0 <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#gaae491d08949a1ec57981526c8e960119">confIterThenElse</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &iter_th, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &ite_th, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &then_th, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &else_th)=0 <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#ga771471d7cbb2253bc32f2a8018bd7182">confIterIfThen</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &iter_th, bool left, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &ite_th, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &if_th, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &then_th)=0 <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#gab183ff7d1013729d0d3e2dbe28686e3c">andCNFRule</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &thm)=0 <dl class="el"><dd class="mdescRight">AND(x1,...,xn) <=> v |- CNF[AND(x1,...,xn) <=> v]. <a href="group__SE__Rules.html#gab183ff7d1013729d0d3e2dbe28686e3c"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#ga7086aa693d2a3421bc349eca8e9938ba">orCNFRule</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &thm)=0 <dl class="el"><dd class="mdescRight">OR(x1,...,xn) <=> v |- CNF[OR(x1,...,xn) <=> v]. <a href="group__SE__Rules.html#ga7086aa693d2a3421bc349eca8e9938ba"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#ga25f7b95c8ebce2be117d03a1c93d715f">impCNFRule</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &thm)=0 <dl class="el"><dd class="mdescRight">(x1 => x2) <=> v |- CNF[(x1 => x2) <=> v] <a href="group__SE__Rules.html#ga25f7b95c8ebce2be117d03a1c93d715f"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#ga4ab7606744594db9050cb83fe6b73668">iffCNFRule</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &thm)=0 <dl class="el"><dd class="mdescRight">(x1 <=> x2) <=> v |- CNF[(x1 <=> x2) <=> v] <a href="group__SE__Rules.html#ga4ab7606744594db9050cb83fe6b73668"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#gae9263cbcedf5def99b3c49ee6978497a">iteCNFRule</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &thm)=0 <dl class="el"><dd class="mdescRight">ITE(c, x1, x2) <=> v |- CNF[ITE(c, x1, x2) <=> v]. <a href="group__SE__Rules.html#gae9263cbcedf5def99b3c49ee6978497a"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#ga9b9c0fe62505477b6ec9774c1b5b2494">iteToClauses</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &ite)=0 <dl class="el"><dd class="mdescRight">ITE(c, f1, f2) |- (NOT c OR f1) AND (c OR f2) <a href="group__SE__Rules.html#ga9b9c0fe62505477b6ec9774c1b5b2494"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#ga356cd5a36ede50921fbaa3bc7e222d4f">iffToClauses</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &iff)=0 <dl class="el"><dd class="mdescRight">e1 <=> e2 |- (NOT e1 OR e2) AND (e1 OR NOT e2) <a href="group__SE__Rules.html#ga356cd5a36ede50921fbaa3bc7e222d4f"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__SE__Rules.html#ga55daf0bf95530208f5abf9484ded9055">satProof</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &queryExpr, const <a class="el" href="classCVC3_1_1Proof.html">Proof</a> &satProof)=0 </ul> <hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <div class="textblock"><p>API to the proof rules for the Search Engines. </p> <p>Definition at line <a class="el" href="search__rules_8h_source.html#l00035">35</a> of file <a class="el" href="search__rules_8h_source.html">search_rules.h</a>.</p> </div><hr/>The documentation for this class was generated from the following file:<ul> <li><a class="el" href="search__rules_8h_source.html">search_rules.h</a></li> </ul> </div> <hr class="footer"/><address class="footer"><small>Generated on Wed Sep 7 2011 for CVC3 by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> </body> </html>