Sophie

Sophie

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

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::ArithTheoremProducer 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_1ArithTheoremProducer.html">ArithTheoremProducer</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a>  </div>
  <div class="headertitle">
<div class="title">CVC3::ArithTheoremProducer Class Reference</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="CVC3::ArithTheoremProducer" --><!-- doxytag: inherits="CVC3::ArithProofRules,CVC3::TheoremProducer" -->
<p><code>#include &lt;<a class="el" href="arith__theorem__producer_8h_source.html">arith_theorem_producer.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for CVC3::ArithTheoremProducer:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classCVC3_1_1ArithTheoremProducer.png" usemap="#CVC3::ArithTheoremProducer_map" alt=""/>
  <map id="CVC3::ArithTheoremProducer_map" name="CVC3::ArithTheoremProducer_map">
<area href="classCVC3_1_1ArithProofRules.html" alt="CVC3::ArithProofRules" shape="rect" coords="0,0,181,24"/>
<area href="classCVC3_1_1TheoremProducer.html" alt="CVC3::TheoremProducer" shape="rect" coords="191,0,372,24"/>
</map>
 </div></div>

<p><a href="classCVC3_1_1ArithTheoremProducer-members.html">List of all members.</a></p>
<h2><a name="pub-methods"></a>
Public Member Functions</h2>
<ul>
<li><a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a8216db52c44de1ba9a50ca6dfea24720">ArithTheoremProducer</a> (<a class="el" href="classCVC3_1_1TheoremManager.html">TheoremManager</a> *tm, <a class="el" href="classCVC3_1_1TheoryArithNew.html">TheoryArithNew</a> *theoryArith)
<dl class="el"><dd class="mdescRight">Constructor.  <a href="#a8216db52c44de1ba9a50ca6dfea24720"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ae0d46b17ef012eabbbe62cac026bfab9">rat</a> (<a class="el" href="classCVC3_1_1Rational.html">Rational</a> r)
<dl class="el"><dd class="mdescRight">Create <a class="el" href="classCVC3_1_1Expr.html" title="Data structure of expressions in CVC3.">Expr</a> from <a class="el" href="classCVC3_1_1Rational.html">Rational</a> (for convenience)  <a href="#ae0d46b17ef012eabbbe62cac026bfab9"></a><br/></dl><li><a class="el" href="classCVC3_1_1Type.html">Type</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a4606a94098ae94cdae1b924dc7f7b4ae">realType</a> ()
<li><a class="el" href="classCVC3_1_1Type.html">Type</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a8b33391347e9741339b674abd5c4fbf2">intType</a> ()
<li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a9dfab0a471e7a705264be04007ac61e5">darkShadow</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;lhs, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;rhs)
<dl class="el"><dd class="mdescRight">Construct the dark shadow expression representing lhs &lt;= rhs.  <a href="#a9dfab0a471e7a705264be04007ac61e5"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a1684298bef4bf1efdccb7078f5a6c96f">grayShadow</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;v, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;c1, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;c2)
<dl class="el"><dd class="mdescRight">Construct the gray shadow expression representing c1 &lt;= v - e &lt;= c2.  <a href="#a1684298bef4bf1efdccb7078f5a6c96f"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a7568925b6c26f1c7ba882893f596d214">varToMult</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">==&gt; e = 1 * e  <a href="#a7568925b6c26f1c7ba882893f596d214"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#aaafdbe9dcc49728cc2bf16b43045c193">uMinusToMult</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">==&gt; -(e) = (-1) * e  <a href="#aaafdbe9dcc49728cc2bf16b43045c193"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ab369e518fc2ee411503253fa0b1515d6">minusToPlus</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;x, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;y)
<dl class="el"><dd class="mdescRight">==&gt; x - y = x + (-1) * y  <a href="#ab369e518fc2ee411503253fa0b1515d6"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a4671174ae8ff61c52f16ddd53a3cdd27">canonUMinusToDivide</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a515e5d076ed135a6d943c2f5d5e34188">canonDivideConst</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;d)
<dl class="el"><dd class="mdescRight">(c) / d ==&gt; (c/d), takes c and d  <a href="#a515e5d076ed135a6d943c2f5d5e34188"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a4d2d8da9de6d6faaa07758c01e3a9fe8">canonDivideMult</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;cx, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;d)
<dl class="el"><dd class="mdescRight">(c * x) / d ==&gt; (c/d) * x, takes (c*x) and d  <a href="#a4d2d8da9de6d6faaa07758c01e3a9fe8"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a4338b85f1dd0fca0cc58e6b7259a20b4">canonDividePlus</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;d)
<dl class="el"><dd class="mdescRight">(+ c ...)/d ==&gt; push division to all the coefficients.  <a href="#a4338b85f1dd0fca0cc58e6b7259a20b4"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#aa651eb7a4d20a77135efa2d3e984c355">canonDivideVar</a> (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)
<dl class="el"><dd class="mdescRight">x / d ==&gt; (1/d) * x, takes x and d  <a href="#aa651eb7a4d20a77135efa2d3e984c355"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#af24b2bc3bc03bc320707362f2460dd0e">simplifiedMultExpr</a> (std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;mulKids)
<li>virtual <a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a10ebfab26aa4ee1a147f08d8f6b94c45">canonMultConstMult</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;e)
<li>virtual <a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a48b21552a97a3a75ae469fb48c155e51">canonMultConstPlus</a> (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)
<li>virtual <a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#aebf0a0b539104e2190b53351efc6116b">canonMultPowPow</a> (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)
<li>virtual <a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#aabc24cdaf5d3a390f9880937bac17311">canonMultPowLeaf</a> (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)
<li>virtual <a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#aae1bc41d54f8b148ce5cf9425ac688af">canonMultLeafLeaf</a> (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)
<li>virtual <a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a05b2608fd280890cb49bf4534a54e304">canonMultLeafOrPowMult</a> (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)
<li>virtual <a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a9548361051bb6febc314faa107d2c2f5">canonCombineLikeTerms</a> (const std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;sumExprs)
<li>virtual <a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a0b344f367f01d240d997df7edfe1a12c">canonMultLeafOrPowOrMultPlus</a> (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)
<li>virtual <a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ac0363ff2f51ad1173ed1e46046b0654a">canonMultPlusPlus</a> (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)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ab5166b206f49897a6a49ba0014c0b808">canonMultMtermMterm</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a41f7000c783a82e9a86cad823b06bff4">canonPlus</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Canonize (PLUS t1 ... tn)  <a href="#a41f7000c783a82e9a86cad823b06bff4"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a7b07ab799dbdf80254df3ec7fc35d36d">canonInvertConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#afb0c2a89f3373dcb26cd516714d0e49a">canonInvertLeaf</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a6a829cb16f960f9e7c2f25ea4906eaba">canonInvertPow</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a70a381c22184655fb6d4f3b621bf216b">canonInvertMult</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a7c7c860b193ec63a776dd13613aeca25">canonInvert</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">==&gt; 1/e = e' where e' is canonical; takes e.  <a href="#a7c7c860b193ec63a776dd13613aeca25"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a77b99e94956d407e5cd20701e6771120">moveSumConstantRight</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a92540cc58f6203c2904fc2bd197190da">canonDivide</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a9bd77385dd0cbaac271aaab4b6c6ec09">canonMult</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#af6ba91fa47c4c9139c4d93fe3de0112f">canonMultTermConst</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;t)
<dl class="el"><dd class="mdescRight">t*c ==&gt; c*t, takes constant c and term t  <a href="#af6ba91fa47c4c9139c4d93fe3de0112f"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a529fe89fea243d932879a1a74e9d36a7">canonMultTerm1Term2</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;t1, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;t2)
<dl class="el"><dd class="mdescRight">t1*t2 ==&gt; Error, takes t1 and t2 where both are non-constants  <a href="#a529fe89fea243d932879a1a74e9d36a7"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a55ec89d6cf310694e9f4b1013a795ce2">canonMultZero</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">0*t ==&gt; 0, takes 0*t  <a href="#a55ec89d6cf310694e9f4b1013a795ce2"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ae5a6e1b2c7b9239b7e53027c51a2dc7e">canonMultOne</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">1*t ==&gt; t, takes 1*t  <a href="#ae5a6e1b2c7b9239b7e53027c51a2dc7e"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#affbdf02016310d8cd6a9037fdd9eddc6">canonMultConstConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;c1, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;c2)
<dl class="el"><dd class="mdescRight">c1*c2 ==&gt; c', takes constant c1*c2  <a href="#affbdf02016310d8cd6a9037fdd9eddc6"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ad51f0d5c3232b6c247939a10e253f53d">canonMultConstTerm</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;c1, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;c2, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;t)
<dl class="el"><dd class="mdescRight">c1*(c2*t) ==&gt; c'*t, takes c1 and c2 and t  <a href="#ad51f0d5c3232b6c247939a10e253f53d"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ab0e0e14c71501a9f8208963c54010fe4">canonMultConstSum</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;c1, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;sum)
<dl class="el"><dd class="mdescRight">c1*(+ c2 v1 ...) ==&gt; (+ c' c1v1 ...), takes c1 and the sum  <a href="#ab0e0e14c71501a9f8208963c54010fe4"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#af673275ae1c3dc606b29979b60df35c5">canonPowConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;pow)
<dl class="el"><dd class="mdescRight">c^n = c' (compute the constant power expression)  <a href="#af673275ae1c3dc606b29979b60df35c5"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a19964269c705bafbe69cb1052fe7bec8">canonFlattenSum</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">flattens the input. accepts a PLUS expr  <a href="#a19964269c705bafbe69cb1052fe7bec8"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ac9ee451992ab00f200ee8aee26e99e0c">canonComboLikeTerms</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">combine like terms. accepts a flattened PLUS expr  <a href="#ac9ee451992ab00f200ee8aee26e99e0c"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a0040d5d848f7040df940b92d95a75930">multEqZero</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;expr)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a9cd618abf322c0389f1fc40f274059c2">powEqZero</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;expr)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a3c454b863142345e1093663fbb89d306">elimPower</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;expr)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a21456f49d3a6711f21e3c13fb3c0d34a">elimPowerConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;expr, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;root)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#afbf059903de8b1e87aef9a4a75340d6c">evenPowerEqNegConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;expr)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#aa3838fe1c003a9f47f3ec8344d192dea">intEqIrrational</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;expr, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;isInt)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a621015d4894231ecd9ab465494e9c9c8">constPredicate</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">e0 @ e1 &lt;==&gt; true | false, where @ is {=,&lt;,&lt;=,&gt;,&gt;=}  <a href="#a621015d4894231ecd9ab465494e9c9c8"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a3eb1309c184247837239c098d9c9100a">rightMinusLeft</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">e[0] @ e[1] &lt;==&gt; 0 @ e[1] - e[0], where @ is {=,&lt;,&lt;=,&gt;,&gt;=}  <a href="#a3eb1309c184247837239c098d9c9100a"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a8196042ba713a7c782ee4b5eb4c69ccc">leftMinusRight</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">e[0] @ e[1] &lt;==&gt; e[0] - e[1] @ 0, where @ is {=,&lt;,&lt;=,&gt;,&gt;=}  <a href="#a8196042ba713a7c782ee4b5eb4c69ccc"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a3c3041eb3b0144e21d72ffe6999953e2">plusPredicate</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;x, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;y, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;z, int kind)
<dl class="el"><dd class="mdescRight">x @ y &lt;==&gt; x + z @ y + z, where @ is {=,&lt;,&lt;=,&gt;,&gt;=} (given as 'kind')  <a href="#a3c3041eb3b0144e21d72ffe6999953e2"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ae66ddbc1457e3c032ea9059625059992">multEqn</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;x, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;y, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;z)
<dl class="el"><dd class="mdescRight">x = y &lt;==&gt; x * z = y * z, where z is a non-zero constant  <a href="#ae66ddbc1457e3c032ea9059625059992"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#aa371616db9ac1a4a9c7a4b1ce0f2a05c">divideEqnNonConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;x, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;y, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;z)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a3d245f36a2e42684ec2fd9356d89111f">multIneqn</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;z)
<dl class="el"><dd class="mdescRight">Multiplying inequation by a non-zero constant.  <a href="#a3d245f36a2e42684ec2fd9356d89111f"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a517d45514aefcab0dc6aabb400f149fd">eqToIneq</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">x = y ==&gt; x &lt;= y and x &gt;= y  <a href="#a517d45514aefcab0dc6aabb400f149fd"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#af069fc1b320c0455ec7cde192668884b">flipInequality</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">"op1 GE|GT op2" &lt;==&gt; op2 LE|LT op1  <a href="#af069fc1b320c0455ec7cde192668884b"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a07368f8a2e12b5c189645a99bc934102">negatedInequality</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Propagating negation over &lt;,&lt;=,&gt;,&gt;=.  <a href="#a07368f8a2e12b5c189645a99bc934102"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a8092c96a87d952fc1e572bb9237ff994">realShadow</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;alphaLTt, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;tLTbeta)
<dl class="el"><dd class="mdescRight">Real shadow: a &lt;(=) t, t &lt;(=) b ==&gt; a &lt;(=) b.  <a href="#a8092c96a87d952fc1e572bb9237ff994"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a6e14251c516153e14539a34598daca04">realShadowEq</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;alphaLEt, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;tLEalpha)
<dl class="el"><dd class="mdescRight">alpha &lt;= t &lt;= alpha ==&gt; t = alpha  <a href="#a6e14251c516153e14539a34598daca04"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a7f4c82e18e7a3ed3b5b22a6ce7d7cf27">finiteInterval</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;aLEt, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;tLEac, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;isInta, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;isIntt)
<dl class="el"><dd class="mdescRight">Finite interval for integers: a &lt;= t &lt;= a + c ==&gt; G(t, a, 0, c)  <a href="#a7f4c82e18e7a3ed3b5b22a6ce7d7cf27"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#aef6fd1261bea182d4554d0423803b05e">darkGrayShadow2ab</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;betaLEbx, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;axLEalpha, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;isIntAlpha, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;isIntBeta, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;isIntx)
<dl class="el"><dd class="mdescRight">Dark &amp; Gray shadows when a &lt;= b.  <a href="#aef6fd1261bea182d4554d0423803b05e"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#aaf64935bb620ab79fd7383f1913bd8b8">darkGrayShadow2ba</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;betaLEbx, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;axLEalpha, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;isIntAlpha, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;isIntBeta, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;isIntx)
<dl class="el"><dd class="mdescRight">Dark &amp; Gray shadows when b &lt;= a.  <a href="#aaf64935bb620ab79fd7383f1913bd8b8"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#aafadfc6ae6013ab18a7b4ee570cce16a">expandDarkShadow</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;darkShadow)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ac8a2c0a97ace8f17153ad784c87ba5a2">expandGrayShadow0</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;grayShadow)
<dl class="el"><dd class="mdescRight">GRAY_SHADOW(v, e, c, c) ==&gt; v=e+c.  <a href="#ac8a2c0a97ace8f17153ad784c87ba5a2"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a14af8b5ecbfaaee4600453bd9d681838">splitGrayShadow</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;grayShadow)
<dl class="el"><dd class="mdescRight">G(x, e, c1, c2) ==&gt; (G1 or G2) and (!G1 or !G2)  <a href="#a14af8b5ecbfaaee4600453bd9d681838"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#acaa835c8569f6667fa26bfedb0502cf1">splitGrayShadowSmall</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;grayShadow)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ac6714d4922aea3413f9aeed742bc645e">expandGrayShadow</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;grayShadow)
<dl class="el"><dd class="mdescRight">G(x, e, c1, c2) ==&gt; e+c1 &lt;= x AND x &lt;= e+c2.  <a href="#ac6714d4922aea3413f9aeed742bc645e"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#af091e13254c983370c46707a03b1ad30">expandGrayShadowConst</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;grayShadow)
<dl class="el"><dd class="mdescRight">Optimized rules: GRAY_SHADOW(a*x, c, c1, c2) ==&gt; [expansion].  <a href="#af091e13254c983370c46707a03b1ad30"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#af0070c5da95d33029e54b1d669d5b1f0">grayShadowConst</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;g)
<dl class="el"><dd class="mdescRight">|- G(ax, c, c1, c2) ==&gt; |- G(x, 0, ceil((c1+c)/a), floor((c2+c)/a))  <a href="#af0070c5da95d33029e54b1d669d5b1f0"></a><br/></dl><li><a class="el" href="classCVC3_1_1Rational.html">Rational</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a529e92e59e9009e3330a8592c9cb56fe">constRHSGrayShadow</a> (const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;c, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;b, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;a)
<dl class="el"><dd class="mdescRight">Implements j(c,b,a)  <a href="#a529e92e59e9009e3330a8592c9cb56fe"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ac5d4056f00cee80d73b5b46f63bd5b3d">lessThanToLE</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;less, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;isIntLHS, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;isIntRHS, bool changeRight)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#af55c5d0a2626f955b0843381ca8b50f3">lessThanToLERewrite</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;ineq, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;isIntLHS, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;isIntRHS, bool changeRight)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a92936e3de514c430659486b00e84b0a9">intVarEqnConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;eqn, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;isIntx)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a85e9c7d93d6d1433fea606b0c3878e25">IsIntegerElim</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;isIntx)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a49d6559f50d51cde3c2e723c2a254cff">eqElimIntRule</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;eqn, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;isIntx, const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;isIntVars)
<dl class="el"><dd class="mdescRight">Equality elimination rule for integers: </p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[\frac{\mathsf{int}(a\cdot x)\quad \mathsf{int}(C+\sum_{i=1}^{n}a_{i}\cdot x_{i})} {a\cdot x=C+\sum_{i=1}^{n}a_{i}\cdot x_{i} \quad\equiv\quad x=t_{2}\wedge 0=t_{3}} \]" src="form_311.png"/>
</p>
<p> See the detailed description for explanations.  <a href="#a49d6559f50d51cde3c2e723c2a254cff"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#af1baf70d6108dc52cbb9704e2a8889ec">isIntConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">return e &lt;=&gt; TRUE/FALSE for e == IS_INTEGER(c), where c is a constant  <a href="#af1baf70d6108dc52cbb9704e2a8889ec"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a512f22a4a025477ced8c27f3d62809d7">equalLeaves1</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;e)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a77ae567431bf98e20cc08903deb2ec99">equalLeaves2</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;e)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a8de6b6b44c60cf495b455b980a7c681b">equalLeaves3</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;e)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a97768870957319cdc68eb94694a37dc5">equalLeaves4</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;e)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a3d6e1d8668360c20b5a6a47e3fcc4612">diseqToIneq</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;diseq)
<dl class="el"><dd class="mdescRight">x /= y ==&gt; (x &lt; y) OR (x &gt; y)  <a href="#a3d6e1d8668360c20b5a6a47e3fcc4612"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a753c339b31e38915ae6f06e0fe6e48da">dummyTheorem</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a23051d23d509f9cda35c64d4a5ff1dbf">oneElimination</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;x)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ad4513630a9eec6c841b527222a79ea1d">clashingBounds</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;lowerBound, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;upperBound)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a3b2bea72cd9163daa7c41388037bca29">addInequalities</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;thm1, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;thm2)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a0eb949bb19e618a8318f236b249fadd5">addInequalities</a> (const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;thms)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a364ef37224bae3afb4f62a5c0f75d02c">implyWeakerInequality</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;expr1, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;expr2)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a1bf4d45330b587882e726daa9117cdfb">implyNegatedInequality</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;expr1, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;expr2)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ab9395a2ee958d70c780df2514e517320">integerSplit</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;intVar, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;intPoint)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a43fa5f7c8c3ad3915de7f068ac8cefbd">trustedRewrite</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;expr1, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;expr2)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a4b28aa17702ca3f9703e61ca012ca236">rafineStrictInteger</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;isIntConstrThm, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;constr)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#afd5bca9b136254b904b931680180ac83">simpleIneqInt</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;ineq, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;isIntRHS)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ad5f121b6b7d6b8ae951dfb4cce064575">intEqualityRationalConstant</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;isIntConstrThm, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;constr)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a0111aa5645658dbd6a4bc030178edb94">cycleConflict</a> (const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;inequalitites)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#abb8aff055ea56ad8de2b66fd9a7aeba9">implyEqualities</a> (const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;inequalities)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ae3a7aa0ebe8e84b806efaa59278ea75e">implyWeakerInequalityDiffLogic</a> (const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;antecedentThms, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;implied)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ab794c1f9d6e971ac56e0063f409b4774">implyNegatedInequalityDiffLogic</a> (const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;antecedentThms, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;implied)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a84a9652acc5908e5d1ead5c54c1f2d90">expandGrayShadowRewrite</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;theShadow)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ae43400e7e4c9e3695a75da3bd5718eda">compactNonLinearTerm</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;nonLinear)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a9edd8b9ee6a8b4d14e9a2f967b78d52f">nonLinearIneqSignSplit</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;ineqThm)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a45d8f89bdb0e57ddbaec273a24bf34b4">implyDiffLogicBothBounds</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;x, std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;c1_le_x, <a class="el" href="classCVC3_1_1Rational.html">Rational</a> c1, std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;x_le_c2, <a class="el" href="classCVC3_1_1Rational.html">Rational</a> c2)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a0433b1ba53a33275015c26450acb09d0">powerOfOne</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
</ul>
<h2><a name="pub-static-methods"></a>
Static Public Member Functions</h2>
<ul>
<li>static bool <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a23faa6b30e4b01d7540ac1e22e6e06ce">greaterthan</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;)
</ul>
<h2><a name="pri-methods"></a>
Private Member Functions</h2>
<tr><td colspan="2"><div class="groupHeader">Auxiliary functions for eqElimIntRule()</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>Methods that compute the subterms used in <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a49d6559f50d51cde3c2e723c2a254cff" title="Equality elimination rule for integers:  See the detailed description for explanations.">eqElimIntRule()</a> </p>
</div></td></tr>
<ul>
<li><a class="el" href="classCVC3_1_1Rational.html">Rational</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a3cb8580c7627250ffe999de9a1b2c8c3">modEq</a> (const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;i, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;m)
<dl class="el"><dd class="mdescRight">Compute the special modulus: i - m*floor(i/m+1/2)  <a href="#a3cb8580c7627250ffe999de9a1b2c8c3"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a47a517c15b57ba19b7759a4ba925e306">create_t</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;eqn)
<dl class="el"><dd class="mdescRight">Create the term 't'. See <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a49d6559f50d51cde3c2e723c2a254cff" title="Equality elimination rule for integers:  See the detailed description for explanations.">eqElimIntRule()</a>.  <a href="#a47a517c15b57ba19b7759a4ba925e306"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ab20380e74e431d9956c588d45d5121a4">create_t2</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;lhs, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;rhs, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;t)
<dl class="el"><dd class="mdescRight">Create the term 't2'. See <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a49d6559f50d51cde3c2e723c2a254cff" title="Equality elimination rule for integers:  See the detailed description for explanations.">eqElimIntRule()</a>.  <a href="#ab20380e74e431d9956c588d45d5121a4"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a77e9c5681a02ab61f1311628e843d3db">create_t3</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;lhs, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;rhs, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;t)
<dl class="el"><dd class="mdescRight">Create the term 't3'. See <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a49d6559f50d51cde3c2e723c2a254cff" title="Equality elimination rule for integers:  See the detailed description for explanations.">eqElimIntRule()</a>.  <a href="#a77e9c5681a02ab61f1311628e843d3db"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a10c569edc893a67b42af659633b3f20d">sumModM</a> (std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;summands, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;sum, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;m, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;divisor)
<dl class="el"><dd class="mdescRight">Takes sum = a_0 + a_1*x_1+...+a_n*x_n and returns the vector of similar monomials (in 'summands') with coefficients mod(a_i, m). If divide flag is true, the coefficients will be mod(a_i,m)/m.  <a href="#a10c569edc893a67b42af659633b3f20d"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a69adf7d70a6a71e5c0e3489535a18108">monomialModM</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;m, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;divisor)
<dl class="el"><dd class="mdescRight">Compute the special modulus: i - m*floor(i/m+1/2)  <a href="#a69adf7d70a6a71e5c0e3489535a18108"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a32e61136df79a76fe1ed853ee6b8dc2e">sumMulF</a> (std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;summands, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;sum, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;m, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;divisor)
<dl class="el"><dd class="mdescRight">Compute the special modulus: i - m*floor(i/m+1/2)  <a href="#a32e61136df79a76fe1ed853ee6b8dc2e"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a41da83b4624daa43a84bc049b5b7d836">monomialMulF</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;m, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;divisor)
<dl class="el"><dd class="mdescRight">Compute the special modulus: i - m*floor(i/m+1/2)  <a href="#a41da83b4624daa43a84bc049b5b7d836"></a><br/></dl><li><a class="el" href="classCVC3_1_1Rational.html">Rational</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ad727620082aea32b487863ac5888eb1b">f</a> (const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;i, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;m)
<dl class="el"><dd class="mdescRight">Compute floor(i/m+1/2) + mod(i,m)  <a href="#ad727620082aea32b487863ac5888eb1b"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a073ec1476668043be44ae96519eae36d">substitute</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;term, <a class="el" href="classCVC3_1_1ExprMap.html">ExprMap</a>&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;eMap)
<dl class="el"><dd class="mdescRight">Compute the special modulus: i - m*floor(i/m+1/2)  <a href="#a073ec1476668043be44ae96519eae36d"></a><br/></dl></ul>
<h2><a name="pri-attribs"></a>
Private Attributes</h2>
<ul>
<li><a class="el" href="classCVC3_1_1TheoryArithNew.html">TheoryArithNew</a> * <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ad2c70acba668e2582f0ebd9533646338">d_theoryArith</a>
</ul>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock">
<p>Definition at line <a class="el" href="arith__theorem__producer_8h_source.html#l00032">32</a> of file <a class="el" href="arith__theorem__producer_8h_source.html">arith_theorem_producer.h</a>.</p>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a8216db52c44de1ba9a50ca6dfea24720"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::ArithTheoremProducer" ref="a8216db52c44de1ba9a50ca6dfea24720" args="(TheoremManager *tm, TheoryArithNew *theoryArith)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CVC3::ArithTheoremProducer::ArithTheoremProducer </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classCVC3_1_1TheoremManager.html">TheoremManager</a> *&#160;</td>
          <td class="paramname"><em>tm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classCVC3_1_1TheoryArithNew.html">TheoryArithNew</a> *&#160;</td>
          <td class="paramname"><em>theoryArith</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Constructor. </p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8h_source.html#l00067">67</a> of file <a class="el" href="arith__theorem__producer_8h_source.html">arith_theorem_producer.h</a>.</p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a3cb8580c7627250ffe999de9a1b2c8c3"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::modEq" ref="a3cb8580c7627250ffe999de9a1b2c8c3" args="(const Rational &amp;i, const Rational &amp;m)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Rational.html">Rational</a> ArithTheoremProducer::modEq </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;&#160;</td>
          <td class="paramname"><em>i</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;&#160;</td>
          <td class="paramname"><em>m</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Compute the special modulus: i - m*floor(i/m+1/2) </p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02252">2252</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="classCVC3_1_1Rational.html#a195c125a76cb9a6c5731369e244a2de3">CVC3::Rational::toString()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p>

</div>
</div>
<a class="anchor" id="a47a517c15b57ba19b7759a4ba925e306"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::create_t" ref="a47a517c15b57ba19b7759a4ba925e306" args="(const Expr &amp;eqn)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::create_t </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>eqn</em></td><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create the term 't'. See <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a49d6559f50d51cde3c2e723c2a254cff" title="Equality elimination rule for integers:  See the detailed description for explanations.">eqElimIntRule()</a>. </p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02192">2192</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="theory__arith_8h_source.html#l00181">CVC3::isPlus()</a>, <a class="el" href="theory__arith_8h_source.html#l00207">CVC3::multExpr()</a>, <a class="el" href="theory__arith_8h_source.html#l00199">CVC3::plusExpr()</a>, <a class="el" href="classCVC3_1_1Rational.html#a195c125a76cb9a6c5731369e244a2de3">CVC3::Rational::toString()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="ab20380e74e431d9956c588d45d5121a4"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::create_t2" ref="ab20380e74e431d9956c588d45d5121a4" args="(const Expr &amp;lhs, const Expr &amp;rhs, const Expr &amp;t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::create_t2 </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>lhs</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>rhs</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>t</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create the term 't2'. See <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a49d6559f50d51cde3c2e723c2a254cff" title="Equality elimination rule for integers:  See the detailed description for explanations.">eqElimIntRule()</a>. </p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02211">2211</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00181">CVC3::isPlus()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00199">CVC3::plusExpr()</a>, and <a class="el" href="classCVC3_1_1Rational.html#a195c125a76cb9a6c5731369e244a2de3">CVC3::Rational::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a77e9c5681a02ab61f1311628e843d3db"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::create_t3" ref="a77e9c5681a02ab61f1311628e843d3db" args="(const Expr &amp;lhs, const Expr &amp;rhs, const Expr &amp;t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::create_t3 </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>lhs</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>rhs</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>t</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create the term 't3'. See <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a49d6559f50d51cde3c2e723c2a254cff" title="Equality elimination rule for integers:  See the detailed description for explanations.">eqElimIntRule()</a>. </p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02231">2231</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00181">CVC3::isPlus()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00199">CVC3::plusExpr()</a>, and <a class="el" href="classCVC3_1_1Rational.html#a195c125a76cb9a6c5731369e244a2de3">CVC3::Rational::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a10c569edc893a67b42af659633b3f20d"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::sumModM" ref="a10c569edc893a67b42af659633b3f20d" args="(std::vector&lt; Expr &gt; &amp;summands, const Expr &amp;sum, const Rational &amp;m, const Rational &amp;divisor)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArithTheoremProducer::sumModM </td>
          <td>(</td>
          <td class="paramtype">std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>summands</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>sum</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;&#160;</td>
          <td class="paramname"><em>m</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;&#160;</td>
          <td class="paramname"><em>divisor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Takes sum = a_0 + a_1*x_1+...+a_n*x_n and returns the vector of similar monomials (in 'summands') with coefficients mod(a_i, m). If divide flag is true, the coefficients will be mod(a_i,m)/m. </p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02268">2268</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, and <a class="el" href="classCVC3_1_1Rational.html#a195c125a76cb9a6c5731369e244a2de3">CVC3::Rational::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a69adf7d70a6a71e5c0e3489535a18108"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::monomialModM" ref="a69adf7d70a6a71e5c0e3489535a18108" args="(const Expr &amp;e, const Rational &amp;m, const Rational &amp;divisor)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::monomialModM </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_1Rational.html">Rational</a> &amp;&#160;</td>
          <td class="paramname"><em>m</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;&#160;</td>
          <td class="paramname"><em>divisor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Compute the special modulus: i - m*floor(i/m+1/2) </p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02288">2288</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01162">CVC3::Expr::getKids()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="theory__arith_8h_source.html#l00207">CVC3::multExpr()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, <a class="el" href="classCVC3_1_1Rational.html#a195c125a76cb9a6c5731369e244a2de3">CVC3::Rational::toString()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p>

</div>
</div>
<a class="anchor" id="a32e61136df79a76fe1ed853ee6b8dc2e"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::sumMulF" ref="a32e61136df79a76fe1ed853ee6b8dc2e" args="(std::vector&lt; Expr &gt; &amp;summands, const Expr &amp;sum, const Rational &amp;m, const Rational &amp;divisor)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArithTheoremProducer::sumMulF </td>
          <td>(</td>
          <td class="paramtype">std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>summands</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>sum</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;&#160;</td>
          <td class="paramname"><em>m</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;&#160;</td>
          <td class="paramname"><em>divisor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Compute the special modulus: i - m*floor(i/m+1/2) </p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02316">2316</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, and <a class="el" href="classCVC3_1_1Rational.html#a195c125a76cb9a6c5731369e244a2de3">CVC3::Rational::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a41da83b4624daa43a84bc049b5b7d836"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::monomialMulF" ref="a41da83b4624daa43a84bc049b5b7d836" args="(const Expr &amp;e, const Rational &amp;m, const Rational &amp;divisor)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::monomialMulF </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_1Rational.html">Rational</a> &amp;&#160;</td>
          <td class="paramname"><em>m</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;&#160;</td>
          <td class="paramname"><em>divisor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Compute the special modulus: i - m*floor(i/m+1/2) </p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02336">2336</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="theory__arith_8h_source.html#l00207">CVC3::multExpr()</a>, and <a class="el" href="classCVC3_1_1Rational.html#a195c125a76cb9a6c5731369e244a2de3">CVC3::Rational::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="ad727620082aea32b487863ac5888eb1b"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::f" ref="ad727620082aea32b487863ac5888eb1b" args="(const Rational &amp;i, const Rational &amp;m)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Rational.html">Rational</a> ArithTheoremProducer::f </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;&#160;</td>
          <td class="paramname"><em>i</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;&#160;</td>
          <td class="paramname"><em>m</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Compute floor(i/m+1/2) + mod(i,m) </p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02261">2261</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, and <a class="el" href="classCVC3_1_1Rational.html#a195c125a76cb9a6c5731369e244a2de3">CVC3::Rational::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a073ec1476668043be44ae96519eae36d"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::substitute" ref="a073ec1476668043be44ae96519eae36d" args="(const Expr &amp;term, ExprMap&lt; Expr &gt; &amp;eMap)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::substitute </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>term</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classCVC3_1_1ExprMap.html">ExprMap</a>&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>eMap</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Compute the special modulus: i - m*floor(i/m+1/2) </p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02353">2353</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr__map_8h_source.html#l00191">CVC3::ExprMap&lt; Data &gt;::end()</a>, <a class="el" href="expr__map_8h_source.html#l00194">CVC3::ExprMap&lt; Data &gt;::find()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="theory__arith_8h_source.html#l00181">CVC3::isPlus()</a>, and <a class="el" href="theory__arith_8h_source.html#l00199">CVC3::plusExpr()</a>.</p>

</div>
</div>
<a class="anchor" id="ae0d46b17ef012eabbbe62cac026bfab9"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::rat" ref="ae0d46b17ef012eabbbe62cac026bfab9" args="(Rational r)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> CVC3::ArithTheoremProducer::rat </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classCVC3_1_1Rational.html">Rational</a>&#160;</td>
          <td class="paramname"><em>r</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create <a class="el" href="classCVC3_1_1Expr.html" title="Data structure of expressions in CVC3.">Expr</a> from <a class="el" href="classCVC3_1_1Rational.html">Rational</a> (for convenience) </p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8h_source.html#l00071">71</a> of file <a class="el" href="arith__theorem__producer_8h_source.html">arith_theorem_producer.h</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00095">CVC3::TheoremProducer::d_em</a>, and <a class="el" href="expr__manager_8h_source.html#l00471">CVC3::ExprManager::newRatExpr()</a>.</p>

</div>
</div>
<a class="anchor" id="a4606a94098ae94cdae1b924dc7f7b4ae"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::realType" ref="a4606a94098ae94cdae1b924dc7f7b4ae" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Type.html">Type</a> CVC3::ArithTheoremProducer::realType </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="arith__theorem__producer_8h_source.html#l00072">72</a> of file <a class="el" href="arith__theorem__producer_8h_source.html">arith_theorem_producer.h</a>.</p>

<p>References <a class="el" href="arith__theorem__producer_8h_source.html#l00033">d_theoryArith</a>, and <a class="el" href="theory__arith_8h_source.html#l00152">CVC3::TheoryArith::realType()</a>.</p>

</div>
</div>
<a class="anchor" id="a8b33391347e9741339b674abd5c4fbf2"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::intType" ref="a8b33391347e9741339b674abd5c4fbf2" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Type.html">Type</a> CVC3::ArithTheoremProducer::intType </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="arith__theorem__producer_8h_source.html#l00073">73</a> of file <a class="el" href="arith__theorem__producer_8h_source.html">arith_theorem_producer.h</a>.</p>

<p>References <a class="el" href="arith__theorem__producer_8h_source.html#l00033">d_theoryArith</a>, and <a class="el" href="theory__arith_8h_source.html#l00153">CVC3::TheoryArith::intType()</a>.</p>

</div>
</div>
<a class="anchor" id="a9dfab0a471e7a705264be04007ac61e5"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::darkShadow" ref="a9dfab0a471e7a705264be04007ac61e5" args="(const Expr &amp;lhs, const Expr &amp;rhs)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> CVC3::ArithTheoremProducer::darkShadow </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>lhs</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>rhs</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Construct the dark shadow expression representing lhs &lt;= rhs. </p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8h_source.html#l00075">75</a> of file <a class="el" href="arith__theorem__producer_8h_source.html">arith_theorem_producer.h</a>.</p>

<p>References <a class="el" href="arith__theorem__producer_8h_source.html#l00033">d_theoryArith</a>, and <a class="el" href="theory__arith_8h_source.html#l00159">CVC3::TheoryArith::darkShadow()</a>.</p>

</div>
</div>
<a class="anchor" id="a1684298bef4bf1efdccb7078f5a6c96f"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::grayShadow" ref="a1684298bef4bf1efdccb7078f5a6c96f" args="(const Expr &amp;v, const Expr &amp;e, const Rational &amp;c1, const Rational &amp;c2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> CVC3::ArithTheoremProducer::grayShadow </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>v</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>e</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;&#160;</td>
          <td class="paramname"><em>c1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;&#160;</td>
          <td class="paramname"><em>c2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Construct the gray shadow expression representing c1 &lt;= v - e &lt;= c2. </p>
<p>Alternatively, v = e + i for some i s.t. c1 &lt;= i &lt;= c2 </p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8h_source.html#l00081">81</a> of file <a class="el" href="arith__theorem__producer_8h_source.html">arith_theorem_producer.h</a>.</p>

<p>References <a class="el" href="arith__theorem__producer_8h_source.html#l00033">d_theoryArith</a>, and <a class="el" href="theory__arith_8h_source.html#l00165">CVC3::TheoryArith::grayShadow()</a>.</p>

</div>
</div>
<a class="anchor" id="a7568925b6c26f1c7ba882893f596d214"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::varToMult" ref="a7568925b6c26f1c7ba882893f596d214" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::varToMult </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>==&gt; e = 1 * e </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a8b8db5ad0a8d4968f429e98964db93c1">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00055">55</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="aaafdbe9dcc49728cc2bf16b43045c193"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::uMinusToMult" ref="aaafdbe9dcc49728cc2bf16b43045c193" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::uMinusToMult </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>==&gt; -(e) = (-1) * e </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#aa95faca93e7b4a1cf21667ff88d390e4">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00062">62</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="ab369e518fc2ee411503253fa0b1515d6"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::minusToPlus" ref="ab369e518fc2ee411503253fa0b1515d6" args="(const Expr &amp;x, const Expr &amp;y)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::minusToPlus </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>x</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>y</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>==&gt; x - y = x + (-1) * y </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a4319c532082c0f43794b34a2fb9df73f">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00075">75</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a4671174ae8ff61c52f16ddd53a3cdd27"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonUMinusToDivide" ref="a4671174ae8ff61c52f16ddd53a3cdd27" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonUMinusToDivide </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>-(e) ==&gt; e / (-1); takes 'e'</p>
<p>Canon Rule for unary minus: it just converts it to division by -1, the result is not yet canonical: </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a0053398d4a8fc49d9a2f8ede6949fc70">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00089">89</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a515e5d076ed135a6d943c2f5d5e34188"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonDivideConst" ref="a515e5d076ed135a6d943c2f5d5e34188" args="(const Expr &amp;c, const Expr &amp;d)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonDivideConst </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>d</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>(c) / d ==&gt; (c/d), takes c and d </p>
<p>Canon Rules for division by constant 'd' </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a79c759f2bb7dc41ed98c5962febef804">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00098">98</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a4d2d8da9de6d6faaa07758c01e3a9fe8"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonDivideMult" ref="a4d2d8da9de6d6faaa07758c01e3a9fe8" args="(const Expr &amp;cx, const Expr &amp;d)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonDivideMult </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>cx</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>d</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>(c * x) / d ==&gt; (c/d) * x, takes (c*x) and d </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#aee487a2a1e8ce4c34075568eb70ea874">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00117">117</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a4338b85f1dd0fca0cc58e6b7259a20b4"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonDividePlus" ref="a4338b85f1dd0fca0cc58e6b7259a20b4" args="(const Expr &amp;e, const Expr &amp;d)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonDividePlus </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_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>d</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>(+ c ...)/d ==&gt; push division to all the coefficients. </p>
<p>The result is not canonical, but canonizing the summands will make it canonical. Takes (+ c ...) and d </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a92846ee0cdab98d1759a13ff7e8d710d">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00145">145</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="theory__arith_8h_source.html#l00181">CVC3::isPlus()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00199">CVC3::plusExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="aa651eb7a4d20a77135efa2d3e984c355"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonDivideVar" ref="aa651eb7a4d20a77135efa2d3e984c355" args="(const Expr &amp;e1, const Expr &amp;e2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonDivideVar </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_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>d</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>x / d ==&gt; (1/d) * x, takes x and d </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a4ab0351b340ecb82d6ced530e4f30510">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00168">168</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a23faa6b30e4b01d7540ac1e22e6e06ce"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::greaterthan" ref="a23faa6b30e4b01d7540ac1e22e6e06ce" args="(const Expr &amp;, const Expr &amp;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ArithTheoremProducer::greaterthan </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>l</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>r</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02379">2379</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>, <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>, <a class="el" href="theory__arith_8h_source.html#l00046">CVC3::POW</a>, and <a class="el" href="kinds_8h_source.html#l00037">RATIONAL_EXPR</a>.</p>

</div>
</div>
<a class="anchor" id="af24b2bc3bc03bc320707362f2460dd0e"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::simplifiedMultExpr" ref="af24b2bc3bc03bc320707362f2460dd0e" args="(std::vector&lt; Expr &gt; &amp;mulKids)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::simplifiedMultExpr </td>
          <td>(</td>
          <td class="paramtype">std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>mulKids</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00203">203</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, and <a class="el" href="theory__arith_8h_source.html#l00207">CVC3::multExpr()</a>.</p>

</div>
</div>
<a class="anchor" id="a10ebfab26aa4ee1a147f08d8f6b94c45"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultConstMult" ref="a10ebfab26aa4ee1a147f08d8f6b94c45" args="(const Expr &amp;c, const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::canonMultConstMult </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>e</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00214">214</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a48b21552a97a3a75ae469fb48c155e51"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultConstPlus" ref="a48b21552a97a3a75ae469fb48c155e51" args="(const Expr &amp;e1, const Expr &amp;e2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::canonMultConstPlus </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00237">237</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01183">CVC3::Expr::getOp()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, and <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>.</p>

</div>
</div>
<a class="anchor" id="aebf0a0b539104e2190b53351efc6116b"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultPowPow" ref="aebf0a0b539104e2190b53351efc6116b" args="(const Expr &amp;e1, const Expr &amp;e2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::canonMultPowPow </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00256">256</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00046">CVC3::POW</a>, and <a class="el" href="theory__arith_8h_source.html#l00216">CVC3::powExpr()</a>.</p>

</div>
</div>
<a class="anchor" id="aabc24cdaf5d3a390f9880937bac17311"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultPowLeaf" ref="aabc24cdaf5d3a390f9880937bac17311" args="(const Expr &amp;e1, const Expr &amp;e2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::canonMultPowLeaf </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00296">296</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00046">CVC3::POW</a>, and <a class="el" href="theory__arith_8h_source.html#l00216">CVC3::powExpr()</a>.</p>

</div>
</div>
<a class="anchor" id="aae1bc41d54f8b148ce5cf9425ac688af"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultLeafLeaf" ref="aae1bc41d54f8b148ce5cf9425ac688af" args="(const Expr &amp;e1, const Expr &amp;e2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::canonMultLeafLeaf </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00335">335</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__arith_8h_source.html#l00216">CVC3::powExpr()</a>.</p>

</div>
</div>
<a class="anchor" id="a05b2608fd280890cb49bf4534a54e304"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultLeafOrPowMult" ref="a05b2608fd280890cb49bf4534a54e304" args="(const Expr &amp;e1, const Expr &amp;e2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::canonMultLeafOrPowMult </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00363">363</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>, <a class="el" href="theory__arith_8h_source.html#l00046">CVC3::POW</a>, and <a class="el" href="theory__arith_8h_source.html#l00216">CVC3::powExpr()</a>.</p>

</div>
</div>
<a class="anchor" id="a9548361051bb6febc314faa107d2c2f5"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonCombineLikeTerms" ref="a9548361051bb6febc314faa107d2c2f5" args="(const std::vector&lt; Expr &gt; &amp;sumExprs)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::canonCombineLikeTerms </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>sumExprs</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00434">434</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>, <a class="el" href="theory__arith_8h_source.html#l00207">CVC3::multExpr()</a>, and <a class="el" href="theory__arith_8h_source.html#l00199">CVC3::plusExpr()</a>.</p>

</div>
</div>
<a class="anchor" id="a0b344f367f01d240d997df7edfe1a12c"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultLeafOrPowOrMultPlus" ref="a0b344f367f01d240d997df7edfe1a12c" args="(const Expr &amp;e1, const Expr &amp;e2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::canonMultLeafOrPowOrMultPlus </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00532">532</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, and <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>.</p>

</div>
</div>
<a class="anchor" id="ac0363ff2f51ad1173ed1e46046b0654a"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultPlusPlus" ref="ac0363ff2f51ad1173ed1e46046b0654a" args="(const Expr &amp;e1, const Expr &amp;e2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::canonMultPlusPlus </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00551">551</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, and <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>.</p>

</div>
</div>
<a class="anchor" id="ab5166b206f49897a6a49ba0014c0b808"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultMtermMterm" ref="ab5166b206f49897a6a49ba0014c0b808" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonMultMtermMterm </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#aa38d5c06ebe0b672570641fe933cfedb">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00574">574</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="debug_8h_source.html#l00037">FatalAssert</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>, <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>, <a class="el" href="theory__arith_8h_source.html#l00046">CVC3::POW</a>, <a class="el" href="kinds_8h_source.html#l00037">RATIONAL_EXPR</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a41f7000c783a82e9a86cad823b06bff4"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonPlus" ref="a41f7000c783a82e9a86cad823b06bff4" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonPlus </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Canonize (PLUS t1 ... tn) </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a225fe511e6f654f313048e86c1550510">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00746">746</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, and <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>.</p>

</div>
</div>
<a class="anchor" id="a7b07ab799dbdf80254df3ec7fc35d36d"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonInvertConst" ref="a7b07ab799dbdf80254df3ec7fc35d36d" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonInvertConst </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00815">815</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="afb0c2a89f3373dcb26cd516714d0e49a"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonInvertLeaf" ref="afb0c2a89f3373dcb26cd516714d0e49a" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonInvertLeaf </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00831">831</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__arith_8h_source.html#l00216">CVC3::powExpr()</a>.</p>

</div>
</div>
<a class="anchor" id="a6a829cb16f960f9e7c2f25ea4906eaba"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonInvertPow" ref="a6a829cb16f960f9e7c2f25ea4906eaba" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonInvertPow </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00843">843</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theory__arith_8h_source.html#l00046">CVC3::POW</a>, <a class="el" href="theory__arith_8h_source.html#l00216">CVC3::powExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a70a381c22184655fb6d4f3b621bf216b"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonInvertMult" ref="a70a381c22184655fb6d4f3b621bf216b" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonInvertMult </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00862">862</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a7c7c860b193ec63a776dd13613aeca25"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonInvert" ref="a7c7c860b193ec63a776dd13613aeca25" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonInvert </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>==&gt; 1/e = e' where e' is canonical; takes e. </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a9a806d487932bbfa9a019d4d1eed1cea">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00885">885</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>, <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>, <a class="el" href="theory__arith_8h_source.html#l00046">CVC3::POW</a>, <a class="el" href="kinds_8h_source.html#l00037">RATIONAL_EXPR</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a77b99e94956d407e5cd20701e6771120"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::moveSumConstantRight" ref="a77b99e94956d407e5cd20701e6771120" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::moveSumConstantRight </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Transform e = (SUM r t1 ... tn) @ 0 into (SUM t1 ... tn) @ -r. The first sum term (r) must be a rational and t1 ... tn terms must be canonised.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">e</td><td>the expression to transform </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>rewrite theorem representing the transformation </dd></dl>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a18e5970bc4f670a63ca5775750f099ab">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02773">2773</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="theory__arith_8h_source.html#l00192">CVC3::isIneq()</a>, <a class="el" href="theory__arith_8h_source.html#l00181">CVC3::isPlus()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00199">CVC3::plusExpr()</a>, <a class="el" href="minisat__heap_8h_source.html#l00054">MiniSat::right()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a92540cc58f6203c2904fc2bd197190da"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonDivide" ref="a92540cc58f6203c2904fc2bd197190da" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonDivide </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>e[0]/e[1] ==&gt; e[0]*(e[1])^-1 </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a198b0b44145b8e33555ffd212f43b7b3">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00907">907</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theory__arith_8h_source.html#l00045">CVC3::DIVIDE</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a9bd77385dd0cbaac271aaab4b6c6ec09"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMult" ref="a9bd77385dd0cbaac271aaab4b6c6ec09" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonMult </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Multiply out the operands of the multiplication (each of them is expected to be canonised </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#aca910e6ff44389aac100b14b486c1942">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00781">781</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, and <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>.</p>

</div>
</div>
<a class="anchor" id="af6ba91fa47c4c9139c4d93fe3de0112f"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultTermConst" ref="af6ba91fa47c4c9139c4d93fe3de0112f" args="(const Expr &amp;c, const Expr &amp;t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonMultTermConst </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>t</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>t*c ==&gt; c*t, takes constant c and term t </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a11870b90dbfcc61d2b9a2820df7f6057">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00931">931</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a529fe89fea243d932879a1a74e9d36a7"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultTerm1Term2" ref="a529fe89fea243d932879a1a74e9d36a7" args="(const Expr &amp;t1, const Expr &amp;t2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonMultTerm1Term2 </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>t1</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>t2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>t1*t2 ==&gt; Error, takes t1 and t2 where both are non-constants </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a8b9abf99f0b013714eaaa49e81a618b9">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00945">945</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a55ec89d6cf310694e9f4b1013a795ce2"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultZero" ref="a55ec89d6cf310694e9f4b1013a795ce2" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonMultZero </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>0*t ==&gt; 0, takes 0*t </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#aae559b4d1558fecba5621c9ba27daa88">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00958">958</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="ae5a6e1b2c7b9239b7e53027c51a2dc7e"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultOne" ref="ae5a6e1b2c7b9239b7e53027c51a2dc7e" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonMultOne </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>1*t ==&gt; t, takes 1*t </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a87f9a39ecb1bec46adff5187bc899726">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00967">967</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="affbdf02016310d8cd6a9037fdd9eddc6"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultConstConst" ref="affbdf02016310d8cd6a9037fdd9eddc6" args="(const Expr &amp;c1, const Expr &amp;c2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonMultConstConst </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>c1</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>c2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>c1*c2 ==&gt; c', takes constant c1*c2 </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a71be38a9fa2d89e147ac4fde35c49e21">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00983">983</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="ad51f0d5c3232b6c247939a10e253f53d"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultConstTerm" ref="ad51f0d5c3232b6c247939a10e253f53d" args="(const Expr &amp;c1, const Expr &amp;c2, const Expr &amp;t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonMultConstTerm </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>c1</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>c2</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>t</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>c1*(c2*t) ==&gt; c'*t, takes c1 and c2 and t </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a96b1cb83272cf80c2de663de429e6a15">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01001">1001</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="ab0e0e14c71501a9f8208963c54010fe4"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultConstSum" ref="ab0e0e14c71501a9f8208963c54010fe4" args="(const Expr &amp;c1, const Expr &amp;sum)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonMultConstSum </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>c1</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>sum</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>c1*(+ c2 v1 ...) ==&gt; (+ c' c1v1 ...), takes c1 and the sum </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a978068749de266dbbba2000d9e0c3d39">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01021">1021</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>, <a class="el" href="theory__arith_8h_source.html#l00199">CVC3::plusExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

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

<p>c^n = c' (compute the constant power expression) </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a999f13a6fa4a6d8cbe97f02f93fc9ed3">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01043">1043</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="classCVC3_1_1Rational.html#a1366320f4de558bb964c67f8aecedb36">CVC3::Rational::isInteger()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="rational_8h_source.html#l00159">CVC3::pow()</a>, <a class="el" href="theory__arith_8h_source.html#l00046">CVC3::POW</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a19964269c705bafbe69cb1052fe7bec8"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonFlattenSum" ref="a19964269c705bafbe69cb1052fe7bec8" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonFlattenSum </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>flattens the input. accepts a PLUS expr </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#af0f4877d7326a53faec76bef54a3d400">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01070">1070</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>, <a class="el" href="theory__arith_8h_source.html#l00199">CVC3::plusExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="ac9ee451992ab00f200ee8aee26e99e0c"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonComboLikeTerms" ref="ac9ee451992ab00f200ee8aee26e99e0c" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonComboLikeTerms </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>combine like terms. accepts a flattened PLUS expr </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a1da0c47c02ff2392ca3e0b6493ac4823">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01097">1097</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr__map_8h_source.html#l00190">CVC3::ExprMap&lt; Data &gt;::begin()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="expr__map_8h_source.html#l00173">CVC3::ExprMap&lt; Data &gt;::count()</a>, <a class="el" href="expr__map_8h_source.html#l00191">CVC3::ExprMap&lt; Data &gt;::end()</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="theory__arith_8h_source.html#l00181">CVC3::isPlus()</a>, and <a class="el" href="theory__arith_8h_source.html#l00199">CVC3::plusExpr()</a>.</p>

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

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#af8f4f59bd12fdd8f93d1fd49ae41279e">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01155">1155</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="kinds_8h_source.html#l00068">OR</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

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

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#af17a5dbf4ebbe9d7e46d63ad1284ddaf">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01178">1178</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="theory__arith_8h_source.html#l00185">CVC3::isPow()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

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

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a0e6f19ba5333f667efa3a0e3d8787775">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01205">1205</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="theory__arith_8h_source.html#l00178">CVC3::isIntegerConst()</a>, <a class="el" href="theory__arith_8h_source.html#l00185">CVC3::isPow()</a>, <a class="el" href="expr_8h_source.html#l00951">CVC3::Expr::orExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a21456f49d3a6711f21e3c13fb3c0d34a"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::elimPowerConst" ref="a21456f49d3a6711f21e3c13fb3c0d34a" args="(const Expr &amp;expr, const Rational &amp;root)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::elimPowerConst </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>expr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;&#160;</td>
          <td class="paramname"><em>root</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a0e240fba4eac33522b24be6581d98346">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01230">1230</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="theory__arith_8h_source.html#l00178">CVC3::isIntegerConst()</a>, <a class="el" href="theory__arith_8h_source.html#l00185">CVC3::isPow()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="expr_8h_source.html#l00951">CVC3::Expr::orExpr()</a>, <a class="el" href="rational_8h_source.html#l00159">CVC3::pow()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

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

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a80f948f405f0b1a88283c97b70aab43e">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01254">1254</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="theory__arith_8h_source.html#l00178">CVC3::isIntegerConst()</a>, <a class="el" href="theory__arith_8h_source.html#l00185">CVC3::isPow()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="aa3838fe1c003a9f47f3ec8344d192dea"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::intEqIrrational" ref="aa3838fe1c003a9f47f3ec8344d192dea" args="(const Expr &amp;expr, const Theorem &amp;isInt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::intEqIrrational </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>expr</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>isInt</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#aff57d78a7d743fffd21de7d4415df3e4">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01273">1273</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="theory__arith_8h_source.html#l00178">CVC3::isIntegerConst()</a>, <a class="el" href="theory__arith_8h_source.html#l00194">CVC3::isIntPred()</a>, <a class="el" href="theory__arith_8h_source.html#l00185">CVC3::isPow()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="rational_8h_source.html#l00172">CVC3::ratRoot()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a621015d4894231ecd9ab465494e9c9c8"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::constPredicate" ref="a621015d4894231ecd9ab465494e9c9c8" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::constPredicate </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>e0 @ e1 &lt;==&gt; true | false, where @ is {=,&lt;,&lt;=,&gt;,&gt;=} </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">e</td><td>takes e is (e0@e1) where e0 and e1 are constants </td></tr>
  </table>
  </dd>
</dl>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a8dd6bb6fed9a4745469b0cad5ed4a139">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01300">1300</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="kinds_8h_source.html#l00061">EQ</a>, <a class="el" href="theory__arith_8h_source.html#l00052">CVC3::GE</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00051">CVC3::GT</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00050">CVC3::LE</a>, <a class="el" href="theory__arith_8h_source.html#l00049">CVC3::LT</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a3eb1309c184247837239c098d9c9100a"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::rightMinusLeft" ref="a3eb1309c184247837239c098d9c9100a" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::rightMinusLeft </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>e[0] @ e[1] &lt;==&gt; 0 @ e[1] - e[0], where @ is {=,&lt;,&lt;=,&gt;,&gt;=} </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#acde77bf4aa73ff6b9a079b372ed7cc51">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01340">1340</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="kinds_8h_source.html#l00061">EQ</a>, <a class="el" href="theory__arith_8h_source.html#l00052">CVC3::GE</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01183">CVC3::Expr::getOp()</a>, <a class="el" href="theory__arith_8h_source.html#l00051">CVC3::GT</a>, <a class="el" href="theory__arith_8h_source.html#l00050">CVC3::LE</a>, and <a class="el" href="theory__arith_8h_source.html#l00049">CVC3::LT</a>.</p>

</div>
</div>
<a class="anchor" id="a8196042ba713a7c782ee4b5eb4c69ccc"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::leftMinusRight" ref="a8196042ba713a7c782ee4b5eb4c69ccc" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::leftMinusRight </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>e[0] @ e[1] &lt;==&gt; e[0] - e[1] @ 0, where @ is {=,&lt;,&lt;=,&gt;,&gt;=} </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a0201544f06baaba23df9946f5da47978">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01357">1357</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="kinds_8h_source.html#l00061">EQ</a>, <a class="el" href="theory__arith_8h_source.html#l00052">CVC3::GE</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01183">CVC3::Expr::getOp()</a>, <a class="el" href="theory__arith_8h_source.html#l00051">CVC3::GT</a>, <a class="el" href="theory__arith_8h_source.html#l00050">CVC3::LE</a>, and <a class="el" href="theory__arith_8h_source.html#l00049">CVC3::LT</a>.</p>

</div>
</div>
<a class="anchor" id="a3c3041eb3b0144e21d72ffe6999953e2"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::plusPredicate" ref="a3c3041eb3b0144e21d72ffe6999953e2" args="(const Expr &amp;x, const Expr &amp;y, const Expr &amp;z, int kind)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::plusPredicate </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>x</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>y</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>z</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>kind</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>x @ y &lt;==&gt; x + z @ y + z, where @ is {=,&lt;,&lt;=,&gt;,&gt;=} (given as 'kind') </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a0fa920a2a5cfa4419dbde10b1d913687">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01376">1376</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="kinds_8h_source.html#l00061">EQ</a>, <a class="el" href="theory__arith_8h_source.html#l00052">CVC3::GE</a>, <a class="el" href="theory__arith_8h_source.html#l00051">CVC3::GT</a>, <a class="el" href="theory__arith_8h_source.html#l00050">CVC3::LE</a>, <a class="el" href="minisat__heap_8h_source.html#l00053">MiniSat::left()</a>, <a class="el" href="theory__arith_8h_source.html#l00049">CVC3::LT</a>, and <a class="el" href="minisat__heap_8h_source.html#l00054">MiniSat::right()</a>.</p>

</div>
</div>
<a class="anchor" id="ae66ddbc1457e3c032ea9059625059992"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::multEqn" ref="ae66ddbc1457e3c032ea9059625059992" args="(const Expr &amp;x, const Expr &amp;y, const Expr &amp;z)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::multEqn </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>x</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>y</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>z</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>x = y &lt;==&gt; x * z = y * z, where z is a non-zero constant </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#ad62d795eb10e67c655c608774881bde3">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01395">1395</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, and <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>.</p>

</div>
</div>
<a class="anchor" id="aa371616db9ac1a4a9c7a4b1ce0f2a05c"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::divideEqnNonConst" ref="aa371616db9ac1a4a9c7a4b1ce0f2a05c" args="(const Expr &amp;x, const Expr &amp;y, const Expr &amp;z)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::divideEqnNonConst </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>x</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>y</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>z</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a419dd84177b5ca1fda7a23f3052b6132">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01408">1408</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, and <a class="el" href="expr_8h_source.html#l00955">CVC3::orExpr()</a>.</p>

</div>
</div>
<a class="anchor" id="a3d245f36a2e42684ec2fd9356d89111f"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::multIneqn" ref="a3d245f36a2e42684ec2fd9356d89111f" args="(const Expr &amp;e, const Expr &amp;z)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::multIneqn </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_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>z</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Multiplying inequation by a non-zero constant. </p>
<p>z&gt;0 ==&gt; e[0] @ e[1] &lt;==&gt; e[0]*z @ e[1]*z</p>
<p>z&lt;0 ==&gt; e[0] @ e[1] &lt;==&gt; e[1]*z @ e[0]*z</p>
<p>for @ in {&lt;,&lt;=,&gt;,&gt;=}: </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a70e83cfbc207a5d15fedd4adde7e9e76">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01420">1420</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__arith_8h_source.html#l00052">CVC3::GE</a>, <a class="el" href="theory__arith_8h_source.html#l00227">CVC3::geExpr()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01183">CVC3::Expr::getOp()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00051">CVC3::GT</a>, <a class="el" href="theory__arith_8h_source.html#l00225">CVC3::gtExpr()</a>, <a class="el" href="theory__arith_8h_source.html#l00192">CVC3::isIneq()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00050">CVC3::LE</a>, <a class="el" href="theory__arith_8h_source.html#l00223">CVC3::leExpr()</a>, <a class="el" href="theory__arith_8h_source.html#l00049">CVC3::LT</a>, <a class="el" href="theory__arith_8h_source.html#l00221">CVC3::ltExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a517d45514aefcab0dc6aabb400f149fd"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::eqToIneq" ref="a517d45514aefcab0dc6aabb400f149fd" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::eqToIneq </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>x = y ==&gt; x &lt;= y and x &gt;= y </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a646e312e12d5d23dca0c4db39d2c9fb9">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02818">2818</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l00945">CVC3::andExpr()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__arith_8h_source.html#l00227">CVC3::geExpr()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="theory__arith_8h_source.html#l00223">CVC3::leExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="af069fc1b320c0455ec7cde192668884b"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::flipInequality" ref="af069fc1b320c0455ec7cde192668884b" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::flipInequality </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>"op1 GE|GT op2" &lt;==&gt; op2 LE|LT op1 </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#aff4a01da77770b0b60089444c83c9cef">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01498">1498</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__arith_8h_source.html#l00189">CVC3::isGE()</a>, <a class="el" href="theory__arith_8h_source.html#l00188">CVC3::isGT()</a>, <a class="el" href="theory__arith_8h_source.html#l00050">CVC3::LE</a>, <a class="el" href="theory__arith_8h_source.html#l00049">CVC3::LT</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a07368f8a2e12b5c189645a99bc934102"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::negatedInequality" ref="a07368f8a2e12b5c189645a99bc934102" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::negatedInequality </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Propagating negation over &lt;,&lt;=,&gt;,&gt;=. </p>
<p>NOT (op1 &lt; op2) &lt;==&gt; (op1 &gt;= op2)</p>
<p>NOT (op1 &lt;= op2) &lt;==&gt; (op1 &gt; op2)</p>
<p>NOT (op1 &gt; op2) &lt;==&gt; (op1 &lt;= op2)</p>
<p>NOT (op1 &gt;= op2) &lt;==&gt; (op1 &lt; op2) </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#aee47bda46999143ea29d7d4ff0be89d4">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01518">1518</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__arith_8h_source.html#l00052">CVC3::GE</a>, <a class="el" href="theory__arith_8h_source.html#l00051">CVC3::GT</a>, <a class="el" href="theory__arith_8h_source.html#l00188">CVC3::isGT()</a>, <a class="el" href="theory__arith_8h_source.html#l00192">CVC3::isIneq()</a>, <a class="el" href="theory__arith_8h_source.html#l00187">CVC3::isLE()</a>, <a class="el" href="theory__arith_8h_source.html#l00186">CVC3::isLT()</a>, <a class="el" href="expr_8h_source.html#l00420">CVC3::Expr::isNot()</a>, <a class="el" href="theory__arith_8h_source.html#l00050">CVC3::LE</a>, <a class="el" href="theory__arith_8h_source.html#l00049">CVC3::LT</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a8092c96a87d952fc1e572bb9237ff994"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::realShadow" ref="a8092c96a87d952fc1e572bb9237ff994" args="(const Theorem &amp;alphaLTt, const Theorem &amp;tLTbeta)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::realShadow </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>alphaLTt</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>tLTbeta</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Real shadow: a &lt;(=) t, t &lt;(=) b ==&gt; a &lt;(=) b. </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a203c7079289189cd4bf4f604c10645e5">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01547">1547</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theory__arith_8h_source.html#l00187">CVC3::isLE()</a>, <a class="el" href="theory__arith_8h_source.html#l00186">CVC3::isLT()</a>, <a class="el" href="theory__arith_8h_source.html#l00049">CVC3::LT</a>, and <a class="el" href="theorem_8h_source.html#l00404">CVC3::Theorem::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a6e14251c516153e14539a34598daca04"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::realShadowEq" ref="a6e14251c516153e14539a34598daca04" args="(const Theorem &amp;alphaLEt, const Theorem &amp;tLEalpha)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::realShadowEq </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>alphaLEt</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>tLEalpha</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>alpha &lt;= t &lt;= alpha ==&gt; t = alpha </p>
<p>takes two ineqs "|- alpha LE t" and "|- t LE alpha" and returns "|- t = alpha" </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a08dfccc28787af2a4141ed0f5a66bc9d">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01582">1582</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theory__arith_8h_source.html#l00187">CVC3::isLE()</a>, and <a class="el" href="theorem_8h_source.html#l00404">CVC3::Theorem::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a7f4c82e18e7a3ed3b5b22a6ce7d7cf27"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::finiteInterval" ref="a7f4c82e18e7a3ed3b5b22a6ce7d7cf27" args="(const Theorem &amp;aLEt, const Theorem &amp;tLEac, const Theorem &amp;isInta, const Theorem &amp;isIntt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::finiteInterval </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>aLEt</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>tLEac</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>isInta</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>isIntt</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Finite interval for integers: a &lt;= t &lt;= a + c ==&gt; G(t, a, 0, c) </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a5d419e48b93820624e356ba33efef27c">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01614">1614</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theory__arith_8h_source.html#l00194">CVC3::isIntPred()</a>, <a class="el" href="theory__arith_8h_source.html#l00187">CVC3::isLE()</a>, <a class="el" href="theory__arith_8h_source.html#l00181">CVC3::isPlus()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="aef6fd1261bea182d4554d0423803b05e"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::darkGrayShadow2ab" ref="aef6fd1261bea182d4554d0423803b05e" args="(const Theorem &amp;betaLEbx, const Theorem &amp;axLEalpha, const Theorem &amp;isIntAlpha, const Theorem &amp;isIntBeta, const Theorem &amp;isIntx)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::darkGrayShadow2ab </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>betaLEbx</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>axLEalpha</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>isIntAlpha</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>isIntBeta</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>isIntx</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Dark &amp; Gray shadows when a &lt;= b. </p>
<p>takes two integer ineqs (i.e. all vars are ints) "|- beta &lt;= b.x" and "|- a.x &lt;= alpha" and checks if "1 &lt;= a &lt;= b" and returns (D or G) and (!D or !G), where D = Dark_Shadow(ab-1, b.alpha - a.beta), G = Gray_Shadow(a.x, alpha, -(a-1), 0). </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a37835b10dd0f73b5c4cf36c1eebf0d1f">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01678">1678</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00194">CVC3::isIntPred()</a>, <a class="el" href="theory__arith_8h_source.html#l00187">CVC3::isLE()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="theory__arith_8h_source.html#l00205">CVC3::minusExpr()</a>, <a class="el" href="theory__arith_8h_source.html#l00207">CVC3::multExpr()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem_8h_source.html#l00404">CVC3::Theorem::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="aaf64935bb620ab79fd7383f1913bd8b8"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::darkGrayShadow2ba" ref="aaf64935bb620ab79fd7383f1913bd8b8" args="(const Theorem &amp;betaLEbx, const Theorem &amp;axLEalpha, const Theorem &amp;isIntAlpha, const Theorem &amp;isIntBeta, const Theorem &amp;isIntx)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::darkGrayShadow2ba </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>betaLEbx</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>axLEalpha</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>isIntAlpha</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>isIntBeta</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>isIntx</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Dark &amp; Gray shadows when b &lt;= a. </p>
<p>takes two integer ineqs (i.e. all vars are ints) "|- beta &lt;= b.x" and "|- a.x &lt;= alpha" and checks if "1 &lt;= b &lt; a" and returns (D or G) and (!D or !G), where D = Dark_Shadow(ab-1, b.alpha - a.beta), G = Gray_Shadow(b.x, beta, 0, b-1). </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#ab17282c2e4de9965586f4821f17bf60d">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01769">1769</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00194">CVC3::isIntPred()</a>, <a class="el" href="theory__arith_8h_source.html#l00187">CVC3::isLE()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="theory__arith_8h_source.html#l00205">CVC3::minusExpr()</a>, <a class="el" href="theory__arith_8h_source.html#l00207">CVC3::multExpr()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem_8h_source.html#l00404">CVC3::Theorem::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="aafadfc6ae6013ab18a7b4ee570cce16a"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::expandDarkShadow" ref="aafadfc6ae6013ab18a7b4ee570cce16a" args="(const Theorem &amp;darkShadow)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::expandDarkShadow </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>darkShadow</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>takes a dark shadow and expands it into an inequality. </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a94ffe313b29aa63c32d5c3facb3bc917">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01854">1854</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theory__arith_8h_source.html#l00190">CVC3::isDarkShadow()</a>, <a class="el" href="theory__arith_8h_source.html#l00223">CVC3::leExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="ac8a2c0a97ace8f17153ad784c87ba5a2"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::expandGrayShadow0" ref="ac8a2c0a97ace8f17153ad784c87ba5a2" args="(const Theorem &amp;grayShadow)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::expandGrayShadow0 </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>g</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>GRAY_SHADOW(v, e, c, c) ==&gt; v=e+c. </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a32df170ed2ec7fb3d1c7541e6f3dda77">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01869">1869</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theory__arith_8h_source.html#l00191">CVC3::isGrayShadow()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a14af8b5ecbfaaee4600453bd9d681838"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::splitGrayShadow" ref="a14af8b5ecbfaaee4600453bd9d681838" args="(const Theorem &amp;grayShadow)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::splitGrayShadow </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>g</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>G(x, e, c1, c2) ==&gt; (G1 or G2) and (!G1 or !G2) </p>
<p>Here G1 = G(x,e,c1,c), G2 = G(x,e,c+1,c2), and c = floor((c1+c2)/2). </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a4b6ef5b29b05bada6ea2df72873abea6">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01894">1894</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00191">CVC3::isGrayShadow()</a>, <a class="el" href="classCVC3_1_1Rational.html#a1366320f4de558bb964c67f8aecedb36">CVC3::Rational::isInteger()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="acaa835c8569f6667fa26bfedb0502cf1"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::splitGrayShadowSmall" ref="acaa835c8569f6667fa26bfedb0502cf1" args="(const Theorem &amp;grayShadow)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::splitGrayShadowSmall </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>grayShadow</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#aa33975feef2a9cdd513e5d641f14dc7a">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03190">3190</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p>

</div>
</div>
<a class="anchor" id="ac6714d4922aea3413f9aeed742bc645e"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::expandGrayShadow" ref="ac6714d4922aea3413f9aeed742bc645e" args="(const Theorem &amp;grayShadow)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::expandGrayShadow </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>g</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>G(x, e, c1, c2) ==&gt; e+c1 &lt;= x AND x &lt;= e+c2. </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#af936b764ef75b0a6f63043d01a819044">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01931">1931</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00191">CVC3::isGrayShadow()</a>, <a class="el" href="classCVC3_1_1Rational.html#a1366320f4de558bb964c67f8aecedb36">CVC3::Rational::isInteger()</a>, <a class="el" href="theory__arith_8h_source.html#l00223">CVC3::leExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="af091e13254c983370c46707a03b1ad30"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::expandGrayShadowConst" ref="af091e13254c983370c46707a03b1ad30" args="(const Theorem &amp;grayShadow)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::expandGrayShadowConst </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>g</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Optimized rules: GRAY_SHADOW(a*x, c, c1, c2) ==&gt; [expansion]. </p>
<p>Implements three versions of the rule:</p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[\frac{\mathrm{GRAY\_SHADOW}(ax,c,c1,c2)} {ax = c + i - \mathrm{sign}(i)\cdot j(c,i,a) \lor GRAY\_SHADOW(ax, c, i-\mathrm{sign}(i)\cdot (a+j(c,i,a)))}\]" src="form_310.png"/>
</p>
<p>where the conclusion may become FALSE or without the GRAY_SHADOW part, depending on the values of a, c and i. </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a3083a3c5893123f2a3ec54ce31718e09">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01962">1962</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="cvc__util_8h_source.html#l00053">CVC3::abs()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00055">CVC3::GRAY_SHADOW</a>, <a class="el" href="theory__arith_8h_source.html#l00191">CVC3::isGrayShadow()</a>, <a class="el" href="classCVC3_1_1Rational.html#a1366320f4de558bb964c67f8aecedb36">CVC3::Rational::isInteger()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, <a class="el" href="expr_8h_source.html#l00951">CVC3::Expr::orExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="af0070c5da95d33029e54b1d669d5b1f0"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::grayShadowConst" ref="af0070c5da95d33029e54b1d669d5b1f0" args="(const Theorem &amp;g)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::grayShadowConst </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>g</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>|- G(ax, c, c1, c2) ==&gt; |- G(x, 0, ceil((c1+c)/a), floor((c2+c)/a)) </p>
<p>In the case the new c1 &gt; c2, return |- FALSE </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a597adbe8879c33bffefae537a5bca7c0">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02027">2027</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00191">CVC3::isGrayShadow()</a>, <a class="el" href="classCVC3_1_1Rational.html#a1366320f4de558bb964c67f8aecedb36">CVC3::Rational::isInteger()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a529e92e59e9009e3330a8592c9cb56fe"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::constRHSGrayShadow" ref="a529e92e59e9009e3330a8592c9cb56fe" args="(const Rational &amp;c, const Rational &amp;b, const Rational &amp;a)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Rational.html">Rational</a> ArithTheoremProducer::constRHSGrayShadow </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</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_1Rational.html">Rational</a> &amp;&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;&#160;</td>
          <td class="paramname"><em>a</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements j(c,b,a) </p>
<p>accepts 3 integers a,b,c and returns (b &gt; 0)? (c+b) mod a : (a - (c+b)) mod a </p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02067">2067</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, and <a class="el" href="classCVC3_1_1Rational.html#a1366320f4de558bb964c67f8aecedb36">CVC3::Rational::isInteger()</a>.</p>

</div>
</div>
<a class="anchor" id="ac5d4056f00cee80d73b5b46f63bd5b3d"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::lessThanToLE" ref="ac5d4056f00cee80d73b5b46f63bd5b3d" args="(const Theorem &amp;less, const Theorem &amp;isIntLHS, const Theorem &amp;isIntRHS, bool changeRight)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::lessThanToLE </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>less</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>isIntLHS</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>isIntRHS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>changeRight</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Takes a <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a>(\alpha &lt; \beta) and returns <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a>(\alpha &lt; \beta &lt;==&gt; \alpha &lt;= \beta -1) where \alpha and \beta are integer expressions </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a7a0dad5cb9c2815421457dabc25bc537">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02085">2085</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theory__arith_8h_source.html#l00194">CVC3::isIntPred()</a>, <a class="el" href="theory__arith_8h_source.html#l00186">CVC3::isLT()</a>, <a class="el" href="theory__arith_8h_source.html#l00223">CVC3::leExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="af55c5d0a2626f955b0843381ca8b50f3"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::lessThanToLERewrite" ref="af55c5d0a2626f955b0843381ca8b50f3" args="(const Expr &amp;ineq, const Theorem &amp;isIntLHS, const Theorem &amp;isIntRHS, bool changeRight)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::lessThanToLERewrite </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>ineq</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>isIntLHS</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>isIntRHS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>changeRight</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Takes a <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a>(\alpha &lt; \beta) and returns <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a>(\alpha &lt; \beta &lt;==&gt; \alpha &lt;= \beta -1) where \alpha and \beta are integer expressions </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#af5cfb693ee5ee6f3463e83f01196b31e">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03152">3152</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theory__arith_8h_source.html#l00194">CVC3::isIntPred()</a>, <a class="el" href="theory__arith_8h_source.html#l00186">CVC3::isLT()</a>, <a class="el" href="theory__arith_8h_source.html#l00223">CVC3::leExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a92936e3de514c430659486b00e84b0a9"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::intVarEqnConst" ref="a92936e3de514c430659486b00e84b0a9" args="(const Expr &amp;eqn, const Theorem &amp;isIntx)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::intVarEqnConst </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>eqn</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>isIntx</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">eqn</td><td>is an equation 0 = a.x or 0 = c + a.x </td></tr>
    <tr><td class="paramname">isIntx</td><td>is a proof of IS_INTEGER(x)</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the theorem 0 = c + a.x &lt;==&gt; x=-c/a if -c/a is int else return the theorem 0 = c + a.x &lt;==&gt; false.</dd></dl>
<p>It also handles the special case of 0 = a.x &lt;==&gt; x = 0 </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a62d76b2ccca8af5e1f28c5104ea2e313">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02138">2138</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="classCVC3_1_1Rational.html#a1366320f4de558bb964c67f8aecedb36">CVC3::Rational::isInteger()</a>, <a class="el" href="theory__arith_8h_source.html#l00194">CVC3::isIntPred()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="theory__arith_8h_source.html#l00181">CVC3::isPlus()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, <a class="el" href="minisat__heap_8h_source.html#l00053">MiniSat::left()</a>, <a class="el" href="minisat__heap_8h_source.html#l00054">MiniSat::right()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a85e9c7d93d6d1433fea606b0c3878e25"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::IsIntegerElim" ref="a85e9c7d93d6d1433fea606b0c3878e25" args="(const Theorem &amp;isIntx)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::IsIntegerElim </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>isIntx</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>IS_INTEGER(x) |= EXISTS (y : INT) y = x where x is not already known to be an integer. </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a8c3d5fdc2b0c9c11291d41c3c20067e4">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02505">2505</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="kinds_8h_source.html#l00085">EXISTS</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, and <a class="el" href="theory__arith_8h_source.html#l00053">CVC3::IS_INTEGER</a>.</p>

</div>
</div>
<a class="anchor" id="a49d6559f50d51cde3c2e723c2a254cff"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::eqElimIntRule" ref="a49d6559f50d51cde3c2e723c2a254cff" args="(const Theorem &amp;eqn, const Theorem &amp;isIntx, const std::vector&lt; Theorem &gt; &amp;isIntVars)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::eqElimIntRule </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>eqn</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>isIntx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>isIntVars</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Equality elimination rule for integers: </p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[\frac{\mathsf{int}(a\cdot x)\quad \mathsf{int}(C+\sum_{i=1}^{n}a_{i}\cdot x_{i})} {a\cdot x=C+\sum_{i=1}^{n}a_{i}\cdot x_{i} \quad\equiv\quad x=t_{2}\wedge 0=t_{3}} \]" src="form_311.png"/>
</p>
<p> See the detailed description for explanations. </p>
<p>This rule implements a step in the iterative algorithm for eliminating integer equality. The terms in the rule are defined as follows:</p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[\begin{array}{rcl} t_{2} &amp; = &amp; -(C\ \mathbf{mod}\ m+\sum_{i=1}^{n}(a_{i}\ \mathbf{mod}\ m) \cdot x_{i}-m\cdot\sigma(t))\\ &amp; &amp; \\ t_{3} &amp; = &amp; \mathbf{f}(C,m)+\sum_{i=1}^{n}\mathbf{f}(a_{i},m)\cdot x_{i} -a\cdot\sigma(t)\\ &amp; &amp; \\ t &amp; = &amp; (C\ \mathbf{mod}\ m+\sum_{i=1}^{n}(a_{i}\ \mathbf{mod}\ m) \cdot x_{i}+x)/m\\ &amp; &amp; \\ m &amp; = &amp; a+1\\ &amp; &amp; \\ \mathbf{f}(i,m) &amp; = &amp; \left\lfloor \frac{i}{m} +\frac{1}{2}\right\rfloor +i\ \mathbf{mod}\ m\\ &amp; &amp; \\ i\ \mathbf{mod}\ m &amp; = &amp; i-m\left\lfloor\frac{i}{m} +\frac{1}{2}\right\rfloor \end{array} \]" src="form_312.png"/>
</p>
<p>All the variables and coefficients are integer, and a &gt;= 2.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">eqn</td><td>is the equation <p class="formulaDsp">
<img class="formulaDsp" alt="\[a\cdot x = C + \sum_{i=1}^n a_i\cdot x_i.\]" src="form_313.png"/>
</p>
</td></tr>
  </table>
  </dd>
</dl>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[\frac{\Gamma\models ax=t\quad \Gamma'\models\mathsf{int}(x)\quad \{\Gamma_i\models\mathsf{int}(x_i) | x_i\mbox{ is var in }t\}} {\Gamma,\Gamma',\bigcup_i\Gamma_i\models \exists (y:\mathrm{int}).\ x=t_2(y)\wedge 0=t_3(y)} \]" src="form_314.png"/>
</p>
<p> See detailed docs for more information.</p>
<p>This rule implements a step in the iterative algorithm for eliminating integer equality. The terms in the rule are defined as follows:</p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[\begin{array}{rcl} t &amp; = &amp; C+\sum_{i=1}^na_{i}\cdot x_{i}\\ t_{2}(y) &amp; = &amp; -(C\ \mathbf{mod}\ m+\sum_{i=1}^{n}(a_{i}\ \mathbf{mod}\ m) \cdot x_{i}-m\cdot y)\\ &amp; &amp; \\ t_{3}(y) &amp; = &amp; \mathbf{f}(C,m)+\sum_{i=1}^{n}\mathbf{f}(a_{i},m)\cdot x_{i} -a\cdot y\\ &amp; &amp; \\ m &amp; = &amp; a+1\\ &amp; &amp; \\ \mathbf{f}(i,m) &amp; = &amp; \left\lfloor \frac{i}{m} +\frac{1}{2}\right\rfloor +i\ \mathbf{mod}\ m\\ &amp; &amp; \\ i\ \mathbf{mod}\ m &amp; = &amp; i-m\left\lfloor\frac{i}{m} +\frac{1}{2}\right\rfloor \end{array} \]" src="form_315.png"/>
</p>
<p>All the variables and coefficients are integer, and a &gt;= 2.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">eqn</td><td>is the equation ax=t: <p class="formulaDsp">
<img class="formulaDsp" alt="\[a\cdot x = C + \sum_{i=1}^n a_i\cdot x_i.\]" src="form_313.png"/>
</p>
</td></tr>
    <tr><td class="paramname">isIntx</td><td>is a <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> deriving the integrality of the LHS variable: IS_INTEGER(x)</td></tr>
    <tr><td class="paramname">isIntVars</td><td>is a vector of Theorems deriving the integrality of all variables on the RHS </td></tr>
  </table>
  </dd>
</dl>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a08b14a730bbc6b4ca28bb808e6f6dc85">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02531">2531</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="kinds_8h_source.html#l00085">EXISTS</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00240">CVC3::Theorem::getLHS()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__arith_8h_source.html#l00184">CVC3::isDivide()</a>, <a class="el" href="theory__arith_8h_source.html#l00174">CVC3::isInt()</a>, <a class="el" href="classCVC3_1_1Rational.html#a1366320f4de558bb964c67f8aecedb36">CVC3::Rational::isInteger()</a>, <a class="el" href="theory__arith_8h_source.html#l00194">CVC3::isIntPred()</a>, <a class="el" href="theory__arith_8h_source.html#l00181">CVC3::isPlus()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, <a class="el" href="theorem_8cpp_source.html#l00224">CVC3::Theorem::isRewrite()</a>, <a class="el" href="expr_8h_source.html#l01427">CVC3::Expr::setType()</a>, <a class="el" href="classCVC3_1_1Rational.html#a195c125a76cb9a6c5731369e244a2de3">CVC3::Rational::toString()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, <a class="el" href="theorem_8h_source.html#l00404">CVC3::Theorem::toString()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p>

</div>
</div>
<a class="anchor" id="af1baf70d6108dc52cbb9704e2a8889ec"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::isIntConst" ref="af1baf70d6108dc52cbb9704e2a8889ec" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::isIntConst </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>return e &lt;=&gt; TRUE/FALSE for e == IS_INTEGER(c), where c is a constant </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">e</td><td>is a predicate IS_INTEGER(c) where c is a rational constant </td></tr>
  </table>
  </dd>
</dl>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a5e9bccd77000156ab34b0b42d3e3bb18">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02623">2623</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00174">CVC3::isInt()</a>, <a class="el" href="classCVC3_1_1Rational.html#a1366320f4de558bb964c67f8aecedb36">CVC3::Rational::isInteger()</a>, <a class="el" href="theory__arith_8h_source.html#l00194">CVC3::isIntPred()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

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

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#ac05fd3606540a5222ebaa68f9091345b">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02639">2639</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>, <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>, and <a class="el" href="kinds_8h_source.html#l00037">RATIONAL_EXPR</a>.</p>

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

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a5052c783af25243987424ef66e2bf5fc">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02668">2668</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>, <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>, and <a class="el" href="kinds_8h_source.html#l00037">RATIONAL_EXPR</a>.</p>

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

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a893c86f0404789d229540f7a0a00df89">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02697">2697</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>, <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>, and <a class="el" href="kinds_8h_source.html#l00037">RATIONAL_EXPR</a>.</p>

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

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#aa9018c4d16d3d0a2d8f1614f8e7cae23">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02726">2726</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>, <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>, and <a class="el" href="kinds_8h_source.html#l00037">RATIONAL_EXPR</a>.</p>

</div>
</div>
<a class="anchor" id="a3d6e1d8668360c20b5a6a47e3fcc4612"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::diseqToIneq" ref="a3d6e1d8668360c20b5a6a47e3fcc4612" args="(const Theorem &amp;diseq)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::diseqToIneq </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>diseq</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>x /= y ==&gt; (x &lt; y) OR (x &gt; y) </p>
<p>Used in concrete model generation </p>

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#af180898d9f1d255ef3a2f528ecd8ac65">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02754">2754</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theory__arith_8h_source.html#l00225">CVC3::gtExpr()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="expr_8h_source.html#l00420">CVC3::Expr::isNot()</a>, <a class="el" href="theory__arith_8h_source.html#l00221">CVC3::ltExpr()</a>, <a class="el" href="expr_8h_source.html#l00955">CVC3::orExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a753c339b31e38915ae6f06e0fe6e48da"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::dummyTheorem" ref="a753c339b31e38915ae6f06e0fe6e48da" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a24ea340651805e648d7180debad17225">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02839">2839</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

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

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a1ebae10d65430ab1a3a14c866af93de6">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02844">2844</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="ad4513630a9eec6c841b527222a79ea1d"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::clashingBounds" ref="ad4513630a9eec6c841b527222a79ea1d" args="(const Theorem &amp;lowerBound, const Theorem &amp;upperBound)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::clashingBounds </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>lowerBound</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>upperBound</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#ad0b23fb01a7adea349c8958059b9f7fd">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02865">2865</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="assumptions_8cpp_source.html#l00200">CVC3::Assumptions::add()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00189">CVC3::isGE()</a>, <a class="el" href="theory__arith_8h_source.html#l00188">CVC3::isGT()</a>, <a class="el" href="theory__arith_8h_source.html#l00187">CVC3::isLE()</a>, <a class="el" href="theory__arith_8h_source.html#l00186">CVC3::isLT()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a3b2bea72cd9163daa7c41388037bca29"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::addInequalities" ref="a3b2bea72cd9163daa7c41388037bca29" args="(const Theorem &amp;thm1, const Theorem &amp;thm2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::addInequalities </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>thm1</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>thm2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#ac06dd83948d0f3e474f073ecac592343">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02905">2905</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theory__arith_8h_source.html#l00051">CVC3::GT</a>, <a class="el" href="theory__arith_8h_source.html#l00189">CVC3::isGE()</a>, <a class="el" href="theory__arith_8h_source.html#l00188">CVC3::isGT()</a>, <a class="el" href="theory__arith_8h_source.html#l00192">CVC3::isIneq()</a>, <a class="el" href="theory__arith_8h_source.html#l00187">CVC3::isLE()</a>, <a class="el" href="theory__arith_8h_source.html#l00186">CVC3::isLT()</a>, <a class="el" href="theory__arith_8h_source.html#l00049">CVC3::LT</a>, <a class="el" href="theory__arith_8h_source.html#l00199">CVC3::plusExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a0eb949bb19e618a8318f236b249fadd5"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::addInequalities" ref="a0eb949bb19e618a8318f236b249fadd5" args="(const std::vector&lt; Theorem &gt; &amp;thms)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::addInequalities </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>thms</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#ab87b1e3a09aa830063d51c24a2147095">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03227">3227</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p>

</div>
</div>
<a class="anchor" id="a364ef37224bae3afb4f62a5c0f75d02c"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::implyWeakerInequality" ref="a364ef37224bae3afb4f62a5c0f75d02c" args="(const Expr &amp;expr1, const Expr &amp;expr2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::implyWeakerInequality </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>expr1</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>expr2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a9abe85f95b61d94fa308a0b15f2b2ef8">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02950">2950</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="expr_8h_source.html#l00969">CVC3::Expr::impExpr()</a>, <a class="el" href="theory__arith_8h_source.html#l00189">CVC3::isGE()</a>, <a class="el" href="theory__arith_8h_source.html#l00188">CVC3::isGT()</a>, <a class="el" href="theory__arith_8h_source.html#l00192">CVC3::isIneq()</a>, <a class="el" href="theory__arith_8h_source.html#l00187">CVC3::isLE()</a>, <a class="el" href="theory__arith_8h_source.html#l00186">CVC3::isLT()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a1bf4d45330b587882e726daa9117cdfb"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::implyNegatedInequality" ref="a1bf4d45330b587882e726daa9117cdfb" args="(const Expr &amp;expr1, const Expr &amp;expr2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::implyNegatedInequality </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>expr1</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>expr2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a5eaf4d106f7ce86227ab1d96ffc66b55">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03004">3004</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="expr_8h_source.html#l00969">CVC3::Expr::impExpr()</a>, <a class="el" href="theory__arith_8h_source.html#l00189">CVC3::isGE()</a>, <a class="el" href="theory__arith_8h_source.html#l00188">CVC3::isGT()</a>, <a class="el" href="theory__arith_8h_source.html#l00192">CVC3::isIneq()</a>, <a class="el" href="theory__arith_8h_source.html#l00187">CVC3::isLE()</a>, <a class="el" href="theory__arith_8h_source.html#l00186">CVC3::isLT()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, <a class="el" href="expr_8h_source.html#l00937">CVC3::Expr::negate()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="ab9395a2ee958d70c780df2514e517320"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::integerSplit" ref="ab9395a2ee958d70c780df2514e517320" args="(const Expr &amp;intVar, const Rational &amp;intPoint)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::integerSplit </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>intVar</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;&#160;</td>
          <td class="paramname"><em>intPoint</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a0090e0d4065efbf936ec92f0e99935e9">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03049">3049</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__arith_8h_source.html#l00227">CVC3::geExpr()</a>, <a class="el" href="expr_8h_source.html#l00969">CVC3::Expr::impExpr()</a>, <a class="el" href="theory__arith_8h_source.html#l00053">CVC3::IS_INTEGER</a>, <a class="el" href="classCVC3_1_1Rational.html#a1366320f4de558bb964c67f8aecedb36">CVC3::Rational::isInteger()</a>, <a class="el" href="theory__arith_8h_source.html#l00223">CVC3::leExpr()</a>, <a class="el" href="expr_8h_source.html#l00955">CVC3::orExpr()</a>, and <a class="el" href="classCVC3_1_1Rational.html#a195c125a76cb9a6c5731369e244a2de3">CVC3::Rational::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a43fa5f7c8c3ad3915de7f068ac8cefbd"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::trustedRewrite" ref="a43fa5f7c8c3ad3915de7f068ac8cefbd" args="(const Expr &amp;expr1, const Expr &amp;expr2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::trustedRewrite </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>expr1</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>expr2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a11976de555ee2e88236575893f2ed766">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03036">3036</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a4b28aa17702ca3f9703e61ca012ca236"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::rafineStrictInteger" ref="a4b28aa17702ca3f9703e61ca012ca236" args="(const Theorem &amp;isIntConstrThm, const Expr &amp;constr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::rafineStrictInteger </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>isIntConstrThm</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>constr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a4b61e3ea9d5ac911806de95241cf35de">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03068">3068</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__arith_8h_source.html#l00052">CVC3::GE</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00051">CVC3::GT</a>, <a class="el" href="theory__arith_8h_source.html#l00192">CVC3::isIneq()</a>, <a class="el" href="classCVC3_1_1Rational.html#a1366320f4de558bb964c67f8aecedb36">CVC3::Rational::isInteger()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00050">CVC3::LE</a>, <a class="el" href="theory__arith_8h_source.html#l00049">CVC3::LT</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="afd5bca9b136254b904b931680180ac83"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::simpleIneqInt" ref="afd5bca9b136254b904b931680180ac83" args="(const Expr &amp;ineq, const Theorem &amp;isIntRHS)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::simpleIneqInt </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>ineq</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>isIntRHS</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a95bc88d9e126e6b9c938691ce92985aa">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03123">3123</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p>

</div>
</div>
<a class="anchor" id="ad5f121b6b7d6b8ae951dfb4cce064575"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::intEqualityRationalConstant" ref="ad5f121b6b7d6b8ae951dfb4cce064575" args="(const Theorem &amp;isIntConstrThm, const Expr &amp;constr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::intEqualityRationalConstant </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>isIntConstrThm</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>constr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a93489420e882a93eb308c7d99c27dc1e">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03133">3133</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p>

</div>
</div>
<a class="anchor" id="a0111aa5645658dbd6a4bc030178edb94"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::cycleConflict" ref="a0111aa5645658dbd6a4bc030178edb94" args="(const std::vector&lt; Theorem &gt; &amp;inequalitites)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::cycleConflict </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>inequalitites</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a5a544980652c3f6793057b16cbc43cf9">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03138">3138</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p>

</div>
</div>
<a class="anchor" id="abb8aff055ea56ad8de2b66fd9a7aeba9"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::implyEqualities" ref="abb8aff055ea56ad8de2b66fd9a7aeba9" args="(const std::vector&lt; Theorem &gt; &amp;inequalities)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::implyEqualities </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>inequalities</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a5b475214a53d70298e55f4ac5f3db71f">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03143">3143</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p>

</div>
</div>
<a class="anchor" id="ae3a7aa0ebe8e84b806efaa59278ea75e"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::implyWeakerInequalityDiffLogic" ref="ae3a7aa0ebe8e84b806efaa59278ea75e" args="(const std::vector&lt; Theorem &gt; &amp;antecedentThms, const Expr &amp;implied)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::implyWeakerInequalityDiffLogic </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>antecedentThms</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>implied</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#aafc12b4bdf180f3475ecf4eaa40648d9">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03195">3195</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p>

</div>
</div>
<a class="anchor" id="ab794c1f9d6e971ac56e0063f409b4774"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::implyNegatedInequalityDiffLogic" ref="ab794c1f9d6e971ac56e0063f409b4774" args="(const std::vector&lt; Theorem &gt; &amp;antecedentThms, const Expr &amp;implied)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::implyNegatedInequalityDiffLogic </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>antecedentThms</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>implied</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a61ecf1cfc7219c010519cd90cb31d465">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03200">3200</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p>

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

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#ac48d6f8b2ad8e8f8fefac775d33825b5">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03205">3205</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p>

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

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a98020e790bcb60c9c2cc5a7e406f500f">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03210">3210</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p>

</div>
</div>
<a class="anchor" id="a9edd8b9ee6a8b4d14e9a2f967b78d52f"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::nonLinearIneqSignSplit" ref="a9edd8b9ee6a8b4d14e9a2f967b78d52f" args="(const Theorem &amp;ineqThm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::nonLinearIneqSignSplit </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>ineqThm</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#aa6874fa9f5b02db0adb8149af9664b05">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03215">3215</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p>

</div>
</div>
<a class="anchor" id="a45d8f89bdb0e57ddbaec273a24bf34b4"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::implyDiffLogicBothBounds" ref="a45d8f89bdb0e57ddbaec273a24bf34b4" args="(const Expr &amp;x, std::vector&lt; Theorem &gt; &amp;c1_le_x, Rational c1, std::vector&lt; Theorem &gt; &amp;x_le_c2, Rational c2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::implyDiffLogicBothBounds </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>c1_le_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classCVC3_1_1Rational.html">Rational</a>&#160;</td>
          <td class="paramname"><em>c1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>x_le_c2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classCVC3_1_1Rational.html">Rational</a>&#160;</td>
          <td class="paramname"><em>c2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#af80ad28bb01d8a37e32f29c746d22dbc">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03220">3220</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p>

</div>
</div>
<a class="anchor" id="a0433b1ba53a33275015c26450acb09d0"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::powerOfOne" ref="a0433b1ba53a33275015c26450acb09d0" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::powerOfOne </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#ad3dee93f4078a4fc79ccacef33f05119">CVC3::ArithProofRules</a>.</p>

<p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03232">3232</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p>

</div>
</div>
<hr/><h2>Member Data Documentation</h2>
<a class="anchor" id="ad2c70acba668e2582f0ebd9533646338"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::d_theoryArith" ref="ad2c70acba668e2582f0ebd9533646338" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1TheoryArithNew.html">TheoryArithNew</a>* <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ad2c70acba668e2582f0ebd9533646338">CVC3::ArithTheoremProducer::d_theoryArith</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="arith__theorem__producer_8h_source.html#l00033">33</a> of file <a class="el" href="arith__theorem__producer_8h_source.html">arith_theorem_producer.h</a>.</p>

<p>Referenced by <a class="el" href="arith__theorem__producer_8h_source.html#l00075">darkShadow()</a>, <a class="el" href="arith__theorem__producer_8h_source.html#l00081">grayShadow()</a>, <a class="el" href="arith__theorem__producer_8h_source.html#l00073">intType()</a>, and <a class="el" href="arith__theorem__producer_8h_source.html#l00072">realType()</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="arith__theorem__producer_8h_source.html">arith_theorem_producer.h</a></li>
<li><a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</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>