Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 583ffa4ba069126c3ba0bc565dc0485a > files > 242

cvc3-doc-2.4.1-1.fc15.noarch.rpm

<!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::CoreProofRules 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&#160;<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&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;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&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;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_1CoreProofRules.html">CoreProofRules</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::CoreProofRules Class Reference</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="CVC3::CoreProofRules" -->
<p><code>#include &lt;<a class="el" href="core__proof__rules_8h_source.html">core_proof_rules.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for CVC3::CoreProofRules:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classCVC3_1_1CoreProofRules.png" usemap="#CVC3::CoreProofRules_map" alt=""/>
  <map id="CVC3::CoreProofRules_map" name="CVC3::CoreProofRules_map">
<area href="classCVC3_1_1CoreTheoremProducer.html" alt="CVC3::CoreTheoremProducer" shape="rect" coords="0,56,182,80"/>
</map>
 </div></div>

<p><a href="classCVC3_1_1CoreProofRules-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="classCVC3_1_1CoreProofRules.html#a04af291caa087f8dc1c2c8d346e4dffe">~CoreProofRules</a> ()
<dl class="el"><dd class="mdescRight">Destructor.  <a href="#a04af291caa087f8dc1c2c8d346e4dffe"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#ae4fcd08f795189bb93d76144f77a3862">typePred</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)=0
<dl class="el"><dd class="mdescRight">e: T ==&gt; |- typePred_T(e) [deriving the type predicate of e]  <a href="#ae4fcd08f795189bb93d76144f77a3862"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#acad687c3e6faa5709961210637c260da">rewriteLetDecl</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)=0
<dl class="el"><dd class="mdescRight">Replace LETDECL with its definition.  <a href="#acad687c3e6faa5709961210637c260da"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#ade3007866410b6565ee0ea1ff4c49a99">rewriteNotAnd</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)=0
<dl class="el"><dd class="mdescRight">==&gt; NOT (AND e1 ... en) IFF (OR !e1 ... !en), takes (AND ...)  <a href="#ade3007866410b6565ee0ea1ff4c49a99"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#aea875ee7355ae6aab01b84c176dbccf6">rewriteNotOr</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)=0
<dl class="el"><dd class="mdescRight">==&gt; NOT (OR e1 ... en) IFF (AND !e1 ... !en), takes (OR ...)  <a href="#aea875ee7355ae6aab01b84c176dbccf6"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#ae480ca62cb7a8656f01ea3f938fb97d8">rewriteNotIff</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)=0
<dl class="el"><dd class="mdescRight">==&gt; NOT IFF(e1,e2) IFF IFF(e1,NOT e2)  <a href="#ae480ca62cb7a8656f01ea3f938fb97d8"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#ac68942cf0c21011f9429042e279b4a54">rewriteNotIte</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)=0
<dl class="el"><dd class="mdescRight">==&gt; NOT ITE(a,b,c) IFF ITE(a,NOT b,NOT c)  <a href="#ac68942cf0c21011f9429042e279b4a54"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#a8117a95eed02c35936f988d1c9c2bdab">rewriteIteThen</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;thenThm)=0
<dl class="el"><dd class="mdescRight">a |- b == d ==&gt; ITE(a, b, c) == ITE(a, d, c)  <a href="#a8117a95eed02c35936f988d1c9c2bdab"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#a7912f66f5be7e05b0c85f15596747be4">rewriteIteElse</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;elseThm)=0
<dl class="el"><dd class="mdescRight">!a |- c == d ==&gt; ITE(a, b, c) == ITE(a, b, d)  <a href="#a7912f66f5be7e05b0c85f15596747be4"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#aa66c668de7d5a026297a6bc901a1f7c3">rewriteIteBool</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;c, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e1, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e2)=0
<dl class="el"><dd class="mdescRight">==&gt; ITE(c, e1, e2) &lt;=&gt; (c =&gt; e1) AND (!c =&gt; e2)  <a href="#aa66c668de7d5a026297a6bc901a1f7c3"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#ac86206cae475f12c9512e436c64656f0">orDistributivityRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)=0
<dl class="el"><dd class="mdescRight">|= (A &amp; B1) | (A &amp; B2) | ... | (A &amp; bn) &lt;=&gt; A &amp; (B1 | B2 | ...| Bn)  <a href="#ac86206cae475f12c9512e436c64656f0"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#aa3091e00758d1cb9e91f1cd3fca1e696">andDistributivityRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)=0
<dl class="el"><dd class="mdescRight">|= (A | B1) &amp; (A | B2) &amp; ... &amp; (A | bn) &lt;=&gt; A | (B1 &amp; B2 &amp; ...&amp; Bn)  <a href="#aa3091e00758d1cb9e91f1cd3fca1e696"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#a3389cd795acc4cee4b591c1488293963">rewriteImplies</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)=0
<dl class="el"><dd class="mdescRight">==&gt; IMPLIES(e1,e2) IFF OR(!e1, e2)  <a href="#a3389cd795acc4cee4b591c1488293963"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#ae429bb5ede0ce74b02cb85f8d0a372dd">rewriteDistinct</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)=0
<dl class="el"><dd class="mdescRight">==&gt; DISTINCT(e1,...,en) IFF AND 1 &lt;= i &lt; j &lt;= n (e[i] /= e[j])  <a href="#ae429bb5ede0ce74b02cb85f8d0a372dd"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#aa801f2fa243080def2ef1bff48fba3a9">NotToIte</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;not_e)=0
<dl class="el"><dd class="mdescRight">==&gt; NOT(e) == ITE(e, FALSE, TRUE)  <a href="#aa801f2fa243080def2ef1bff48fba3a9"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#a07be24cd846d62320aca4fb69645a1db">OrToIte</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)=0
<dl class="el"><dd class="mdescRight">==&gt; Or(e) == ITE(e[1], TRUE, e[0])  <a href="#a07be24cd846d62320aca4fb69645a1db"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#a332e730ff085f109382a680847189a0d">AndToIte</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)=0
<dl class="el"><dd class="mdescRight">==&gt; And(e) == ITE(e[1], e[0], FALSE)  <a href="#a332e730ff085f109382a680847189a0d"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#ac0bd85a42727e1f5d41c7f4fb5366acf">IffToIte</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)=0
<dl class="el"><dd class="mdescRight">==&gt; IFF(a,b) == ITE(a, b, !b)  <a href="#ac0bd85a42727e1f5d41c7f4fb5366acf"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#a6639598cf87b9c51bc097bad578b0ac4">ImpToIte</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)=0
<dl class="el"><dd class="mdescRight">==&gt; IMPLIES(a,b) == ITE(a, b, TRUE)  <a href="#a6639598cf87b9c51bc097bad578b0ac4"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#a71c2aa506efd447f6c411159f44d5af0">rewriteIteToNot</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)=0
<dl class="el"><dd class="mdescRight">==&gt; ITE(e, FALSE, TRUE) IFF NOT(e)  <a href="#a71c2aa506efd447f6c411159f44d5af0"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#ab23828c9cc70a3805a0be7632e03163b">rewriteIteToOr</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)=0
<dl class="el"><dd class="mdescRight">==&gt; ITE(a, TRUE, b) IFF OR(a, b)  <a href="#ab23828c9cc70a3805a0be7632e03163b"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#a3eb08bdf90ac80d5c372e4791120d894">rewriteIteToAnd</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)=0
<dl class="el"><dd class="mdescRight">==&gt; ITE(a, b, FALSE) IFF AND(a, b)  <a href="#a3eb08bdf90ac80d5c372e4791120d894"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#a8a98457f410ab11e4b66adad150e1b67">rewriteIteToIff</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)=0
<dl class="el"><dd class="mdescRight">==&gt; ITE(a, b, !b) IFF IFF(a, b)  <a href="#a8a98457f410ab11e4b66adad150e1b67"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#a1d30881c6f1a902575da033dbbeb2aa9">rewriteIteToImp</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)=0
<dl class="el"><dd class="mdescRight">==&gt; ITE(a, b, TRUE) IFF IMPLIES(a, b)  <a href="#a1d30881c6f1a902575da033dbbeb2aa9"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#a03f8a74b8b1b6d90ff23a0a6150c49d6">rewriteIteCond</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)=0
<dl class="el"><dd class="mdescRight">==&gt; ITE(a, b(a), c(a)) IFF ITE(a, b(TRUE), c(FALSE))  <a href="#a03f8a74b8b1b6d90ff23a0a6150c49d6"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#abbf1d27a8dba7669aac602a4a95f0b3f">ifLiftUnaryRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)=0
<dl class="el"><dd class="mdescRight">|- op(ITE(cond,a,b)) =/&lt;=&gt; ITE(cond,op(a),op(b))  <a href="#abbf1d27a8dba7669aac602a4a95f0b3f"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#a8fc33a9fbd44abba98547acf63322fc8">iffOrDistrib</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;iff)=0
<dl class="el"><dd class="mdescRight">((a|b)&lt;=&gt;(a|c))&lt;=&gt;(a|(b&lt;=&gt;c)); takes ((a|b)&lt;=&gt;(a|c)) as 'iff'  <a href="#a8fc33a9fbd44abba98547acf63322fc8"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#a0648f60b8e9b11dee35544c83512fa30">iffAndDistrib</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;iff)=0
<dl class="el"><dd class="mdescRight">((a&amp;b)&lt;=&gt;(a&amp;c))&lt;=&gt;(!a|(b&lt;=&gt;c)); takes ((a&amp;b)&lt;=&gt;(a&amp;c)) as 'iff'  <a href="#a0648f60b8e9b11dee35544c83512fa30"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#a07d66271324bda72a66505bb427df156">rewriteAndSubterms</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, int idx)=0
<dl class="el"><dd class="mdescRight">(a &amp; b) &lt;=&gt; a &amp; b[a/true]; takes the index of a  <a href="#a07d66271324bda72a66505bb427df156"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#a0d589028239025d0e43c92c04b5d586a">rewriteOrSubterms</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, int idx)=0
<dl class="el"><dd class="mdescRight">(a | b) &lt;=&gt; a | b[a/false]; takes the index of a  <a href="#a0d589028239025d0e43c92c04b5d586a"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1CoreProofRules.html#a9592705bbf82393b7f6500fa33ead252">dummyTheorem</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)=0
<dl class="el"><dd class="mdescRight">Temporary cheat for building theorems.  <a href="#a9592705bbf82393b7f6500fa33ead252"></a><br/></dl></ul>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock">
<p>Definition at line <a class="el" href="core__proof__rules_8h_source.html#l00034">34</a> of file <a class="el" href="core__proof__rules_8h_source.html">core_proof_rules.h</a>.</p>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a04af291caa087f8dc1c2c8d346e4dffe"></a><!-- doxytag: member="CVC3::CoreProofRules::~CoreProofRules" ref="a04af291caa087f8dc1c2c8d346e4dffe" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual CVC3::CoreProofRules::~CoreProofRules </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Destructor. </p>

<p>Definition at line <a class="el" href="core__proof__rules_8h_source.html#l00037">37</a> of file <a class="el" href="core__proof__rules_8h_source.html">core_proof_rules.h</a>.</p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="ae4fcd08f795189bb93d76144f77a3862"></a><!-- doxytag: member="CVC3::CoreProofRules::typePred" ref="ae4fcd08f795189bb93d76144f77a3862" args="(const Expr &amp;e)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::typePred </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>e: T ==&gt; |- typePred_T(e) [deriving the type predicate of e] </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#a0b6d312ded517ab466308ec5981d250e">CVC3::CoreTheoremProducer</a>.</p>

<p>Referenced by <a class="el" href="theory__core_8cpp_source.html#l04260">CVC3::TheoryCore::setupTerm()</a>, and <a class="el" href="theory__core_8cpp_source.html#l04186">CVC3::TheoryCore::typePred()</a>.</p>

</div>
</div>
<a class="anchor" id="acad687c3e6faa5709961210637c260da"></a><!-- doxytag: member="CVC3::CoreProofRules::rewriteLetDecl" ref="acad687c3e6faa5709961210637c260da" args="(const Expr &amp;e)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::rewriteLetDecl </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Replace LETDECL with its definition. </p>
<p>Used only in <a class="el" href="classCVC3_1_1TheoryCore.html" title="This theory handles the built-in logical connectives plus equality. It also handles the registration ...">TheoryCore</a> </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#a222db72dc6f637e582dfb9b8dd4e362c">CVC3::CoreTheoremProducer</a>.</p>

<p>Referenced by <a class="el" href="expr__transform_8cpp_source.html#l00239">CVC3::ExprTransform::pushNegation1()</a>, <a class="el" href="expr__transform_8cpp_source.html#l00141">CVC3::ExprTransform::pushNegationRec()</a>, and <a class="el" href="theory__core_8cpp_source.html#l00968">CVC3::TheoryCore::rewrite()</a>.</p>

</div>
</div>
<a class="anchor" id="ade3007866410b6565ee0ea1ff4c49a99"></a><!-- doxytag: member="CVC3::CoreProofRules::rewriteNotAnd" ref="ade3007866410b6565ee0ea1ff4c49a99" args="(const Expr &amp;e)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::rewriteNotAnd </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>==&gt; NOT (AND e1 ... en) IFF (OR !e1 ... !en), takes (AND ...) </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#a66f5d185eca0ccf417b4bf5ed4448f72">CVC3::CoreTheoremProducer</a>.</p>

<p>Referenced by <a class="el" href="expr__transform_8cpp_source.html#l00239">CVC3::ExprTransform::pushNegation1()</a>, and <a class="el" href="expr__transform_8cpp_source.html#l00141">CVC3::ExprTransform::pushNegationRec()</a>.</p>

</div>
</div>
<a class="anchor" id="aea875ee7355ae6aab01b84c176dbccf6"></a><!-- doxytag: member="CVC3::CoreProofRules::rewriteNotOr" ref="aea875ee7355ae6aab01b84c176dbccf6" args="(const Expr &amp;e)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::rewriteNotOr </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>==&gt; NOT (OR e1 ... en) IFF (AND !e1 ... !en), takes (OR ...) </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#a5ce6abeb6a346d20f5d5860a30a33e28">CVC3::CoreTheoremProducer</a>.</p>

<p>Referenced by <a class="el" href="expr__transform_8cpp_source.html#l00239">CVC3::ExprTransform::pushNegation1()</a>, and <a class="el" href="expr__transform_8cpp_source.html#l00141">CVC3::ExprTransform::pushNegationRec()</a>.</p>

</div>
</div>
<a class="anchor" id="ae480ca62cb7a8656f01ea3f938fb97d8"></a><!-- doxytag: member="CVC3::CoreProofRules::rewriteNotIff" ref="ae480ca62cb7a8656f01ea3f938fb97d8" args="(const Expr &amp;e)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::rewriteNotIff </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>==&gt; NOT IFF(e1,e2) IFF IFF(e1,NOT e2) </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#a7da16f5874fbc0870f57a9deeeec80b8">CVC3::CoreTheoremProducer</a>.</p>

</div>
</div>
<a class="anchor" id="ac68942cf0c21011f9429042e279b4a54"></a><!-- doxytag: member="CVC3::CoreProofRules::rewriteNotIte" ref="ac68942cf0c21011f9429042e279b4a54" args="(const Expr &amp;e)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::rewriteNotIte </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>==&gt; NOT ITE(a,b,c) IFF ITE(a,NOT b,NOT c) </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#accd799779aa02c5d84352cc48e975b3d">CVC3::CoreTheoremProducer</a>.</p>

<p>Referenced by <a class="el" href="expr__transform_8cpp_source.html#l00239">CVC3::ExprTransform::pushNegation1()</a>, and <a class="el" href="expr__transform_8cpp_source.html#l00141">CVC3::ExprTransform::pushNegationRec()</a>.</p>

</div>
</div>
<a class="anchor" id="a8117a95eed02c35936f988d1c9c2bdab"></a><!-- doxytag: member="CVC3::CoreProofRules::rewriteIteThen" ref="a8117a95eed02c35936f988d1c9c2bdab" args="(const Expr &amp;e, const Theorem &amp;thenThm)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::rewriteIteThen </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>thenThm</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>a |- b == d ==&gt; ITE(a, b, c) == ITE(a, d, c) </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#a490808acd89e0732678d570599c93165">CVC3::CoreTheoremProducer</a>.</p>

<p>Referenced by <a class="el" href="expr__transform_8cpp_source.html#l00334">CVC3::ExprTransform::newPPrec()</a>.</p>

</div>
</div>
<a class="anchor" id="a7912f66f5be7e05b0c85f15596747be4"></a><!-- doxytag: member="CVC3::CoreProofRules::rewriteIteElse" ref="a7912f66f5be7e05b0c85f15596747be4" args="(const Expr &amp;e, const Theorem &amp;elseThm)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::rewriteIteElse </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>elseThm</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>!a |- c == d ==&gt; ITE(a, b, c) == ITE(a, b, d) </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#ae1092dc92aef4300caf926b48ac2ec65">CVC3::CoreTheoremProducer</a>.</p>

<p>Referenced by <a class="el" href="expr__transform_8cpp_source.html#l00334">CVC3::ExprTransform::newPPrec()</a>.</p>

</div>
</div>
<a class="anchor" id="aa66c668de7d5a026297a6bc901a1f7c3"></a><!-- doxytag: member="CVC3::CoreProofRules::rewriteIteBool" ref="aa66c668de7d5a026297a6bc901a1f7c3" args="(const Expr &amp;c, const Expr &amp;e1, const Expr &amp;e2)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::rewriteIteBool </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>c</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>==&gt; ITE(c, e1, e2) &lt;=&gt; (c =&gt; e1) AND (!c =&gt; e2) </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#ac888377c574a056b251446902c010352">CVC3::CoreTheoremProducer</a>.</p>

</div>
</div>
<a class="anchor" id="ac86206cae475f12c9512e436c64656f0"></a><!-- doxytag: member="CVC3::CoreProofRules::orDistributivityRule" ref="ac86206cae475f12c9512e436c64656f0" args="(const Expr &amp;e)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::orDistributivityRule </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>|= (A &amp; B1) | (A &amp; B2) | ... | (A &amp; bn) &lt;=&gt; A &amp; (B1 | B2 | ...| Bn) </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#a84abfb7cac1d339c43b322b097aa574c">CVC3::CoreTheoremProducer</a>.</p>

</div>
</div>
<a class="anchor" id="aa3091e00758d1cb9e91f1cd3fca1e696"></a><!-- doxytag: member="CVC3::CoreProofRules::andDistributivityRule" ref="aa3091e00758d1cb9e91f1cd3fca1e696" args="(const Expr &amp;e)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::andDistributivityRule </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>|= (A | B1) &amp; (A | B2) &amp; ... &amp; (A | bn) &lt;=&gt; A | (B1 &amp; B2 &amp; ...&amp; Bn) </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#af5e5fb97e5fe6197e42c2c44e1757bb3">CVC3::CoreTheoremProducer</a>.</p>

</div>
</div>
<a class="anchor" id="a3389cd795acc4cee4b591c1488293963"></a><!-- doxytag: member="CVC3::CoreProofRules::rewriteImplies" ref="a3389cd795acc4cee4b591c1488293963" args="(const Expr &amp;e)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::rewriteImplies </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>==&gt; IMPLIES(e1,e2) IFF OR(!e1, e2) </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#ac88efa4d7c591f187d3212c7162ef9a5">CVC3::CoreTheoremProducer</a>.</p>

<p>Referenced by <a class="el" href="expr__transform_8cpp_source.html#l00239">CVC3::ExprTransform::pushNegation1()</a>, <a class="el" href="expr__transform_8cpp_source.html#l00141">CVC3::ExprTransform::pushNegationRec()</a>, <a class="el" href="theory__core_8cpp_source.html#l00968">CVC3::TheoryCore::rewrite()</a>, and <a class="el" href="theory__core_8cpp_source.html#l01292">CVC3::TheoryCore::simplifyOp()</a>.</p>

</div>
</div>
<a class="anchor" id="ae429bb5ede0ce74b02cb85f8d0a372dd"></a><!-- doxytag: member="CVC3::CoreProofRules::rewriteDistinct" ref="ae429bb5ede0ce74b02cb85f8d0a372dd" args="(const Expr &amp;e)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::rewriteDistinct </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>==&gt; DISTINCT(e1,...,en) IFF AND 1 &lt;= i &lt; j &lt;= n (e[i] /= e[j]) </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#a17536e7c7ffa8d9a34981458a20f21ff">CVC3::CoreTheoremProducer</a>.</p>

<p>Referenced by <a class="el" href="theory__core_8cpp_source.html#l00968">CVC3::TheoryCore::rewrite()</a>.</p>

</div>
</div>
<a class="anchor" id="aa801f2fa243080def2ef1bff48fba3a9"></a><!-- doxytag: member="CVC3::CoreProofRules::NotToIte" ref="aa801f2fa243080def2ef1bff48fba3a9" args="(const Expr &amp;not_e)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::NotToIte </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>not_e</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>==&gt; NOT(e) == ITE(e, FALSE, TRUE) </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#a287bd6f15c149c66f1aea020cd144571">CVC3::CoreTheoremProducer</a>.</p>

</div>
</div>
<a class="anchor" id="a07be24cd846d62320aca4fb69645a1db"></a><!-- doxytag: member="CVC3::CoreProofRules::OrToIte" ref="a07be24cd846d62320aca4fb69645a1db" args="(const Expr &amp;e)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::OrToIte </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>==&gt; Or(e) == ITE(e[1], TRUE, e[0]) </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#a23a4580e5eb68d197db655776c5e8b0a">CVC3::CoreTheoremProducer</a>.</p>

</div>
</div>
<a class="anchor" id="a332e730ff085f109382a680847189a0d"></a><!-- doxytag: member="CVC3::CoreProofRules::AndToIte" ref="a332e730ff085f109382a680847189a0d" args="(const Expr &amp;e)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::AndToIte </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>==&gt; And(e) == ITE(e[1], e[0], FALSE) </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#aaa435d07458188d1380e42d51c70b419">CVC3::CoreTheoremProducer</a>.</p>

</div>
</div>
<a class="anchor" id="ac0bd85a42727e1f5d41c7f4fb5366acf"></a><!-- doxytag: member="CVC3::CoreProofRules::IffToIte" ref="ac0bd85a42727e1f5d41c7f4fb5366acf" args="(const Expr &amp;e)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::IffToIte </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>==&gt; IFF(a,b) == ITE(a, b, !b) </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#af0a98459d73dbd5b89582d803f304aac">CVC3::CoreTheoremProducer</a>.</p>

</div>
</div>
<a class="anchor" id="a6639598cf87b9c51bc097bad578b0ac4"></a><!-- doxytag: member="CVC3::CoreProofRules::ImpToIte" ref="a6639598cf87b9c51bc097bad578b0ac4" args="(const Expr &amp;e)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::ImpToIte </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>==&gt; IMPLIES(a,b) == ITE(a, b, TRUE) </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#aa5abdd3bfe669a3a0b28a92d28e8958a">CVC3::CoreTheoremProducer</a>.</p>

</div>
</div>
<a class="anchor" id="a71c2aa506efd447f6c411159f44d5af0"></a><!-- doxytag: member="CVC3::CoreProofRules::rewriteIteToNot" ref="a71c2aa506efd447f6c411159f44d5af0" args="(const Expr &amp;e)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::rewriteIteToNot </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>==&gt; ITE(e, FALSE, TRUE) IFF NOT(e) </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#a27d39117a5ede71d9c460b0232bdd469">CVC3::CoreTheoremProducer</a>.</p>

<p>Referenced by <a class="el" href="theory__core_8cpp_source.html#l00968">CVC3::TheoryCore::rewrite()</a>.</p>

</div>
</div>
<a class="anchor" id="ab23828c9cc70a3805a0be7632e03163b"></a><!-- doxytag: member="CVC3::CoreProofRules::rewriteIteToOr" ref="ab23828c9cc70a3805a0be7632e03163b" args="(const Expr &amp;e)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::rewriteIteToOr </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>==&gt; ITE(a, TRUE, b) IFF OR(a, b) </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#a2db95a382b0141d9a5098e9ca9ddd0f7">CVC3::CoreTheoremProducer</a>.</p>

<p>Referenced by <a class="el" href="theory__core_8cpp_source.html#l00968">CVC3::TheoryCore::rewrite()</a>.</p>

</div>
</div>
<a class="anchor" id="a3eb08bdf90ac80d5c372e4791120d894"></a><!-- doxytag: member="CVC3::CoreProofRules::rewriteIteToAnd" ref="a3eb08bdf90ac80d5c372e4791120d894" args="(const Expr &amp;e)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::rewriteIteToAnd </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>==&gt; ITE(a, b, FALSE) IFF AND(a, b) </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#ae681f89828ece60f9725c5696204cd72">CVC3::CoreTheoremProducer</a>.</p>

<p>Referenced by <a class="el" href="theory__core_8cpp_source.html#l00968">CVC3::TheoryCore::rewrite()</a>.</p>

</div>
</div>
<a class="anchor" id="a8a98457f410ab11e4b66adad150e1b67"></a><!-- doxytag: member="CVC3::CoreProofRules::rewriteIteToIff" ref="a8a98457f410ab11e4b66adad150e1b67" args="(const Expr &amp;e)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::rewriteIteToIff </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>==&gt; ITE(a, b, !b) IFF IFF(a, b) </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#abba61fa631a3e3fd6ae8761754f01c72">CVC3::CoreTheoremProducer</a>.</p>

<p>Referenced by <a class="el" href="theory__core_8cpp_source.html#l00968">CVC3::TheoryCore::rewrite()</a>.</p>

</div>
</div>
<a class="anchor" id="a1d30881c6f1a902575da033dbbeb2aa9"></a><!-- doxytag: member="CVC3::CoreProofRules::rewriteIteToImp" ref="a1d30881c6f1a902575da033dbbeb2aa9" args="(const Expr &amp;e)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::rewriteIteToImp </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>==&gt; ITE(a, b, TRUE) IFF IMPLIES(a, b) </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#af0468c432ee5bfc5f82675f4b50e2002">CVC3::CoreTheoremProducer</a>.</p>

<p>Referenced by <a class="el" href="theory__core_8cpp_source.html#l00968">CVC3::TheoryCore::rewrite()</a>.</p>

</div>
</div>
<a class="anchor" id="a03f8a74b8b1b6d90ff23a0a6150c49d6"></a><!-- doxytag: member="CVC3::CoreProofRules::rewriteIteCond" ref="a03f8a74b8b1b6d90ff23a0a6150c49d6" args="(const Expr &amp;e)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::rewriteIteCond </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>==&gt; ITE(a, b(a), c(a)) IFF ITE(a, b(TRUE), c(FALSE)) </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#acc27c290c53fdaab6977d43d765b10e3">CVC3::CoreTheoremProducer</a>.</p>

<p>Referenced by <a class="el" href="theory__core_8cpp_source.html#l00968">CVC3::TheoryCore::rewrite()</a>, and <a class="el" href="expr__transform_8cpp_source.html#l00476">CVC3::ExprTransform::simplifyWithCare()</a>.</p>

</div>
</div>
<a class="anchor" id="abbf1d27a8dba7669aac602a4a95f0b3f"></a><!-- doxytag: member="CVC3::CoreProofRules::ifLiftUnaryRule" ref="abbf1d27a8dba7669aac602a4a95f0b3f" args="(const Expr &amp;e)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::ifLiftUnaryRule </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>|- op(ITE(cond,a,b)) =/&lt;=&gt; ITE(cond,op(a),op(b)) </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#ac4ef57871856386e38e514d65e3b2c5e">CVC3::CoreTheoremProducer</a>.</p>

</div>
</div>
<a class="anchor" id="a8fc33a9fbd44abba98547acf63322fc8"></a><!-- doxytag: member="CVC3::CoreProofRules::iffOrDistrib" ref="a8fc33a9fbd44abba98547acf63322fc8" args="(const Expr &amp;iff)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::iffOrDistrib </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>iff</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>((a|b)&lt;=&gt;(a|c))&lt;=&gt;(a|(b&lt;=&gt;c)); takes ((a|b)&lt;=&gt;(a|c)) as 'iff' </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#a93299fd86567941880c6566e1d3af6b8">CVC3::CoreTheoremProducer</a>.</p>

</div>
</div>
<a class="anchor" id="a0648f60b8e9b11dee35544c83512fa30"></a><!-- doxytag: member="CVC3::CoreProofRules::iffAndDistrib" ref="a0648f60b8e9b11dee35544c83512fa30" args="(const Expr &amp;iff)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::iffAndDistrib </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>iff</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>((a&amp;b)&lt;=&gt;(a&amp;c))&lt;=&gt;(!a|(b&lt;=&gt;c)); takes ((a&amp;b)&lt;=&gt;(a&amp;c)) as 'iff' </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#aecd467f33f9bcb736eadfa77f1a517aa">CVC3::CoreTheoremProducer</a>.</p>

</div>
</div>
<a class="anchor" id="a07d66271324bda72a66505bb427df156"></a><!-- doxytag: member="CVC3::CoreProofRules::rewriteAndSubterms" ref="a07d66271324bda72a66505bb427df156" args="(const Expr &amp;e, int idx)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::rewriteAndSubterms </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>idx</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>(a &amp; b) &lt;=&gt; a &amp; b[a/true]; takes the index of a </p>
<p>and rewrites all the other conjuncts. </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#a8c67942a0f72ee11abe27c992e0833c1">CVC3::CoreTheoremProducer</a>.</p>

<p>Referenced by <a class="el" href="theory__core_8cpp_source.html#l00968">CVC3::TheoryCore::rewrite()</a>.</p>

</div>
</div>
<a class="anchor" id="a0d589028239025d0e43c92c04b5d586a"></a><!-- doxytag: member="CVC3::CoreProofRules::rewriteOrSubterms" ref="a0d589028239025d0e43c92c04b5d586a" args="(const Expr &amp;e, int idx)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::rewriteOrSubterms </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>idx</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>(a | b) &lt;=&gt; a | b[a/false]; takes the index of a </p>
<p>and rewrites all the other disjuncts. </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#ae6b1fd56b11dbe24218cd2f5c74518c9">CVC3::CoreTheoremProducer</a>.</p>

<p>Referenced by <a class="el" href="theory__core_8cpp_source.html#l00968">CVC3::TheoryCore::rewrite()</a>.</p>

</div>
</div>
<a class="anchor" id="a9592705bbf82393b7f6500fa33ead252"></a><!-- doxytag: member="CVC3::CoreProofRules::dummyTheorem" ref="a9592705bbf82393b7f6500fa33ead252" args="(const Expr &amp;e)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::CoreProofRules::dummyTheorem </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Temporary cheat for building theorems. </p>

<p>Implemented in <a class="el" href="classCVC3_1_1CoreTheoremProducer.html#a1990709421517a01d824217eed8d1021">CVC3::CoreTheoremProducer</a>.</p>

<p>Referenced by <a class="el" href="expr__transform_8cpp_source.html#l00476">CVC3::ExprTransform::simplifyWithCare()</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="core__proof__rules_8h_source.html">core_proof_rules.h</a></li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Sep 7 2011 for CVC3 by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>