Sophie

Sophie

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

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::TheoryArith3 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_1TheoryArith3.html">TheoryArith3</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="#friends">Friends</a>  </div>
  <div class="headertitle">
<div class="title">CVC3::TheoryArith3 Class Reference</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="CVC3::TheoryArith3" --><!-- doxytag: inherits="CVC3::TheoryArith" -->
<p><code>#include &lt;<a class="el" href="theory__arith3_8h_source.html">theory_arith3.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for CVC3::TheoryArith3:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classCVC3_1_1TheoryArith3.png" usemap="#CVC3::TheoryArith3_map" alt=""/>
  <map id="CVC3::TheoryArith3_map" name="CVC3::TheoryArith3_map">
<area href="classCVC3_1_1TheoryArith.html" title="This theory handles basic linear arithmetic." alt="CVC3::TheoryArith" shape="rect" coords="0,56,126,80"/>
<area href="classCVC3_1_1Theory.html" title="Base class for theories." alt="CVC3::Theory" shape="rect" coords="0,0,126,24"/>
</map>
 </div></div>

<p><a href="classCVC3_1_1TheoryArith3-members.html">List of all members.</a></p>
<h2><a name="nested-classes"></a>
Classes</h2>
<ul>
<li>class <a class="el" href="classCVC3_1_1TheoryArith3_1_1FreeConst.html">FreeConst</a>
<dl class="el"><dd class="mdescRight">Data class for the strongest free constant in separation inqualities.  <a href="classCVC3_1_1TheoryArith3_1_1FreeConst.html#details">More...</a><br/></dl><li>class <a class="el" href="classCVC3_1_1TheoryArith3_1_1Ineq.html">Ineq</a>
<dl class="el"><dd class="mdescRight">Private class for an inequality in the Fourier-Motzkin database.  <a href="classCVC3_1_1TheoryArith3_1_1Ineq.html#details">More...</a><br/></dl><li>class <a class="el" href="classCVC3_1_1TheoryArith3_1_1VarOrderGraph.html">VarOrderGraph</a>
</ul>
<h2><a name="pub-methods"></a>
Public Member Functions</h2>
<ul>
<li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#a70491110f5b66fb6fd62c109b6dffc09">separateMonomial</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;c, <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;var)
<dl class="el"><dd class="mdescRight">Separate monomial e = c*p1*...*pn into c and 1*p1*...*pn.  <a href="#a70491110f5b66fb6fd62c109b6dffc09"></a><br/></dl><li>bool <a class="el" href="classCVC3_1_1TheoryArith3.html#addd34c5d0ee1bdab0ecbbc92ebd0f175">isInteger</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Check the term t for integrality (return bool)  <a href="#addd34c5d0ee1bdab0ecbbc92ebd0f175"></a><br/></dl><li><a class="el" href="classCVC3_1_1TheoryArith3.html#a788719650296495e2ab22966e462b3ac">TheoryArith3</a> (<a class="el" href="classCVC3_1_1TheoryCore.html">TheoryCore</a> *core)
<li><a class="el" href="classCVC3_1_1TheoryArith3.html#a6ce33109bdf13407e2c36a6e608132cd">~TheoryArith3</a> ()
<li><a class="el" href="classCVC3_1_1ArithProofRules.html">ArithProofRules</a> * <a class="el" href="classCVC3_1_1TheoryArith3.html#af8a9ccde61831efd7b0e9093ed1d9770">createProofRules3</a> ()
<li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#a1f122f4d960ac5df603cf7759681c95b">addSharedTerm</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Notify theory of a new shared term.  <a href="#a1f122f4d960ac5df603cf7759681c95b"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#a0b160ba7b04b17aba1d9f07c6d776b0e">assertFact</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;e)
<dl class="el"><dd class="mdescRight">Assert a new fact to the decision procedure.  <a href="#a0b160ba7b04b17aba1d9f07c6d776b0e"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#ae44a95809991c134c6ed6a8c795a06bc">refineCounterExample</a> ()
<dl class="el"><dd class="mdescRight">Process disequalities from the arrangement for model generation.  <a href="#ae44a95809991c134c6ed6a8c795a06bc"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#a6e35b7340b2370e2ac9ea6b6892ec479">computeModelBasic</a> (const std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;v)
<dl class="el"><dd class="mdescRight">Assign concrete values to basic-type variables in v.  <a href="#a6e35b7340b2370e2ac9ea6b6892ec479"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#ad9f6d84e930741b9b6675dec46ba9b26">computeModel</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;vars)
<dl class="el"><dd class="mdescRight">Compute the value of a compound variable from the more primitive ones.  <a href="#ad9f6d84e930741b9b6675dec46ba9b26"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#ad92218d82a1bf0005a223e6ed3b3726b">checkSat</a> (bool fullEffort)
<dl class="el"><dd class="mdescRight">Check for satisfiability in the theory.  <a href="#ad92218d82a1bf0005a223e6ed3b3726b"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#a372ca4601f982473511cd0fc55c83374">rewrite</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Theory-specific rewrite rules.  <a href="#a372ca4601f982473511cd0fc55c83374"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#a9a07172dc5440407baddcc225166651e">setup</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Set up the term e for call-backs when e or its children change.  <a href="#a9a07172dc5440407baddcc225166651e"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#a91d859d6893c57f28679590a23a32f15">update</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;e, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;d)
<dl class="el"><dd class="mdescRight">Notify a theory of a new equality.  <a href="#a91d859d6893c57f28679590a23a32f15"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#a3faa3983fb7a7a37c24ccbf500528bbe">solve</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;e)
<dl class="el"><dd class="mdescRight">An optional solver.  <a href="#a3faa3983fb7a7a37c24ccbf500528bbe"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#ab609e73ab4f8ff747730845f864ef18a">checkAssertEqInvariant</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;e)
<dl class="el"><dd class="mdescRight">A debug check used by the primary solver.  <a href="#ab609e73ab4f8ff747730845f864ef18a"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#a27cd5a977820921847abb91ffd728165">checkType</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Check that e is a valid <a class="el" href="classCVC3_1_1Type.html" title="MS C++ specific settings.">Type</a> expr.  <a href="#a27cd5a977820921847abb91ffd728165"></a><br/></dl><li><a class="el" href="namespaceCVC3.html#af969e724f8b7016909f5804e8cea3e54">Cardinality</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#a8b64f176481b2c25cf42e31efe2e64fd">finiteTypeInfo</a> (<a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, <a class="el" href="classCVC3_1_1Unsigned.html">Unsigned</a> &amp;n, bool enumerate, bool computeSize)
<dl class="el"><dd class="mdescRight">Compute information related to finiteness of types.  <a href="#a8b64f176481b2c25cf42e31efe2e64fd"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#a71487fca123272ebec2f37b6fecfbf3e">computeType</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Compute and store the type of e.  <a href="#a71487fca123272ebec2f37b6fecfbf3e"></a><br/></dl><li><a class="el" href="classCVC3_1_1Type.html">Type</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#a6d158689e4805c7d62a7a06b919e3d53">computeBaseType</a> (const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;t)
<dl class="el"><dd class="mdescRight">Compute the base type of the top-level operator of an arbitrary type.  <a href="#a6d158689e4805c7d62a7a06b919e3d53"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#a00b11e39bb30b25373399c0cd20f6dd0">computeModelTerm</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;v)
<dl class="el"><dd class="mdescRight">Add variables from 'e' to 'v' for constructing a concrete model.  <a href="#a00b11e39bb30b25373399c0cd20f6dd0"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#a0aecfd1729c28dfb1229372a65edb3ad">computeTypePred</a> (const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;t, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight"><a class="el" href="classCVC3_1_1Theory.html" title="Base class for theories.">Theory</a> specific computation of the subtyping predicate for type t applied to the expression e.  <a href="#a0aecfd1729c28dfb1229372a65edb3ad"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#af49bfb7657ee001bbb3caeeb04630847">computeTCC</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Compute and cache the TCC of e.  <a href="#af49bfb7657ee001bbb3caeeb04630847"></a><br/></dl><li><a class="el" href="classCVC3_1_1ExprStream.html">ExprStream</a> &amp; <a class="el" href="classCVC3_1_1TheoryArith3.html#a016c76766dead2d406c96f51138f72a3">print</a> (<a class="el" href="classCVC3_1_1ExprStream.html">ExprStream</a> &amp;os, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Theory-specific pretty-printing.  <a href="#a016c76766dead2d406c96f51138f72a3"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#a26016acc412642afc4712d68dd4af25d">parseExprOp</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Theory-specific parsing implemented by the DP.  <a href="#a26016acc412642afc4712d68dd4af25d"></a><br/></dl></ul>
<h2><a name="pri-methods"></a>
Private Member Functions</h2>
<ul>
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#ac053c3120ee5ede28ff6097b2faea155">isIntegerThm</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Check the term t for integrality.  <a href="#ac053c3120ee5ede28ff6097b2faea155"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#ae5339522241766bfc991ca476f94b6d8">isIntegerDerive</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;isIntE, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;thm)
<dl class="el"><dd class="mdescRight">A helper method for <a class="el" href="classCVC3_1_1TheoryArith3.html#ac053c3120ee5ede28ff6097b2faea155" title="Check the term t for integrality.">isIntegerThm()</a>  <a href="#ae5339522241766bfc991ca476f94b6d8"></a><br/></dl><li>const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp; <a class="el" href="classCVC3_1_1TheoryArith3.html#a472ba8372206ffe82fc42f33f032784a">freeConstIneq</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;ineq, bool varOnRHS)
<dl class="el"><dd class="mdescRight">Extract the free constant from an inequality.  <a href="#a472ba8372206ffe82fc42f33f032784a"></a><br/></dl><li>const <a class="el" href="classCVC3_1_1TheoryArith3_1_1FreeConst.html">FreeConst</a> &amp; <a class="el" href="classCVC3_1_1TheoryArith3.html#ae4e1a30b7247216751f1eaea91362cc0">updateSubsumptionDB</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;ineq, bool varOnRHS, bool &amp;subsumed)
<dl class="el"><dd class="mdescRight">Update the free constant subsumption database with new inequality.  <a href="#ae4e1a30b7247216751f1eaea91362cc0"></a><br/></dl><li>bool <a class="el" href="classCVC3_1_1TheoryArith3.html#a9f75f31dff3486528563454fce4381a6">kidsCanonical</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Check if the kids of e are fully simplified and canonized (for debugging)  <a href="#a9f75f31dff3486528563454fce4381a6"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#a4fecdcaa672c9263e1f823c6650d1725">canon</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Canonize the expression e, assuming all children are canonical.  <a href="#a4fecdcaa672c9263e1f823c6650d1725"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#a486c66ef1f738b8ec48ac580d16b0d60">canonSimplify</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Canonize and reduce e w.r.t. union-find database; assume all children are canonical.  <a href="#a486c66ef1f738b8ec48ac580d16b0d60"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#aaef92a86079cf95107c7c4552fe77a34">canonSimplify</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;thm)
<dl class="el"><dd class="mdescRight">Composition of <a class="el" href="classCVC3_1_1TheoryArith3.html#a486c66ef1f738b8ec48ac580d16b0d60" title="Canonize and reduce e w.r.t. union-find database; assume all children are canonical.">canonSimplify(const Expr&amp;)</a> by transitivity: take e0 = e1, canonize and simplify e1 to e2, return e0 = e2.  <a href="#aaef92a86079cf95107c7c4552fe77a34"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#a785848c0f072e06ca036ed4ce1f8c16b">canonPred</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;thm)
<dl class="el"><dd class="mdescRight">Canonize predicate (x = y, x &lt; y, etc.)  <a href="#a785848c0f072e06ca036ed4ce1f8c16b"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#ac0c4f725256399640c17b0783fec9f13">canonPredEquiv</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;thm)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#ac686439c56c6043030c7f54054fb679a">doSolve</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;e)
<dl class="el"><dd class="mdescRight">Solve an equation and return an equivalent <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> in the solved form.  <a href="#ac686439c56c6043030c7f54054fb679a"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#af806119e538c39891145ef30f906e9af">canonConjunctionEquiv</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;thm)
<dl class="el"><dd class="mdescRight">takes in a conjunction equivalence Thm and canonizes it.  <a href="#af806119e538c39891145ef30f906e9af"></a><br/></dl><li>bool <a class="el" href="classCVC3_1_1TheoryArith3.html#a353478e5b8c453a2e8d774f5e6131cd3">pickIntEqMonomial</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;right, <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;isolated, bool &amp;nonlin)
<dl class="el"><dd class="mdescRight">picks the monomial with the smallest abs(coeff) from the input  <a href="#a353478e5b8c453a2e8d774f5e6131cd3"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#aa7ff101a4a69c0234af6c0a53ba29764">processRealEq</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;eqn)
<dl class="el"><dd class="mdescRight">processes equalities with 1 or more vars of type REAL  <a href="#aa7ff101a4a69c0234af6c0a53ba29764"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#a040075d9eae3b054cc65a994d311c70a">processIntEq</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;eqn)
<dl class="el"><dd class="mdescRight">processes equalities whose vars are all of type INT  <a href="#a040075d9eae3b054cc65a994d311c70a"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#ae3a3a08b59de54cff2cca3da66b89ca3">processSimpleIntEq</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;eqn)
<dl class="el"><dd class="mdescRight">One step of INT equality processing (aux. method for <a class="el" href="classCVC3_1_1TheoryArith3.html#a040075d9eae3b054cc65a994d311c70a" title="processes equalities whose vars are all of type INT">processIntEq()</a>)  <a href="#ae3a3a08b59de54cff2cca3da66b89ca3"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#a3a28af3eaef560d01cc9755f29f1dcd1">processBuffer</a> ()
<dl class="el"><dd class="mdescRight">Process inequalities in the buffer.  <a href="#a3a28af3eaef560d01cc9755f29f1dcd1"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#a46aa67085cf8a1c691cbe5846e740765">isolateVariable</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;inputThm, bool &amp;e1)
<dl class="el"><dd class="mdescRight">Take an inequality and isolate a variable.  <a href="#a46aa67085cf8a1c691cbe5846e740765"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#a6dffd309689d82e967c9bbe05d2ba982">updateStats</a> (const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;c, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;var)
<dl class="el"><dd class="mdescRight">Update the statistics counters for the variable with a coeff. c.  <a href="#a6dffd309689d82e967c9bbe05d2ba982"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#a4a5c3ac4853b75db75d61b5a00b1c9d2">updateStats</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;monomial)
<dl class="el"><dd class="mdescRight">Update the statistics counters for the monomial.  <a href="#a4a5c3ac4853b75db75d61b5a00b1c9d2"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#a504bf0d2dd4a3b5e3346db7ffd105d63">addToBuffer</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;thm)
<dl class="el"><dd class="mdescRight">Add an inequality to the input buffer. See also d_buffer.  <a href="#a504bf0d2dd4a3b5e3346db7ffd105d63"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#a2eeb16c35c6b47810a8163f556fdafc5">computeNormalFactor</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;rhs)
<dl class="el"><dd class="mdescRight">Given a canonized term, compute a factor to make all coefficients integer and relatively prime.  <a href="#a2eeb16c35c6b47810a8163f556fdafc5"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#ac92c123cb9146a4a0f3f45e37b3306ed">normalize</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Normalize an equation (make all coefficients rel. prime integers)  <a href="#ac92c123cb9146a4a0f3f45e37b3306ed"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#a769b297125b6281de30306ce8f907191">normalize</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;thm)
<dl class="el"><dd class="mdescRight">Normalize an equation (make all coefficients rel. prime integers)  <a href="#a769b297125b6281de30306ce8f907191"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#a5e2c1bdff3d602f37c1cc89dd4fd1574">pickMonomial</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;right)
<li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#a6ca53edda892c56d40b65b2f9cad610c">getFactors</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, std::set&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;factors)
<li>bool <a class="el" href="classCVC3_1_1TheoryArith3.html#a957c9fd7f07ee82288a20effb505ca06">lessThanVar</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;isolatedVar, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;var2)
<li>bool <a class="el" href="classCVC3_1_1TheoryArith3.html#a17195fe93c0fe689e6a1d08c1459bd82">isStale</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Check if the term expression is "stale".  <a href="#a17195fe93c0fe689e6a1d08c1459bd82"></a><br/></dl><li>bool <a class="el" href="classCVC3_1_1TheoryArith3.html#a1a9cea9d0a08c0a6a01e9005d6bc121d">isStale</a> (const <a class="el" href="classCVC3_1_1TheoryArith3_1_1Ineq.html">Ineq</a> &amp;ineq)
<dl class="el"><dd class="mdescRight">Check if the inequality is "stale" or subsumed.  <a href="#a1a9cea9d0a08c0a6a01e9005d6bc121d"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#a2896ed5876f029204b26eca916c6cdbd">projectInequalities</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;theInequality, bool isolatedVarOnRHS)
<li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#ab88556951a1e36e72efb357ed5ff8231">assignVariables</a> (std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;v)
<li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#af02fbf9a3193abb569fcb27e5f1d2db7">findRationalBound</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;varSide, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;ratSide, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;var, <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;r)
<li>bool <a class="el" href="classCVC3_1_1TheoryArith3.html#aa26c0384f5e6b14af63cba1bda052445">findBounds</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;lub, <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;glb)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#aff09d333af28a78565540409f88024fa">normalizeProjectIneqs</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;ineqThm1, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;ineqThm2)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#a1660f18e07c37dcda3be7afa645722a5">solvedForm</a> (const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;solvedEqs)
<dl class="el"><dd class="mdescRight">Take a system of equations and turn it into a solved form.  <a href="#a1660f18e07c37dcda3be7afa645722a5"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#ac2fcec4f5baacf96ca2383e073d44228">substAndCanonize</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;t, <a class="el" href="classCVC3_1_1ExprMap.html">ExprMap</a>&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;subst)
<dl class="el"><dd class="mdescRight">Substitute all vars in term 't' according to the substitution 'subst' and canonize the result.  <a href="#ac2fcec4f5baacf96ca2383e073d44228"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#a7fa48c4b31f0bc95ae74324fcd8c92db">substAndCanonize</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;eq, <a class="el" href="classCVC3_1_1ExprMap.html">ExprMap</a>&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;subst)
<dl class="el"><dd class="mdescRight">Substitute all vars in the RHS of the equation 'eq' of the form (x = t) according to the substitution 'subst', and canonize the result.  <a href="#a7fa48c4b31f0bc95ae74324fcd8c92db"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#a9dce9b9f5badc37fb3bcadcf8ef78583">collectVars</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;vars, std::set&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;cache)
<dl class="el"><dd class="mdescRight">Traverse 'e' and push all the i-leaves into 'vars' vector.  <a href="#a9dce9b9f5badc37fb3bcadcf8ef78583"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#aee8cdf4bc28c2aa427a49bb8e221b88d">processFiniteInterval</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;alphaLEax, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;bxLEbeta)
<dl class="el"><dd class="mdescRight">Check if alpha &lt;= ax &amp; bx &lt;= beta is a finite interval for integer var 'x', and assert the corresponding constraint.  <a href="#aee8cdf4bc28c2aa427a49bb8e221b88d"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#a6cea6a92562860617a56fd0c4181245e">processFiniteIntervals</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;x)
<dl class="el"><dd class="mdescRight">For an integer var 'x', find and process all constraints A &lt;= ax &lt;= A+c.  <a href="#a6cea6a92562860617a56fd0c4181245e"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#a981a077978ed5779f8ac4b739d32c084">setupRec</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Recursive setup for isolated inequalities (and other new expressions)  <a href="#a981a077978ed5779f8ac4b739d32c084"></a><br/></dl><li><a class="el" href="classCVC3_1_1Rational.html">Rational</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#a84f83db057e52785fe6ee6c7036668d2">currentMaxCoefficient</a> (<a class="el" href="classCVC3_1_1Expr.html">Expr</a> var)
<li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#a16d4eb1ecd6adb8fde86f2c3ce4d6ef1">fixCurrentMaxCoefficient</a> (<a class="el" href="classCVC3_1_1Expr.html">Expr</a> variable, <a class="el" href="classCVC3_1_1Rational.html">Rational</a> max)
<li>void <a class="el" href="classCVC3_1_1TheoryArith3.html#a21438a9cc9b82b7c6cf3b269b663a8d0">selectSmallestByCoefficient</a> (std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; input, std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;output)
</ul>
<h2><a name="pri-attribs"></a>
Private Attributes</h2>
<ul>
<li><a class="el" href="classCVC3_1_1CDList.html">CDList</a>&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#a27d63b744292174502cd871610cd3d1f">d_diseq</a>
<li><a class="el" href="classCVC3_1_1CDO.html">CDO</a>&lt; size_t &gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#a8f6255ef2bae62211980a687a178a923">d_diseqIdx</a>
<li><a class="el" href="classCVC3_1_1ArithProofRules.html">ArithProofRules</a> * <a class="el" href="classCVC3_1_1TheoryArith3.html#ad36b56d2d11b3c5398c4d9f554bae18e">d_rules</a>
<li><a class="el" href="classCVC3_1_1CDO.html">CDO</a>&lt; bool &gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#ab6ea7bdf248ad9f15dbbb2a25c70d53d">d_inModelCreation</a>
<li><a class="el" href="classCVC3_1_1ExprMap.html">ExprMap</a>&lt; <a class="el" href="classCVC3_1_1CDList.html">CDList</a>&lt; <a class="el" href="classCVC3_1_1TheoryArith3_1_1Ineq.html">Ineq</a> &gt; * &gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#ae907bba6bfb622671693d64fd4f7651b">d_inequalitiesRightDB</a>
<dl class="el"><dd class="mdescRight">Database of inequalities with a variable isolated on the right.  <a href="#ae907bba6bfb622671693d64fd4f7651b"></a><br/></dl><li><a class="el" href="classCVC3_1_1ExprMap.html">ExprMap</a>&lt; <a class="el" href="classCVC3_1_1CDList.html">CDList</a>&lt; <a class="el" href="classCVC3_1_1TheoryArith3_1_1Ineq.html">Ineq</a> &gt; * &gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#adef4166f884bc9d39c9649de29ba6223">d_inequalitiesLeftDB</a>
<dl class="el"><dd class="mdescRight">Database of inequalities with a variable isolated on the left.  <a href="#adef4166f884bc9d39c9649de29ba6223"></a><br/></dl><li><a class="el" href="classCVC3_1_1CDMap.html">CDMap</a>&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a>, <a class="el" href="classCVC3_1_1TheoryArith3_1_1FreeConst.html">FreeConst</a> &gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#abe31caa3bc2ac4ee941a83870b802ab4">d_freeConstDB</a>
<dl class="el"><dd class="mdescRight">Mapping of inequalities to the largest/smallest free constant.  <a href="#abe31caa3bc2ac4ee941a83870b802ab4"></a><br/></dl><li><a class="el" href="classCVC3_1_1CDList.html">CDList</a>&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#a3875f5f084ebf03733c8f94a4774c536">d_buffer</a>
<dl class="el"><dd class="mdescRight">Buffer of input inequalities.  <a href="#a3875f5f084ebf03733c8f94a4774c536"></a><br/></dl><li><a class="el" href="classCVC3_1_1CDO.html">CDO</a>&lt; size_t &gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#a1e095f1d7e371b227dc08f3b8635c004">d_bufferIdx</a>
<dl class="el"><dd class="mdescRight">Buffer index of the next unprocessed inequality.  <a href="#a1e095f1d7e371b227dc08f3b8635c004"></a><br/></dl><li>const int * <a class="el" href="classCVC3_1_1TheoryArith3.html#aa1aa058a244693fbfadaa8326d9573a2">d_bufferThres</a>
<dl class="el"><dd class="mdescRight">Threshold when the buffer must be processed.  <a href="#aa1aa058a244693fbfadaa8326d9573a2"></a><br/></dl><li><a class="el" href="classCVC3_1_1CDMap.html">CDMap</a>&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a>, int &gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#a6d0840e19aef8d9e2e3eefad3cb5a279">d_countRight</a>
<dl class="el"><dd class="mdescRight">Mapping of a variable to the number of inequalities where the variable would be isolated on the right.  <a href="#a6d0840e19aef8d9e2e3eefad3cb5a279"></a><br/></dl><li><a class="el" href="classCVC3_1_1CDMap.html">CDMap</a>&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a>, int &gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#a45bee8f005bbd76195fd207f6e14b530">d_countLeft</a>
<dl class="el"><dd class="mdescRight">Mapping of a variable to the number of inequalities where the variable would be isolated on the left.  <a href="#a45bee8f005bbd76195fd207f6e14b530"></a><br/></dl><li><a class="el" href="classCVC3_1_1CDMap.html">CDMap</a>&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a>, bool &gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#a4e74ec27493ce714497a40de4743a706">d_sharedTerms</a>
<dl class="el"><dd class="mdescRight">Set of shared terms (for counterexample generation)  <a href="#a4e74ec27493ce714497a40de4743a706"></a><br/></dl><li><a class="el" href="classCVC3_1_1CDMap.html">CDMap</a>&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a>, bool &gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#a333b1082c80655c02182b44a0c4a8dda">d_sharedVars</a>
<dl class="el"><dd class="mdescRight">Set of shared integer variables (i-leaves)  <a href="#a333b1082c80655c02182b44a0c4a8dda"></a><br/></dl><li><a class="el" href="classCVC3_1_1TheoryArith3_1_1VarOrderGraph.html">VarOrderGraph</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#a7b9b0448e5f0149ea33709b1ba392c1e">d_graph</a>
<li><a class="el" href="classCVC3_1_1CDMap.html">CDMap</a>&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a>, <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#aaafeb6382856c921da73af220df2ab1b">maxCoefficientLeft</a>
<li><a class="el" href="classCVC3_1_1CDMap.html">CDMap</a>&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a>, <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#a53ede9d74a99ac939974d488b146d13f">maxCoefficientRight</a>
<li><a class="el" href="classCVC3_1_1CDMap.html">CDMap</a>&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a>, <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#acefeaa2f3e7b84414fb92b90ab6364cb">fixedMaxCoefficient</a>
</ul>
<h2><a name="friends"></a>
Friends</h2>
<ul>
<li>std::ostream &amp; <a class="el" href="classCVC3_1_1TheoryArith3.html#a24b0687e8f0fa36a6d5bacc8155517e2">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classCVC3_1_1TheoryArith3_1_1FreeConst.html">FreeConst</a> &amp;fc)
<dl class="el"><dd class="mdescRight">Printing.  <a href="#a24b0687e8f0fa36a6d5bacc8155517e2"></a><br/></dl><li>std::ostream &amp; <a class="el" href="classCVC3_1_1TheoryArith3.html#a588ea1b8e9435f2a0fa0fbfe028fbd28">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classCVC3_1_1TheoryArith3_1_1Ineq.html">Ineq</a> &amp;ineq)
<dl class="el"><dd class="mdescRight">Printing.  <a href="#a588ea1b8e9435f2a0fa0fbfe028fbd28"></a><br/></dl></ul>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock">
<p>Definition at line <a class="el" href="theory__arith3_8h_source.html#l00028">28</a> of file <a class="el" href="theory__arith3_8h_source.html">theory_arith3.h</a>.</p>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a788719650296495e2ab22966e462b3ac"></a><!-- doxytag: member="CVC3::TheoryArith3::TheoryArith3" ref="a788719650296495e2ab22966e462b3ac" args="(TheoryCore *core)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">TheoryArith3::TheoryArith3 </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classCVC3_1_1TheoryCore.html">TheoryCore</a> *&#160;</td>
          <td class="paramname"><em>core</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l01809">1809</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="arith__theorem__producer3_8cpp_source.html#l00043">createProofRules3()</a>, <a class="el" href="theory__arith3_8h_source.html#l00091">d_buffer</a>, <a class="el" href="theory__arith3_8h_source.html#l00093">d_bufferIdx</a>, <a class="el" href="theory__arith3_8h_source.html#l00029">d_diseq</a>, <a class="el" href="theory__arith_8h_source.html#l00073">CVC3::TheoryArith::d_intType</a>, <a class="el" href="theory__arith_8h_source.html#l00072">CVC3::TheoryArith::d_realType</a>, <a class="el" href="theory__arith3_8h_source.html#l00031">d_rules</a>, <a class="el" href="theory__arith_8h_source.html#l00054">CVC3::DARK_SHADOW</a>, <a class="el" href="theory__arith_8h_source.html#l00045">CVC3::DIVIDE</a>, <a class="el" href="theory__arith_8h_source.html#l00052">CVC3::GE</a>, <a class="el" href="theory_8h_source.html#l00090">CVC3::Theory::getEM()</a>, <a class="el" href="theory__arith_8h_source.html#l00055">CVC3::GRAY_SHADOW</a>, <a class="el" href="theory__arith_8h_source.html#l00051">CVC3::GT</a>, <a class="el" href="debug_8h_source.html#l00406">IF_DEBUG</a>, <a class="el" href="theory__arith_8h_source.html#l00038">CVC3::INT</a>, <a class="el" href="theory__arith_8h_source.html#l00047">CVC3::INTDIV</a>, <a class="el" href="theory__arith_8h_source.html#l00053">CVC3::IS_INTEGER</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>, <a class="el" href="theory__arith_8h_source.html#l00043">CVC3::MINUS</a>, <a class="el" href="theory__arith_8h_source.html#l00048">CVC3::MOD</a>, <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>, <a class="el" href="theory__arith_8h_source.html#l00034">CVC3::NEGINF</a>, <a class="el" href="expr__manager_8cpp_source.html#l00367">CVC3::ExprManager::newKind()</a>, <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>, <a class="el" href="theory__arith_8h_source.html#l00035">CVC3::POSINF</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>, <a class="el" href="theory__arith_8h_source.html#l00037">CVC3::REAL</a>, <a class="el" href="theory__arith_8h_source.html#l00033">CVC3::REAL_CONST</a>, <a class="el" href="theory_8cpp_source.html#l00203">CVC3::Theory::registerTheory()</a>, <a class="el" href="theory__arith_8h_source.html#l00039">CVC3::SUBRANGE</a>, and <a class="el" href="theory__arith_8h_source.html#l00041">CVC3::UMINUS</a>.</p>

</div>
</div>
<a class="anchor" id="a6ce33109bdf13407e2c36a6e608132cd"></a><!-- doxytag: member="CVC3::TheoryArith3::~TheoryArith3" ref="a6ce33109bdf13407e2c36a6e608132cd" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">TheoryArith3::~TheoryArith3 </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l01889">1889</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.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="theory__arith3_8h_source.html#l00078">d_inequalitiesLeftDB</a>, <a class="el" href="theory__arith3_8h_source.html#l00075">d_inequalitiesRightDB</a>, <a class="el" href="theory__arith3_8h_source.html#l00031">d_rules</a>, and <a class="el" href="expr__map_8h_source.html#l00191">CVC3::ExprMap&lt; Data &gt;::end()</a>.</p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="ac053c3120ee5ede28ff6097b2faea155"></a><!-- doxytag: member="CVC3::TheoryArith3::isIntegerThm" ref="ac053c3120ee5ede28ff6097b2faea155" 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> TheoryArith3::isIntegerThm </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> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Check the term t for integrality. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>a theorem of IS_INTEGER(t) or Null. </dd></dl>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l00068">68</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="theory__arith_8h_source.html#l00053">CVC3::IS_INTEGER</a>, and <a class="el" href="theory__arith_8h_source.html#l00173">CVC3::isReal()</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8h_source.html#l00233">isInteger()</a>, and <a class="el" href="theory__arith3_8cpp_source.html#l01917">processFiniteInterval()</a>.</p>

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

<p>A helper method for <a class="el" href="classCVC3_1_1TheoryArith3.html#ac053c3120ee5ede28ff6097b2faea155" title="Check the term t for integrality.">isIntegerThm()</a> </p>
<p>Check if IS_INTEGER(e) is easily derivable from the given 'thm' </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l00076">76</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="expr_8h_source.html#l00421">CVC3::Expr::isAnd()</a>, and <a class="el" href="theorem_8h_source.html#l00164">CVC3::Theorem::isNull()</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02387">rewrite()</a>.</p>

</div>
</div>
<a class="anchor" id="a472ba8372206ffe82fc42f33f032784a"></a><!-- doxytag: member="CVC3::TheoryArith3::freeConstIneq" ref="a472ba8372206ffe82fc42f33f032784a" args="(const Expr &amp;ineq, bool varOnRHS)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp; TheoryArith3::freeConstIneq </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">bool&#160;</td>
          <td class="paramname"><em>varOnRHS</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Extract the free constant from an inequality. </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l00093">93</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.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#l00192">CVC3::isIneq()</a>, <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</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="ae4e1a30b7247216751f1eaea91362cc0"></a><!-- doxytag: member="CVC3::TheoryArith3::updateSubsumptionDB" ref="ae4e1a30b7247216751f1eaea91362cc0" args="(const Expr &amp;ineq, bool varOnRHS, bool &amp;subsumed)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classCVC3_1_1TheoryArith3_1_1FreeConst.html">TheoryArith3::FreeConst</a> &amp; TheoryArith3::updateSubsumptionDB </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">bool&#160;</td>
          <td class="paramname"><em>varOnRHS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool &amp;&#160;</td>
          <td class="paramname"><em>subsumed</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Update the free constant subsumption database with new inequality. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>a reference to the max/min constant.</dd></dl>
<p>Also, sets 'subsumed' argument to true if the inequality is subsumed by an existing inequality. </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l00111">111</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.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="cdmap_8h_source.html#l00303">CVC3::CDMap&lt; Key, Data, HashFcn &gt;::find()</a>, <a class="el" href="cdmap_8h_source.html#l00106">CVC3::CDOmap&lt; Key, Data, HashFcn &gt;::get()</a>, <a class="el" href="theory__arith3_8h_source.html#l00042">CVC3::TheoryArith3::FreeConst::getConst()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</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#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#l00223">CVC3::leExpr()</a>, <a class="el" href="theory__arith_8h_source.html#l00199">CVC3::plusExpr()</a>, <a class="el" href="theory__arith3_8h_source.html#l00043">CVC3::TheoryArith3::FreeConst::strict()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p>

</div>
</div>
<a class="anchor" id="a9f75f31dff3486528563454fce4381a6"></a><!-- doxytag: member="CVC3::TheoryArith3::kidsCanonical" ref="a9f75f31dff3486528563454fce4381a6" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool TheoryArith3::kidsCanonical </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> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Check if the kids of e are fully simplified and canonized (for debugging) </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l00180">180</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr__stream_8cpp_source.html#l00353">std::endl()</a>, and <a class="el" href="debug_8h_source.html#l00406">IF_DEBUG</a>.</p>

</div>
</div>
<a class="anchor" id="a4fecdcaa672c9263e1f823c6650d1725"></a><!-- doxytag: member="CVC3::TheoryArith3::canon" ref="a4fecdcaa672c9263e1f823c6650d1725" 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> TheoryArith3::canon </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> [private, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Canonize the expression e, assuming all children are canonical. </p>

<p>Implements <a class="el" href="classCVC3_1_1TheoryArith.html#a78442f767c7ce9eef62df74af29178d6">CVC3::TheoryArith</a>.</p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l00212">212</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.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="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>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00043">CVC3::MINUS</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="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>, and <a class="el" href="theory__arith_8h_source.html#l00041">CVC3::UMINUS</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l01917">processFiniteInterval()</a>, and <a class="el" href="theory__arith3_8cpp_source.html#l02387">rewrite()</a>.</p>

</div>
</div>
<a class="anchor" id="a486c66ef1f738b8ec48ac580d16b0d60"></a><!-- doxytag: member="CVC3::TheoryArith3::canonSimplify" ref="a486c66ef1f738b8ec48ac580d16b0d60" 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> TheoryArith3::canonSimplify </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> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Canonize and reduce e w.r.t. union-find database; assume all children are canonical. </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l00360">360</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="expr_8h_source.html#l01232">CVC3::Expr::hasFind()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8h_source.html#l00167">canonSimplify()</a>.</p>

</div>
</div>
<a class="anchor" id="aaef92a86079cf95107c7c4552fe77a34"></a><!-- doxytag: member="CVC3::TheoryArith3::canonSimplify" ref="aaef92a86079cf95107c7c4552fe77a34" args="(const Theorem &amp;thm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::TheoryArith3::canonSimplify </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>thm</em></td><td>)</td>
          <td><code> [inline, private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Composition of <a class="el" href="classCVC3_1_1TheoryArith3.html#a486c66ef1f738b8ec48ac580d16b0d60" title="Canonize and reduce e w.r.t. union-find database; assume all children are canonical.">canonSimplify(const Expr&amp;)</a> by transitivity: take e0 = e1, canonize and simplify e1 to e2, return e0 = e2. </p>

<p>Definition at line <a class="el" href="theory__arith3_8h_source.html#l00167">167</a> of file <a class="el" href="theory__arith3_8h_source.html">theory_arith3.h</a>.</p>

<p>References <a class="el" href="theory__arith3_8cpp_source.html#l00360">canonSimplify()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, and <a class="el" href="theory_8h_source.html#l00681">CVC3::Theory::transitivityRule()</a>.</p>

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

<p>Canonize predicate (x = y, x &lt; y, etc.) </p>
<p>accepts a theorem, canonizes it, applies iffMP and substituvity to derive the canonized thm </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l00390">390</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.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="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01183">CVC3::Expr::getOp()</a>, and <a class="el" href="theorem_8h_source.html#l00404">CVC3::Theorem::toString()</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l01917">processFiniteInterval()</a>.</p>

</div>
</div>
<a class="anchor" id="ac0c4f725256399640c17b0783fec9f13"></a><!-- doxytag: member="CVC3::TheoryArith3::canonPredEquiv" ref="ac0c4f725256399640c17b0783fec9f13" args="(const Theorem &amp;thm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> TheoryArith3::canonPredEquiv </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>thm</em></td><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Canonize predicate like canonPred except that the input theorem is an equivalent transformation.</p>
<p>accepts an equivalence theorem, canonizes it, applies iffMP and substituvity to derive the canonized thm </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l00404">404</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.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#l01183">CVC3::Expr::getOp()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, and <a class="el" href="theorem_8h_source.html#l00404">CVC3::Theorem::toString()</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02319">normalize()</a>, and <a class="el" href="theory__arith3_8cpp_source.html#l02387">rewrite()</a>.</p>

</div>
</div>
<a class="anchor" id="ac686439c56c6043030c7f54054fb679a"></a><!-- doxytag: member="CVC3::TheoryArith3::doSolve" ref="ac686439c56c6043030c7f54054fb679a" 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> TheoryArith3::doSolve </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>thm</em></td><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Solve an equation and return an equivalent <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> in the solved form. </p>
<p>Pseudo-code for doSolve. (Input is an equation) (output is a <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a>)</p>
<ol type="1">
<li>translate e to the form e' = 0</li>
<li>if (e'.<a class="el" href="namespaceCVC3.html#ac0334a083d6782caa17ca0d337fddddf">isRational()</a>) then {if e' != 0 return false else true}</li>
<li>a for loop checks if all the variables are integers.<ul>
<li>if not isolate a suitable real variable and call <a class="el" href="classCVC3_1_1TheoryArith3.html#aa7ff101a4a69c0234af6c0a53ba29764" title="processes equalities with 1 or more vars of type REAL">processRealEq()</a>.</li>
<li>if all variables are integers then isolate suitable variable and call <a class="el" href="classCVC3_1_1TheoryArith3.html#a040075d9eae3b054cc65a994d311c70a" title="processes equalities whose vars are all of type INT">processIntEq()</a>. </li>
</ul>
</li>
</ol>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l00432">432</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.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="kinds_8h_source.html#l00061">EQ</a>, <a class="el" href="debug_8h_source.html#l00037">FatalAssert</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="classCVC3_1_1Rational.html#ae6d4bedf76175b8f91283f610b3eb7d0">CVC3::Rational::getUnsigned()</a>, <a class="el" href="debug_8h_source.html#l00406">IF_DEBUG</a>, <a class="el" href="theory__arith_8h_source.html#l00174">CVC3::isInt()</a>, <a class="el" href="theory__quant_8cpp_source.html#l03731">isIntx()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="theorem_8h_source.html#l00164">CVC3::Theorem::isNull()</a>, <a class="el" href="theory__arith_8h_source.html#l00181">CVC3::isPlus()</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="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="minisat__heap_8h_source.html#l00053">MiniSat::left()</a>, <a class="el" href="rational_8h_source.html#l00159">CVC3::pow()</a>, <a class="el" href="rational_8h_source.html#l00172">CVC3::ratRoot()</a>, <a class="el" href="minisat__heap_8h_source.html#l00054">MiniSat::right()</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>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02569">solve()</a>.</p>

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

<p>takes in a conjunction equivalence Thm and canonizes it. </p>
<p>accepts an equivalence theorem whose RHS is a conjunction, canonizes it, applies iffMP and substituvity to derive the canonized thm </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l00419">419</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a353478e5b8c453a2e8d774f5e6131cd3"></a><!-- doxytag: member="CVC3::TheoryArith3::pickIntEqMonomial" ref="a353478e5b8c453a2e8d774f5e6131cd3" args="(const Expr &amp;right, Expr &amp;isolated, bool &amp;nonlin)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool TheoryArith3::pickIntEqMonomial </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>right</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>isolated</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool &amp;&#160;</td>
          <td class="paramname"><em>nonlin</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>picks the monomial with the smallest abs(coeff) from the input </p>
<p>pick a monomial for the input equation. This function is used only if the equation is an integer equation. Choose the monomial with the smallest absolute value of coefficient. </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l00590">590</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="cvc__util_8h_source.html#l00053">CVC3::abs()</a>, <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="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#l00177">CVC3::isRational()</a>, <a class="el" href="minisat__global_8h_source.html#l00058">MiniSat::min()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

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

<p>processes equalities with 1 or more vars of type REAL </p>
<p>input is 0=e' <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> and some of the vars in e' are of type REAL. isolate one of them and send back to framework. output is "var = e''" <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a>. </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l00642">642</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.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="kinds_8h_source.html#l00061">EQ</a>, <a class="el" href="theorem_8cpp_source.html#l00240">CVC3::Theorem::getLHS()</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="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#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#l00173">CVC3::isReal()</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>, <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="a040075d9eae3b054cc65a994d311c70a"></a><!-- doxytag: member="CVC3::TheoryArith3::processIntEq" ref="a040075d9eae3b054cc65a994d311c70a" args="(const Theorem &amp;eqn)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> TheoryArith3::processIntEq </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><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>processes equalities whose vars are all of type INT </p>
<p>input is 0=e' <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> and all of the vars in e' are of type INT. isolate one of them and send back to framework. output is "var = e''" <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> and some associated equations in solved form. </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l00889">889</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.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="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="expr_8h_source.html#l00421">CVC3::Expr::isAnd()</a>, <a class="el" href="expr_8h_source.html#l00357">CVC3::Expr::isBoolConst()</a>, <a class="el" href="expr_8h_source.html#l00355">CVC3::Expr::isFalse()</a>, <a class="el" href="theorem_8cpp_source.html#l00224">CVC3::Theorem::isRewrite()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p>

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

<p>One step of INT equality processing (aux. method for <a class="el" href="classCVC3_1_1TheoryArith3.html#a040075d9eae3b054cc65a994d311c70a" title="processes equalities whose vars are all of type INT">processIntEq()</a>) </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">eqn</td><td>is a single equation 0 = e </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>an equivalent <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> (x = t AND 0 = e'), or just x = t </dd></dl>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l00759">759</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.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="kinds_8h_source.html#l00061">EQ</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="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="expr_8h_source.html#l00421">CVC3::Expr::isAnd()</a>, <a class="el" href="theory__quant_8cpp_source.html#l03731">isIntx()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="theorem_8h_source.html#l00164">CVC3::Theorem::isNull()</a>, <a class="el" href="theory__arith_8h_source.html#l00181">CVC3::isPlus()</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="theorem_8cpp_source.html#l00224">CVC3::Theorem::isRewrite()</a>, <a class="el" href="minisat__heap_8h_source.html#l00054">MiniSat::right()</a>, <a class="el" href="theorem_8h_source.html#l00404">CVC3::Theorem::toString()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p>

</div>
</div>
<a class="anchor" id="a3a28af3eaef560d01cc9755f29f1dcd1"></a><!-- doxytag: member="CVC3::TheoryArith3::processBuffer" ref="a3a28af3eaef560d01cc9755f29f1dcd1" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::processBuffer </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Process inequalities in the buffer. </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l01059">1059</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theory__arith_8h_source.html#l00181">CVC3::isPlus()</a>, <a class="el" href="expr_8h_source.html#l00356">CVC3::Expr::isTrue()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02020">assertFact()</a>, and <a class="el" href="theory__arith3_8cpp_source.html#l02124">checkSat()</a>.</p>

</div>
</div>
<a class="anchor" id="a46aa67085cf8a1c691cbe5846e740765"></a><!-- doxytag: member="CVC3::TheoryArith3::isolateVariable" ref="a46aa67085cf8a1c691cbe5846e740765" args="(const Theorem &amp;inputThm, bool &amp;e1)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> TheoryArith3::isolateVariable </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>inputThm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool &amp;&#160;</td>
          <td class="paramname"><em>e1</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Take an inequality and isolate a variable. </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l01150">1150</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</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="expr_8h_source.html#l01135">CVC3::Expr::getRational()</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#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#l00054">MiniSat::right()</a>, <a class="el" href="theorem_8h_source.html#l00404">CVC3::Theorem::toString()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p>

</div>
</div>
<a class="anchor" id="a6dffd309689d82e967c9bbe05d2ba982"></a><!-- doxytag: member="CVC3::TheoryArith3::updateStats" ref="a6dffd309689d82e967c9bbe05d2ba982" args="(const Rational &amp;c, const Expr &amp;var)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::updateStats </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_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>var</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Update the statistics counters for the variable with a coeff. c. </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l01085">1085</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="cdmap_8h_source.html#l00258">CVC3::CDMap&lt; Key, Data, HashFcn &gt;::end()</a>, <a class="el" href="cdmap_8h_source.html#l00303">CVC3::CDMap&lt; Key, Data, HashFcn &gt;::find()</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="a4a5c3ac4853b75db75d61b5a00b1c9d2"></a><!-- doxytag: member="CVC3::TheoryArith3::updateStats" ref="a4a5c3ac4853b75db75d61b5a00b1c9d2" args="(const Expr &amp;monomial)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::updateStats </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>monomial</em></td><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Update the statistics counters for the monomial. </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l01118">1118</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>.</p>

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

<p>Add an inequality to the input buffer. See also d_buffer. </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l01126">1126</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.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="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</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="kinds_8h_source.html#l00099">TRACE</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02020">assertFact()</a>.</p>

</div>
</div>
<a class="anchor" id="a2eeb16c35c6b47810a8163f556fdafc5"></a><!-- doxytag: member="CVC3::TheoryArith3::computeNormalFactor" ref="a2eeb16c35c6b47810a8163f556fdafc5" args="(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> TheoryArith3::computeNormalFactor </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><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Given a canonized term, compute a factor to make all coefficients integer and relatively prime. </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l01220">1220</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="cvc__util_8h_source.html#l00053">CVC3::abs()</a>, <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="classCVC3_1_1Rational.html#a7c237dbba5d9f2b022d13bae3188a7e9">CVC3::Rational::getDenominator()</a>, <a class="el" href="classCVC3_1_1Rational.html#a953f2eb850fc3612097b5320dcda6047">CVC3::Rational::getNumerator()</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#l00044">CVC3::MULT</a>, and <a class="el" href="kinds_8h_source.html#l00037">RATIONAL_EXPR</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02319">normalize()</a>.</p>

</div>
</div>
<a class="anchor" id="ac92c123cb9146a4a0f3f45e37b3306ed"></a><!-- doxytag: member="CVC3::TheoryArith3::normalize" ref="ac92c123cb9146a4a0f3f45e37b3306ed" 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> TheoryArith3::normalize </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> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Normalize an equation (make all coefficients rel. prime integers) </p>
<p>accepts a rewrite theorem over eqn|ineqn and normalizes it and returns a theorem to that effect. assumes e is non-trivial i.e. e is not '0=const' or 'const=0' or '0 &lt;= const' etc. </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l02319">2319</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="theory__arith3_8cpp_source.html#l00404">canonPredEquiv()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l01220">computeNormalFactor()</a>, <a class="el" href="theory__arith3_8h_source.html#l00031">d_rules</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</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="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#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>, <a class="el" href="classCVC3_1_1ArithProofRules.html#ad62d795eb10e67c655c608774881bde3">CVC3::ArithProofRules::multEqn()</a>, <a class="el" href="classCVC3_1_1ArithProofRules.html#a70e83cfbc207a5d15fedd4adde7e9e76">CVC3::ArithProofRules::multIneqn()</a>, <a class="el" href="theory_8h_source.html#l00673">CVC3::Theory::reflexivityRule()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02382">normalize()</a>, and <a class="el" href="theory__arith3_8cpp_source.html#l02387">rewrite()</a>.</p>

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

<p>Normalize an equation (make all coefficients rel. prime integers) </p>
<p>accepts a rewrite theorem over eqn|ineqn and normalizes it and returns a theorem to that effect. </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l02382">2382</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02319">normalize()</a>, and <a class="el" href="theory_8h_source.html#l00681">CVC3::Theory::transitivityRule()</a>.</p>

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

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l01642">1642</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.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="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__arith_8h_source.html#l00181">CVC3::isPlus()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p>

</div>
</div>
<a class="anchor" id="a6ca53edda892c56d40b65b2f9cad610c"></a><!-- doxytag: member="CVC3::TheoryArith3::getFactors" ref="a6ca53edda892c56d40b65b2f9cad610c" args="(const Expr &amp;e, std::set&lt; Expr &gt; &amp;factors)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::getFactors </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">std::set&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>factors</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l00725">725</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.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#l00178">CVC3::isIntegerConst()</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>, <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="a70491110f5b66fb6fd62c109b6dffc09"></a><!-- doxytag: member="CVC3::TheoryArith3::separateMonomial" ref="a70491110f5b66fb6fd62c109b6dffc09" args="(const Expr &amp;e, Expr &amp;c, Expr &amp;var)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::separateMonomial </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"><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"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>var</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Separate monomial e = c*p1*...*pn into c and 1*p1*...*pn. </p>

<p>Implements <a class="el" href="classCVC3_1_1TheoryArith.html#aa1298a20a1dcddd2be2aa7d591909d2c">CVC3::TheoryArith</a>.</p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l01320">1320</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.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="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#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#l00207">CVC3::multExpr()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02179">findRationalBound()</a>.</p>

</div>
</div>
<a class="anchor" id="addd34c5d0ee1bdab0ecbbc92ebd0f175"></a><!-- doxytag: member="CVC3::TheoryArith3::isInteger" ref="addd34c5d0ee1bdab0ecbbc92ebd0f175" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool CVC3::TheoryArith3::isInteger </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> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Check the term t for integrality (return bool) </p>

<p>Definition at line <a class="el" href="theory__arith3_8h_source.html#l00233">233</a> of file <a class="el" href="theory__arith3_8h_source.html">theory_arith3.h</a>.</p>

<p>References <a class="el" href="theory__arith3_8cpp_source.html#l00068">isIntegerThm()</a>, and <a class="el" href="theorem_8h_source.html#l00164">CVC3::Theorem::isNull()</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02248">assignVariables()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02747">computeType()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02966">print()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l01917">processFiniteInterval()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l01975">processFiniteIntervals()</a>, and <a class="el" href="theory__arith3_8cpp_source.html#l02569">solve()</a>.</p>

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

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l01262">1262</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.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#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="a17195fe93c0fe689e6a1d08c1459bd82"></a><!-- doxytag: member="CVC3::TheoryArith3::isStale" ref="a17195fe93c0fe689e6a1d08c1459bd82" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool TheoryArith3::isStale </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> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Check if the term expression is "stale". </p>
<p>"Stale" means it contains non-simplified subexpressions. For terms, it checks the expression's find pointer; for formulas it checks the children recursively (no caching!). So, apply it with caution, and only to simple atomic formulas (like inequality). </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l01278">1278</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.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>, and <a class="el" href="expr_8h_source.html#l01021">CVC3::Expr::isTerm()</a>.</p>

</div>
</div>
<a class="anchor" id="a1a9cea9d0a08c0a6a01e9005d6bc121d"></a><!-- doxytag: member="CVC3::TheoryArith3::isStale" ref="a1a9cea9d0a08c0a6a01e9005d6bc121d" args="(const Ineq &amp;ineq)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool TheoryArith3::isStale </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1TheoryArith3_1_1Ineq.html">Ineq</a> &amp;&#160;</td>
          <td class="paramname"><em>ineq</em></td><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Check if the inequality is "stale" or subsumed. </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l01290">1290</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="theory__arith3_8h_source.html#l00042">CVC3::TheoryArith3::FreeConst::getConst()</a>, <a class="el" href="theory__arith3_8h_source.html#l00063">CVC3::TheoryArith3::Ineq::getConst()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theory__arith3_8h_source.html#l00061">CVC3::TheoryArith3::Ineq::ineq()</a>, <a class="el" href="theory__arith_8h_source.html#l00186">CVC3::isLT()</a>, <a class="el" href="theory__arith3_8h_source.html#l00043">CVC3::TheoryArith3::FreeConst::strict()</a>, <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>, and <a class="el" href="theory__arith3_8h_source.html#l00065">CVC3::TheoryArith3::Ineq::varOnRHS()</a>.</p>

</div>
</div>
<a class="anchor" id="a2896ed5876f029204b26eca916c6cdbd"></a><!-- doxytag: member="CVC3::TheoryArith3::projectInequalities" ref="a2896ed5876f029204b26eca916c6cdbd" args="(const Theorem &amp;theInequality, bool isolatedVarOnRHS)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::projectInequalities </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>theInequality</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>isolatedVarOnRHS</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l01346">1346</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</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="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="debug_8h_source.html#l00406">IF_DEBUG</a>, <a class="el" href="theory__arith3_8h_source.html#l00061">CVC3::TheoryArith3::Ineq::ineq()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="expr_8h_source.html#l00355">CVC3::Expr::isFalse()</a>, <a class="el" href="theory__arith_8h_source.html#l00174">CVC3::isInt()</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#l00183">CVC3::isMult()</a>, <a class="el" href="theorem_8h_source.html#l00164">CVC3::Theorem::isNull()</a>, <a class="el" href="theory__arith_8h_source.html#l00185">CVC3::isPow()</a>, <a class="el" href="expr_8h_source.html#l00356">CVC3::Expr::isTrue()</a>, <a class="el" href="cdlist_8h_source.html#l00066">CVC3::CDList&lt; T &gt;::push_back()</a>, <a class="el" href="cdlist_8h_source.html#l00064">CVC3::CDList&lt; T &gt;::size()</a>, <a class="el" href="theorem_8h_source.html#l00404">CVC3::Theorem::toString()</a>, <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>, and <a class="el" href="debug_8h_source.html#l00414">TRACE_MSG</a>.</p>

</div>
</div>
<a class="anchor" id="ab88556951a1e36e72efb357ed5ff8231"></a><!-- doxytag: member="CVC3::TheoryArith3::assignVariables" ref="ab88556951a1e36e72efb357ed5ff8231" args="(std::vector&lt; Expr &gt; &amp;v)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::assignVariables </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>v</em></td><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l02248">2248</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="theory_8cpp_source.html#l00162">CVC3::Theory::assignValue()</a>, <a class="el" href="theory__arith3_8h_source.html#l00131">d_graph</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02197">findBounds()</a>, <a class="el" href="theory_8h_source.html#l00503">CVC3::Theory::findExpr()</a>, <a class="el" href="theory_8cpp_source.html#l00097">CVC3::Theory::inconsistent()</a>, <a class="el" href="classCVC3_1_1Rational.html#a1366320f4de558bb964c67f8aecedb36">CVC3::Rational::isInteger()</a>, <a class="el" href="theory__arith3_8h_source.html#l00233">isInteger()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00156">CVC3::TheoryArith::rat()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l01752">CVC3::TheoryArith3::VarOrderGraph::selectSmallest()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02282">computeModelBasic()</a>.</p>

</div>
</div>
<a class="anchor" id="af02fbf9a3193abb569fcb27e5f1d2db7"></a><!-- doxytag: member="CVC3::TheoryArith3::findRationalBound" ref="af02fbf9a3193abb569fcb27e5f1d2db7" args="(const Expr &amp;varSide, const Expr &amp;ratSide, const Expr &amp;var, Rational &amp;r)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::findRationalBound </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>varSide</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>ratSide</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>var</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;&#160;</td>
          <td class="paramname"><em>r</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l02179">2179</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theory_8h_source.html#l00503">CVC3::Theory::findExpr()</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="theory__arith3_8cpp_source.html#l01320">separateMonomial()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02197">findBounds()</a>.</p>

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

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l02197">2197</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="expr__map_8h_source.html#l00173">CVC3::ExprMap&lt; Data &gt;::count()</a>, <a class="el" href="theory__arith3_8h_source.html#l00078">d_inequalitiesLeftDB</a>, <a class="el" href="theory__arith3_8h_source.html#l00075">d_inequalitiesRightDB</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02179">findRationalBound()</a>, <a class="el" href="theory__arith_8h_source.html#l00186">CVC3::isLT()</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>, <a class="el" href="cdlist_8h_source.html#l00064">CVC3::CDList&lt; T &gt;::size()</a>, <a class="el" href="expr__map_8h_source.html#l00171">CVC3::ExprMap&lt; Data &gt;::size()</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>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02248">assignVariables()</a>.</p>

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

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l01449">1449</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__arith_8h_source.html#l00054">CVC3::DARK_SHADOW</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</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="theory__arith_8h_source.html#l00055">CVC3::GRAY_SHADOW</a>, <a class="el" href="debug_8h_source.html#l00406">IF_DEBUG</a>, <a class="el" href="theory__quant_8cpp_source.html#l03731">isIntx()</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#l00183">CVC3::isMult()</a>, <a class="el" href="theorem_8h_source.html#l00164">CVC3::Theorem::isNull()</a>, <a class="el" href="expr_8h_source.html#l00422">CVC3::Expr::isOr()</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#l00054">MiniSat::right()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p>

</div>
</div>
<a class="anchor" id="a1660f18e07c37dcda3be7afa645722a5"></a><!-- doxytag: member="CVC3::TheoryArith3::solvedForm" ref="a1660f18e07c37dcda3be7afa645722a5" args="(const std::vector&lt; Theorem &gt; &amp;solvedEqs)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> TheoryArith3::solvedForm </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>solvedEqs</em></td><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Take a system of equations and turn it into a solved form. </p>
<p>Takes a vector of equations and for every equation x_i=t_i substitutes t_j for x_j in t_i for all j&gt;i. This turns the system of equations into a solved form.</p>
<p>Assumption: variables x_j may appear in the RHS terms t_i ONLY for i&lt;j, but not for i&gt;=j. </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l00932">932</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.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="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr__map_8h_source.html#l00191">CVC3::ExprMap&lt; Data &gt;::end()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="debug_8h_source.html#l00406">IF_DEBUG</a>, <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>, and <a class="el" href="debug_8h_source.html#l00414">TRACE_MSG</a>.</p>

</div>
</div>
<a class="anchor" id="ac2fcec4f5baacf96ca2383e073d44228"></a><!-- doxytag: member="CVC3::TheoryArith3::substAndCanonize" ref="ac2fcec4f5baacf96ca2383e073d44228" args="(const Expr &amp;t, ExprMap&lt; Theorem &gt; &amp;subst)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> TheoryArith3::substAndCanonize </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>, </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_1Theorem.html">Theorem</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>subst</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Substitute all vars in term 't' according to the substitution 'subst' and canonize the result. </p>
<p>ASSUMPTION: 't' is a fully canonized arithmetic term, and every element of subst is a fully canonized equation of the form x=e, indexed by the LHS variable. </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l00987">987</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr__map_8h_source.html#l00170">CVC3::ExprMap&lt; Data &gt;::empty()</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="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p>

</div>
</div>
<a class="anchor" id="a7fa48c4b31f0bc95ae74324fcd8c92db"></a><!-- doxytag: member="CVC3::TheoryArith3::substAndCanonize" ref="a7fa48c4b31f0bc95ae74324fcd8c92db" args="(const Theorem &amp;eq, ExprMap&lt; Theorem &gt; &amp;subst)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> TheoryArith3::substAndCanonize </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>eq</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_1Theorem.html">Theorem</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>subst</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Substitute all vars in the RHS of the equation 'eq' of the form (x = t) according to the substitution 'subst', and canonize the result. </p>
<p>ASSUMPTION: 't' is a fully canonized equation of the form x = t, and so is every element of subst, indexed by the LHS variable. </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l01038">1038</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr__map_8h_source.html#l00170">CVC3::ExprMap&lt; Data &gt;::empty()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="theorem_8cpp_source.html#l00224">CVC3::Theorem::isRewrite()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a9dce9b9f5badc37fb3bcadcf8ef78583"></a><!-- doxytag: member="CVC3::TheoryArith3::collectVars" ref="a9dce9b9f5badc37fb3bcadcf8ef78583" args="(const Expr &amp;e, std::vector&lt; Expr &gt; &amp;vars, std::set&lt; Expr &gt; &amp;cache)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::collectVars </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">std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>vars</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::set&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>cache</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Traverse 'e' and push all the i-leaves into 'vars' vector. </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l01904">1904</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.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>, and <a class="el" href="theory_8h_source.html#l00556">CVC3::Theory::isLeaf()</a>.</p>

</div>
</div>
<a class="anchor" id="aee8cdf4bc28c2aa427a49bb8e221b88d"></a><!-- doxytag: member="CVC3::TheoryArith3::processFiniteInterval" ref="aee8cdf4bc28c2aa427a49bb8e221b88d" args="(const Theorem &amp;alphaLEax, const Theorem &amp;bxLEbeta)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::processFiniteInterval </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>alphaLEax</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>bxLEbeta</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Check if alpha &lt;= ax &amp; bx &lt;= beta is a finite interval for integer var 'x', and assert the corresponding constraint. </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l01917">1917</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="theory__arith3_8cpp_source.html#l00212">canon()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l00390">canonPred()</a>, <a class="el" href="theory__arith3_8h_source.html#l00031">d_rules</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theory_8cpp_source.html#l00128">CVC3::Theory::enqueueFact()</a>, <a class="el" href="classCVC3_1_1ArithProofRules.html#a5d419e48b93820624e356ba33efef27c">CVC3::ArithProofRules::finiteInterval()</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="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="theory_8h_source.html#l00714">CVC3::Theory::iffMP()</a>, <a class="el" href="theory__arith3_8h_source.html#l00233">isInteger()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l00068">isIntegerThm()</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#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="classCVC3_1_1ArithProofRules.html#a70e83cfbc207a5d15fedd4adde7e9e76">CVC3::ArithProofRules::multIneqn()</a>, <a class="el" href="theory__arith_8h_source.html#l00156">CVC3::TheoryArith::rat()</a>, <a class="el" href="theory_8h_source.html#l00686">CVC3::Theory::substitutivityRule()</a>, <a class="el" href="theory_8h_source.html#l00677">CVC3::Theory::symmetryRule()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l01975">processFiniteIntervals()</a>.</p>

</div>
</div>
<a class="anchor" id="a6cea6a92562860617a56fd0c4181245e"></a><!-- doxytag: member="CVC3::TheoryArith3::processFiniteIntervals" ref="a6cea6a92562860617a56fd0c4181245e" args="(const Expr &amp;x)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::processFiniteIntervals </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> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>For an integer var 'x', find and process all constraints A &lt;= ax &lt;= A+c. </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l01975">1975</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="theory__arith3_8h_source.html#l00078">d_inequalitiesLeftDB</a>, <a class="el" href="theory__arith3_8h_source.html#l00075">d_inequalitiesRightDB</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__arith3_8h_source.html#l00233">isInteger()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l01917">processFiniteInterval()</a>, and <a class="el" href="cdlist_8h_source.html#l00064">CVC3::CDList&lt; T &gt;::size()</a>.</p>

</div>
</div>
<a class="anchor" id="a981a077978ed5779f8ac4b739d32c084"></a><!-- doxytag: member="CVC3::TheoryArith3::setupRec" ref="a981a077978ed5779f8ac4b739d32c084" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::setupRec </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> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Recursive setup for isolated inequalities (and other new expressions) </p>
<p>This function recursively decends expression tree <b>without caching</b> until it hits a node that is already setup. Be careful on what expressions you are calling it. </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l02001">2001</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.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#l01232">CVC3::Expr::hasFind()</a>, <a class="el" href="theory_8h_source.html#l00673">CVC3::Theory::reflexivityRule()</a>, <a class="el" href="expr_8h_source.html#l01416">CVC3::Expr::setEqNext()</a>, <a class="el" href="expr_8h_source.html#l01405">CVC3::Expr::setFind()</a>, and <a class="el" href="theory__arith3_8cpp_source.html#l02512">setup()</a>.</p>

</div>
</div>
<a class="anchor" id="af8a9ccde61831efd7b0e9093ed1d9770"></a><!-- doxytag: member="CVC3::TheoryArith3::createProofRules3" ref="af8a9ccde61831efd7b0e9093ed1d9770" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1ArithProofRules.html">ArithProofRules</a> * TheoryArith3::createProofRules3 </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="arith__theorem__producer3_8cpp_source.html#l00043">43</a> of file <a class="el" href="arith__theorem__producer3_8cpp_source.html">arith_theorem_producer3.cpp</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l01809">TheoryArith3()</a>.</p>

</div>
</div>
<a class="anchor" id="a1f122f4d960ac5df603cf7759681c95b"></a><!-- doxytag: member="CVC3::TheoryArith3::addSharedTerm" ref="a1f122f4d960ac5df603cf7759681c95b" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::addSharedTerm </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>Notify theory of a new shared term. </p>
<p>When a term e associated with theory i occurs as a child of an expression associated with theory j, the framework calls i-&gt;addSharedTerm(e) and j-&gt;addSharedTerm(e) </p>

<p>Implements <a class="el" href="classCVC3_1_1TheoryArith.html#ae3c23943703bddf1f6f642a4b3ff9503">CVC3::TheoryArith</a>.</p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l02015">2015</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="theory__arith3_8h_source.html#l00108">d_sharedTerms</a>.</p>

</div>
</div>
<a class="anchor" id="a0b160ba7b04b17aba1d9f07c6d776b0e"></a><!-- doxytag: member="CVC3::TheoryArith3::assertFact" ref="a0b160ba7b04b17aba1d9f07c6d776b0e" args="(const Theorem &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::assertFact </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>Assert a new fact to the decision procedure. </p>
<p>Each fact that makes it into the core framework is assigned to exactly one theory: the theory associated with that fact. assertFact is called to inform the theory that a new fact has been assigned to the theory. </p>

<p>Implements <a class="el" href="classCVC3_1_1TheoryArith.html#aef5c0f3d486b56abdd8e488b5b6ede6e">CVC3::TheoryArith</a>.</p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l02020">2020</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="theory_8cpp_source.html#l00148">CVC3::Theory::addSplitter()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l01126">addToBuffer()</a>, <a class="el" href="theory__arith3_8h_source.html#l00091">d_buffer</a>, <a class="el" href="theory__arith3_8h_source.html#l00093">d_bufferIdx</a>, <a class="el" href="theory__arith3_8h_source.html#l00095">d_bufferThres</a>, <a class="el" href="theory__arith3_8h_source.html#l00029">d_diseq</a>, <a class="el" href="theory__arith3_8h_source.html#l00032">d_inModelCreation</a>, <a class="el" href="theory__arith3_8h_source.html#l00031">d_rules</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theory_8cpp_source.html#l00128">CVC3::Theory::enqueueFact()</a>, <a class="el" href="classCVC3_1_1ArithProofRules.html#a94ffe313b29aa63c32d5c3facb3bc917">CVC3::ArithProofRules::expandDarkShadow()</a>, <a class="el" href="classCVC3_1_1ArithProofRules.html#af936b764ef75b0a6f63043d01a819044">CVC3::ArithProofRules::expandGrayShadow()</a>, <a class="el" href="classCVC3_1_1ArithProofRules.html#a32df170ed2ec7fb3d1c7541e6f3dda77">CVC3::ArithProofRules::expandGrayShadow0()</a>, <a class="el" href="theory__arith_8h_source.html#l00227">CVC3::geExpr()</a>, <a class="el" href="theory_8h_source.html#l00096">CVC3::Theory::getCommonRules()</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#l00240">CVC3::Theorem::getLHS()</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="theory__arith_8h_source.html#l00055">CVC3::GRAY_SHADOW</a>, <a class="el" href="classCVC3_1_1ArithProofRules.html#a597adbe8879c33bffefae537a5bca7c0">CVC3::ArithProofRules::grayShadowConst()</a>, <a class="el" href="theory__arith_8h_source.html#l00225">CVC3::gtExpr()</a>, <a class="el" href="debug_8h_source.html#l00406">IF_DEBUG</a>, <a class="el" href="theory_8h_source.html#l00714">CVC3::Theory::iffMP()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__arith_8h_source.html#l00190">CVC3::isDarkShadow()</a>, <a class="el" href="expr_8h_source.html#l00355">CVC3::Expr::isFalse()</a>, <a class="el" href="theory__arith_8h_source.html#l00191">CVC3::isGrayShadow()</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#l00186">CVC3::isLT()</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="classCVC3_1_1ArithProofRules.html#aee47bda46999143ea29d7d4ff0be89d4">CVC3::ArithProofRules::negatedInequality()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l01059">processBuffer()</a>, <a class="el" href="cdlist_8h_source.html#l00066">CVC3::CDList&lt; T &gt;::push_back()</a>, <a class="el" href="theory_8cpp_source.html#l00103">CVC3::Theory::setInconsistent()</a>, <a class="el" href="theory_8cpp_source.html#l00119">CVC3::Theory::simplify()</a>, <a class="el" href="theory_8h_source.html#l00430">CVC3::Theory::simplifyExpr()</a>, <a class="el" href="cdlist_8h_source.html#l00064">CVC3::CDList&lt; T &gt;::size()</a>, <a class="el" href="classCVC3_1_1ArithProofRules.html#a4b6ef5b29b05bada6ea2df72873abea6">CVC3::ArithProofRules::splitGrayShadow()</a>, <a class="el" href="classCVC3_1_1CommonProofRules.html#a776c827bb6e3b889234429c49ae9ad6f">CVC3::CommonProofRules::substitutivityRule()</a>, <a class="el" href="theory_8h_source.html#l00677">CVC3::Theory::symmetryRule()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>, and <a class="el" href="theory_8h_source.html#l00681">CVC3::Theory::transitivityRule()</a>.</p>

</div>
</div>
<a class="anchor" id="ae44a95809991c134c6ed6a8c795a06bc"></a><!-- doxytag: member="CVC3::TheoryArith3::refineCounterExample" ref="ae44a95809991c134c6ed6a8c795a06bc" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::refineCounterExample </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Process disequalities from the arrangement for model generation. </p>

<p>Implements <a class="el" href="classCVC3_1_1TheoryArith.html#aa438bb4c5ceaeca9b2bb692d725d6ce8">CVC3::TheoryArith</a>.</p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l02147">2147</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="theory_8cpp_source.html#l00148">CVC3::Theory::addSplitter()</a>, <a class="el" href="cdmap_8h_source.html#l00257">CVC3::CDMap&lt; Key, Data, HashFcn &gt;::begin()</a>, <a class="el" href="theory__arith3_8h_source.html#l00032">d_inModelCreation</a>, <a class="el" href="theory__arith3_8h_source.html#l00108">d_sharedTerms</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="cdmap_8h_source.html#l00258">CVC3::CDMap&lt; Key, Data, HashFcn &gt;::end()</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="theory_8h_source.html#l00503">CVC3::Theory::findExpr()</a>, <a class="el" href="theory_8cpp_source.html#l00383">CVC3::Theory::getBaseType()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="theory__arith_8h_source.html#l00173">CVC3::isReal()</a>, <a class="el" href="theory_8h_source.html#l00430">CVC3::Theory::simplifyExpr()</a>, <a class="el" href="type_8h_source.html#l00080">CVC3::Type::toString()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p>

</div>
</div>
<a class="anchor" id="a6e35b7340b2370e2ac9ea6b6892ec479"></a><!-- doxytag: member="CVC3::TheoryArith3::computeModelBasic" ref="a6e35b7340b2370e2ac9ea6b6892ec479" args="(const std::vector&lt; Expr &gt; &amp;v)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::computeModelBasic </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>v</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Assign concrete values to basic-type variables in v. </p>

<p>Implements <a class="el" href="classCVC3_1_1TheoryArith.html#abb0dc7f8453ab4327aca42a9bd394ca2">CVC3::TheoryArith</a>.</p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l02282">2282</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="theory__arith3_8cpp_source.html#l02248">assignVariables()</a>, <a class="el" href="theory__arith3_8h_source.html#l00032">d_inModelCreation</a>, <a class="el" href="theory_8h_source.html#l00503">CVC3::Theory::findExpr()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p>

</div>
</div>
<a class="anchor" id="ad9f6d84e930741b9b6675dec46ba9b26"></a><!-- doxytag: member="CVC3::TheoryArith3::computeModel" ref="ad9f6d84e930741b9b6675dec46ba9b26" args="(const Expr &amp;e, std::vector&lt; Expr &gt; &amp;vars)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::computeModel </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">std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>vars</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Compute the value of a compound variable from the more primitive ones. </p>
<p>The more primitive variables for e are already assigned concrete values, and are available through <a class="el" href="classCVC3_1_1Theory.html#a4867f332c809f6efe8f01ffa45c32db3" title="Fetch the concrete assignment to the variable during model generation.">getModelValue()</a>.</p>
<p>The new value for e must be assigned using <a class="el" href="classCVC3_1_1Theory.html#a917b117d28514f486b296568fcd1cfd1" title="Assigns t a concrete value val. Used in model generation.">assignValue()</a> method.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">e</td><td>is the compound type expression to assign a value;</td></tr>
    <tr><td class="paramname">vars</td><td>are the variables actually assigned. Normally, 'e' is the only element of vars. However, e.g. in the case of uninterpreted functions, assigning 'f' means assigning all relevant applications of 'f' to constant values (f(0), f(5), etc.). Such applications might not be known before the model is constructed (they may be of the form f(x), f(y+z), etc., where x,y,z are still unassigned).</td></tr>
  </table>
  </dd>
</dl>
<p>Populating 'vars' is an opportunity for a DP to change the set of top-level "variables" to assign, if needed. In particular, it may drop 'e' from the model entirely, if it is already a concrete value by itself. </p>

<p>Implements <a class="el" href="classCVC3_1_1TheoryArith.html#af775fc35d6a629ec19e2ffb67ff19dd4">CVC3::TheoryArith</a>.</p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l02305">2305</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="theory_8cpp_source.html#l00162">CVC3::Theory::assignValue()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theory_8h_source.html#l00503">CVC3::Theory::findExpr()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, <a class="el" href="theory_8cpp_source.html#l00119">CVC3::Theory::simplify()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="ad92218d82a1bf0005a223e6ed3b3726b"></a><!-- doxytag: member="CVC3::TheoryArith3::checkSat" ref="ad92218d82a1bf0005a223e6ed3b3726b" args="(bool fullEffort)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::checkSat </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>fullEffort</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Check for satisfiability in the theory. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">fullEffort</td><td>when it is false, checkSat can do as much or as little work as it likes, though simple inferences and checks for consistency should be done to increase efficiency. If fullEffort is true, checkSat must check whether the set of facts given by assertFact together with the arrangement of shared terms (provided by addSharedTerm) induced by the global find database equivalence relation are satisfiable. If satisfiable, checkSat does nothing.</td></tr>
  </table>
  </dd>
</dl>
<p>If satisfiability can be acheived by merging some of the shared terms, a new fact must be enqueued using enqueueFact (this fact need not be a literal). If there is no way to make things satisfiable, setInconsistent must be called. </p>

<p>Implements <a class="el" href="classCVC3_1_1TheoryArith.html#a1a93522e582d9381e461972125984ea4">CVC3::TheoryArith</a>.</p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l02124">2124</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="theory__arith3_8h_source.html#l00091">d_buffer</a>, <a class="el" href="theory__arith3_8h_source.html#l00093">d_bufferIdx</a>, <a class="el" href="theory__arith3_8h_source.html#l00029">d_diseq</a>, <a class="el" href="theory__arith3_8h_source.html#l00030">d_diseqIdx</a>, <a class="el" href="theory__arith3_8h_source.html#l00032">d_inModelCreation</a>, <a class="el" href="theory__arith3_8h_source.html#l00031">d_rules</a>, <a class="el" href="classCVC3_1_1ArithProofRules.html#af180898d9f1d255ef3a2f528ecd8ac65">CVC3::ArithProofRules::diseqToIneq()</a>, <a class="el" href="theory_8cpp_source.html#l00128">CVC3::Theory::enqueueFact()</a>, <a class="el" href="theory_8cpp_source.html#l00097">CVC3::Theory::inconsistent()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l01059">processBuffer()</a>, <a class="el" href="cdlist_8h_source.html#l00064">CVC3::CDList&lt; T &gt;::size()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p>

</div>
</div>
<a class="anchor" id="a372ca4601f982473511cd0fc55c83374"></a><!-- doxytag: member="CVC3::TheoryArith3::rewrite" ref="a372ca4601f982473511cd0fc55c83374" 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> TheoryArith3::rewrite </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>Theory-specific rewrite rules. </p>
<p>By default, rewrite just returns a reflexive theorem stating that the input expression is equivalent to itself. However, rewrite is allowed to return any theorem which describes how the input expression is equivalent to some new expression. rewrite should be used to perform simplifications, normalization, and any other preprocessing on theory-specific expressions that needs to be done. </p>

<p>Implements <a class="el" href="classCVC3_1_1TheoryArith.html#aaa06e89f76f2313953a35d867c33942f">CVC3::TheoryArith</a>.</p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l02387">2387</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="theory__arith3_8cpp_source.html#l00212">canon()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l00404">canonPredEquiv()</a>, <a class="el" href="classCVC3_1_1ArithProofRules.html#a8dd6bb6fed9a4745469b0cad5ed4a139">CVC3::ArithProofRules::constPredicate()</a>, <a class="el" href="theory__arith3_8h_source.html#l00031">d_rules</a>, <a class="el" href="theory__arith_8h_source.html#l00054">CVC3::DARK_SHADOW</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="kinds_8h_source.html#l00061">EQ</a>, <a class="el" href="classCVC3_1_1ArithProofRules.html#aff4a01da77770b0b60089444c83c9cef">CVC3::ArithProofRules::flipInequality()</a>, <a class="el" href="theory__arith_8h_source.html#l00052">CVC3::GE</a>, <a class="el" href="theory_8h_source.html#l00096">CVC3::Theory::getCommonRules()</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="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="theory__arith_8h_source.html#l00055">CVC3::GRAY_SHADOW</a>, <a class="el" href="theory__arith_8h_source.html#l00051">CVC3::GT</a>, <a class="el" href="classCVC3_1_1CommonProofRules.html#ae5a0a67c59ba15d84e900fdccc7653ca">CVC3::CommonProofRules::iffTrue()</a>, <a class="el" href="theory__arith_8h_source.html#l00053">CVC3::IS_INTEGER</a>, <a class="el" href="expr_8h_source.html#l00406">CVC3::Expr::isAbsLiteral()</a>, <a class="el" href="expr_8cpp_source.html#l00550">CVC3::Expr::isAtomic()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</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__arith3_8cpp_source.html#l00076">isIntegerDerive()</a>, <a class="el" href="theory_8h_source.html#l00556">CVC3::Theory::isLeaf()</a>, <a class="el" href="theorem_8h_source.html#l00164">CVC3::Theorem::isNull()</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#l01021">CVC3::Expr::isTerm()</a>, <a class="el" href="theory__arith_8h_source.html#l00050">CVC3::LE</a>, <a class="el" href="theory_8cpp_source.html#l00557">CVC3::Theory::leavesAreSimp()</a>, <a class="el" href="theory__arith_8h_source.html#l00049">CVC3::LT</a>, <a class="el" href="classCVC3_1_1ArithProofRules.html#aee47bda46999143ea29d7d4ff0be89d4">CVC3::ArithProofRules::negatedInequality()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02319">normalize()</a>, <a class="el" href="kinds_8h_source.html#l00066">NOT</a>, <a class="el" href="theory_8h_source.html#l00673">CVC3::Theory::reflexivityRule()</a>, <a class="el" href="classCVC3_1_1CommonProofRules.html#a338cafc978d9b6a447e8d58af42d7e5b">CVC3::CommonProofRules::rewriteUsingSymmetry()</a>, <a class="el" href="classCVC3_1_1ArithProofRules.html#acde77bf4aa73ff6b9a079b372ed7cc51">CVC3::ArithProofRules::rightMinusLeft()</a>, <a class="el" href="expr_8h_source.html#l01457">CVC3::Expr::setRewriteNormal()</a>, <a class="el" href="theory_8cpp_source.html#l00252">CVC3::Theory::theoryOf()</a>, <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>, <a class="el" href="theory_8h_source.html#l00681">CVC3::Theory::transitivityRule()</a>, and <a class="el" href="theory_8cpp_source.html#l00918">CVC3::Theory::typePred()</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02534">update()</a>.</p>

</div>
</div>
<a class="anchor" id="a9a07172dc5440407baddcc225166651e"></a><!-- doxytag: member="CVC3::TheoryArith3::setup" ref="a9a07172dc5440407baddcc225166651e" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::setup </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>Set up the term e for call-backs when e or its children change. </p>
<p>setup is called once for each expression associated with the theory. It is typically used to setup theory-specific data for an expression and to add call-back information for use with update. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classCVC3_1_1TheoryArith3.html#a91d859d6893c57f28679590a23a32f15" title="Notify a theory of a new equality.">update</a> </dd></dl>

<p>Implements <a class="el" href="classCVC3_1_1TheoryArith.html#a76e011a1d78cac54d5bd87ad1b51ccb7">CVC3::TheoryArith</a>.</p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l02512">2512</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="expr_8cpp_source.html#l00517">CVC3::Expr::addToNotify()</a>, <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="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__arith_8h_source.html#l00053">CVC3::IS_INTEGER</a>, <a class="el" href="theory__arith_8h_source.html#l00190">CVC3::isDarkShadow()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="theory__arith_8h_source.html#l00191">CVC3::isGrayShadow()</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#l00177">CVC3::isRational()</a>, <a class="el" href="expr_8h_source.html#l01021">CVC3::Expr::isTerm()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02001">setupRec()</a>.</p>

</div>
</div>
<a class="anchor" id="a91d859d6893c57f28679590a23a32f15"></a><!-- doxytag: member="CVC3::TheoryArith3::update" ref="a91d859d6893c57f28679590a23a32f15" args="(const Theorem &amp;e, const Expr &amp;d)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::update </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>
        </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>Notify a theory of a new equality. </p>
<p>update is a call-back used by the notify mechanism of the core theory. It works as follows. When an equation t1 = t2 makes it into the core framework, the two find equivalence classes for t1 and t2 are merged. The result is that t2 is the new equivalence class representative and t1 is no longer an equivalence class representative. When this happens, the notify list of t1 is traversed. Notify list entries consist of a theory and an expression d. For each entry (i,d), i-&gt;update(e, d) is called, where e is the theorem corresponding to the equality t1=t2.</p>
<p>To add the entry (i,d) to a term t1's notify list, a call must be made to t1.addNotify(i,d). This is typically done in setup.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classCVC3_1_1TheoryArith3.html#a9a07172dc5440407baddcc225166651e" title="Set up the term e for call-backs when e or its children change.">setup</a> </dd></dl>

<p>Implements <a class="el" href="classCVC3_1_1TheoryArith.html#a065b02fa3e5ea7bf335b94ae42102cad">CVC3::TheoryArith</a>.</p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l02534">2534</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="theory_8cpp_source.html#l00142">CVC3::Theory::assertEqualities()</a>, <a class="el" href="theory__arith_8cpp_source.html#l00257">CVC3::TheoryArith::canonSimp()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theory_8cpp_source.html#l00128">CVC3::Theory::enqueueFact()</a>, <a class="el" href="theory_8cpp_source.html#l00310">CVC3::Theory::find()</a>, <a class="el" href="theory_8h_source.html#l00096">CVC3::Theory::getCommonRules()</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#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="expr_8h_source.html#l01232">CVC3::Expr::hasFind()</a>, <a class="el" href="debug_8h_source.html#l00406">IF_DEBUG</a>, <a class="el" href="theory_8h_source.html#l00714">CVC3::Theory::iffMP()</a>, <a class="el" href="theory_8cpp_source.html#l00097">CVC3::Theory::inconsistent()</a>, <a class="el" href="theory__arith_8h_source.html#l00192">CVC3::isIneq()</a>, <a class="el" href="theory_8cpp_source.html#l00557">CVC3::Theory::leavesAreSimp()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02387">rewrite()</a>, <a class="el" href="theory_8h_source.html#l00686">CVC3::Theory::substitutivityRule()</a>, <a class="el" href="theory_8h_source.html#l00677">CVC3::Theory::symmetryRule()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>, <a class="el" href="theory_8h_source.html#l00681">CVC3::Theory::transitivityRule()</a>, and <a class="el" href="theory_8h_source.html#l00582">CVC3::Theory::trueExpr()</a>.</p>

</div>
</div>
<a class="anchor" id="a3faa3983fb7a7a37c24ccbf500528bbe"></a><!-- doxytag: member="CVC3::TheoryArith3::solve" ref="a3faa3983fb7a7a37c24ccbf500528bbe" 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> TheoryArith3::solve </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>An optional solver. </p>
<p>The solve method can be used to implement a Shostak-style solver. Since solvers do not in general combine, the following technique is used. One theory is designated as the primary solver (in our case, it is the theory of arithmetic). For each equation that enters the core framework, the primary solver is called to ensure that the equation is in solved form with respect to the primary theory.</p>
<p>After the primary solver, the solver for the theory associated with the equation is called. This solver can do whatever it likes, as long as the result is still in solved form with respect to the primary solver. This is a slight generalization of what is described in my (Clark)'s PhD thesis. </p>

<p>Implements <a class="el" href="classCVC3_1_1TheoryArith.html#a79b7f024bad6bbac7520517071957404">CVC3::TheoryArith</a>.</p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l02569">2569</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theory__arith3_8cpp_source.html#l00432">doSolve()</a>, <a class="el" href="theorem_8cpp_source.html#l00240">CVC3::Theorem::getLHS()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="theory__arith_8h_source.html#l00153">CVC3::TheoryArith::intType()</a>, <a class="el" href="theory__arith3_8h_source.html#l00233">isInteger()</a>, <a class="el" href="theory_8h_source.html#l00556">CVC3::Theory::isLeaf()</a>, <a class="el" href="theory_8cpp_source.html#l00546">CVC3::Theory::isLeafIn()</a>, <a class="el" href="theorem_8cpp_source.html#l00224">CVC3::Theorem::isRewrite()</a>, <a class="el" href="expr_8h_source.html#l01021">CVC3::Expr::isTerm()</a>, and <a class="el" href="theory_8h_source.html#l00677">CVC3::Theory::symmetryRule()</a>.</p>

</div>
</div>
<a class="anchor" id="ab609e73ab4f8ff747730845f864ef18a"></a><!-- doxytag: member="CVC3::TheoryArith3::checkAssertEqInvariant" ref="ab609e73ab4f8ff747730845f864ef18a" args="(const Theorem &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::checkAssertEqInvariant </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>A debug check used by the primary solver. </p>

<p>Implements <a class="el" href="classCVC3_1_1TheoryArith.html#ae84d7601b3361fe773127a73194160f9">CVC3::TheoryArith</a>.</p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l02643">2643</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="classCVC3_1_1CommonProofRules.html#a3f3592ac74d0aa0caa3b9224ea7e61f4">CVC3::CommonProofRules::andElim()</a>, <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__arith_8cpp_source.html#l00257">CVC3::TheoryArith::canonSimp()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theory_8h_source.html#l00096">CVC3::Theory::getCommonRules()</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#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="expr_8h_source.html#l01232">CVC3::Expr::hasFind()</a>, <a class="el" href="expr_8h_source.html#l00355">CVC3::Expr::isFalse()</a>, <a class="el" href="theory_8h_source.html#l00556">CVC3::Theory::isLeaf()</a>, <a class="el" href="theory_8cpp_source.html#l00546">CVC3::Theory::isLeafIn()</a>, <a class="el" href="theorem_8cpp_source.html#l00224">CVC3::Theorem::isRewrite()</a>, <a class="el" href="expr_8h_source.html#l01021">CVC3::Expr::isTerm()</a>, <a class="el" href="theory_8cpp_source.html#l00557">CVC3::Theory::leavesAreSimp()</a>, and <a class="el" href="theory__arith_8cpp_source.html#l00283">CVC3::TheoryArith::recursiveCanonSimpCheck()</a>.</p>

</div>
</div>
<a class="anchor" id="a27cd5a977820921847abb91ffd728165"></a><!-- doxytag: member="CVC3::TheoryArith3::checkType" ref="a27cd5a977820921847abb91ffd728165" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::checkType </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>Check that e is a valid <a class="el" href="classCVC3_1_1Type.html" title="MS C++ specific settings.">Type</a> expr. </p>

<p>Implements <a class="el" href="classCVC3_1_1TheoryArith.html#afb944017844bcb9681fa4c223d7e7f8d">CVC3::TheoryArith</a>.</p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l02695">2695</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.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="theory_8h_source.html#l00090">CVC3::Theory::getEM()</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#l00038">CVC3::INT</a>, <a class="el" href="theory__arith_8h_source.html#l00178">CVC3::isIntegerConst()</a>, <a class="el" href="theory__arith_8h_source.html#l00037">CVC3::REAL</a>, <a class="el" href="theory__arith_8h_source.html#l00039">CVC3::SUBRANGE</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a8b64f176481b2c25cf42e31efe2e64fd"></a><!-- doxytag: member="CVC3::TheoryArith3::finiteTypeInfo" ref="a8b64f176481b2c25cf42e31efe2e64fd" args="(Expr &amp;e, Unsigned &amp;n, bool enumerate, bool computeSize)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespaceCVC3.html#af969e724f8b7016909f5804e8cea3e54">Cardinality</a> TheoryArith3::finiteTypeInfo </td>
          <td>(</td>
          <td class="paramtype"><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"><a class="el" href="classCVC3_1_1Unsigned.html">Unsigned</a> &amp;&#160;</td>
          <td class="paramname"><em>n</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>enumerate</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>computeSize</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Compute information related to finiteness of types. </p>
<p>Used by the TypeComputer defined in <a class="el" href="classCVC3_1_1TheoryCore.html" title="This theory handles the built-in logical connectives plus equality. It also handles the registration ...">TheoryCore</a> (theories should not call this funtion directly -- they should use the methods in <a class="el" href="classCVC3_1_1Type.html" title="MS C++ specific settings.">Type</a> instead). Each theory should implement this if it contains any types that could be non-infinite.</p>
<p>1. Returns Cardinality of the type (finite, infinite, or unknown) 2. If cardinality = finite and enumerate is true, sets e to the nth element of the type if it can sets e to NULL if n is out of bounds or if unable to compute nth element 3. If cardinality = finite and computeSize is true, sets n to the size of the type if it can sets n to 0 otherwise </p>

<p>Implements <a class="el" href="classCVC3_1_1TheoryArith.html#a56b40e5b07a5f409415f343013fb478b">CVC3::TheoryArith</a>.</p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l02719">2719</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l00081">CVC3::CARD_FINITE</a>, <a class="el" href="expr_8h_source.html#l00082">CVC3::CARD_INFINITE</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#ae6d4bedf76175b8f91283f610b3eb7d0">CVC3::Rational::getUnsigned()</a>, <a class="el" href="theory__arith_8h_source.html#l00156">CVC3::TheoryArith::rat()</a>, and <a class="el" href="theory__arith_8h_source.html#l00039">CVC3::SUBRANGE</a>.</p>

</div>
</div>
<a class="anchor" id="a71487fca123272ebec2f37b6fecfbf3e"></a><!-- doxytag: member="CVC3::TheoryArith3::computeType" ref="a71487fca123272ebec2f37b6fecfbf3e" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::computeType </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>Compute and store the type of e. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">e</td><td>is the expression whose type is computed.</td></tr>
  </table>
  </dd>
</dl>
<p>This function computes the type of the top-level operator of e, and recurses into children using getType(), if necessary. </p>

<p>Implements <a class="el" href="classCVC3_1_1TheoryArith.html#a6abf2a3ab02d2242d7ff0673df934405">CVC3::TheoryArith</a>.</p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l02747">2747</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory_8h_source.html#l00576">CVC3::Theory::boolType()</a>, <a class="el" href="theory__arith_8h_source.html#l00073">CVC3::TheoryArith::d_intType</a>, <a class="el" href="theory__arith_8h_source.html#l00072">CVC3::TheoryArith::d_realType</a>, <a class="el" href="theory__arith_8h_source.html#l00054">CVC3::DARK_SHADOW</a>, <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="theory__arith_8h_source.html#l00052">CVC3::GE</a>, <a class="el" href="theory_8cpp_source.html#l00383">CVC3::Theory::getBaseType()</a>, <a class="el" href="theory_8h_source.html#l00090">CVC3::Theory::getEM()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr__manager_8cpp_source.html#l00405">CVC3::ExprManager::getKindName()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="theory__arith_8h_source.html#l00055">CVC3::GRAY_SHADOW</a>, <a class="el" href="theory__arith_8h_source.html#l00051">CVC3::GT</a>, <a class="el" href="theory__arith_8h_source.html#l00053">CVC3::IS_INTEGER</a>, <a class="el" href="theory__arith3_8h_source.html#l00233">isInteger()</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="theory__arith_8h_source.html#l00050">CVC3::LE</a>, <a class="el" href="theory__arith_8h_source.html#l00049">CVC3::LT</a>, <a class="el" href="theory__arith_8h_source.html#l00043">CVC3::MINUS</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>, <a class="el" href="theory__arith_8h_source.html#l00033">CVC3::REAL_CONST</a>, <a class="el" href="expr_8h_source.html#l01427">CVC3::Expr::setType()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, <a class="el" href="type_8h_source.html#l00080">CVC3::Type::toString()</a>, and <a class="el" href="theory__arith_8h_source.html#l00041">CVC3::UMINUS</a>.</p>

</div>
</div>
<a class="anchor" id="a6d158689e4805c7d62a7a06b919e3d53"></a><!-- doxytag: member="CVC3::TheoryArith3::computeBaseType" ref="a6d158689e4805c7d62a7a06b919e3d53" args="(const Type &amp;t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Type.html">Type</a> TheoryArith3::computeBaseType </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;&#160;</td>
          <td class="paramname"><em>tp</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Compute the base type of the top-level operator of an arbitrary type. </p>

<p>Implements <a class="el" href="classCVC3_1_1TheoryArith.html#a1f99b1033faaf9b5911edcd667872ac7">CVC3::TheoryArith</a>.</p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l02830">2830</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="debug_8h_source.html#l00406">IF_DEBUG</a>, <a class="el" href="theory__arith_8h_source.html#l00038">CVC3::INT</a>, <a class="el" href="theory__arith_8h_source.html#l00037">CVC3::REAL</a>, <a class="el" href="theory__arith_8h_source.html#l00152">CVC3::TheoryArith::realType()</a>, <a class="el" href="theory__arith_8h_source.html#l00039">CVC3::SUBRANGE</a>, and <a class="el" href="type_8h_source.html#l00080">CVC3::Type::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a00b11e39bb30b25373399c0cd20f6dd0"></a><!-- doxytag: member="CVC3::TheoryArith3::computeModelTerm" ref="a00b11e39bb30b25373399c0cd20f6dd0" args="(const Expr &amp;e, std::vector&lt; Expr &gt; &amp;v)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::computeModelTerm </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">std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>v</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Add variables from 'e' to 'v' for constructing a concrete model. </p>
<p>If e is already of primitive type, do NOT add it to v. </p>

<p>Implements <a class="el" href="classCVC3_1_1TheoryArith.html#a73c222d70c5bbfc539041095df6a8321">CVC3::TheoryArith</a>.</p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l02597">2597</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theory__arith_8h_source.html#l00045">CVC3::DIVIDE</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="theory_8h_source.html#l00503">CVC3::Theory::findExpr()</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>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p>

</div>
</div>
<a class="anchor" id="a0aecfd1729c28dfb1229372a65edb3ad"></a><!-- doxytag: member="CVC3::TheoryArith3::computeTypePred" ref="a0aecfd1729c28dfb1229372a65edb3ad" args="(const Type &amp;t, 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> TheoryArith3::computeTypePred </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;&#160;</td>
          <td class="paramname"><em>t</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><a class="el" href="classCVC3_1_1Theory.html" title="Base class for theories.">Theory</a> specific computation of the subtyping predicate for type t applied to the expression e. </p>
<p>By default returns true. Each theory needs to compute subtype predicates for the types associated with it. So, for example, the theory of records will take a record type [# f1: T1, f2: T2 #] and an expression e and will return the subtyping predicate for e, namely: computeTypePred(T1, e.f1) AND computeTypePred(T2, e.f2) </p>

<p>Implements <a class="el" href="classCVC3_1_1TheoryArith.html#a3b37be00ae123493d74dfd6269bb587a">CVC3::TheoryArith</a>.</p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l02625">2625</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l00945">CVC3::andExpr()</a>, <a class="el" href="expr_8h_source.html#l01156">CVC3::Expr::getEM()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theory__arith_8h_source.html#l00038">CVC3::INT</a>, <a class="el" href="theory__arith_8h_source.html#l00053">CVC3::IS_INTEGER</a>, <a class="el" href="theory__arith_8h_source.html#l00223">CVC3::leExpr()</a>, <a class="el" href="theory__arith_8h_source.html#l00039">CVC3::SUBRANGE</a>, and <a class="el" href="expr__manager_8h_source.html#l00280">CVC3::ExprManager::trueExpr()</a>.</p>

</div>
</div>
<a class="anchor" id="af49bfb7657ee001bbb3caeeb04630847"></a><!-- doxytag: member="CVC3::TheoryArith3::computeTCC" ref="af49bfb7657ee001bbb3caeeb04630847" args="(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> TheoryArith3::computeTCC </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>Compute and cache the TCC of e. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">e</td><td>is an expression (term or formula). This function computes the TCC of e which is true iff the expression is defined.</td></tr>
  </table>
  </dd>
</dl>
<p>This function computes the TCC or predicate of the top-level operator of e, and recurses into children using <a class="el" href="classCVC3_1_1Theory.html#af38bdeb162a9ab9bd81ce40f598f608f" title="Compute the TCC of e, or the subtyping predicate, if e is a type.">getTCC()</a>, if necessary.</p>
<p>The default implementation is to compute TCCs recursively for all children, and return their conjunction. </p>

<p>Implements <a class="el" href="classCVC3_1_1TheoryArith.html#a076c8333b4e8ce62955e1c0701975487">CVC3::TheoryArith</a>.</p>

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

<p>References <a class="el" href="expr_8h_source.html#l00941">CVC3::Expr::andExpr()</a>, <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory_8cpp_source.html#l00081">CVC3::Theory::computeTCC()</a>, <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>, and <a class="el" href="theory__arith_8h_source.html#l00156">CVC3::TheoryArith::rat()</a>.</p>

</div>
</div>
<a class="anchor" id="a016c76766dead2d406c96f51138f72a3"></a><!-- doxytag: member="CVC3::TheoryArith3::print" ref="a016c76766dead2d406c96f51138f72a3" args="(ExprStream &amp;os, const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1ExprStream.html">ExprStream</a> &amp; TheoryArith3::print </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classCVC3_1_1ExprStream.html">ExprStream</a> &amp;&#160;</td>
          <td class="paramname"><em>os</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>Theory-specific pretty-printing. </p>
<p>By default, print the top node in AST, and resume pretty-printing the children. The same call e.print(os) can be used in DP-specific printers to use AST printing for the given node. In fact, it is strongly recommended to add e.print(os) as the default for all the cases/kinds that are not handled by the particular pretty-printer. </p>

<p>Implements <a class="el" href="classCVC3_1_1TheoryArith.html#a879d4967986103b989d7003dd815783f">CVC3::TheoryArith</a>.</p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l02966">2966</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.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="theory__arith_8h_source.html#l00054">CVC3::DARK_SHADOW</a>, <a class="el" href="theory__arith_8h_source.html#l00045">CVC3::DIVIDE</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</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#l00055">CVC3::GRAY_SHADOW</a>, <a class="el" href="theory__arith_8h_source.html#l00051">CVC3::GT</a>, <a class="el" href="theory__arith_8h_source.html#l00038">CVC3::INT</a>, <a class="el" href="theory__arith_8h_source.html#l00053">CVC3::IS_INTEGER</a>, <a class="el" href="theory__arith_8h_source.html#l00174">CVC3::isInt()</a>, <a class="el" href="theory__arith3_8h_source.html#l00233">isInteger()</a>, <a class="el" href="expr__stream_8h_source.html#l00165">CVC3::ExprStream::lang()</a>, <a class="el" href="theory__arith_8h_source.html#l00050">CVC3::LE</a>, <a class="el" href="lang_8h_source.html#l00036">CVC3::LISP_LANG</a>, <a class="el" href="theory__arith_8h_source.html#l00049">CVC3::LT</a>, <a class="el" href="theory__arith_8h_source.html#l00043">CVC3::MINUS</a>, <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>, <a class="el" href="theory__arith_8h_source.html#l00034">CVC3::NEGINF</a>, <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>, <a class="el" href="theory__arith_8h_source.html#l00035">CVC3::POSINF</a>, <a class="el" href="theory__arith_8h_source.html#l00046">CVC3::POW</a>, <a class="el" href="lang_8h_source.html#l00032">CVC3::PRESENTATION_LANG</a>, <a class="el" href="expr_8cpp_source.html#l00362">CVC3::Expr::print()</a>, <a class="el" href="expr_8cpp_source.html#l00400">CVC3::Expr::printAST()</a>, <a class="el" href="theory__arith_8cpp_source.html#l00054">CVC3::TheoryArith::printRational()</a>, <a class="el" href="expr__stream_8cpp_source.html#l00298">CVC3::push()</a>, <a class="el" href="kinds_8h_source.html#l00037">RATIONAL_EXPR</a>, <a class="el" href="theory__arith_8h_source.html#l00037">CVC3::REAL</a>, <a class="el" href="theory__arith_8h_source.html#l00033">CVC3::REAL_CONST</a>, <a class="el" href="lang_8h_source.html#l00043">CVC3::SIMPLIFY_LANG</a>, <a class="el" href="lang_8h_source.html#l00034">CVC3::SMTLIB_LANG</a>, <a class="el" href="lang_8h_source.html#l00052">CVC3::SMTLIB_V2_LANG</a>, <a class="el" href="expr__stream_8cpp_source.html#l00326">CVC3::space()</a>, <a class="el" href="theory__arith_8h_source.html#l00039">CVC3::SUBRANGE</a>, <a class="el" href="lang_8h_source.html#l00046">CVC3::TPTP_LANG</a>, and <a class="el" href="theory__arith_8h_source.html#l00041">CVC3::UMINUS</a>.</p>

</div>
</div>
<a class="anchor" id="a26016acc412642afc4712d68dd4af25d"></a><!-- doxytag: member="CVC3::TheoryArith3::parseExprOp" ref="a26016acc412642afc4712d68dd4af25d" args="(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> TheoryArith3::parseExprOp </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>Theory-specific parsing implemented by the DP. </p>

<p>Implements <a class="el" href="classCVC3_1_1TheoryArith.html#a900379e03f4f05409fa4a60e2db4e65d">CVC3::TheoryArith</a>.</p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l02855">2855</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.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="theory__arith_8h_source.html#l00045">CVC3::DIVIDE</a>, <a class="el" href="theory__arith_8h_source.html#l00219">CVC3::divideExpr()</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</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#l01156">CVC3::Expr::getEM()</a>, <a class="el" href="theory_8h_source.html#l00090">CVC3::Theory::getEM()</a>, <a class="el" href="expr__manager_8cpp_source.html#l00412">CVC3::ExprManager::getKind()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</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="kinds_8h_source.html#l00046">ID</a>, <a class="el" href="theory__arith_8h_source.html#l00038">CVC3::INT</a>, <a class="el" href="theory__arith_8h_source.html#l00047">CVC3::INTDIV</a>, <a class="el" href="theory__arith_8h_source.html#l00053">CVC3::IS_INTEGER</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>, <a class="el" href="theory__arith_8h_source.html#l00043">CVC3::MINUS</a>, <a class="el" href="theory__arith_8h_source.html#l00205">CVC3::minusExpr()</a>, <a class="el" href="theory__arith_8h_source.html#l00048">CVC3::MOD</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>, <a class="el" href="theory__arith_8h_source.html#l00034">CVC3::NEGINF</a>, <a class="el" href="expr__manager_8h_source.html#l00454">CVC3::ExprManager::newLeafExpr()</a>, <a class="el" href="kinds_8h_source.html#l00032">NULL_KIND</a>, <a class="el" href="theory_8cpp_source.html#l00519">CVC3::Theory::parseExpr()</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>, <a class="el" href="theory__arith_8h_source.html#l00035">CVC3::POSINF</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>, <a class="el" href="kinds_8h_source.html#l00044">RAW_LIST</a>, <a class="el" href="theory__arith_8h_source.html#l00037">CVC3::REAL</a>, <a class="el" href="theory__arith_8h_source.html#l00039">CVC3::SUBRANGE</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>, <a class="el" href="theory__arith_8h_source.html#l00041">CVC3::UMINUS</a>, and <a class="el" href="theory__arith_8h_source.html#l00197">CVC3::uminusExpr()</a>.</p>

</div>
</div>
<a class="anchor" id="a84f83db057e52785fe6ee6c7036668d2"></a><!-- doxytag: member="CVC3::TheoryArith3::currentMaxCoefficient" ref="a84f83db057e52785fe6ee6c7036668d2" args="(Expr var)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Rational.html">Rational</a> TheoryArith3::currentMaxCoefficient </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classCVC3_1_1Expr.html">Expr</a>&#160;</td>
          <td class="paramname"><em>var</em></td><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the current maximal coefficient of the variable.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">var</td><td>the variable. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l01571">1571</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="cdmap_8h_source.html#l00258">CVC3::CDMap&lt; Key, Data, HashFcn &gt;::end()</a>, and <a class="el" href="cdmap_8h_source.html#l00303">CVC3::CDMap&lt; Key, Data, HashFcn &gt;::find()</a>.</p>

</div>
</div>
<a class="anchor" id="a16d4eb1ecd6adb8fde86f2c3ce4d6ef1"></a><!-- doxytag: member="CVC3::TheoryArith3::fixCurrentMaxCoefficient" ref="a16d4eb1ecd6adb8fde86f2c3ce4d6ef1" args="(Expr variable, Rational max)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::fixCurrentMaxCoefficient </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classCVC3_1_1Expr.html">Expr</a>&#160;</td>
          <td class="paramname"><em>variable</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>max</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Fixes the current max coefficient to be used in the ordering. If the maximal coefficient changes in the future, it will not be used in the ordering.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">variable</td><td>the variable </td></tr>
    <tr><td class="paramname">max</td><td>the value to set it to </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l01605">1605</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

<p>References <a class="el" href="cvc__util_8h_source.html#l00056">CVC3::max()</a>.</p>

</div>
</div>
<a class="anchor" id="a21438a9cc9b82b7c6cf3b269b663a8d0"></a><!-- doxytag: member="CVC3::TheoryArith3::selectSmallestByCoefficient" ref="a21438a9cc9b82b7c6cf3b269b663a8d0" args="(std::vector&lt; Expr &gt; input, std::vector&lt; Expr &gt; &amp;output)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TheoryArith3::selectSmallestByCoefficient </td>
          <td>(</td>
          <td class="paramtype">std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt;&#160;</td>
          <td class="paramname"><em>input</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></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>output</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Among given input variables, select the smallest ones with respect to the coefficients. </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l01609">1609</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

</div>
</div>
<hr/><h2>Friends And Related Function Documentation</h2>
<a class="anchor" id="a24b0687e8f0fa36a6d5bacc8155517e2"></a><!-- doxytag: member="CVC3::TheoryArith3::operator&lt;&lt;" ref="a24b0687e8f0fa36a6d5bacc8155517e2" args="(std::ostream &amp;os, const FreeConst &amp;fc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::ostream&amp; operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&#160;</td>
          <td class="paramname"><em>os</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1TheoryArith3_1_1FreeConst.html">FreeConst</a> &amp;&#160;</td>
          <td class="paramname"><em>fc</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Printing. </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l00044">44</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a588ea1b8e9435f2a0fa0fbfe028fbd28"></a><!-- doxytag: member="CVC3::TheoryArith3::operator&lt;&lt;" ref="a588ea1b8e9435f2a0fa0fbfe028fbd28" args="(std::ostream &amp;os, const Ineq &amp;ineq)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::ostream&amp; operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&#160;</td>
          <td class="paramname"><em>os</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1TheoryArith3_1_1Ineq.html">Ineq</a> &amp;&#160;</td>
          <td class="paramname"><em>ineq</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Printing. </p>

<p>Definition at line <a class="el" href="theory__arith3_8cpp_source.html#l00054">54</a> of file <a class="el" href="theory__arith3_8cpp_source.html">theory_arith3.cpp</a>.</p>

</div>
</div>
<hr/><h2>Member Data Documentation</h2>
<a class="anchor" id="a27d63b744292174502cd871610cd3d1f"></a><!-- doxytag: member="CVC3::TheoryArith3::d_diseq" ref="a27d63b744292174502cd871610cd3d1f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1CDList.html">CDList</a>&lt;<a class="el" href="classCVC3_1_1Theorem.html">Theorem</a>&gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#a27d63b744292174502cd871610cd3d1f">CVC3::TheoryArith3::d_diseq</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="theory__arith3_8h_source.html#l00029">29</a> of file <a class="el" href="theory__arith3_8h_source.html">theory_arith3.h</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02020">assertFact()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02124">checkSat()</a>, and <a class="el" href="theory__arith3_8cpp_source.html#l01809">TheoryArith3()</a>.</p>

</div>
</div>
<a class="anchor" id="a8f6255ef2bae62211980a687a178a923"></a><!-- doxytag: member="CVC3::TheoryArith3::d_diseqIdx" ref="a8f6255ef2bae62211980a687a178a923" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1CDO.html">CDO</a>&lt;size_t&gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#a8f6255ef2bae62211980a687a178a923">CVC3::TheoryArith3::d_diseqIdx</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="theory__arith3_8h_source.html#l00030">30</a> of file <a class="el" href="theory__arith3_8h_source.html">theory_arith3.h</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02124">checkSat()</a>.</p>

</div>
</div>
<a class="anchor" id="ad36b56d2d11b3c5398c4d9f554bae18e"></a><!-- doxytag: member="CVC3::TheoryArith3::d_rules" ref="ad36b56d2d11b3c5398c4d9f554bae18e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1ArithProofRules.html">ArithProofRules</a>* <a class="el" href="classCVC3_1_1TheoryArith3.html#ad36b56d2d11b3c5398c4d9f554bae18e">CVC3::TheoryArith3::d_rules</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="theory__arith3_8h_source.html#l00031">31</a> of file <a class="el" href="theory__arith3_8h_source.html">theory_arith3.h</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02020">assertFact()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02124">checkSat()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02319">normalize()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l01917">processFiniteInterval()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02387">rewrite()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l01809">TheoryArith3()</a>, and <a class="el" href="theory__arith3_8cpp_source.html#l01889">~TheoryArith3()</a>.</p>

</div>
</div>
<a class="anchor" id="ab6ea7bdf248ad9f15dbbb2a25c70d53d"></a><!-- doxytag: member="CVC3::TheoryArith3::d_inModelCreation" ref="ab6ea7bdf248ad9f15dbbb2a25c70d53d" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1CDO.html">CDO</a>&lt;bool&gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#ab6ea7bdf248ad9f15dbbb2a25c70d53d">CVC3::TheoryArith3::d_inModelCreation</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="theory__arith3_8h_source.html#l00032">32</a> of file <a class="el" href="theory__arith3_8h_source.html">theory_arith3.h</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02020">assertFact()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02124">checkSat()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02282">computeModelBasic()</a>, and <a class="el" href="theory__arith3_8cpp_source.html#l02147">refineCounterExample()</a>.</p>

</div>
</div>
<a class="anchor" id="ae907bba6bfb622671693d64fd4f7651b"></a><!-- doxytag: member="CVC3::TheoryArith3::d_inequalitiesRightDB" ref="ae907bba6bfb622671693d64fd4f7651b" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1ExprMap.html">ExprMap</a>&lt;<a class="el" href="classCVC3_1_1CDList.html">CDList</a>&lt;<a class="el" href="classCVC3_1_1TheoryArith3_1_1Ineq.html">Ineq</a>&gt; *&gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#ae907bba6bfb622671693d64fd4f7651b">CVC3::TheoryArith3::d_inequalitiesRightDB</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Database of inequalities with a variable isolated on the right. </p>

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

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02197">findBounds()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l01975">processFiniteIntervals()</a>, and <a class="el" href="theory__arith3_8cpp_source.html#l01889">~TheoryArith3()</a>.</p>

</div>
</div>
<a class="anchor" id="adef4166f884bc9d39c9649de29ba6223"></a><!-- doxytag: member="CVC3::TheoryArith3::d_inequalitiesLeftDB" ref="adef4166f884bc9d39c9649de29ba6223" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1ExprMap.html">ExprMap</a>&lt;<a class="el" href="classCVC3_1_1CDList.html">CDList</a>&lt;<a class="el" href="classCVC3_1_1TheoryArith3_1_1Ineq.html">Ineq</a>&gt; *&gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#adef4166f884bc9d39c9649de29ba6223">CVC3::TheoryArith3::d_inequalitiesLeftDB</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Database of inequalities with a variable isolated on the left. </p>

<p>Definition at line <a class="el" href="theory__arith3_8h_source.html#l00078">78</a> of file <a class="el" href="theory__arith3_8h_source.html">theory_arith3.h</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02197">findBounds()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l01975">processFiniteIntervals()</a>, and <a class="el" href="theory__arith3_8cpp_source.html#l01889">~TheoryArith3()</a>.</p>

</div>
</div>
<a class="anchor" id="abe31caa3bc2ac4ee941a83870b802ab4"></a><!-- doxytag: member="CVC3::TheoryArith3::d_freeConstDB" ref="abe31caa3bc2ac4ee941a83870b802ab4" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1CDMap.html">CDMap</a>&lt;<a class="el" href="classCVC3_1_1Expr.html">Expr</a>, <a class="el" href="classCVC3_1_1TheoryArith3_1_1FreeConst.html">FreeConst</a>&gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#abe31caa3bc2ac4ee941a83870b802ab4">CVC3::TheoryArith3::d_freeConstDB</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Mapping of inequalities to the largest/smallest free constant. </p>
<p>The <a class="el" href="classCVC3_1_1Expr.html" title="Data structure of expressions in CVC3.">Expr</a> is the original inequality with the free constant removed and inequality converted to non-strict (for indexing purposes). I.e. ax&lt;c+t becomes ax&lt;=t. This inequality is mapped to a pair&lt;c,strict&gt;, the smallest (largest for c+t&lt;ax) constant among inequalities with the same 'a', 'x', and 't', and a boolean flag indicating whether the strongest inequality is strict. </p>

<p>Definition at line <a class="el" href="theory__arith3_8h_source.html#l00088">88</a> of file <a class="el" href="theory__arith3_8h_source.html">theory_arith3.h</a>.</p>

</div>
</div>
<a class="anchor" id="a3875f5f084ebf03733c8f94a4774c536"></a><!-- doxytag: member="CVC3::TheoryArith3::d_buffer" ref="a3875f5f084ebf03733c8f94a4774c536" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1CDList.html">CDList</a>&lt;<a class="el" href="classCVC3_1_1Theorem.html">Theorem</a>&gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#a3875f5f084ebf03733c8f94a4774c536">CVC3::TheoryArith3::d_buffer</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Buffer of input inequalities. </p>

<p>Definition at line <a class="el" href="theory__arith3_8h_source.html#l00091">91</a> of file <a class="el" href="theory__arith3_8h_source.html">theory_arith3.h</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02020">assertFact()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02124">checkSat()</a>, and <a class="el" href="theory__arith3_8cpp_source.html#l01809">TheoryArith3()</a>.</p>

</div>
</div>
<a class="anchor" id="a1e095f1d7e371b227dc08f3b8635c004"></a><!-- doxytag: member="CVC3::TheoryArith3::d_bufferIdx" ref="a1e095f1d7e371b227dc08f3b8635c004" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1CDO.html">CDO</a>&lt;size_t&gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#a1e095f1d7e371b227dc08f3b8635c004">CVC3::TheoryArith3::d_bufferIdx</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Buffer index of the next unprocessed inequality. </p>

<p>Definition at line <a class="el" href="theory__arith3_8h_source.html#l00093">93</a> of file <a class="el" href="theory__arith3_8h_source.html">theory_arith3.h</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02020">assertFact()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02124">checkSat()</a>, and <a class="el" href="theory__arith3_8cpp_source.html#l01809">TheoryArith3()</a>.</p>

</div>
</div>
<a class="anchor" id="aa1aa058a244693fbfadaa8326d9573a2"></a><!-- doxytag: member="CVC3::TheoryArith3::d_bufferThres" ref="aa1aa058a244693fbfadaa8326d9573a2" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const int* <a class="el" href="classCVC3_1_1TheoryArith3.html#aa1aa058a244693fbfadaa8326d9573a2">CVC3::TheoryArith3::d_bufferThres</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Threshold when the buffer must be processed. </p>

<p>Definition at line <a class="el" href="theory__arith3_8h_source.html#l00095">95</a> of file <a class="el" href="theory__arith3_8h_source.html">theory_arith3.h</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02020">assertFact()</a>.</p>

</div>
</div>
<a class="anchor" id="a6d0840e19aef8d9e2e3eefad3cb5a279"></a><!-- doxytag: member="CVC3::TheoryArith3::d_countRight" ref="a6d0840e19aef8d9e2e3eefad3cb5a279" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1CDMap.html">CDMap</a>&lt;<a class="el" href="classCVC3_1_1Expr.html">Expr</a>, int&gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#a6d0840e19aef8d9e2e3eefad3cb5a279">CVC3::TheoryArith3::d_countRight</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Mapping of a variable to the number of inequalities where the variable would be isolated on the right. </p>

<p>Definition at line <a class="el" href="theory__arith3_8h_source.html#l00101">101</a> of file <a class="el" href="theory__arith3_8h_source.html">theory_arith3.h</a>.</p>

</div>
</div>
<a class="anchor" id="a45bee8f005bbd76195fd207f6e14b530"></a><!-- doxytag: member="CVC3::TheoryArith3::d_countLeft" ref="a45bee8f005bbd76195fd207f6e14b530" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1CDMap.html">CDMap</a>&lt;<a class="el" href="classCVC3_1_1Expr.html">Expr</a>, int&gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#a45bee8f005bbd76195fd207f6e14b530">CVC3::TheoryArith3::d_countLeft</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Mapping of a variable to the number of inequalities where the variable would be isolated on the left. </p>

<p>Definition at line <a class="el" href="theory__arith3_8h_source.html#l00105">105</a> of file <a class="el" href="theory__arith3_8h_source.html">theory_arith3.h</a>.</p>

</div>
</div>
<a class="anchor" id="a4e74ec27493ce714497a40de4743a706"></a><!-- doxytag: member="CVC3::TheoryArith3::d_sharedTerms" ref="a4e74ec27493ce714497a40de4743a706" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1CDMap.html">CDMap</a>&lt;<a class="el" href="classCVC3_1_1Expr.html">Expr</a>, bool&gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#a4e74ec27493ce714497a40de4743a706">CVC3::TheoryArith3::d_sharedTerms</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set of shared terms (for counterexample generation) </p>

<p>Definition at line <a class="el" href="theory__arith3_8h_source.html#l00108">108</a> of file <a class="el" href="theory__arith3_8h_source.html">theory_arith3.h</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02015">addSharedTerm()</a>, and <a class="el" href="theory__arith3_8cpp_source.html#l02147">refineCounterExample()</a>.</p>

</div>
</div>
<a class="anchor" id="a333b1082c80655c02182b44a0c4a8dda"></a><!-- doxytag: member="CVC3::TheoryArith3::d_sharedVars" ref="a333b1082c80655c02182b44a0c4a8dda" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1CDMap.html">CDMap</a>&lt;<a class="el" href="classCVC3_1_1Expr.html">Expr</a>, bool&gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#a333b1082c80655c02182b44a0c4a8dda">CVC3::TheoryArith3::d_sharedVars</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set of shared integer variables (i-leaves) </p>

<p>Definition at line <a class="el" href="theory__arith3_8h_source.html#l00111">111</a> of file <a class="el" href="theory__arith3_8h_source.html">theory_arith3.h</a>.</p>

</div>
</div>
<a class="anchor" id="a7b9b0448e5f0149ea33709b1ba392c1e"></a><!-- doxytag: member="CVC3::TheoryArith3::d_graph" ref="a7b9b0448e5f0149ea33709b1ba392c1e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1TheoryArith3_1_1VarOrderGraph.html">VarOrderGraph</a> <a class="el" href="classCVC3_1_1TheoryArith3.html#a7b9b0448e5f0149ea33709b1ba392c1e">CVC3::TheoryArith3::d_graph</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="theory__arith3_8h_source.html#l00131">131</a> of file <a class="el" href="theory__arith3_8h_source.html">theory_arith3.h</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02248">assignVariables()</a>.</p>

</div>
</div>
<a class="anchor" id="aaafeb6382856c921da73af220df2ab1b"></a><!-- doxytag: member="CVC3::TheoryArith3::maxCoefficientLeft" ref="aaafeb6382856c921da73af220df2ab1b" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1CDMap.html">CDMap</a>&lt;<a class="el" href="classCVC3_1_1Expr.html">Expr</a>, <a class="el" href="classCVC3_1_1Rational.html">Rational</a>&gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#aaafeb6382856c921da73af220df2ab1b">CVC3::TheoryArith3::maxCoefficientLeft</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Map from variables to the maximal (by absolute value) of one of it's coefficients </p>

<p>Definition at line <a class="el" href="theory__arith3_8h_source.html#l00323">323</a> of file <a class="el" href="theory__arith3_8h_source.html">theory_arith3.h</a>.</p>

</div>
</div>
<a class="anchor" id="a53ede9d74a99ac939974d488b146d13f"></a><!-- doxytag: member="CVC3::TheoryArith3::maxCoefficientRight" ref="a53ede9d74a99ac939974d488b146d13f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1CDMap.html">CDMap</a>&lt;<a class="el" href="classCVC3_1_1Expr.html">Expr</a>, <a class="el" href="classCVC3_1_1Rational.html">Rational</a>&gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#a53ede9d74a99ac939974d488b146d13f">CVC3::TheoryArith3::maxCoefficientRight</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="theory__arith3_8h_source.html#l00324">324</a> of file <a class="el" href="theory__arith3_8h_source.html">theory_arith3.h</a>.</p>

</div>
</div>
<a class="anchor" id="acefeaa2f3e7b84414fb92b90ab6364cb"></a><!-- doxytag: member="CVC3::TheoryArith3::fixedMaxCoefficient" ref="acefeaa2f3e7b84414fb92b90ab6364cb" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1CDMap.html">CDMap</a>&lt;<a class="el" href="classCVC3_1_1Expr.html">Expr</a>, <a class="el" href="classCVC3_1_1Rational.html">Rational</a>&gt; <a class="el" href="classCVC3_1_1TheoryArith3.html#acefeaa2f3e7b84414fb92b90ab6364cb">CVC3::TheoryArith3::fixedMaxCoefficient</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Map from variables to the fixed value of one of it's coefficients </p>

<p>Definition at line <a class="el" href="theory__arith3_8h_source.html#l00327">327</a> of file <a class="el" href="theory__arith3_8h_source.html">theory_arith3.h</a>.</p>

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