Sophie

Sophie

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

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::BitvectorTheoremProducer 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_1BitvectorTheoremProducer.html">BitvectorTheoremProducer</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<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>  </div>
  <div class="headertitle">
<div class="title">CVC3::BitvectorTheoremProducer Class Reference</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="CVC3::BitvectorTheoremProducer" --><!-- doxytag: inherits="CVC3::BitvectorProofRules,CVC3::TheoremProducer" -->
<p>This class implements proof rules for bitvector normalizers (concatenation normal form, bvplus normal form), bitblaster rules, other relevant rewrite rules for bv arithmetic and word-level operators.  
 <a href="classCVC3_1_1BitvectorTheoremProducer.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="bitvector__theorem__producer_8h_source.html">bitvector_theorem_producer.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for CVC3::BitvectorTheoremProducer:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classCVC3_1_1BitvectorTheoremProducer.png" usemap="#CVC3::BitvectorTheoremProducer_map" alt=""/>
  <map id="CVC3::BitvectorTheoremProducer_map" name="CVC3::BitvectorTheoremProducer_map">
<area href="classCVC3_1_1BitvectorProofRules.html" alt="CVC3::BitvectorProofRules" shape="rect" coords="0,0,204,24"/>
<area href="classCVC3_1_1TheoremProducer.html" alt="CVC3::TheoremProducer" shape="rect" coords="214,0,418,24"/>
</map>
 </div></div>

<p><a href="classCVC3_1_1BitvectorTheoremProducer-members.html">List of all members.</a></p>
<h2><a name="pub-methods"></a>
Public Member Functions</h2>
<ul>
<li><a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#ab0dec14e43b28a75df52cbef0f767a23">BitvectorTheoremProducer</a> (<a class="el" href="classCVC3_1_1TheoryBitvector.html">TheoryBitvector</a> *theoryBitvector)
<dl class="el"><dd class="mdescRight">Constructor: constructs an instance of bitvector DP.  <a href="#ab0dec14e43b28a75df52cbef0f767a23"></a><br/></dl><li><a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a8be04256f3b26c7932f2c0272ad3f6d1">~BitvectorTheoremProducer</a> ()
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a335f389e282bdb6529f86b2101b330e0">bitvectorFalseRule</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_1BitvectorTheoremProducer.html#aafe3a19c755d3559e4c419be7c66d7c5">bitvectorTrueRule</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_1BitvectorTheoremProducer.html#adc756096f301c80bb2bf73266c200aff">bitBlastEqnRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;f)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a9839f27db5f349fe6fb6b21575cde24c">bitBlastDisEqnRule</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;f)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#ae676208401e0d94c96d258f2dd652a68">signExtendRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">sign extend the input SX(e) appropriately  <a href="#ae676208401e0d94c96d258f2dd652a68"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#ac83f1aeaf2b0dd78c5aec3d4dd605b21">padBVLTRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, int len)
<dl class="el"><dd class="mdescRight">Pad the kids of BVLT/BVLE to make their length equal.  <a href="#ac83f1aeaf2b0dd78c5aec3d4dd605b21"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#ab1f7b6923eb8053bbc567f7610458685">padBVSLTRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, int len)
<dl class="el"><dd class="mdescRight">Sign Extend the kids of BVSLT/BVSLE to make their length equal.  <a href="#ab1f7b6923eb8053bbc567f7610458685"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a1798c9272bc8f7f78100a4fb839fb907">signBVLTRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;topBit0, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;topBit1)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#aff7d8a5558884d2b24e83dc55dc0a59e">notBVEQ1Rule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a15d14a25e4805c5aceff3521f7dbebd0">notBVLTRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#aa9b8579a600e0c95fbc51a599b03a182">lhsEqRhsIneqn</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, int kind)
<dl class="el"><dd class="mdescRight">if(lhs==rhs) then we have (lhs &lt; rhs &lt;==&gt; false),(lhs &lt;= rhs &lt;==&gt; true)  <a href="#aa9b8579a600e0c95fbc51a599b03a182"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#ac141b7dc72e52b9b18fd2258db17a952">zeroLeq</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">|= 0 &lt;= foo &lt;-&gt; TRUE  <a href="#ac141b7dc72e52b9b18fd2258db17a952"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a00a6af751fe6354bfd282f5a8f25456a">bvConstIneqn</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, int kind)
<dl class="el"><dd class="mdescRight">if indeed e[0] &lt; e[1] then (e&lt;==&gt;true) else (e&lt;==&gt;false)  <a href="#a00a6af751fe6354bfd282f5a8f25456a"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a9e41265f17a1d607e9559bb718963f0a">generalIneqn</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;lhs_i, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;rhs_i, int kind)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a70fb1053bd8518120c0d69dca9069062">bitExtractAllToConstEq</a> (std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;thms)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#ae7cdd320c7fb8e16f943626d07d9f63b">bitExtractToExtract</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;thm)
<dl class="el"><dd class="mdescRight">t[i] ==&gt; t[i:i] = 0bin1 or NOT t[i] ==&gt; t[i:i] = 0bin0  <a href="#ae7cdd320c7fb8e16f943626d07d9f63b"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a8dab3dc6ffdf47a18f6097ad0185b4de">bitExtractRewrite</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;x)
<dl class="el"><dd class="mdescRight">t[i] &lt;=&gt; t[i:i][0] (to use rewriter for simplifying t[i:i])  <a href="#a8dab3dc6ffdf47a18f6097ad0185b4de"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#ad14158d7d8b6a1ccf2b6c47991d498d7">bitExtractConstant</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;x, int i)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a571db5dc21ec0b24e1d861c137892f9c">bitExtractConcatenation</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;x, int i)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#abf6f1ff706f6cefe196b1cbe7d5f85c1">bitExtractConstBVMult</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;t, int i)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a0425488c3b01eb65554867483e3cac02">bitExtractBVMult</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;t, int i)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a8efcf949614eab1089f00519f1db57bb">bitExtractExtraction</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;x, int i)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a6c02b66248026d3ffb357e980de37ed7">bitExtractBVPlus</a> (const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;t1, const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;t2, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;bvPlusTerm, int i)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#aaf4999f69872e881257cd1e127732ec8">bitExtractBVPlusPreComputed</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;t1_i, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;t2_i, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;bvPlusTerm, int bitPos, int precomputed)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a415c16ecc3bbdd0942801028526d641f">bvPlusAssociativityRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;bvPlusTerm)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a43201ddd283a81a44095658241ca2a5e">bitExtractNot</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;x, int i)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#acd7ddad997b468fbb64373913e03b5e9">bitExtractBitwise</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;x, int i, int kind)
<dl class="el"><dd class="mdescRight">Extract from bitwise AND, OR, or XOR.  <a href="#acd7ddad997b468fbb64373913e03b5e9"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a4153b23dadd58aea7bde7f71001aad91">bitExtractFixedLeftShift</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;x, int i)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a2db4c3bb12bae8276f7c542936989d83">bitExtractFixedRightShift</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;x, int i)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a2b273a0a3bb7a39646f0fb065e954ccc">bitExtractBVSHL</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;x, int i)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#afc17991261fb1f240861496d391c452a">bitExtractBVLSHR</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;x, int i)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#ad9256452fce83e6505d94f2a11b2a463">bitExtractBVASHR</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;x, int i)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a6c59521b4540e2acd1fe954272bf3e09">zeroPaddingRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, int r)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a1d749524ddb67fa00fc4da46df1156c9">bitExtractSXRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, int i)
<dl class="el"><dd class="mdescRight">bitExtractSXRule  <a href="#a1d749524ddb67fa00fc4da46df1156c9"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#aaa38beb3d8990340aa5867f09900f14e">eqConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">c1=c2 &lt;=&gt; TRUE/FALSE (equality of constant bitvectors)  <a href="#aaa38beb3d8990340aa5867f09900f14e"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a58ce4c07a8d005fa6d9820abc5fac028">eqToBits</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;eq)
<dl class="el"><dd class="mdescRight">|- c1=c2 ==&gt; |- AND(c1[i:i] = c2[i:i]) - expanding equalities into bits  <a href="#a58ce4c07a8d005fa6d9820abc5fac028"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a68fd84ca46b0e62103314c45dee495bd">leftShiftToConcat</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">t&lt;&lt;n = c @ 0bin00...00, takes e == (t&lt;&lt;n)  <a href="#a68fd84ca46b0e62103314c45dee495bd"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#aabb5f8d91314adc4688e5970b986edf0">constWidthLeftShiftToConcat</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">t&lt;&lt;n = c @ 0bin00...00, takes e == (t&lt;&lt;n)  <a href="#aabb5f8d91314adc4688e5970b986edf0"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a7d91d285e929d00572f3da4da772f505">rightShiftToConcat</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">t&gt;&gt;m = 0bin00...00 @ t[bvlength-1:m], takes e == (t&gt;&gt;n)  <a href="#a7d91d285e929d00572f3da4da772f505"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#ae47b2ec2a40c3376071ed60c16d457b6">bvshlToConcat</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">BVSHL(t,c) = t[n-c,0] @ 0bin00...00.  <a href="#ae47b2ec2a40c3376071ed60c16d457b6"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a431507c9e35ad328509072cea05f2d8e">bvshlSplit</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">BVSHL(t,c) = IF (c = 0) THEN t ELSE IF (c = 1) ...  <a href="#a431507c9e35ad328509072cea05f2d8e"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a5f99ee62c0847affeb44264840764b43">bvlshrToConcat</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">BVLSHR(t,c) = 0bin00...00 @ t[n-1,c].  <a href="#a5f99ee62c0847affeb44264840764b43"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a61b2ded76e35d870b15502ab0641010d">bvShiftZero</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">All shifts over a 0 constant = 0.  <a href="#a61b2ded76e35d870b15502ab0641010d"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a3c3a4d49d47a08a3eb7599327f30f324">bvashrToConcat</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">BVASHR(t,c) = SX(t[n-1,c], n-1)  <a href="#a3c3a4d49d47a08a3eb7599327f30f324"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a70ad43279f8061f7be4e35c49205ab69">rewriteXNOR</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">a XNOR b &lt;=&gt; (~a &amp; ~b) | (a &amp; b)  <a href="#a70ad43279f8061f7be4e35c49205ab69"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a2d49a06be7aae5f5675977fdc1b6457e">rewriteNAND</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">a NAND b &lt;=&gt; ~(a &amp; b)  <a href="#a2d49a06be7aae5f5675977fdc1b6457e"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a372c699b42bb9ab8b64e2a836bedcffd">rewriteNOR</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">a NOR b &lt;=&gt; ~(a | b)  <a href="#a372c699b42bb9ab8b64e2a836bedcffd"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#ab314017086d977ee1f4facb23208864c">rewriteBVCOMP</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">BVCOMP(a,b) &lt;=&gt; ITE(a=b,0bin1,0bin0)  <a href="#ab314017086d977ee1f4facb23208864c"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a1a040de059cc4fedf5cdd00cec37fc9c">rewriteBVSub</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">a - b &lt;=&gt; a + (-b)  <a href="#a1a040de059cc4fedf5cdd00cec37fc9c"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a560ad9ec684e523f941c2d12fa833cd1">constMultToPlus</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">k*t = BVPLUS(n, &lt;sum of shifts of t&gt;) -- translation of k*t to BVPLUS  <a href="#a560ad9ec684e523f941c2d12fa833cd1"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#af734405e15de47e28f4112e07bfc9dba">bvplusZeroConcatRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">0bin0...0 @ BVPLUS(n, args) = BVPLUS(n+k, args)  <a href="#af734405e15de47e28f4112e07bfc9dba"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a6d773885e3e78a736cd22dd79835b9e3">zeroCoeffBVMult</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a916fcffc7cb40f2159b00a710c26f669">oneCoeffBVMult</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a9ed93437abb38597bbf7d153184c70e5">flipBVMult</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">t1*a &lt;==&gt; a*t1  <a href="#a9ed93437abb38597bbf7d153184c70e5"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a99694606f15f144080a21f142b8a098f">pad</a> (int rat, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">converts e to a bitvector of length rat  <a href="#a99694606f15f144080a21f142b8a098f"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#aa3d3d7bff1a088fa66a19076c471571a">padBVPlus</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Pad the kids of BVMULT to make their bvLength = # of output-bits.  <a href="#aa3d3d7bff1a088fa66a19076c471571a"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#ac8509af4659a1391e983939d825f0e85">padBVMult</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Pad the kids of BVMULT to make their bvLength = # of output-bits.  <a href="#ac8509af4659a1391e983939d825f0e85"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a67921f96646d6b01d62d8a1cd116ddb3">bvConstMultAssocRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">a*(b*t) &lt;==&gt; (a*b)*t, where a,b,t have same bvLength  <a href="#a67921f96646d6b01d62d8a1cd116ddb3"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#afa7daebdee6dafd361980583b6d3ffe1">bvMultAssocRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">(t1*t2)*t3 &lt;==&gt; t1*(t2*t3), where t1&lt;t2&lt;t3  <a href="#afa7daebdee6dafd361980583b6d3ffe1"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a44e37a65f45da9fb8469a0003a140836">bvMultDistRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">a*(t1+...+tn) &lt;==&gt; (a*t1+...+a*tn), where all kids are equibvLength  <a href="#a44e37a65f45da9fb8469a0003a140836"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a2a66e5fbe24e038a79ac07290900fdd4">flattenBVPlus</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">input BVPLUS expression e.output e &lt;==&gt; e', where e' has no BVPLUS  <a href="#a2a66e5fbe24e038a79ac07290900fdd4"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a2a6308a817bfe26b843612fd02ba5441">combineLikeTermsRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a85f807faae622c7c6cb9d85cad0c5fc3">lhsMinusRhsRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a5df17d5d90f8a7389808a870a90ae863">extractBVMult</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">(x *[n] y)[m:k] = (x *[m+1] y)[m:k], where m &lt; n  <a href="#a5df17d5d90f8a7389808a870a90ae863"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#aabeacfb4b8a65744ac53f2cfe5dadc74">extractBVPlus</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">(x +[n] y)[m:k] = (x +[m+1] y)[m:k], where m &lt; n  <a href="#aabeacfb4b8a65744ac53f2cfe5dadc74"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a35d8c914e411c866485e17febed62c00">iteExtractRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">ite(c,t1,t2)[i:j] &lt;=&gt; ite(c,t1[i:j],t2[i:j])  <a href="#a35d8c914e411c866485e17febed62c00"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a5bd890187bf9297b3b1092c623c1d922">iteBVnegRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">~ite(c,t1,t2) &lt;=&gt; ite(c,~t1,~t2)  <a href="#a5bd890187bf9297b3b1092c623c1d922"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#ac0f04eeb2cf6b89dbbcf8849bea4e40b">bvuminusBVConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a84fcae86e983ecd86c77705c8a749576">bvuminusBVMult</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a256b7d97aae2e5933ac4a9161c2da211">bvuminusBVUminus</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a6c8e614b400899e9f7e28cbfb6129a2a">bvuminusVar</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a4b76e0978912f6211ce0549cb9dd8550">bvmultBVUminus</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">c*(-t) &lt;==&gt; (-c)*t  <a href="#a4b76e0978912f6211ce0549cb9dd8550"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a4ede1f1385025a1621114addc25569c1">bvuminusToBVPlus</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">generic rule used for bitblasting step. -e &lt;==&gt; ~e+1  <a href="#a4ede1f1385025a1621114addc25569c1"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a126c38f580c510745dacd0dea2cb5c15">bvuminusBVPlus</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a8c0923ca7a786c2a7ee60cc7b456a9e0">extractConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">c1[i:j] = c (extraction from a constant bitvector)  <a href="#a8c0923ca7a786c2a7ee60cc7b456a9e0"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a8f8cd95c4037ee94e91ba93fe7d869c0">extractWhole</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">t[n-1:0] = t for n-bit t  <a href="#a8f8cd95c4037ee94e91ba93fe7d869c0"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a5c7969edaba735a5f73258b57ea42184">extractExtract</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">t[i:j][k:l] = t[k+j:l+j] (eliminate double extraction)  <a href="#a5c7969edaba735a5f73258b57ea42184"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#ad3f6288f648cee583f8dfee29fc97112">extractConcat</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">(t1 @ t2)[i:j] = t1[...] @ t2[...] (push extraction through concat)  <a href="#ad3f6288f648cee583f8dfee29fc97112"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a222240751acfa38ed43f717c803aca34">extractBitwise</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, int kind, const std::string &amp;name)
<dl class="el"><dd class="mdescRight">Auxiliary function: (t1 op t2)[i:j] = t1[i:j] op t2[i:j].  <a href="#a222240751acfa38ed43f717c803aca34"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a0b3d60749f5bc14f524e0f5234bb1cf3">extractAnd</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">(t1 &amp; t2)[i:j] = t1[i:j] &amp; t2[i:j] (push extraction through OR)  <a href="#a0b3d60749f5bc14f524e0f5234bb1cf3"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a7a8f90ee8e8450bcb4bfe3e1f231c4b0">extractOr</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">(t1 | t2)[i:j] = t1[i:j] | t2[i:j] (push extraction through AND)  <a href="#a7a8f90ee8e8450bcb4bfe3e1f231c4b0"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a8014d2c21597d514e39a4fba8a060952">extractNeg</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">(~t)[i:j] = ~(t[i:j]) (push extraction through NEG)  <a href="#a8014d2c21597d514e39a4fba8a060952"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a28038efe4f40407c727f91d856234d49">negConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">~c1 = c (bit-wise negation of a constant bitvector)  <a href="#a28038efe4f40407c727f91d856234d49"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a8e1501e7e12f93e385f77c75a931b970">negConcat</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">~(t1@...@tn) = (~t1)@...@(~tn) -- push negation through concat  <a href="#a8e1501e7e12f93e385f77c75a931b970"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#ae2ec10b9faef513781d02bb81cc3e88b">negNeg</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">~(~t) = t -- eliminate double negation  <a href="#ae2ec10b9faef513781d02bb81cc3e88b"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a8e6947b16b14750e13812e43b9f5080c">negElim</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">~t = -1*t + 1 -- eliminate negation  <a href="#a8e6947b16b14750e13812e43b9f5080c"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#abc285ae73d2259fe1efea8cb46b2698a">negBVand</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">~(t1 &amp; t2) &lt;=&gt; ~t1 | ~t2 -- DeMorgan's Laws  <a href="#abc285ae73d2259fe1efea8cb46b2698a"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#abf45c19e2d11f75d68785cc88f7ccf32">negBVor</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">~(t1 | t2) &lt;=&gt; ~t1 &amp; ~t2 -- DeMorgan's Laws  <a href="#abf45c19e2d11f75d68785cc88f7ccf32"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a815029f46058047bfe8a5e0dbc85ddc6">negBVxor</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">~(t1 xor t2) = ~t1 xor t2  <a href="#a815029f46058047bfe8a5e0dbc85ddc6"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a2388a9d25fafcd0711a286d4666ee960">negBVxnor</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">~(t1 xnor t2) = t1 xor t2  <a href="#a2388a9d25fafcd0711a286d4666ee960"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#af3928b2385a298cc085134ac1e8222e4">bitwiseConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, const std::vector&lt; int &gt; &amp;idxs, int kind)
<dl class="el"><dd class="mdescRight">Combine constants in bitwise AND, OR, XOR.  <a href="#af3928b2385a298cc085134ac1e8222e4"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a731d832fce739c8b6d7b5ccf9932a94a">bitwiseConcat</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, int kind)
<dl class="el"><dd class="mdescRight">Lifts concatenation above bitwise operators.  <a href="#a731d832fce739c8b6d7b5ccf9932a94a"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#ac6e8075bfc61e657a37648ba78003f36">bitwiseFlatten</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, int kind)
<dl class="el"><dd class="mdescRight">Flatten bitwise operation.  <a href="#ac6e8075bfc61e657a37648ba78003f36"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#aac798843b8390b423f901f9cc1cb14dd">bitwiseConstElim</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, int idx, int kind)
<dl class="el"><dd class="mdescRight">Simplify bitwise operator containing a constant child.  <a href="#aac798843b8390b423f901f9cc1cb14dd"></a><br/></dl><li>int <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#ae51599976453a95306a7b5a0b2e15029">sameKidCheck</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, <a class="el" href="classCVC3_1_1ExprMap.html">ExprMap</a>&lt; int &gt; &amp;likeTerms)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#abee7fa8ab42b1addc72b7463b4a60975">concatConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">c1@c2@...@cn = c (concatenation of constant bitvectors)  <a href="#abee7fa8ab42b1addc72b7463b4a60975"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#adba6266c081af892dadf257a001ae920">concatFlatten</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Flatten one level of nested concatenation, e.g.: x@(y@z)@w = x@y@z@w.  <a href="#adba6266c081af892dadf257a001ae920"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#af8c35b9567c60d128480b278de348842">concatMergeExtract</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Merge n-ary concat. of adjacent extractions: x[15:8]@x[7:0] = x[15:0].  <a href="#af8c35b9567c60d128480b278de348842"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a8475377c17d5c4241e1a134ce5b28eba">bvplusConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">BVPLUS(n, c1,c2,...,cn) = c (bit-vector plus of constant bitvectors)  <a href="#a8475377c17d5c4241e1a134ce5b28eba"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a05e4123ccbc5000dbf9615d89e13067d">bvmultConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">n*c1 = c, where n &gt;= 0 (multiplication of a constant bitvector by a non-negative constant)  <a href="#a05e4123ccbc5000dbf9615d89e13067d"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#aea2fb217bff7c7b46f996eacd051461b">typePredBit</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">|- t=0 OR t=1 for any 1-bit bitvector t  <a href="#aea2fb217bff7c7b46f996eacd051461b"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a7d8030814a36206774951e3ae8968848">expandTypePred</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;tp)
<dl class="el"><dd class="mdescRight">Expand the type predicate wrapper (compute the actual type predicate)  <a href="#a7d8030814a36206774951e3ae8968848"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#ae03f092d2050783885e338b5880b2645">rat</a> (const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;r)
<li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a433503188cd190201bbea389cbc43478">computeCarry</a> (const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;t1BitExtractThms, const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;t2BitExtractThms, int bitPos)
<li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#afdb4f9bf82d3ab61d6ac486b7807aa71">computeCarryPreComputed</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;t1_i, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;t2_i, int bitPos, int precomputedFlag)
<dl class="el"><dd class="mdescRight">compute carryout of the current bits and cache them, and return  <a href="#afdb4f9bf82d3ab61d6ac486b7807aa71"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a54d8f6979007cfc5e0da1ebf7f73f51d">isolate_var</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">isolate a variable with coefficient = 1 on the Lhs of an  <a href="#a54d8f6979007cfc5e0da1ebf7f73f51d"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a91a4bd06c22c93729e954302840877ad">liftConcatBVMult</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#aa5acae5a384220d4dca181b8675831b3">canonBVMult</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">canonize BVMult expressions in order to get one coefficient  <a href="#aa5acae5a384220d4dca181b8675831b3"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a5fb475feef8b6740cc8c2f5f2104f07d">liftConcatBVPlus</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a31b9e200eff6852b66a8d8ac19ec2db3">canonBVPlus</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">canonize BVPlus expressions in order to get just one  <a href="#a31b9e200eff6852b66a8d8ac19ec2db3"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#af3fc29529753dc8161360688bcaaf12b">canonBVUMinus</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">canonize BVMinus expressions: push the minus to the leafs in  <a href="#af3fc29529753dc8161360688bcaaf12b"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a8475d9fad4a99ea877f69e154f1d67d6">processExtract</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;e, bool &amp;solvedForm)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#ac946768d5a1aae35472b63b53b457264">canonBVEQ</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, int maxEffort=3)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a9fe7ec7e369ee92339471e805a1dd7c3">distributive_rule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">apply the distributive rule on the BVMULT expression e  <a href="#a9fe7ec7e369ee92339471e805a1dd7c3"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a87288805014f1d0e935c052364142d6b">BVMult_order_subterms</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a0f02e48875ccb661cae7cc7a2489dce1">MarkNonSolvableEq</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a8295f4644a077f3c8af0db53be7b458b">zeroExtendRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">BVZEROEXTEND(e, i) = zeroString @ e.  <a href="#a8295f4644a077f3c8af0db53be7b458b"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a9b9a128c7c863d01c804bfec956ffb6c">repeatRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">BVREPEAT(e, i) = e @ e @ ... @ e.  <a href="#a9b9a128c7c863d01c804bfec956ffb6c"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#afdc5b05255d1d217c26d5e3660957fde">rotlRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">BVROTL(e, i) = a[n-i-1:0] @ a[n-1:n-i].  <a href="#afdc5b05255d1d217c26d5e3660957fde"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a6495867fe7ef34a838e83315dd8b02e4">rotrRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">BVROTR(e, i) = a[i-1:0] @ a[n-1:i].  <a href="#a6495867fe7ef34a838e83315dd8b02e4"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#acc221d6c256b7d550090627e6fee9643">bvUDivConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;divExpr)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a330fc1ea75378bfe0fec034132af7400">bvUDivTheorem</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;divExpr)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#af8bafa1141beb24e3742bce376697e8f">bvURemConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;remExpr)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#aa6941790eb888168ffdc5531b129b466">bvURemRewrite</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;remExpr)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a714a402f525e0d0c222846379366edc5">bitblastBVMult</a> (const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;a_bits, const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;b_bits, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;a_times_b, std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;output_bits)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#aef3181ea41680c3f7b1b4ec724e8b68d">bitblastBVPlus</a> (const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;a_bits, const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;b_bits, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;a_plus_b, std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;output_bits)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#ad3bdebd3ad40f70a1592fda3fae82e71">bvSDivRewrite</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;sDivExpr)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a73632313f926e7b93104538c465bbcfb">bvSRemRewrite</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;sRemExpr)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a8d5827e983be4b7ed387314332ac4613">bvSModRewrite</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;sModExpr)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a9200f74bce7930bb77d5e2a00b81a1d4">zeroBVOR</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;orEqZero)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a1d422c14bfbcac9e91c53260b856b93e">oneBVAND</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;andEqOne)
<li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a9c0a8eae91823c04c12dbedbbbbd417f">constEq</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;eq)
<li>bool <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#adf540a2323b9f9ba281d2d67826cdae7">solveExtractOverlapApplies</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;eq)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a79998a92001fa8625a471bf7011b9cd3">solveExtractOverlap</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;eq)
</ul>
<h2><a name="pri-methods"></a>
Private Member Functions</h2>
<ul>
<li>const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp; <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#aaf9905051ca381e18683a41651404b69">bvZero</a> () const 
<dl class="el"><dd class="mdescRight">Return cached constant 0bin0.  <a href="#aaf9905051ca381e18683a41651404b69"></a><br/></dl><li>const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp; <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a53f5be1f87db3613052a22fcf8a7e5d0">bvOne</a> () const 
<dl class="el"><dd class="mdescRight">Return cached constant 0bin1.  <a href="#a53f5be1f87db3613052a22fcf8a7e5d0"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#ab46305e9bee9f911362cdb54a3037703">collectLikeTermsOfPlus</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, <a class="el" href="classCVC3_1_1ExprMap.html">ExprMap</a>&lt; <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &gt; &amp;likeTerms, <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;plusConstant)
<li>void <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a6596cca8e249d3ef6632429bd114a98a">collectOneTermOfPlus</a> (const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;coefficient, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;var, <a class="el" href="classCVC3_1_1ExprMap.html">ExprMap</a>&lt; <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &gt; &amp;likeTerms, <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;plusConstant)
<li>void <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a0c47ccc89b98254df839ea35b1a0720d">createNewPlusCollection</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, const <a class="el" href="classCVC3_1_1ExprMap.html">ExprMap</a>&lt; <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &gt; &amp;likeTerms, <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;plusConstant, std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;result)
<li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a24fff4a463643869b7a3b604884437b9">sumNormalizedElements</a> (int bvplusLength, const std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;elements)
<li>void <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#a2a396fdaba828777b1c5277aee4fc69a">getPlusTerms</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;known_term, <a class="el" href="classCVC3_1_1ExprMap.html">ExprMap</a>&lt; <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &gt; &amp;sumHashMap)
<li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#af6d2296102e85962df7567ed2c09d0b6">buildPlusTerm</a> (int bv_size, <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;known_term, <a class="el" href="classCVC3_1_1ExprMap.html">ExprMap</a>&lt; <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &gt; &amp;sumHashMap)
<li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#ab6cc1b10eb60cdf44eabb5a45013477f">chopConcat</a> (int bv_size, <a class="el" href="classCVC3_1_1Rational.html">Rational</a> c, std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;concatKids)
<li>bool <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#afd8d2a7f441db7d8a8cf41b83dcc9d0a">okToSplit</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
</ul>
<h2><a name="pri-attribs"></a>
Private Attributes</h2>
<ul>
<li><a class="el" href="classCVC3_1_1TheoryBitvector.html">TheoryBitvector</a> * <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#adac6d564649b68cf95c22a82cefbbe72">d_theoryBitvector</a>
<li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#ae3c2817336952a9c84ca8a44db3896e1">d_bvZero</a>
<dl class="el"><dd class="mdescRight">Constant 1-bit bit-vector 0bin0.  <a href="#ae3c2817336952a9c84ca8a44db3896e1"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#aed61523f51f9daff35bf4823e9c4c06e">d_bvOne</a>
<dl class="el"><dd class="mdescRight">Constant 1-bit bit-vector 0bin1.  <a href="#aed61523f51f9daff35bf4823e9c4c06e"></a><br/></dl></ul>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>This class implements proof rules for bitvector normalizers (concatenation normal form, bvplus normal form), bitblaster rules, other relevant rewrite rules for bv arithmetic and word-level operators. </p>
<p>Author: Vijay Ganesh, May-August, 2004 </p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8h_source.html#l00041">41</a> of file <a class="el" href="bitvector__theorem__producer_8h_source.html">bitvector_theorem_producer.h</a>.</p>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ab0dec14e43b28a75df52cbef0f767a23"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::BitvectorTheoremProducer" ref="ab0dec14e43b28a75df52cbef0f767a23" args="(TheoryBitvector *theoryBitvector)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">BitvectorTheoremProducer::BitvectorTheoremProducer </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classCVC3_1_1TheoryBitvector.html">TheoryBitvector</a> *&#160;</td>
          <td class="paramname"><em>theoryBitvector</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Constructor: constructs an instance of bitvector DP. </p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00050">50</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="bitvector__theorem__producer_8h_source.html#l00048">d_bvOne</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00046">d_bvZero</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, and <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>.</p>

</div>
</div>
<a class="anchor" id="a8be04256f3b26c7932f2c0272ad3f6d1"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::~BitvectorTheoremProducer" ref="a8be04256f3b26c7932f2c0272ad3f6d1" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CVC3::BitvectorTheoremProducer::~BitvectorTheoremProducer </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8h_source.html#l00090">90</a> of file <a class="el" href="bitvector__theorem__producer_8h_source.html">bitvector_theorem_producer.h</a>.</p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="aaf9905051ca381e18683a41651404b69"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvZero" ref="aaf9905051ca381e18683a41651404b69" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a>&amp; CVC3::BitvectorTheoremProducer::bvZero </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline, private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return cached constant 0bin0. </p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8h_source.html#l00050">50</a> of file <a class="el" href="bitvector__theorem__producer_8h_source.html">bitvector_theorem_producer.h</a>.</p>

<p>References <a class="el" href="bitvector__theorem__producer_8h_source.html#l00046">d_bvZero</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00927">bitExtractToExtract()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04294">expandTypePred()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00437">signBVLTRule()</a>, and <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04277">typePredBit()</a>.</p>

</div>
</div>
<a class="anchor" id="a53f5be1f87db3613052a22fcf8a7e5d0"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvOne" ref="a53f5be1f87db3613052a22fcf8a7e5d0" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a>&amp; CVC3::BitvectorTheoremProducer::bvOne </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline, private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return cached constant 0bin1. </p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8h_source.html#l00052">52</a> of file <a class="el" href="bitvector__theorem__producer_8h_source.html">bitvector_theorem_producer.h</a>.</p>

<p>References <a class="el" href="bitvector__theorem__producer_8h_source.html#l00048">d_bvOne</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00927">bitExtractToExtract()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04294">expandTypePred()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00437">signBVLTRule()</a>, and <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04277">typePredBit()</a>.</p>

</div>
</div>
<a class="anchor" id="ab46305e9bee9f911362cdb54a3037703"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::collectLikeTermsOfPlus" ref="ab46305e9bee9f911362cdb54a3037703" args="(const Expr &amp;e, ExprMap&lt; Rational &gt; &amp;likeTerms, Rational &amp;plusConstant)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BitvectorTheoremProducer::collectLikeTermsOfPlus </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_1ExprMap.html">ExprMap</a>&lt; <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>likeTerms</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>plusConstant</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Collect all of: a*x1+b*x1 + c*x2-x2 + d*x3 + ~x3 + ~x4 +e into (a+b, x1) , (c-1 , x2), (d-1, x3), (-1, x4) and the constant e-2. The constant is calculated from the formula -x = ~x+1 (or -x-1=~x). </p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03723">3723</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00066">CVC3::BVMULT</a>, <a class="el" href="theory__bitvector_8h_source.html#l00063">CVC3::BVUMINUS</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr__map_8h_source.html#l00175">CVC3::ExprMap&lt; Data &gt;::clear()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03692">collectOneTermOfPlus()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05474">CVC3::TheoryBitvector::computeBVConst()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03865">combineLikeTermsRule()</a>.</p>

</div>
</div>
<a class="anchor" id="a6596cca8e249d3ef6632429bd114a98a"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::collectOneTermOfPlus" ref="a6596cca8e249d3ef6632429bd114a98a" args="(const Rational &amp;coefficient, const Expr &amp;var, ExprMap&lt; Rational &gt; &amp;likeTerms, Rational &amp;plusConstant)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BitvectorTheoremProducer::collectOneTermOfPlus </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;&#160;</td>
          <td class="paramname"><em>coefficient</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_1ExprMap.html">ExprMap</a>&lt; <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>likeTerms</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>plusConstant</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Collect a single coefficient*var pair into likeTerms. Update the counter of likeTerms[var] += coefficient. Potentially update the constant additive plusConstant. </p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03692">3692</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</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>, <a class="el" href="theory__bitvector_8cpp_source.html#l04920">CVC3::TheoryBitvector::newBVNegExpr()</a>, and <a class="el" href="theory__bitvector_8cpp_source.html#l00699">CVC3::TheoryBitvector::pushNegationRec()</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03723">collectLikeTermsOfPlus()</a>.</p>

</div>
</div>
<a class="anchor" id="a0c47ccc89b98254df839ea35b1a0720d"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::createNewPlusCollection" ref="a0c47ccc89b98254df839ea35b1a0720d" args="(const Expr &amp;e, const ExprMap&lt; Rational &gt; &amp;likeTerms, Rational &amp;plusConstant, std::vector&lt; Expr &gt; &amp;result)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BitvectorTheoremProducer::createNewPlusCollection </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1ExprMap.html">ExprMap</a>&lt; <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>likeTerms</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>plusConstant</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>result</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Create a vector which will form the next PVPLUS. Use the colleciton of likeTerms, and the constant additive plusConstant </p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03785">3785</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr__map_8h_source.html#l00190">CVC3::ExprMap&lt; Data &gt;::begin()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03766">boundedModulo()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="expr__map_8h_source.html#l00191">CVC3::ExprMap&lt; Data &gt;::end()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</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__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05038">CVC3::TheoryBitvector::newBVMultExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04920">CVC3::TheoryBitvector::newBVNegExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00699">CVC3::TheoryBitvector::pushNegationRec()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03865">combineLikeTermsRule()</a>.</p>

</div>
</div>
<a class="anchor" id="a24fff4a463643869b7a3b604884437b9"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::sumNormalizedElements" ref="a24fff4a463643869b7a3b604884437b9" args="(int bvplusLength, const std::vector&lt; Expr &gt; &amp;elements)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> BitvectorTheoremProducer::sumNormalizedElements </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>bvplusLength</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></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>elements</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Create expression by applying plus to all elements. All elements should be normalized and ready. If there are too few elements, a non BVPLUS expression will be created. </p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03845">3845</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05275">CVC3::TheoryBitvector::newBVPlusExpr()</a>, and <a class="el" href="theory__bitvector_8cpp_source.html#l05145">CVC3::TheoryBitvector::newBVZeroString()</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03865">combineLikeTermsRule()</a>.</p>

</div>
</div>
<a class="anchor" id="a2a396fdaba828777b1c5277aee4fc69a"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::getPlusTerms" ref="a2a396fdaba828777b1c5277aee4fc69a" args="(const Expr &amp;e, Rational &amp;known_term, ExprMap&lt; Rational &gt; &amp;sumHashMap)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BitvectorTheoremProducer::getPlusTerms </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>known_term</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classCVC3_1_1ExprMap.html">ExprMap</a>&lt; <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>sumHashMap</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="bitvector__theorem__producer_8cpp_source.html#l05020">5020</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00066">CVC3::BVMULT</a>, <a class="el" href="theory__bitvector_8h_source.html#l00058">CVC3::BVNEG</a>, <a class="el" href="theory__bitvector_8h_source.html#l00064">CVC3::BVPLUS</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00063">CVC3::BVUMINUS</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05474">CVC3::TheoryBitvector::computeBVConst()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00038">CVC3::CONCAT</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03195">concatConst()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theory__bitvector_8h_source.html#l00039">CVC3::EXTRACT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05414">CVC3::TheoryBitvector::getExtractHi()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05405">CVC3::TheoryBitvector::getExtractLow()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, and <a class="el" href="rational_8h_source.html#l00159">CVC3::pow()</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05692">canonBVEQ()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04770">canonBVMult()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05559">canonBVPlus()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05169">chopConcat()</a>, and <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02241">rewriteBVSub()</a>.</p>

</div>
</div>
<a class="anchor" id="af6d2296102e85962df7567ed2c09d0b6"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::buildPlusTerm" ref="af6d2296102e85962df7567ed2c09d0b6" args="(int bv_size, Rational &amp;known_term, ExprMap&lt; Rational &gt; &amp;sumHashMap)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> BitvectorTheoremProducer::buildPlusTerm </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>bv_size</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>known_term</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classCVC3_1_1ExprMap.html">ExprMap</a>&lt; <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>sumHashMap</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="bitvector__theorem__producer_8cpp_source.html#l05298">5298</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr__map_8h_source.html#l00190">CVC3::ExprMap&lt; Data &gt;::begin()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00058">CVC3::BVNEG</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05169">chopConcat()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00038">CVC3::CONCAT</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</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="theory__bitvector_8h_source.html#l00039">CVC3::EXTRACT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05414">CVC3::TheoryBitvector::getExtractHi()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05405">CVC3::TheoryBitvector::getExtractLow()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01223">CVC3::Expr::isNull()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05083">CVC3::TheoryBitvector::newBVMultPadExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04920">CVC3::TheoryBitvector::newBVNegExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05275">CVC3::TheoryBitvector::newBVPlusExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05145">CVC3::TheoryBitvector::newBVZeroString()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04997">CVC3::TheoryBitvector::newConcatExpr()</a>, and <a class="el" href="rational_8h_source.html#l00159">CVC3::pow()</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05692">canonBVEQ()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04770">canonBVMult()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05559">canonBVPlus()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05169">chopConcat()</a>, and <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02241">rewriteBVSub()</a>.</p>

</div>
</div>
<a class="anchor" id="ab6cc1b10eb60cdf44eabb5a45013477f"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::chopConcat" ref="ab6cc1b10eb60cdf44eabb5a45013477f" args="(int bv_size, Rational c, std::vector&lt; Expr &gt; &amp;concatKids)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> BitvectorTheoremProducer::chopConcat </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>bv_size</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>c</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>concatKids</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="bitvector__theorem__producer_8cpp_source.html#l05169">5169</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05298">buildPlusTerm()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05474">CVC3::TheoryBitvector::computeBVConst()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00038">CVC3::CONCAT</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01162">CVC3::Expr::getKids()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05020">getPlusTerms()</a>, <a class="el" href="expr_8h_source.html#l01223">CVC3::Expr::isNull()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05275">CVC3::TheoryBitvector::newBVPlusExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05145">CVC3::TheoryBitvector::newBVZeroString()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04997">CVC3::TheoryBitvector::newConcatExpr()</a>, and <a class="el" href="rational_8h_source.html#l00159">CVC3::pow()</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05298">buildPlusTerm()</a>.</p>

</div>
</div>
<a class="anchor" id="afd8d2a7f441db7d8a8cf41b83dcc9d0a"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::okToSplit" ref="afd8d2a7f441db7d8a8cf41b83dcc9d0a" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BitvectorTheoremProducer::okToSplit </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>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05657">5657</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00054">CVC3::BVAND</a>, <a class="el" href="theory__bitvector_8h_source.html#l00047">CVC3::BVASHR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00046">CVC3::BVLSHR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00066">CVC3::BVMULT</a>, <a class="el" href="theory__bitvector_8h_source.html#l00058">CVC3::BVNEG</a>, <a class="el" href="theory__bitvector_8h_source.html#l00055">CVC3::BVOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00064">CVC3::BVPLUS</a>, <a class="el" href="theory__bitvector_8h_source.html#l00068">CVC3::BVSDIV</a>, <a class="el" href="theory__bitvector_8h_source.html#l00045">CVC3::BVSHL</a>, <a class="el" href="theory__bitvector_8h_source.html#l00071">CVC3::BVSMOD</a>, <a class="el" href="theory__bitvector_8h_source.html#l00070">CVC3::BVSREM</a>, <a class="el" href="theory__bitvector_8h_source.html#l00067">CVC3::BVUDIV</a>, <a class="el" href="theory__bitvector_8h_source.html#l00069">CVC3::BVUREM</a>, <a class="el" href="theory__bitvector_8h_source.html#l00056">CVC3::BVXOR</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="theory__bitvector_8h_source.html#l00039">CVC3::EXTRACT</a>, <a class="el" href="debug_8h_source.html#l00037">FatalAssert</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, and <a class="el" href="theory_8h_source.html#l00556">CVC3::Theory::isLeaf()</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05692">canonBVEQ()</a>.</p>

</div>
</div>
<a class="anchor" id="a335f389e282bdb6529f86b2101b330e0"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bitvectorFalseRule" ref="a335f389e282bdb6529f86b2101b330e0" 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> BitvectorTheoremProducer::bitvectorFalseRule </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">thm</td><td>input theorem: (e1[i]&lt;=&gt;e2[i])&lt;=&gt;false</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>(e1=e2)&lt;=&gt;false </dd></dl>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a6536981ca57bbf915b88a818ad56a1f3">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00066">66</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00040">CVC3::BOOLEXTRACT</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05356">CVC3::TheoryBitvector::getBoolExtractIndex()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="expr_8h_source.html#l00424">CVC3::Expr::isIff()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="aafe3a19c755d3559e4c419be7c66d7c5"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bitvectorTrueRule" ref="aafe3a19c755d3559e4c419be7c66d7c5" 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> BitvectorTheoremProducer::bitvectorTrueRule </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">thm</td><td>input theorem: (~e1[i]&lt;=&gt;e2[i])&lt;=&gt;true</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>(e1!=e2)&lt;=&gt;true </dd></dl>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a27a79309cbbf8554394d32c9773472cc">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00104">104</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00040">CVC3::BOOLEXTRACT</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05356">CVC3::TheoryBitvector::getBoolExtractIndex()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="expr_8h_source.html#l00424">CVC3::Expr::isIff()</a>, <a class="el" href="expr_8h_source.html#l00937">CVC3::Expr::negate()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="kinds_8h_source.html#l00066">NOT</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="adc756096f301c80bb2bf73266c200aff"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bitBlastEqnRule" ref="adc756096f301c80bb2bf73266c200aff" args="(const Expr &amp;e, const Expr &amp;f)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::bitBlastEqnRule </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>f</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">e</td><td>input equation: e1=e2 over bitvector terms </td></tr>
    <tr><td class="paramname">f</td><td>formula over the bits of bitvector variables in e:</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><p class="formulaDsp">
<img class="formulaDsp" alt="\[\frac{e_1 = e_2}{\bigwedge_{i=1}^n (e_{1}[i] \iff e_{2}[i]) } \]" src="form_335.png"/>
</p>
 where each of <p class="formulaDsp">
<img class="formulaDsp" alt="\[ e_{1}[i], e{2}[i] \]" src="form_336.png"/>
</p>
 denotes a formula over variables in <p class="formulaDsp">
<img class="formulaDsp" alt="\[ e_{1}, e_{2} \]" src="form_337.png"/>
</p>
 respectively </dd></dl>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a596c0779b2f39d41816ff658eef9203b">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00142">142</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00040">CVC3::BOOLEXTRACT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05356">CVC3::TheoryBitvector::getBoolExtractIndex()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="expr_8h_source.html#l00421">CVC3::Expr::isAnd()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="expr_8h_source.html#l00424">CVC3::Expr::isIff()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a9839f27db5f349fe6fb6b21575cde24c"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bitBlastDisEqnRule" ref="a9839f27db5f349fe6fb6b21575cde24c" args="(const Theorem &amp;e, const Expr &amp;f)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::bitBlastDisEqnRule </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>f</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">e</td><td>: input disequality: e1 != e2 over bitvector terms </td></tr>
    <tr><td class="paramname">f</td><td>: formula over the bits of bitvector variables in e:</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><p class="formulaDsp">
<img class="formulaDsp" alt="\[\frac{e_1 \not = e_2}{\bigwedge_{i=1}^n ((\neg e_{1}[i]) \iff e_{2}[i]) } \]" src="form_338.png"/>
</p>
 where each of <p class="formulaDsp">
<img class="formulaDsp" alt="\[ e_{1}[i], e{2}[i] \]" src="form_336.png"/>
</p>
 denotes a formula over variables in <p class="formulaDsp">
<img class="formulaDsp" alt="\[ e_{1}, e_{2} \]" src="form_337.png"/>
</p>
 respectively </dd></dl>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#aefb184e963398f43e9dd7a0799563350">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00225">225</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00040">CVC3::BOOLEXTRACT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05356">CVC3::TheoryBitvector::getBoolExtractIndex()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="expr_8h_source.html#l00424">CVC3::Expr::isIff()</a>, <a class="el" href="expr_8h_source.html#l00420">CVC3::Expr::isNot()</a>, <a class="el" href="expr_8h_source.html#l00422">CVC3::Expr::isOr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00107">CVC3::TheoremProducer::newTheorem()</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>, <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="ae676208401e0d94c96d258f2dd652a68"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::signExtendRule" ref="ae676208401e0d94c96d258f2dd652a68" 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> BitvectorTheoremProducer::signExtendRule </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>sign extend the input SX(e) appropriately </p>
<p>signExtendRule: pads the input e with topBit to length len </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a06405edfaf820f9b2940ce7bf406615f">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00339">339</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04997">CVC3::TheoryBitvector::newConcatExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00048">CVC3::SX</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00380">bitExtractSXRule()</a>.</p>

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

<p>Pad the kids of BVLT/BVLE to make their length equal. </p>
<p>Pad the kids of BVLT/BVLE to make their bvLength equal. </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a5ca10099b3728f472fc70efbe03fce11">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00305">305</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00074">CVC3::BVLE</a>, <a class="el" href="theory__bitvector_8h_source.html#l00073">CVC3::BVLT</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04856">CVC3::TheoryBitvector::newBVLEExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04845">CVC3::TheoryBitvector::newBVLTExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03424">pad()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

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

<p>Sign Extend the kids of BVSLT/BVSLE to make their length equal. </p>
<p>Pad the kids of SIGN BVLT/SIGN BVLE to make their bvLength equal. </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a9a4fef11fae7f9d9b281876569c3ecaf">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00397">397</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00078">CVC3::BVSLE</a>, <a class="el" href="theory__bitvector_8h_source.html#l00077">CVC3::BVSLT</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04909">CVC3::TheoryBitvector::newBVSLEExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04898">CVC3::TheoryBitvector::newBVSLTExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04867">CVC3::TheoryBitvector::newSXExpr()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a1798c9272bc8f7f78100a4fb839fb907"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::signBVLTRule" ref="a1798c9272bc8f7f78100a4fb839fb907" args="(const Expr &amp;e, const Theorem &amp;topBit0, const Theorem &amp;topBit1)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::signBVLTRule </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>topBit0</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>topBit1</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>input: e0 &lt;=(s) e1. output depends on whether the topbits(MSB) of e0 and e1 are constants. If they are constants then optimizations are done, otherwise the following rule is implemented.</p>
<p>e0 &lt;=(s) e1 &lt;==&gt; (e0[n-1] AND NOT e1[n-1]) OR (e0[n-1] AND e1[n-1] AND e1[n-2:0] &lt;= e0[n-2:0]) OR (NOT e0[n-1] AND NOT e1[n-1] AND e0[n-2:0] &lt;= e1[n-2:0])</p>
<p>input: e0 &lt;=(s) e1. output depends on whether the topbits(MSB) of e0 and e1 are constants. If they are constants then optimizations are done, otherwise the following rule is implemented.</p>
<p>e0 &lt;=(s) e1 &lt;==&gt; (e0[n-1] AND NOT e1[n-1]) OR (e0[n-1] = e1[n-1] AND e0[n-2:0] &lt;= e1[n-2:0]) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#af472ab5f550394b03c264675181ac1c9">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00437">437</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.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__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00052">bvOne()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00078">CVC3::BVSLE</a>, <a class="el" href="theory__bitvector_8h_source.html#l00077">CVC3::BVSLT</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00050">bvZero()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05474">CVC3::TheoryBitvector::computeBVConst()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="theory_8h_source.html#l00579">CVC3::Theory::falseExpr()</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#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04856">CVC3::TheoryBitvector::newBVLEExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04845">CVC3::TheoryBitvector::newBVLTExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8h_source.html#l00951">CVC3::Expr::orExpr()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, <a class="el" href="theory_8h_source.html#l00582">CVC3::Theory::trueExpr()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="aff7d8a5558884d2b24e83dc55dc0a59e"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::notBVEQ1Rule" ref="aff7d8a5558884d2b24e83dc55dc0a59e" 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> BitvectorTheoremProducer::notBVEQ1Rule </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>NOT(e[0][0] = e[0][1]) &lt;==&gt; e[0][0] = ~e[0][1] </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a7fdf91656d5a4d1b9278e8a974a2578e">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00606">606</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="kinds_8h_source.html#l00061">EQ</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04920">CVC3::TheoryBitvector::newBVNegExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="kinds_8h_source.html#l00066">NOT</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a15d14a25e4805c5aceff3521f7dbebd0"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::notBVLTRule" ref="a15d14a25e4805c5aceff3521f7dbebd0" 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> BitvectorTheoremProducer::notBVLTRule </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>NOT(e[0][0] &lt; e[0][1]) &lt;==&gt; (e[0][1] &lt;= e[0][0]), NOT(e[0][0] &lt;= e[0][1]) &lt;==&gt; (e[0][1] &lt; e[0][0]) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a328733af3be6889566b4ab81c7dd4759">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00631">631</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00074">CVC3::BVLE</a>, <a class="el" href="theory__bitvector_8h_source.html#l00073">CVC3::BVLT</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04856">CVC3::TheoryBitvector::newBVLEExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04845">CVC3::TheoryBitvector::newBVLTExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="kinds_8h_source.html#l00066">NOT</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

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

<p>if(lhs==rhs) then we have (lhs &lt; rhs &lt;==&gt; false),(lhs &lt;= rhs &lt;==&gt; true) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a4be7745b6e05010590d15b0ae9f87212">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00658">658</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00074">CVC3::BVLE</a>, <a class="el" href="theory__bitvector_8h_source.html#l00073">CVC3::BVLT</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory_8h_source.html#l00579">CVC3::Theory::falseExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, <a class="el" href="theory_8h_source.html#l00582">CVC3::Theory::trueExpr()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="ac141b7dc72e52b9b18fd2258db17a952"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::zeroLeq" ref="ac141b7dc72e52b9b18fd2258db17a952" 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> BitvectorTheoremProducer::zeroLeq </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>|= 0 &lt;= foo &lt;-&gt; TRUE </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a7536abc5b7725abfec2d93987cf86a6b">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00686">686</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00074">CVC3::BVLE</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05474">CVC3::TheoryBitvector::computeBVConst()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, <a class="el" href="theory_8h_source.html#l00582">CVC3::Theory::trueExpr()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

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

<p>if indeed e[0] &lt; e[1] then (e&lt;==&gt;true) else (e&lt;==&gt;false) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a3ce4fc360b44dec2f89d8d597244c305">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00704">704</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00074">CVC3::BVLE</a>, <a class="el" href="theory__bitvector_8h_source.html#l00073">CVC3::BVLT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05474">CVC3::TheoryBitvector::computeBVConst()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory_8h_source.html#l00579">CVC3::Theory::falseExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, <a class="el" href="theory_8h_source.html#l00582">CVC3::Theory::trueExpr()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

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

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a666ed19d6d57236061243c0951ee6228">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00762">762</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00040">CVC3::BOOLEXTRACT</a>, <a class="el" href="theory__bitvector_8h_source.html#l00074">CVC3::BVLE</a>, <a class="el" href="theory__bitvector_8h_source.html#l00073">CVC3::BVLT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory_8h_source.html#l00579">CVC3::Theory::falseExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05356">CVC3::TheoryBitvector::getBoolExtractIndex()</a>, <a class="el" href="theorem_8cpp_source.html#l00240">CVC3::Theorem::getLHS()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</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="expr_8h_source.html#l00965">CVC3::Expr::iffExpr()</a>, <a class="el" href="type_8h_source.html#l00060">CVC3::Type::isBool()</a>, <a class="el" href="expr_8h_source.html#l00355">CVC3::Expr::isFalse()</a>, <a class="el" href="expr_8h_source.html#l01223">CVC3::Expr::isNull()</a>, <a class="el" href="theorem_8cpp_source.html#l00224">CVC3::Theorem::isRewrite()</a>, <a class="el" href="expr_8h_source.html#l00356">CVC3::Expr::isTrue()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04856">CVC3::TheoryBitvector::newBVLEExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04845">CVC3::TheoryBitvector::newBVLTExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</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>, <a class="el" href="theory_8h_source.html#l00582">CVC3::Theory::trueExpr()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

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

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#ad63871213ec8c864a622bb3d2248b043">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00895">895</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00040">CVC3::BOOLEXTRACT</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05356">CVC3::TheoryBitvector::getBoolExtractIndex()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="kinds_8h_source.html#l00070">IFF</a>, <a class="el" href="expr_8h_source.html#l00357">CVC3::Expr::isBoolConst()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="ae7cdd320c7fb8e16f943626d07d9f63b"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bitExtractToExtract" ref="ae7cdd320c7fb8e16f943626d07d9f63b" 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> BitvectorTheoremProducer::bitExtractToExtract </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> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>t[i] ==&gt; t[i:i] = 0bin1 or NOT t[i] ==&gt; t[i:i] = 0bin0 </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a77c82c6fccba740e2df14739edb40a02">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00927">927</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00040">CVC3::BOOLEXTRACT</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00052">bvOne()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00050">bvZero()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05356">CVC3::TheoryBitvector::getBoolExtractIndex()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="expr_8h_source.html#l00420">CVC3::Expr::isNot()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

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

<p>t[i] &lt;=&gt; t[i:i][0] (to use rewriter for simplifying t[i:i]) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a79a44f95f79735f733cd75f289887da9">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00948">948</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00040">CVC3::BOOLEXTRACT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05356">CVC3::TheoryBitvector::getBoolExtractIndex()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04940">CVC3::TheoryBitvector::newBoolExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="ad14158d7d8b6a1ccf2b6c47991d498d7"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bitExtractConstant" ref="ad14158d7d8b6a1ccf2b6c47991d498d7" args="(const Expr &amp;x, int i)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::bitExtractConstant </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>i</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>: input1 is bitvector constant </td></tr>
    <tr><td class="paramname">i</td><td>: input2 is extracted bitposition</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><p class="formulaDsp">
<img class="formulaDsp" alt="\[ \frac{}{\mathrm{BOOLEXTRACT(x,i)} \iff \mathrm{TRUE}} \]" src="form_316.png"/>
</p>
, if bitposition has a 1; <p class="formulaDsp">
<img class="formulaDsp" alt="\[ \frac{}{\mathrm{BOOLEXTRACT(x,i)} \iff \mathrm{FALSE}} \]" src="form_317.png"/>
</p>
, if the bitposition has a 0 </dd></dl>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#ace62b8eacaad88c90231099943a49090">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00977">977</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory_8h_source.html#l00579">CVC3::Theory::falseExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05448">CVC3::TheoryBitvector::getBVConstValue()</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__bitvector_8cpp_source.html#l04940">CVC3::TheoryBitvector::newBoolExtractExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00486">rat()</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#l00582">CVC3::Theory::trueExpr()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a571db5dc21ec0b24e1d861c137892f9c"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bitExtractConcatenation" ref="a571db5dc21ec0b24e1d861c137892f9c" args="(const Expr &amp;x, int i)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::bitExtractConcatenation </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>i</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>: input1 is bitvector binary concatenation </td></tr>
    <tr><td class="paramname">i</td><td>: input2 is extracted bitposition</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><p class="formulaDsp">
<img class="formulaDsp" alt="\[ \frac{}{(t_{[m]}@q_{[n]})[i] \iff (q_{[n]})[i]} \]" src="form_318.png"/>
</p>
, where <p class="formulaDsp">
<img class="formulaDsp" alt="\[ 0 \geq i \geq n-1 \]" src="form_319.png"/>
</p>
, another case of boolextract over concatenation is: <p class="formulaDsp">
<img class="formulaDsp" alt="\[\frac{}{(t_{[m]}@q_{[n]})[i] \iff (t_{[m]})[i-n]} \]" src="form_320.png"/>
</p>
, where <p class="formulaDsp">
<img class="formulaDsp" alt="\[ n \geq i \geq m+n-1 \]" src="form_321.png"/>
</p>
 </dd></dl>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a14d171b56b3318b1a070fc2c0798f038">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01017">1017</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8h_source.html#l00038">CVC3::CONCAT</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory_8cpp_source.html#l00383">CVC3::Theory::getBaseType()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="expr_8h_source.html#l01223">CVC3::Expr::isNull()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04940">CVC3::TheoryBitvector::newBoolExtractExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00486">rat()</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="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="abf6f1ff706f6cefe196b1cbe7d5f85c1"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bitExtractConstBVMult" ref="abf6f1ff706f6cefe196b1cbe7d5f85c1" args="(const Expr &amp;t, int i)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::bitExtractConstBVMult </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">int&#160;</td>
          <td class="paramname"><em>i</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">t</td><td>: input1 is bitvector binary BVMULT. x[0] must be BVCONST </td></tr>
    <tr><td class="paramname">i</td><td>: input2 is extracted bitposition</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>bitblast of BVMULT </dd></dl>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a14a48b5e0170be003c5a52585654fa6c">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01074">1074</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00066">CVC3::BVMULT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05448">CVC3::TheoryBitvector::getBVConstValue()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04940">CVC3::TheoryBitvector::newBoolExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05275">CVC3::TheoryBitvector::newBVPlusExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05145">CVC3::TheoryBitvector::newBVZeroString()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04968">CVC3::TheoryBitvector::newFixedConstWidthLeftShiftExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00486">rat()</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="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a0425488c3b01eb65554867483e3cac02"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bitExtractBVMult" ref="a0425488c3b01eb65554867483e3cac02" args="(const Expr &amp;t, int i)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::bitExtractBVMult </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">int&#160;</td>
          <td class="paramname"><em>i</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">t</td><td>: input1 is bitvector binary BVMULT. t[0] must not be BVCONST </td></tr>
    <tr><td class="paramname">i</td><td>: input2 is extracted bitposition</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>bitblast of BVMULT </dd></dl>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#ac473ab04bc4692de3ff7f19940d4a3a2">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01141">1141</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00066">CVC3::BVMULT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="expr_8h_source.html#l00961">CVC3::Expr::iteExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04940">CVC3::TheoryBitvector::newBoolExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05159">CVC3::TheoryBitvector::newBVOneString()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05275">CVC3::TheoryBitvector::newBVPlusExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05145">CVC3::TheoryBitvector::newBVZeroString()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04968">CVC3::TheoryBitvector::newFixedConstWidthLeftShiftExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00486">rat()</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#l00582">CVC3::Theory::trueExpr()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a8efcf949614eab1089f00519f1db57bb"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bitExtractExtraction" ref="a8efcf949614eab1089f00519f1db57bb" args="(const Expr &amp;x, int i)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::bitExtractExtraction </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>i</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>: input1 is bitvector extraction [k:j] </td></tr>
    <tr><td class="paramname">i</td><td>: input2 is extracted bitposition</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><p class="formulaDsp">
<img class="formulaDsp" alt="\[ \frac{}{(t_{[n]}[k:j])[i] \iff (t_{[n]})[i+j]} \]" src="form_322.png"/>
</p>
, where <p class="formulaDsp">
<img class="formulaDsp" alt="\[ 0 \geq j \geq k < n, 0 \geq i < k-j \]" src="form_323.png"/>
</p>
 </dd></dl>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#ae46b941cbb7c67aec7a96a45b33e73ab">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01206">1206</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00039">CVC3::EXTRACT</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05414">CVC3::TheoryBitvector::getExtractHi()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05405">CVC3::TheoryBitvector::getExtractLow()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04940">CVC3::TheoryBitvector::newBoolExtractExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00486">rat()</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="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a6c02b66248026d3ffb357e980de37ed7"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bitExtractBVPlus" ref="a6c02b66248026d3ffb357e980de37ed7" args="(const std::vector&lt; Theorem &gt; &amp;t1, const std::vector&lt; Theorem &gt; &amp;t2, const Expr &amp;bvPlusTerm, int i)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::bitExtractBVPlus </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>t1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>t2</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>bvPlusTerm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>i</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">t1</td><td>: input1 is vector of bitblasts of t, from bit i-1 to 0 </td></tr>
    <tr><td class="paramname">t2</td><td>: input2 is vector of bitblasts of q, from bit i-1 to 0 </td></tr>
    <tr><td class="paramname">bvPlusTerm</td><td>: input3 is BVPLUS term: BVPLUS(n,t,q) </td></tr>
    <tr><td class="paramname">i</td><td>: input4 is extracted bitposition</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>The base case is: <p class="formulaDsp">
<img class="formulaDsp" alt="\[ \frac{}{(\mathrm{BVPLUS}(n,t,q))[0] \iff t[0] \oplus q[0]} \]" src="form_324.png"/>
</p>
, when <p class="formulaDsp">
<img class="formulaDsp" alt="\[ 0 < i \leq n-1 \]" src="form_325.png"/>
</p>
, we have <p class="formulaDsp">
<img class="formulaDsp" alt="\[ \frac{}{(\mathrm{BVPLUS}(n,t,q))[i] \iff t[i] \oplus q[i] \oplus c(t,q,i)} \]" src="form_326.png"/>
</p>
, where c(t,q,i) is the carry generated by the addition of bits from 0 to i-1 </dd></dl>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#ab60522e7672d31bcf2957d1cbd118208">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01256">1256</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00064">CVC3::BVPLUS</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01305">computeCarry()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05423">CVC3::TheoryBitvector::getBVPlusParam()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l00965">CVC3::Expr::iffExpr()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04940">CVC3::TheoryBitvector::newBoolExtractExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00486">rat()</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="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="aaf4999f69872e881257cd1e127732ec8"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bitExtractBVPlusPreComputed" ref="aaf4999f69872e881257cd1e127732ec8" args="(const Theorem &amp;t1_i, const Theorem &amp;t2_i, const Expr &amp;bvPlusTerm, int bitPos, int precomputed)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::bitExtractBVPlusPreComputed </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>t1_i</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>t2_i</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>bvPlusTerm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>bitPos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>precomputed</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#ab521ae872e2a877f5e30ec9f1b8ded8f">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01337">1337</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00040">CVC3::BOOLEXTRACT</a>, <a class="el" href="theory__bitvector_8h_source.html#l00064">CVC3::BVPLUS</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01406">computeCarryPreComputed()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05356">CVC3::TheoryBitvector::getBoolExtractIndex()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05423">CVC3::TheoryBitvector::getBVPlusParam()</a>, <a class="el" href="theorem_8cpp_source.html#l00240">CVC3::Theorem::getLHS()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="expr_8h_source.html#l00965">CVC3::Expr::iffExpr()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04940">CVC3::TheoryBitvector::newBoolExtractExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00486">rat()</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>, <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a415c16ecc3bbdd0942801028526d641f"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvPlusAssociativityRule" ref="a415c16ecc3bbdd0942801028526d641f" args="(const Expr &amp;bvPlusTerm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::bvPlusAssociativityRule </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>bvPlusTerm</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">bvPlusTerm</td><td>: input1 is bvPlusTerm, a BVPLUS term with arity &gt; 2</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>: output is iff-Theorem: bvPlusTerm &lt;==&gt; outputTerm, where outputTerm is an equivalent BINARY bvplus. </dd></dl>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a0836ea2282578bd221ade4a06d0abc2e">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01497">1497</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00064">CVC3::BVPLUS</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01162">CVC3::Expr::getKids()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05275">CVC3::TheoryBitvector::newBVPlusExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</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="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a43201ddd283a81a44095658241ca2a5e"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bitExtractNot" ref="a43201ddd283a81a44095658241ca2a5e" args="(const Expr &amp;x, int i)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::bitExtractNot </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>i</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>: input1 is bitwise NEGATION </td></tr>
    <tr><td class="paramname">i</td><td>: input2 is extracted bitposition</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><p class="formulaDsp">
<img class="formulaDsp" alt="\[ \frac{}{(\sim t_{[n]})[i] \iff \neg (t_{[n]}[i])} \]" src="form_327.png"/>
</p>
 </dd></dl>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a40fd98cf00aa03114e7bdf0e164abe69">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01539">1539</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00058">CVC3::BVNEG</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04940">CVC3::TheoryBitvector::newBoolExtractExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00486">rat()</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="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

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

<p>Extract from bitwise AND, OR, or XOR. </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a9f09c5a49fd132f26a01ec7d96168e42">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01575">1575</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="kinds_8h_source.html#l00067">AND</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="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00054">CVC3::BVAND</a>, <a class="el" href="theory__bitvector_8h_source.html#l00055">CVC3::BVOR</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00056">CVC3::BVXOR</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="theory_8h_source.html#l00090">CVC3::Theory::getEM()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr__manager_8cpp_source.html#l00405">CVC3::ExprManager::getKindName()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04940">CVC3::TheoryBitvector::newBoolExtractExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="kinds_8h_source.html#l00068">OR</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00486">rat()</a>, <a class="el" href="theorem_8h_source.html#l00404">CVC3::Theorem::toString()</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>, <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>, <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>, and <a class="el" href="kinds_8h_source.html#l00069">XOR</a>.</p>

</div>
</div>
<a class="anchor" id="a4153b23dadd58aea7bde7f71001aad91"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bitExtractFixedLeftShift" ref="a4153b23dadd58aea7bde7f71001aad91" args="(const Expr &amp;x, int i)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::bitExtractFixedLeftShift </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>i</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>: input1 is bitvector FIXED SHIFT <p class="formulaDsp">
<img class="formulaDsp" alt="\[ e_{[n]} \ll k \]" src="form_328.png"/>
</p>
 </td></tr>
    <tr><td class="paramname">i</td><td>: input2 is extracted bitposition</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><p class="formulaDsp">
<img class="formulaDsp" alt="\[\frac{}{(e_{[n]} \ll k)[i] \iff \mathrm{FALSE}} \]" src="form_329.png"/>
</p>
, if 0 &lt;= i &lt; k. however, if k &lt;= i &lt; n then, result is <p class="formulaDsp">
<img class="formulaDsp" alt="\[\frac{}{(e_{[n]} \ll k)[i] \iff e_{[n]}[i]} \]" src="form_330.png"/>
</p>
 </dd></dl>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a3c7217656c1f4bdd8ab08e415ef3dc7d">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01619">1619</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8h_source.html#l00043">CVC3::CONST_WIDTH_LEFTSHIFT</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory_8h_source.html#l00579">CVC3::Theory::falseExpr()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05385">CVC3::TheoryBitvector::getFixedLeftShiftParam()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00042">CVC3::LEFTSHIFT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04940">CVC3::TheoryBitvector::newBoolExtractExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00486">rat()</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="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

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

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a8671b7ed4e5e09402cf5a732fb13a373">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01668">1668</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory_8h_source.html#l00579">CVC3::Theory::falseExpr()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05396">CVC3::TheoryBitvector::getFixedRightShiftParam()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04940">CVC3::TheoryBitvector::newBoolExtractExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00486">rat()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00044">CVC3::RIGHTSHIFT</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="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

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

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#afcd3c4de329e1b2912d83853be46130a">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01721">1721</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00045">CVC3::BVSHL</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04940">CVC3::TheoryBitvector::newBoolExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="kinds_8h_source.html#l00068">OR</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00486">rat()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

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

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#aebe59090c69f529aa1450a64f2d80538">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01775">1775</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00046">CVC3::BVLSHR</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04940">CVC3::TheoryBitvector::newBoolExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="kinds_8h_source.html#l00068">OR</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00486">rat()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

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

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a95f41581d03d993ec02541ec78fbd655">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01829">1829</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00047">CVC3::BVASHR</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04940">CVC3::TheoryBitvector::newBoolExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04856">CVC3::TheoryBitvector::newBVLEExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="kinds_8h_source.html#l00068">OR</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00486">rat()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a6c59521b4540e2acd1fe954272bf3e09"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::zeroPaddingRule" ref="a6c59521b4540e2acd1fe954272bf3e09" args="(const Expr &amp;e, int r)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::zeroPaddingRule </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>r</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">e</td><td>: input1 is bitvector term </td></tr>
    <tr><td class="paramname">r</td><td>: input2 is extracted bitposition</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>we check if r &gt; bvlength(e). if yes, then return BOOLEXTRACT(e,r) &lt;==&gt; FALSE; else raise soundness exception. (Note: this rule is used in BVPLUS bitblast function) </dd></dl>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#ae806df67b545215d677ccd81b68c9b16">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01470">1470</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory_8h_source.html#l00579">CVC3::Theory::falseExpr()</a>, <a class="el" href="theory_8cpp_source.html#l00383">CVC3::Theory::getBaseType()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04940">CVC3::TheoryBitvector::newBoolExtractExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00486">rat()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

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

<p>bitExtractSXRule </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a0520e4a3cf5ce89aaa0cf24c1cf5dd9a">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00380">380</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04940">CVC3::TheoryBitvector::newBoolExtractExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00486">rat()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00339">signExtendRule()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="aaa38beb3d8990340aa5867f09900f14e"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::eqConst" ref="aaa38beb3d8990340aa5867f09900f14e" 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> BitvectorTheoremProducer::eqConst </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>c1=c2 &lt;=&gt; TRUE/FALSE (equality of constant bitvectors) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#ad88adf2f899f5eab5c0de7c09892178f">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01893">1893</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01885">constantKids()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory_8h_source.html#l00579">CVC3::Theory::falseExpr()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, <a class="el" href="theory_8h_source.html#l00582">CVC3::Theory::trueExpr()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

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

<p>|- c1=c2 ==&gt; |- AND(c1[i:i] = c2[i:i]) - expanding equalities into bits </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a72537952b59dbed6451fe20803e565a6">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01911">1911</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l00945">CVC3::andExpr()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theory_8cpp_source.html#l00383">CVC3::Theory::getBaseType()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00240">CVC3::Theorem::getLHS()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="theorem_8cpp_source.html#l00224">CVC3::Theorem::isRewrite()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00107">CVC3::TheoremProducer::newTheorem()</a>, <a class="el" href="theorem_8h_source.html#l00404">CVC3::Theorem::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a68fd84ca46b0e62103314c45dee495bd"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::leftShiftToConcat" ref="a68fd84ca46b0e62103314c45dee495bd" 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> BitvectorTheoremProducer::leftShiftToConcat </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>t&lt;&lt;n = c @ 0bin00...00, takes e == (t&lt;&lt;n) </p>
<p>t&lt;&lt;n = c @ 0bin00...00, takes e == (t&lt;&lt;n) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a2944e9810307f39e543f8fa6b973f0a8">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01944">1944</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05385">CVC3::TheoryBitvector::getFixedLeftShiftParam()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00042">CVC3::LEFTSHIFT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04997">CVC3::TheoryBitvector::newConcatExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="aabb5f8d91314adc4688e5970b986edf0"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::constWidthLeftShiftToConcat" ref="aabb5f8d91314adc4688e5970b986edf0" 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> BitvectorTheoremProducer::constWidthLeftShiftToConcat </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>t&lt;&lt;n = c @ 0bin00...00, takes e == (t&lt;&lt;n) </p>
<p>t&lt;&lt;n = c @ 0bin00...00, takes e == (t&lt;&lt;n) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#aaf79659bd7a160d20c3d27d7746d9ca3">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01968">1968</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8h_source.html#l00043">CVC3::CONST_WIDTH_LEFTSHIFT</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05385">CVC3::TheoryBitvector::getFixedLeftShiftParam()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04997">CVC3::TheoryBitvector::newConcatExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a7d91d285e929d00572f3da4da772f505"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::rightShiftToConcat" ref="a7d91d285e929d00572f3da4da772f505" 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> BitvectorTheoremProducer::rightShiftToConcat </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>t&gt;&gt;m = 0bin00...00 @ t[bvlength-1:m], takes e == (t&gt;&gt;n) </p>
<p>t&gt;&gt;m = 0bin00...00 @ t[bvLength-1:m], takes e == (t&gt;&gt;n) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#ab2d4f1d9f2f71845d0e2efb2e9ab0f02">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02001">2001</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05396">CVC3::TheoryBitvector::getFixedRightShiftParam()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05145">CVC3::TheoryBitvector::newBVZeroString()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04997">CVC3::TheoryBitvector::newConcatExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00044">CVC3::RIGHTSHIFT</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="ae47b2ec2a40c3376071ed60c16d457b6"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvshlToConcat" ref="ae47b2ec2a40c3376071ed60c16d457b6" 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> BitvectorTheoremProducer::bvshlToConcat </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>BVSHL(t,c) = t[n-c,0] @ 0bin00...00. </p>
<p>BVSHL(t,c) = t[n-c,0] @ 0bin00...00. </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#aa665d97eb8067ae68741a6e25135e307">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02033">2033</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00045">CVC3::BVSHL</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05474">CVC3::TheoryBitvector::computeBVConst()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="classCVC3_1_1Rational.html#a094636dfa3a740640ca1b0c7406f7e8f">CVC3::Rational::getInt()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04997">CVC3::TheoryBitvector::newConcatExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a431507c9e35ad328509072cea05f2d8e"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvshlSplit" ref="a431507c9e35ad328509072cea05f2d8e" 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> BitvectorTheoremProducer::bvshlSplit </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>BVSHL(t,c) = IF (c = 0) THEN t ELSE IF (c = 1) ... </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#ab3a7d61a6e1627433906f527f89e300b">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02068">2068</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00045">CVC3::BVSHL</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="expr_8h_source.html#l00961">CVC3::Expr::iteExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05145">CVC3::TheoryBitvector::newBVZeroString()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04997">CVC3::TheoryBitvector::newConcatExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a5f99ee62c0847affeb44264840764b43"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvlshrToConcat" ref="a5f99ee62c0847affeb44264840764b43" 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> BitvectorTheoremProducer::bvlshrToConcat </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>BVLSHR(t,c) = 0bin00...00 @ t[n-1,c]. </p>
<p>BVLSHR(t,c) = 0bin00...00 @ t[n-1,c]. </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a994aa73b02c523cd2e9e76a4880a167b">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02107">2107</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00046">CVC3::BVLSHR</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05474">CVC3::TheoryBitvector::computeBVConst()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="classCVC3_1_1Rational.html#a094636dfa3a740640ca1b0c7406f7e8f">CVC3::Rational::getInt()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05145">CVC3::TheoryBitvector::newBVZeroString()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04997">CVC3::TheoryBitvector::newConcatExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a61b2ded76e35d870b15502ab0641010d"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvShiftZero" ref="a61b2ded76e35d870b15502ab0641010d" 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> BitvectorTheoremProducer::bvShiftZero </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>All shifts over a 0 constant = 0. </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a52acdd1024ed2ab0737c7747102fa7fe">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02135">2135</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00047">CVC3::BVASHR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00046">CVC3::BVLSHR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00045">CVC3::BVSHL</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05474">CVC3::TheoryBitvector::computeBVConst()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00043">CVC3::CONST_WIDTH_LEFTSHIFT</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00042">CVC3::LEFTSHIFT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05145">CVC3::TheoryBitvector::newBVZeroString()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00044">CVC3::RIGHTSHIFT</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a3c3a4d49d47a08a3eb7599327f30f324"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvashrToConcat" ref="a3c3a4d49d47a08a3eb7599327f30f324" 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> BitvectorTheoremProducer::bvashrToConcat </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>BVASHR(t,c) = SX(t[n-1,c], n-1) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a42639e0098377ce718308a2ae833430b">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02155">2155</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00047">CVC3::BVASHR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05474">CVC3::TheoryBitvector::computeBVConst()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="classCVC3_1_1Rational.html#a094636dfa3a740640ca1b0c7406f7e8f">CVC3::Rational::getInt()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04867">CVC3::TheoryBitvector::newSXExpr()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a70ad43279f8061f7be4e35c49205ab69"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::rewriteXNOR" ref="a70ad43279f8061f7be4e35c49205ab69" 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> BitvectorTheoremProducer::rewriteXNOR </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>a XNOR b &lt;=&gt; (~a &amp; ~b) | (a &amp; b) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#af126175b4dbb92231ec44c14f32d8b21">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02181">2181</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00057">CVC3::BVXNOR</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04920">CVC3::TheoryBitvector::newBVNegExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04758">CVC3::TheoryBitvector::newBVXorExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a2d49a06be7aae5f5675977fdc1b6457e"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::rewriteNAND" ref="a2d49a06be7aae5f5675977fdc1b6457e" 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> BitvectorTheoremProducer::rewriteNAND </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>a NAND b &lt;=&gt; ~(a &amp; b) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a53c8279d20f7d229437790ce6c0da2da">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02196">2196</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.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#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00059">CVC3::BVNAND</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04656">CVC3::TheoryBitvector::newBVAndExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04920">CVC3::TheoryBitvector::newBVNegExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a372c699b42bb9ab8b64e2a836bedcffd"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::rewriteNOR" ref="a372c699b42bb9ab8b64e2a836bedcffd" 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> BitvectorTheoremProducer::rewriteNOR </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>a NOR b &lt;=&gt; ~(a | b) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a8e2d34a4c387bd5eace8b7e6237bd936">CVC3::BitvectorProofRules</a>.</p>

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

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00060">CVC3::BVNOR</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04920">CVC3::TheoryBitvector::newBVNegExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04692">CVC3::TheoryBitvector::newBVOrExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8h_source.html#l00955">CVC3::orExpr()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="ab314017086d977ee1f4facb23208864c"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::rewriteBVCOMP" ref="ab314017086d977ee1f4facb23208864c" 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> BitvectorTheoremProducer::rewriteBVCOMP </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>BVCOMP(a,b) &lt;=&gt; ITE(a=b,0bin1,0bin0) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#acccc78337e0a0143b9635e1cd49ac657">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02226">2226</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00061">CVC3::BVCOMP</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l00961">CVC3::Expr::iteExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05159">CVC3::TheoryBitvector::newBVOneString()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05145">CVC3::TheoryBitvector::newBVZeroString()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a1a040de059cc4fedf5cdd00cec37fc9c"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::rewriteBVSub" ref="a1a040de059cc4fedf5cdd00cec37fc9c" 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> BitvectorTheoremProducer::rewriteBVSub </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>a - b &lt;=&gt; a + (-b) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a693f8801e36967bf64a0fef0290cad5a">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02241">2241</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05298">buildPlusTerm()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00065">CVC3::BVSUB</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05020">getPlusTerms()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05275">CVC3::TheoryBitvector::newBVPlusExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04930">CVC3::TheoryBitvector::newBVUminusExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a560ad9ec684e523f941c2d12fa833cd1"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::constMultToPlus" ref="a560ad9ec684e523f941c2d12fa833cd1" 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> BitvectorTheoremProducer::constMultToPlus </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>k*t = BVPLUS(n, &lt;sum of shifts of t&gt;) -- translation of k*t to BVPLUS </p>
<p>If k = 2^m, return k*t = t@0...0 </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#ac132cce6c99ee7626ee4696010e77aa6">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02270">2270</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.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="theory__bitvector_8h_source.html#l00066">CVC3::BVMULT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="classCVC3_1_1Rational.html#a1366320f4de558bb964c67f8aecedb36">CVC3::Rational::isInteger()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04920">CVC3::TheoryBitvector::newBVNegExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05275">CVC3::TheoryBitvector::newBVPlusExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04954">CVC3::TheoryBitvector::newFixedLeftShiftExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00486">rat()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="af734405e15de47e28f4112e07bfc9dba"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvplusZeroConcatRule" ref="af734405e15de47e28f4112e07bfc9dba" 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> BitvectorTheoremProducer::bvplusZeroConcatRule </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>0bin0...0 @ BVPLUS(n, args) = BVPLUS(n+k, args) </p>
<p>where k is the size of the 0bin0...0 </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a425296e1ac48c9698802b9a7513745d5">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02318">2318</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00064">CVC3::BVPLUS</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05474">CVC3::TheoryBitvector::computeBVConst()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00038">CVC3::CONCAT</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05423">CVC3::TheoryBitvector::getBVPlusParam()</a>, <a class="el" href="expr_8h_source.html#l01162">CVC3::Expr::getKids()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05275">CVC3::TheoryBitvector::newBVPlusExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</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>, <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a6d773885e3e78a736cd22dd79835b9e3"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::zeroCoeffBVMult" ref="a6d773885e3e78a736cd22dd79835b9e3" 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> BitvectorTheoremProducer::zeroCoeffBVMult </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a0dacf60fcac4bbbcc45019a5c58d576c">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03356">3356</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00066">CVC3::BVMULT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05474">CVC3::TheoryBitvector::computeBVConst()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05145">CVC3::TheoryBitvector::newBVZeroString()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a916fcffc7cb40f2159b00a710c26f669"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::oneCoeffBVMult" ref="a916fcffc7cb40f2159b00a710c26f669" 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> BitvectorTheoremProducer::oneCoeffBVMult </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a99efc60c900f6818e718eaa76634f82d">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03378">3378</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00066">CVC3::BVMULT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05474">CVC3::TheoryBitvector::computeBVConst()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03424">pad()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a9ed93437abb38597bbf7d153184c70e5"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::flipBVMult" ref="a9ed93437abb38597bbf7d153184c70e5" 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> BitvectorTheoremProducer::flipBVMult </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>t1*a &lt;==&gt; a*t1 </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#ae17fc2f1a86046cc389e4f828ce6043c">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03403">3403</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00066">CVC3::BVMULT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05038">CVC3::TheoryBitvector::newBVMultExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a99694606f15f144080a21f142b8a098f"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::pad" ref="a99694606f15f144080a21f142b8a098f" args="(int rat, 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> BitvectorTheoremProducer::pad </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>len</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></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>converts e to a bitvector of length rat </p>
<p>Converts e into a BVVECTOR of bvLength 'len'.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">len</td><td>is the desired bvLength of the resulting bitvector </td></tr>
    <tr><td class="paramname">e</td><td>is the original bitvector of arbitrary bvLength </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03424">3424</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <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#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05145">CVC3::TheoryBitvector::newBVZeroString()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04997">CVC3::TheoryBitvector::newConcatExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06272">bvUDivTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03378">oneCoeffBVMult()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00305">padBVLTRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03479">padBVMult()</a>, and <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03449">padBVPlus()</a>.</p>

</div>
</div>
<a class="anchor" id="aa3d3d7bff1a088fa66a19076c471571a"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::padBVPlus" ref="aa3d3d7bff1a088fa66a19076c471571a" 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> BitvectorTheoremProducer::padBVPlus </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>Pad the kids of BVMULT to make their bvLength = # of output-bits. </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a534b8599309b8a1f04355f974450eb44">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03449">3449</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00066">CVC3::BVMULT</a>, <a class="el" href="theory__bitvector_8h_source.html#l00064">CVC3::BVPLUS</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05038">CVC3::TheoryBitvector::newBVMultExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05275">CVC3::TheoryBitvector::newBVPlusExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03424">pad()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="ac8509af4659a1391e983939d825f0e85"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::padBVMult" ref="ac8509af4659a1391e983939d825f0e85" 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> BitvectorTheoremProducer::padBVMult </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>Pad the kids of BVMULT to make their bvLength = # of output-bits. </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a185de05a96896134fb0c204bfa2b701f">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03479">3479</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00066">CVC3::BVMULT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05038">CVC3::TheoryBitvector::newBVMultExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03424">pad()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a67921f96646d6b01d62d8a1cd116ddb3"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvConstMultAssocRule" ref="a67921f96646d6b01d62d8a1cd116ddb3" 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> BitvectorTheoremProducer::bvConstMultAssocRule </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>a*(b*t) &lt;==&gt; (a*b)*t, where a,b,t have same bvLength </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a47645c759c4c43b1336d6aa8ea4bef24">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03503">3503</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00066">CVC3::BVMULT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05474">CVC3::TheoryBitvector::computeBVConst()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05038">CVC3::TheoryBitvector::newBVMultExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="afa7daebdee6dafd361980583b6d3ffe1"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvMultAssocRule" ref="afa7daebdee6dafd361980583b6d3ffe1" 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> BitvectorTheoremProducer::bvMultAssocRule </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>(t1*t2)*t3 &lt;==&gt; t1*(t2*t3), where t1&lt;t2&lt;t3 </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a06eb338d6dbad205f7ce886b94866e01">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03541">3541</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00066">CVC3::BVMULT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05038">CVC3::TheoryBitvector::newBVMultExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a44e37a65f45da9fb8469a0003a140836"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvMultDistRule" ref="a44e37a65f45da9fb8469a0003a140836" 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> BitvectorTheoremProducer::bvMultDistRule </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>a*(t1+...+tn) &lt;==&gt; (a*t1+...+a*tn), where all kids are equibvLength </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a0a00757ccf2b0b5115003629085752f5">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03615">3615</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00066">CVC3::BVMULT</a>, <a class="el" href="theory__bitvector_8h_source.html#l00064">CVC3::BVPLUS</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05038">CVC3::TheoryBitvector::newBVMultExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05275">CVC3::TheoryBitvector::newBVPlusExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a2a66e5fbe24e038a79ac07290900fdd4"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::flattenBVPlus" ref="a2a66e5fbe24e038a79ac07290900fdd4" 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> BitvectorTheoremProducer::flattenBVPlus </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>input BVPLUS expression e.output e &lt;==&gt; e', where e' has no BVPLUS </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a5c1a3b38a87b8cdf2fe7674b0c50c8ed">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03655">3655</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00064">CVC3::BVPLUS</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05275">CVC3::TheoryBitvector::newBVPlusExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a2a6308a817bfe26b843612fd02ba5441"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::combineLikeTermsRule" ref="a2a6308a817bfe26b843612fd02ba5441" 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> BitvectorTheoremProducer::combineLikeTermsRule </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a88dbf100f26bd80ac71b976513cf5ed0">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03865">3865</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00066">CVC3::BVMULT</a>, <a class="el" href="theory__bitvector_8h_source.html#l00064">CVC3::BVPLUS</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03723">collectLikeTermsOfPlus()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03785">createNewPlusCollection()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03845">sumNormalizedElements()</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="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a85f807faae622c7c6cb9d85cad0c5fc3"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::lhsMinusRhsRule" ref="a85f807faae622c7c6cb9d85cad0c5fc3" 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> BitvectorTheoremProducer::lhsMinusRhsRule </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#ad7df7b16e4ba8d0a84163dac7a3fd29d">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03916">3916</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00064">CVC3::BVPLUS</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</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="expr_8h_source.html#l01162">CVC3::Expr::getKids()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05275">CVC3::TheoryBitvector::newBVPlusExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04930">CVC3::TheoryBitvector::newBVUminusExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05145">CVC3::TheoryBitvector::newBVZeroString()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a5df17d5d90f8a7389808a870a90ae863"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::extractBVMult" ref="a5df17d5d90f8a7389808a870a90ae863" 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> BitvectorTheoremProducer::extractBVMult </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>(x *[n] y)[m:k] = (x *[m+1] y)[m:k], where m &lt; n </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#aa3c6172968875b9189228eb7f8c50187">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04209">4209</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00066">CVC3::BVMULT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00039">CVC3::EXTRACT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05414">CVC3::TheoryBitvector::getExtractHi()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05405">CVC3::TheoryBitvector::getExtractLow()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05083">CVC3::TheoryBitvector::newBVMultPadExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="aabeacfb4b8a65744ac53f2cfe5dadc74"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::extractBVPlus" ref="aabeacfb4b8a65744ac53f2cfe5dadc74" 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> BitvectorTheoremProducer::extractBVPlus </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>(x +[n] y)[m:k] = (x +[m+1] y)[m:k], where m &lt; n </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a144383710caebde013be9b2cefce5a4c">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04241">4241</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00064">CVC3::BVPLUS</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00039">CVC3::EXTRACT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05414">CVC3::TheoryBitvector::getExtractHi()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05405">CVC3::TheoryBitvector::getExtractLow()</a>, <a class="el" href="expr_8h_source.html#l01162">CVC3::Expr::getKids()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05317">CVC3::TheoryBitvector::newBVPlusPadExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</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="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a35d8c914e411c866485e17febed62c00"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::iteExtractRule" ref="a35d8c914e411c866485e17febed62c00" 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> BitvectorTheoremProducer::iteExtractRule </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>ite(c,t1,t2)[i:j] &lt;=&gt; ite(c,t1[i:j],t2[i:j]) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#adabf3a32d5a2444ca64e2f66a414f185">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02591">2591</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00039">CVC3::EXTRACT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05414">CVC3::TheoryBitvector::getExtractHi()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05405">CVC3::TheoryBitvector::getExtractLow()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="kinds_8h_source.html#l00081">ITE</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a5bd890187bf9297b3b1092c623c1d922"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::iteBVnegRule" ref="a5bd890187bf9297b3b1092c623c1d922" 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> BitvectorTheoremProducer::iteBVnegRule </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>~ite(c,t1,t2) &lt;=&gt; ite(c,~t1,~t2) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#ae25244a21bbc10ad069c9c98ac49590e">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02627">2627</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00058">CVC3::BVNEG</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="kinds_8h_source.html#l00081">ITE</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04920">CVC3::TheoryBitvector::newBVNegExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="ac0f04eeb2cf6b89dbbcf8849bea4e40b"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvuminusBVConst" ref="ac0f04eeb2cf6b89dbbcf8849bea4e40b" 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> BitvectorTheoremProducer::bvuminusBVConst </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>-0 &lt;==&gt; 0, -c &lt;==&gt; ~c+1 </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#afb6657218e31843d4f9fb55494133a51">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04011">4011</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00063">CVC3::BVUMINUS</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05474">CVC3::TheoryBitvector::computeBVConst()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05495">CVC3::TheoryBitvector::computeNegBVConst()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a84fcae86e983ecd86c77705c8a749576"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvuminusBVMult" ref="a84fcae86e983ecd86c77705c8a749576" 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> BitvectorTheoremProducer::bvuminusBVMult </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>-(c*t)&lt;=&gt;(-c)*t; if -c==0 return e&lt;=&gt;0. if(-c==1) return e&lt;=&gt;t </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#ae96c6008f1ded31a7d8985264594cbbc">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04038">4038</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00066">CVC3::BVMULT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00063">CVC3::BVUMINUS</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05495">CVC3::TheoryBitvector::computeNegBVConst()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05038">CVC3::TheoryBitvector::newBVMultExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05145">CVC3::TheoryBitvector::newBVZeroString()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a256b7d97aae2e5933ac4a9161c2da211"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvuminusBVUminus" ref="a256b7d97aae2e5933ac4a9161c2da211" 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> BitvectorTheoremProducer::bvuminusBVUminus </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>-(-e) &lt;==&gt; e </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a331e5974d6b4cf1458501aba9c4a2556">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04084">4084</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00063">CVC3::BVUMINUS</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a6c8e614b400899e9f7e28cbfb6129a2a"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvuminusVar" ref="a6c8e614b400899e9f7e28cbfb6129a2a" 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> BitvectorTheoremProducer::bvuminusVar </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>-v &lt;==&gt; -1*v </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#aaa564090b043862b11ce47d777a9c959">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04105">4105</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00063">CVC3::BVUMINUS</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05038">CVC3::TheoryBitvector::newBVMultExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a4b76e0978912f6211ce0549cb9dd8550"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvmultBVUminus" ref="a4b76e0978912f6211ce0549cb9dd8550" 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> BitvectorTheoremProducer::bvmultBVUminus </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>c*(-t) &lt;==&gt; (-c)*t </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a63c42dbedb2f04af9dd61d6b104c42f0">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04128">4128</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00066">CVC3::BVMULT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00063">CVC3::BVUMINUS</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05495">CVC3::TheoryBitvector::computeNegBVConst()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05038">CVC3::TheoryBitvector::newBVMultExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05145">CVC3::TheoryBitvector::newBVZeroString()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a4ede1f1385025a1621114addc25569c1"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvuminusToBVPlus" ref="a4ede1f1385025a1621114addc25569c1" 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> BitvectorTheoremProducer::bvuminusToBVPlus </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>generic rule used for bitblasting step. -e &lt;==&gt; ~e+1 </p>
<p>-t &lt;==&gt; ~t+1 </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#ab7d869044d0d907fb1066e706039ca68">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03989">3989</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00063">CVC3::BVUMINUS</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04920">CVC3::TheoryBitvector::newBVNegExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05275">CVC3::TheoryBitvector::newBVPlusExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a126c38f580c510745dacd0dea2cb5c15"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvuminusBVPlus" ref="a126c38f580c510745dacd0dea2cb5c15" 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> BitvectorTheoremProducer::bvuminusBVPlus </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>-(c1*t1+...+cn*tn) &lt;==&gt; (-(c1*t1)+...+-(cn*tn)) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#ac77eea8dcc7f833bb3f426fd3f021a93">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04174">4174</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a8c0923ca7a786c2a7ee60cc7b456a9e0"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::extractConst" ref="a8c0923ca7a786c2a7ee60cc7b456a9e0" 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> BitvectorTheoremProducer::extractConst </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>c1[i:j] = c (extraction from a constant bitvector) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a56770462de38c0c8eed61d1f33c77d6c">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02365">2365</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01885">constantKids()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00039">CVC3::EXTRACT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05448">CVC3::TheoryBitvector::getBVConstValue()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05414">CVC3::TheoryBitvector::getExtractHi()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05405">CVC3::TheoryBitvector::getExtractLow()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a8f8cd95c4037ee94e91ba93fe7d869c0"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::extractWhole" ref="a8f8cd95c4037ee94e91ba93fe7d869c0" 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> BitvectorTheoremProducer::extractWhole </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>t[n-1:0] = t for n-bit t </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#ae9d9e1338cf24b20f8eb713fbd9b0219">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02397">2397</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00039">CVC3::EXTRACT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05414">CVC3::TheoryBitvector::getExtractHi()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05405">CVC3::TheoryBitvector::getExtractLow()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a5c7969edaba735a5f73258b57ea42184"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::extractExtract" ref="a5c7969edaba735a5f73258b57ea42184" 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> BitvectorTheoremProducer::extractExtract </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>t[i:j][k:l] = t[k+j:l+j] (eliminate double extraction) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a7fc72894f97ec709bf1558254e40903e">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02421">2421</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00039">CVC3::EXTRACT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05414">CVC3::TheoryBitvector::getExtractHi()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05405">CVC3::TheoryBitvector::getExtractLow()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="ad3f6288f648cee583f8dfee29fc97112"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::extractConcat" ref="ad3f6288f648cee583f8dfee29fc97112" 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> BitvectorTheoremProducer::extractConcat </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>(t1 @ t2)[i:j] = t1[...] @ t2[...] (push extraction through concat) </p>
<p>(t1 @ t2)[i:j] = t1[...] @ t2[...] (push extraction through concat) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a483af962d2b2c8390207e94bd2ae6dc1">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02465">2465</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8h_source.html#l00038">CVC3::CONCAT</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00039">CVC3::EXTRACT</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05414">CVC3::TheoryBitvector::getExtractHi()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05405">CVC3::TheoryBitvector::getExtractLow()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04997">CVC3::TheoryBitvector::newConcatExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</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="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

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

<p>Auxiliary function: (t1 op t2)[i:j] = t1[i:j] op t2[i:j]. </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a548cc7ab83b3d604226f09235d2097bf">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02532">2532</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00054">CVC3::BVAND</a>, <a class="el" href="theory__bitvector_8h_source.html#l00058">CVC3::BVNEG</a>, <a class="el" href="theory__bitvector_8h_source.html#l00055">CVC3::BVOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00057">CVC3::BVXNOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00056">CVC3::BVXOR</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00039">CVC3::EXTRACT</a>, <a class="el" href="theory_8h_source.html#l00090">CVC3::Theory::getEM()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05414">CVC3::TheoryBitvector::getExtractHi()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05405">CVC3::TheoryBitvector::getExtractLow()</a>, <a class="el" href="expr__manager_8cpp_source.html#l00405">CVC3::ExprManager::getKindName()</a>, <a class="el" href="expr_8h_source.html#l01183">CVC3::Expr::getOp()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02571">extractAnd()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02585">extractNeg()</a>, and <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02578">extractOr()</a>.</p>

</div>
</div>
<a class="anchor" id="a0b3d60749f5bc14f524e0f5234bb1cf3"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::extractAnd" ref="a0b3d60749f5bc14f524e0f5234bb1cf3" 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> BitvectorTheoremProducer::extractAnd </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>(t1 &amp; t2)[i:j] = t1[i:j] &amp; t2[i:j] (push extraction through OR) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a9c8be2deedd7168a29b288737cd050a8">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02571">2571</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00054">CVC3::BVAND</a>, and <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02532">extractBitwise()</a>.</p>

</div>
</div>
<a class="anchor" id="a7a8f90ee8e8450bcb4bfe3e1f231c4b0"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::extractOr" ref="a7a8f90ee8e8450bcb4bfe3e1f231c4b0" 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> BitvectorTheoremProducer::extractOr </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>(t1 | t2)[i:j] = t1[i:j] | t2[i:j] (push extraction through AND) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a7cdfdc4ac2ed578d2c584549b8a374a7">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02578">2578</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00055">CVC3::BVOR</a>, and <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02532">extractBitwise()</a>.</p>

</div>
</div>
<a class="anchor" id="a8014d2c21597d514e39a4fba8a060952"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::extractNeg" ref="a8014d2c21597d514e39a4fba8a060952" 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> BitvectorTheoremProducer::extractNeg </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>(~t)[i:j] = ~(t[i:j]) (push extraction through NEG) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#ac258a650188de30470eae5c53116abfd">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02585">2585</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00058">CVC3::BVNEG</a>, and <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02532">extractBitwise()</a>.</p>

</div>
</div>
<a class="anchor" id="a28038efe4f40407c727f91d856234d49"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::negConst" ref="a28038efe4f40407c727f91d856234d49" 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> BitvectorTheoremProducer::negConst </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>~c1 = c (bit-wise negation of a constant bitvector) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a76151013db10b5faa12ba32ad2374fc6">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02655">2655</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00058">CVC3::BVNEG</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01885">constantKids()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05439">CVC3::TheoryBitvector::getBVConstSize()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05448">CVC3::TheoryBitvector::getBVConstValue()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a8e1501e7e12f93e385f77c75a931b970"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::negConcat" ref="a8e1501e7e12f93e385f77c75a931b970" 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> BitvectorTheoremProducer::negConcat </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>~(t1@...@tn) = (~t1)@...@(~tn) -- push negation through concat </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a9c4a53c0c1961951e3d847394bfa1b20">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02678">2678</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00058">CVC3::BVNEG</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8h_source.html#l00038">CVC3::CONCAT</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04920">CVC3::TheoryBitvector::newBVNegExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04997">CVC3::TheoryBitvector::newConcatExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="ae2ec10b9faef513781d02bb81cc3e88b"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::negNeg" ref="ae2ec10b9faef513781d02bb81cc3e88b" 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> BitvectorTheoremProducer::negNeg </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>~(~t) = t -- eliminate double negation </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#ac6cbc581e757d482483d62366e84afb9">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02703">2703</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00058">CVC3::BVNEG</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a8e6947b16b14750e13812e43b9f5080c"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::negElim" ref="a8e6947b16b14750e13812e43b9f5080c" 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> BitvectorTheoremProducer::negElim </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>~t = -1*t + 1 -- eliminate negation </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a13eeb7dac6de93650d885b61eb72e0ad">CVC3::BitvectorProofRules</a>.</p>

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

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00058">CVC3::BVNEG</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05038">CVC3::TheoryBitvector::newBVMultExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05275">CVC3::TheoryBitvector::newBVPlusExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="rational_8h_source.html#l00159">CVC3::pow()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="abc285ae73d2259fe1efea8cb46b2698a"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::negBVand" ref="abc285ae73d2259fe1efea8cb46b2698a" 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> BitvectorTheoremProducer::negBVand </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>~(t1 &amp; t2) &lt;=&gt; ~t1 | ~t2 -- DeMorgan's Laws </p>
<p>~(t1 &amp; t2) = ~t1 | ~t2 -- DeMorgan's Laws </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a4fb78e904f25388d54eb0ba54ced536d">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02744">2744</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00054">CVC3::BVAND</a>, <a class="el" href="theory__bitvector_8h_source.html#l00058">CVC3::BVNEG</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04920">CVC3::TheoryBitvector::newBVNegExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04692">CVC3::TheoryBitvector::newBVOrExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="abf45c19e2d11f75d68785cc88f7ccf32"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::negBVor" ref="abf45c19e2d11f75d68785cc88f7ccf32" 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> BitvectorTheoremProducer::negBVor </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>~(t1 | t2) &lt;=&gt; ~t1 &amp; ~t2 -- DeMorgan's Laws </p>
<p>~(t1 | t2) = ~t1 &amp; ~t2 -- DeMorgan's Laws </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a5763889eb6cd07ab04d4c98686db01cf">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02766">2766</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00058">CVC3::BVNEG</a>, <a class="el" href="theory__bitvector_8h_source.html#l00055">CVC3::BVOR</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04656">CVC3::TheoryBitvector::newBVAndExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04920">CVC3::TheoryBitvector::newBVNegExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a815029f46058047bfe8a5e0dbc85ddc6"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::negBVxor" ref="a815029f46058047bfe8a5e0dbc85ddc6" 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> BitvectorTheoremProducer::negBVxor </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>~(t1 xor t2) = ~t1 xor t2 </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a2b4170a86c6978a77c338dbf832929ad">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02789">2789</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00058">CVC3::BVNEG</a>, <a class="el" href="theory__bitvector_8h_source.html#l00056">CVC3::BVXOR</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04920">CVC3::TheoryBitvector::newBVNegExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04758">CVC3::TheoryBitvector::newBVXorExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a2388a9d25fafcd0711a286d4666ee960"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::negBVxnor" ref="a2388a9d25fafcd0711a286d4666ee960" 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> BitvectorTheoremProducer::negBVxnor </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>~(t1 xnor t2) = t1 xor t2 </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#accade48c8a792079d97d49d92dc2abee">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02815">2815</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00058">CVC3::BVNEG</a>, <a class="el" href="theory__bitvector_8h_source.html#l00057">CVC3::BVXNOR</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04794">CVC3::TheoryBitvector::newBVXnorExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04758">CVC3::TheoryBitvector::newBVXorExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="af3928b2385a298cc085134ac1e8222e4"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bitwiseConst" ref="af3928b2385a298cc085134ac1e8222e4" args="(const Expr &amp;e, const std::vector&lt; int &gt; &amp;idxs, int kind)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::bitwiseConst </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>idxs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>kind</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Combine constants in bitwise AND, OR, XOR. </p>
<p>c1 op c2 = c -- bit-wise AND, OR, XOR of constant bitvectors </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#abc8792717d3f194aa05f279f63033ec1">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02842">2842</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00054">CVC3::BVAND</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00055">CVC3::BVOR</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00056">CVC3::BVXOR</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05439">CVC3::TheoryBitvector::getBVConstSize()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05448">CVC3::TheoryBitvector::getBVConstValue()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04656">CVC3::TheoryBitvector::newBVAndExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04692">CVC3::TheoryBitvector::newBVOrExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04758">CVC3::TheoryBitvector::newBVXorExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00486">rat()</a>, <a class="el" href="kinds_8h_source.html#l00044">RAW_LIST</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

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

<p>Lifts concatenation above bitwise operators. </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a29d3cce157edf35040c7c237570e37c9">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02922">2922</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8h_source.html#l00038">CVC3::CONCAT</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04997">CVC3::TheoryBitvector::newConcatExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00486">rat()</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="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

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

<p>Flatten bitwise operation. </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a78d58f8b598713266bad87dcfba0d93b">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02970">2970</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr__map_8h_source.html#l00190">CVC3::ExprMap&lt; Data &gt;::begin()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00054">CVC3::BVAND</a>, <a class="el" href="theory__bitvector_8h_source.html#l00058">CVC3::BVNEG</a>, <a class="el" href="theory__bitvector_8h_source.html#l00055">CVC3::BVOR</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00056">CVC3::BVXOR</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr__map_8h_source.html#l00191">CVC3::ExprMap&lt; Data &gt;::end()</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr__map_8h_source.html#l00178">CVC3::ExprMap&lt; Data &gt;::erase()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01223">CVC3::Expr::isNull()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04920">CVC3::TheoryBitvector::newBVNegExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05159">CVC3::TheoryBitvector::newBVOneString()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05145">CVC3::TheoryBitvector::newBVZeroString()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03160">sameKidCheck()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

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

<p>Simplify bitwise operator containing a constant child. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">e</td><td>is the bit-wise expr </td></tr>
    <tr><td class="paramname">idx</td><td>is the index of the constant bitvector </td></tr>
    <tr><td class="paramname">kind</td><td>is the kind of e </td></tr>
  </table>
  </dd>
</dl>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#ab67de0bd797585c3a5cfa3d80a4bfa42">CVC3::BitvectorProofRules</a>.</p>

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

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00054">CVC3::BVAND</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00055">CVC3::BVOR</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00056">CVC3::BVXOR</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05439">CVC3::TheoryBitvector::getBVConstSize()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05448">CVC3::TheoryBitvector::getBVConstValue()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04920">CVC3::TheoryBitvector::newBVNegExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05159">CVC3::TheoryBitvector::newBVOneString()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05145">CVC3::TheoryBitvector::newBVZeroString()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04997">CVC3::TheoryBitvector::newConcatExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00486">rat()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="ae51599976453a95306a7b5a0b2e15029"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::sameKidCheck" ref="ae51599976453a95306a7b5a0b2e15029" args="(const Expr &amp;e, ExprMap&lt; int &gt; &amp;likeTerms)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int BitvectorTheoremProducer::sameKidCheck </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_1ExprMap.html">ExprMap</a>&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>likeTerms</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>checks if e is already present in likeTerms without conflicts. if yes return 1, else{ if conflict return -1 else return 0 } we have conflict if 1. the kind of e is BVNEG, and e[0] is already present in likeTerms 2. ~e is present in likeTerms already </p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03160">3160</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00058">CVC3::BVNEG</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</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="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, and <a class="el" href="theory__bitvector_8cpp_source.html#l04920">CVC3::TheoryBitvector::newBVNegExpr()</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02970">bitwiseFlatten()</a>.</p>

</div>
</div>
<a class="anchor" id="abee7fa8ab42b1addc72b7463b4a60975"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::concatConst" ref="abee7fa8ab42b1addc72b7463b4a60975" 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> BitvectorTheoremProducer::concatConst </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>c1@c2@...@cn = c (concatenation of constant bitvectors) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a067fc47b8a688b6a08b94c5044d2faf5">CVC3::BitvectorProofRules</a>.</p>

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

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8h_source.html#l00038">CVC3::CONCAT</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01885">constantKids()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05439">CVC3::TheoryBitvector::getBVConstSize()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05448">CVC3::TheoryBitvector::getBVConstValue()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05020">getPlusTerms()</a>.</p>

</div>
</div>
<a class="anchor" id="adba6266c081af892dadf257a001ae920"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::concatFlatten" ref="adba6266c081af892dadf257a001ae920" 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> BitvectorTheoremProducer::concatFlatten </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>Flatten one level of nested concatenation, e.g.: x@(y@z)@w = x@y@z@w. </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a06461d9c64f09ce1dc9acf6cb0628977">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03217">3217</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8h_source.html#l00038">CVC3::CONCAT</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01183">CVC3::Expr::getOp()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="af8c35b9567c60d128480b278de348842"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::concatMergeExtract" ref="af8c35b9567c60d128480b278de348842" 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> BitvectorTheoremProducer::concatMergeExtract </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>Merge n-ary concat. of adjacent extractions: x[15:8]@x[7:0] = x[15:0]. </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#adec7f3c93376d5e5c0abb20fc3b44eb9">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03239">3239</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8h_source.html#l00038">CVC3::CONCAT</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00039">CVC3::EXTRACT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05414">CVC3::TheoryBitvector::getExtractHi()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05405">CVC3::TheoryBitvector::getExtractLow()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a8475377c17d5c4241e1a134ce5b28eba"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvplusConst" ref="a8475377c17d5c4241e1a134ce5b28eba" 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> BitvectorTheoremProducer::bvplusConst </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>BVPLUS(n, c1,c2,...,cn) = c (bit-vector plus of constant bitvectors) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a70ff8e2477ef2d049bd33d1a4bab482e">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03290">3290</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00064">CVC3::BVPLUS</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05474">CVC3::TheoryBitvector::computeBVConst()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01885">constantKids()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05423">CVC3::TheoryBitvector::getBVPlusParam()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="classCVC3_1_1Rational.html#a195c125a76cb9a6c5731369e244a2de3">CVC3::Rational::toString()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a05e4123ccbc5000dbf9615d89e13067d"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvmultConst" ref="a05e4123ccbc5000dbf9615d89e13067d" 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> BitvectorTheoremProducer::bvmultConst </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>n*c1 = c, where n &gt;= 0 (multiplication of a constant bitvector by a non-negative constant) </p>
<p>c0*c1 = c, multiplication of two BVCONST </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#ae0c8cdf3fade0ff0824c6112f4bdec0c">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03329">3329</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00066">CVC3::BVMULT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05474">CVC3::TheoryBitvector::computeBVConst()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01885">constantKids()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="aea2fb217bff7c7b46f996eacd051461b"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::typePredBit" ref="aea2fb217bff7c7b46f996eacd051461b" 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> BitvectorTheoremProducer::typePredBit </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>|- t=0 OR t=1 for any 1-bit bitvector t </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a2096bde76317290227a520452a3ab4c4">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04277">4277</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00052">bvOne()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00050">bvZero()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="theory_8cpp_source.html#l00383">CVC3::Theory::getBaseType()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00107">CVC3::TheoremProducer::newTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a7d8030814a36206774951e3ae8968848"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::expandTypePred" ref="a7d8030814a36206774951e3ae8968848" args="(const Theorem &amp;tp)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::expandTypePred </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</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>Expand the type predicate wrapper (compute the actual type predicate) </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#acff4dd7561fb19a337f76edfa024c1aa">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04294">4294</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l00945">CVC3::andExpr()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00052">bvOne()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00085">CVC3::BVTYPEPRED</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00050">bvZero()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="theory_8h_source.html#l00579">CVC3::Theory::falseExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05331">CVC3::TheoryBitvector::getBitvectorTypeParam()</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#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05348">CVC3::TheoryBitvector::getTypePredExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05340">CVC3::TheoryBitvector::getTypePredType()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00107">CVC3::TheoremProducer::newTheorem()</a>, <a class="el" href="kinds_8h_source.html#l00066">NOT</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="ae03f092d2050783885e338b5880b2645"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::rat" ref="ae03f092d2050783885e338b5880b2645" args="(const Rational &amp;r)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> CVC3::BitvectorTheoremProducer::rat </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &amp;&#160;</td>
          <td class="paramname"><em>r</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Create <a class="el" href="classCVC3_1_1Expr.html" title="Data structure of expressions in CVC3.">Expr</a> from <a class="el" href="classCVC3_1_1Rational.html">Rational</a> (for convenience) </p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8h_source.html#l00486">486</a> of file <a class="el" href="bitvector__theorem__producer_8h_source.html">bitvector_theorem_producer.h</a>.</p>

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

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06324">bitblastBVMult()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06407">bitblastBVPlus()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01575">bitExtractBitwise()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01829">bitExtractBVASHR()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01775">bitExtractBVLSHR()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01141">bitExtractBVMult()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01256">bitExtractBVPlus()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01337">bitExtractBVPlusPreComputed()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01721">bitExtractBVSHL()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01017">bitExtractConcatenation()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00977">bitExtractConstant()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01074">bitExtractConstBVMult()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01206">bitExtractExtraction()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01619">bitExtractFixedLeftShift()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01668">bitExtractFixedRightShift()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01539">bitExtractNot()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00380">bitExtractSXRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02922">bitwiseConcat()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02842">bitwiseConst()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03068">bitwiseConstElim()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01406">computeCarryPreComputed()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02270">constMultToPlus()</a>, and <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01470">zeroPaddingRule()</a>.</p>

</div>
</div>
<a class="anchor" id="a433503188cd190201bbea389cbc43478"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::computeCarry" ref="a433503188cd190201bbea389cbc43478" args="(const std::vector&lt; Theorem &gt; &amp;t1BitExtractThms, const std::vector&lt; Theorem &gt; &amp;t2BitExtractThms, int bitPos)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> BitvectorTheoremProducer::computeCarry </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>t1BitExtractThms</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>t2BitExtractThms</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>bitPos</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">t1BitExtractThms</td><td>: input1 is vector of bitblasts of t1, from bit i-1 to 0</td></tr>
    <tr><td class="paramname">t2BitExtractThms</td><td>: input2 is vector of bitblasts of t2, from bit i-1 to 0</td></tr>
    <tr><td class="paramname">bitPos</td><td>: input3 is extracted * bitposition</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>is the expression <img class="formulaInl" alt="$t1[0] \wedge t2[0]$" src="form_339.png"/> if bitPos=0. this function is recursive; if bitPos &gt; 0 then the output expression is <p class="formulaDsp">
<img class="formulaDsp" alt="\[ (t1[i-1] \wedge t2[i-1]) \vee (t1[i-1] \wedge computeCarry(t1,t2,i-1)) \vee (t2[i-1] \wedge computeCarry(t1,t2,i-1)) \]" src="form_340.png"/>
</p>
 </dd></dl>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01305">1305</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l00941">CVC3::Expr::andExpr()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, and <a class="el" href="expr_8h_source.html#l00955">CVC3::orExpr()</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01256">bitExtractBVPlus()</a>.</p>

</div>
</div>
<a class="anchor" id="afdb4f9bf82d3ab61d6ac486b7807aa71"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::computeCarryPreComputed" ref="afdb4f9bf82d3ab61d6ac486b7807aa71" args="(const Theorem &amp;t1_i, const Theorem &amp;t2_i, int bitPos, int precomputedFlag)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> BitvectorTheoremProducer::computeCarryPreComputed </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>t1_i</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>t2_i</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>bitPos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>precomputedFlag</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>compute carryout of the current bits and cache them, and return </p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01406">1406</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l00941">CVC3::Expr::andExpr()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00267">CVC3::TheoryBitvector::d_bvPlusCarryCacheLeftBV</a>, <a class="el" href="theory__bitvector_8h_source.html#l00268">CVC3::TheoryBitvector::d_bvPlusCarryCacheRightBV</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</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="expr__map_8h_source.html#l00194">CVC3::ExprMap&lt; Data &gt;::find()</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__map_8h_source.html#l00177">CVC3::ExprMap&lt; Data &gt;::insert()</a>, <a class="el" href="expr_8h_source.html#l00955">CVC3::orExpr()</a>, <a class="el" href="expr_8h_source.html#l00951">CVC3::Expr::orExpr()</a>, and <a class="el" href="bitvector__theorem__producer_8h_source.html#l00486">rat()</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01337">bitExtractBVPlusPreComputed()</a>.</p>

</div>
</div>
<a class="anchor" id="a54d8f6979007cfc5e0da1ebf7f73f51d"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::isolate_var" ref="a54d8f6979007cfc5e0da1ebf7f73f51d" 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> BitvectorTheoremProducer::isolate_var </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>isolate a variable with coefficient = 1 on the Lhs of an </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#aef8e88512f778d081ade97e6304f1d18">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04371">4371</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00066">CVC3::BVMULT</a>, <a class="el" href="theory__bitvector_8h_source.html#l00064">CVC3::BVPLUS</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05474">CVC3::TheoryBitvector::computeBVConst()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="kinds_8h_source.html#l00061">EQ</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</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="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05038">CVC3::TheoryBitvector::newBVMultExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05275">CVC3::TheoryBitvector::newBVPlusExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05145">CVC3::TheoryBitvector::newBVZeroString()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="rational_8h_source.html#l00159">CVC3::pow()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a91a4bd06c22c93729e954302840877ad"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::liftConcatBVMult" ref="a91a4bd06c22c93729e954302840877ad" 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> BitvectorTheoremProducer::liftConcatBVMult </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a17c15204dfec661af091bb07f44c4f51">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04687">4687</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00066">CVC3::BVMULT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05474">CVC3::TheoryBitvector::computeBVConst()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00038">CVC3::CONCAT</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01162">CVC3::Expr::getKids()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05083">CVC3::TheoryBitvector::newBVMultPadExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05275">CVC3::TheoryBitvector::newBVPlusExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05145">CVC3::TheoryBitvector::newBVZeroString()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04997">CVC3::TheoryBitvector::newConcatExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</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="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="aa5acae5a384220d4dca181b8675831b3"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::canonBVMult" ref="aa5acae5a384220d4dca181b8675831b3" 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> BitvectorTheoremProducer::canonBVMult </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>canonize BVMult expressions in order to get one coefficient </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a74f5018affcab70b831029b390692552">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04770">4770</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05298">buildPlusTerm()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00066">CVC3::BVMULT</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04619">BVMult_order_subterms()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00064">CVC3::BVPLUS</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00063">CVC3::BVUMINUS</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05474">CVC3::TheoryBitvector::computeBVConst()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04882">distributive_rule()</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05020">getPlusTerms()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="expr_8h_source.html#l01223">CVC3::Expr::isNull()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05038">CVC3::TheoryBitvector::newBVMultExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="rational_8h_source.html#l00159">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="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a5fb475feef8b6740cc8c2f5f2104f07d"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::liftConcatBVPlus" ref="a5fb475feef8b6740cc8c2f5f2104f07d" 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> BitvectorTheoremProducer::liftConcatBVPlus </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#affb1cdfd198f4140f1943f9296b1b97c">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04924">4924</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00064">CVC3::BVPLUS</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05474">CVC3::TheoryBitvector::computeBVConst()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00038">CVC3::CONCAT</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05275">CVC3::TheoryBitvector::newBVPlusExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05145">CVC3::TheoryBitvector::newBVZeroString()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04997">CVC3::TheoryBitvector::newConcatExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="rational_8h_source.html#l00159">CVC3::pow()</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="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a31b9e200eff6852b66a8d8ac19ec2db3"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::canonBVPlus" ref="a31b9e200eff6852b66a8d8ac19ec2db3" 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> BitvectorTheoremProducer::canonBVPlus </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>canonize BVPlus expressions in order to get just one </p>

<p><p>L:: to store the sum of the coefficients for each var </p>
</p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a07f756438b45b15b493497341944bbb4">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05559">5559</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05298">buildPlusTerm()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00064">CVC3::BVPLUS</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05020">getPlusTerms()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</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="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="af3fc29529753dc8161360688bcaaf12b"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::canonBVUMinus" ref="af3fc29529753dc8161360688bcaaf12b" 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> BitvectorTheoremProducer::canonBVUMinus </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>canonize BVMinus expressions: push the minus to the leafs in </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#acb966a104436262e81299cea86bc21bb">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05587">5587</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00063">CVC3::BVUMINUS</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05038">CVC3::TheoryBitvector::newBVMultExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="rational_8h_source.html#l00159">CVC3::pow()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

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

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#ac018d05ae792d761195fbcc9731017d0">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05609">5609</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</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="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="kinds_8h_source.html#l00085">EXISTS</a>, <a class="el" href="theory__bitvector_8h_source.html#l00039">CVC3::EXTRACT</a>, <a class="el" href="theory_8h_source.html#l00090">CVC3::Theory::getEM()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05414">CVC3::TheoryBitvector::getExtractHi()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05405">CVC3::TheoryBitvector::getExtractLow()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</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="theory__bitvector_8h_source.html#l00307">CVC3::TheoryBitvector::newBitvectorType()</a>, <a class="el" href="expr__manager_8h_source.html#l00484">CVC3::ExprManager::newBoundVarExpr()</a>, <a class="el" href="expr__manager_8h_source.html#l00506">CVC3::ExprManager::newClosureExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04997">CVC3::TheoryBitvector::newConcatExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00107">CVC3::TheoremProducer::newTheorem()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

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

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a04f65b94c6a9ca2b84a6063aac0d082f">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05692">5692</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr__map_8h_source.html#l00190">CVC3::ExprMap&lt; Data &gt;::begin()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05298">buildPlusTerm()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00056">CVC3::BVXOR</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8h_source.html#l00038">CVC3::CONCAT</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr__map_8h_source.html#l00191">CVC3::ExprMap&lt; Data &gt;::end()</a>, <a class="el" href="kinds_8h_source.html#l00061">EQ</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00039">CVC3::EXTRACT</a>, <a class="el" href="theory_8h_source.html#l00579">CVC3::Theory::falseExpr()</a>, <a class="el" href="debug_8h_source.html#l00037">FatalAssert</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05414">CVC3::TheoryBitvector::getExtractHi()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05405">CVC3::TheoryBitvector::getExtractLow()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05020">getPlusTerms()</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="expr_8h_source.html#l01223">CVC3::Expr::isNull()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02052">CVC3::TheoryBitvector::multiplicative_inverse()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05083">CVC3::TheoryBitvector::newBVMultPadExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05275">CVC3::TheoryBitvector::newBVPlusExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04930">CVC3::TheoryBitvector::newBVUminusExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04758">CVC3::TheoryBitvector::newBVXorExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05145">CVC3::TheoryBitvector::newBVZeroString()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00125">CVC3::TheoremProducer::newReflTheorem()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05657">okToSplit()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00059">CVC3::TheoryBitvector::pad()</a>, <a class="el" href="rational_8h_source.html#l00159">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>, <a class="el" href="theory_8h_source.html#l00582">CVC3::Theory::trueExpr()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a9fe7ec7e369ee92339471e805a1dd7c3"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::distributive_rule" ref="a9fe7ec7e369ee92339471e805a1dd7c3" 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> BitvectorTheoremProducer::distributive_rule </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>apply the distributive rule on the BVMULT expression e </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a11422aabc07aa0721cf17b2297a97b40">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04882">4882</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00066">CVC3::BVMULT</a>, <a class="el" href="theory__bitvector_8h_source.html#l00064">CVC3::BVPLUS</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01162">CVC3::Expr::getKids()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05038">CVC3::TheoryBitvector::newBVMultExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05275">CVC3::TheoryBitvector::newBVPlusExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04770">canonBVMult()</a>.</p>

</div>
</div>
<a class="anchor" id="a87288805014f1d0e935c052364142d6b"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::BVMult_order_subterms" ref="a87288805014f1d0e935c052364142d6b" 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> BitvectorTheoremProducer::BVMult_order_subterms </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#aaeb132de41aad56b3bbb5a0c9fcede80">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04619">4619</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr__map_8h_source.html#l00190">CVC3::ExprMap&lt; Data &gt;::begin()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00066">CVC3::BVMULT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr__map_8h_source.html#l00173">CVC3::ExprMap&lt; Data &gt;::count()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr__map_8h_source.html#l00191">CVC3::ExprMap&lt; Data &gt;::end()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l01950">CVC3::TheoryBitvector::extract_vars()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05038">CVC3::TheoryBitvector::newBVMultExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04770">canonBVMult()</a>.</p>

</div>
</div>
<a class="anchor" id="a0f02e48875ccb661cae7cc7a2489dce1"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::MarkNonSolvableEq" ref="a0f02e48875ccb661cae7cc7a2489dce1" 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> BitvectorTheoremProducer::MarkNonSolvableEq </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a02032b49999aa3913265a22cac129045">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04343">4343</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="kinds_8h_source.html#l00061">EQ</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05145">CVC3::TheoryBitvector::newBVZeroString()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="theory_8h_source.html#l00673">CVC3::Theory::reflexivityRule()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a8295f4644a077f3c8af0db53be7b458b"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::zeroExtendRule" ref="a8295f4644a077f3c8af0db53be7b458b" 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> BitvectorTheoremProducer::zeroExtendRule </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>BVZEROEXTEND(e, i) = zeroString @ e. </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a0e4bd4a89095a5c275cc898b624b9346">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06081">6081</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00050">CVC3::BVZEROEXTEND</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05373">CVC3::TheoryBitvector::getBVIndex()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05145">CVC3::TheoryBitvector::newBVZeroString()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04997">CVC3::TheoryBitvector::newConcatExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a9b9a128c7c863d01c804bfec956ffb6c"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::repeatRule" ref="a9b9a128c7c863d01c804bfec956ffb6c" 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> BitvectorTheoremProducer::repeatRule </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>BVREPEAT(e, i) = e @ e @ ... @ e. </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#aed9f65e2eed1299d80b6ec63274568a4">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06109">6109</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00049">CVC3::BVREPEAT</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05373">CVC3::TheoryBitvector::getBVIndex()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04997">CVC3::TheoryBitvector::newConcatExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="afdc5b05255d1d217c26d5e3660957fde"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::rotlRule" ref="afdc5b05255d1d217c26d5e3660957fde" 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> BitvectorTheoremProducer::rotlRule </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>BVROTL(e, i) = a[n-i-1:0] @ a[n-1:n-i]. </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a9a9c214170ee9595f2eb0b0552b6130f">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06142">6142</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00051">CVC3::BVROTL</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05373">CVC3::TheoryBitvector::getBVIndex()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04997">CVC3::TheoryBitvector::newConcatExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a6495867fe7ef34a838e83315dd8b02e4"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::rotrRule" ref="a6495867fe7ef34a838e83315dd8b02e4" 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> BitvectorTheoremProducer::rotrRule </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>BVROTR(e, i) = a[i-1:0] @ a[n-1:i]. </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#aca310d258dd22e4e50b19274047c6528">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06173">6173</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00052">CVC3::BVROTR</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05373">CVC3::TheoryBitvector::getBVIndex()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04997">CVC3::TheoryBitvector::newConcatExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="acc221d6c256b7d550090627e6fee9643"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvUDivConst" ref="acc221d6c256b7d550090627e6fee9643" args="(const Expr &amp;divExpr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::bvUDivConst </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>divExpr</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Divide a with b unsigned and return the bit-vector constant result </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a95920e0fd327bc9630d41784449bae0a">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06243">6243</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05474">CVC3::TheoryBitvector::computeBVConst()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="theory_8cpp_source.html#l00569">CVC3::Theory::newVar()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a330fc1ea75378bfe0fec034132af7400"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvUDivTheorem" ref="a330fc1ea75378bfe0fec034132af7400" args="(const Expr &amp;divExpr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::bvUDivTheorem </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>divExpr</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Rewrite x/y to </p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[\exists s: s = x/y \wedge (y \neq 0 \implies x = y * s + m \wedge 0 <= m < y)\]" src="form_341.png"/>
</p>
 
<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#ab1b7fd737bbf85300e149a0ca1dce266">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06272">6272</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.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#l00945">CVC3::andExpr()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00067">CVC3::BVUDIV</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="kinds_8h_source.html#l00085">EXISTS</a>, <a class="el" href="theory_8h_source.html#l00090">CVC3::Theory::getEM()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="expr_8h_source.html#l00969">CVC3::Expr::impExpr()</a>, <a class="el" href="expr_8h_source.html#l00937">CVC3::Expr::negate()</a>, <a class="el" href="expr__manager_8h_source.html#l00484">CVC3::ExprManager::newBoundVarExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04845">CVC3::TheoryBitvector::newBVLTExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05038">CVC3::TheoryBitvector::newBVMultExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05275">CVC3::TheoryBitvector::newBVPlusExpr()</a>, <a class="el" href="expr__manager_8h_source.html#l00506">CVC3::ExprManager::newClosureExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04997">CVC3::TheoryBitvector::newConcatExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00107">CVC3::TheoremProducer::newTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03424">pad()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

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

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a3cf92f9619244e27a40a6b218887cad0">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06201">6201</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05474">CVC3::TheoryBitvector::computeBVConst()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="theory_8cpp_source.html#l00569">CVC3::Theory::newVar()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="aa6941790eb888168ffdc5531b129b466"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvURemRewrite" ref="aa6941790eb888168ffdc5531b129b466" args="(const Expr &amp;remExpr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::bvURemRewrite </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>remExpr</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Rewrite ab in terms of a/b, i.e. a - a/b </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a0e0a89d5b866cb77e50cc24c20f5d053">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06229">6229</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05038">CVC3::TheoryBitvector::newBVMultExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05260">CVC3::TheoryBitvector::newBVSubExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05089">CVC3::TheoryBitvector::newBVUDivExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a714a402f525e0d0c222846379366edc5"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bitblastBVMult" ref="a714a402f525e0d0c222846379366edc5" args="(const std::vector&lt; Theorem &gt; &amp;a_bits, const std::vector&lt; Theorem &gt; &amp;b_bits, const Expr &amp;a_times_b, std::vector&lt; Theorem &gt; &amp;output_bits)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::bitblastBVMult </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>a_bits</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>b_bits</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>a_times_b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>output_bits</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Bit-blast the multiplication a_times_b given the bits in a_bits and b_bits. The resulting output bits will be in the vector output_bits. The return value is a theorem saying there is no overflow for this multiplication. (TODO, it's just an empty theorem for now). </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a05dd94575cc5674452e2ff63106e2a40">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06324">6324</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.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#l00945">CVC3::andExpr()</a>, <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00066">CVC3::BVMULT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory_8h_source.html#l00579">CVC3::Theory::falseExpr()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="expr_8h_source.html#l00965">CVC3::Expr::iffExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04940">CVC3::TheoryBitvector::newBoolExtractExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8h_source.html#l00955">CVC3::orExpr()</a>, <a class="el" href="expr_8h_source.html#l00951">CVC3::Expr::orExpr()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00486">rat()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="aef3181ea41680c3f7b1b4ec724e8b68d"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bitblastBVPlus" ref="aef3181ea41680c3f7b1b4ec724e8b68d" args="(const std::vector&lt; Theorem &gt; &amp;a_bits, const std::vector&lt; Theorem &gt; &amp;b_bits, const Expr &amp;a_plus_b, std::vector&lt; Theorem &gt; &amp;output_bits)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::bitblastBVPlus </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>a_bits</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>b_bits</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>a_plus_b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>output_bits</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Bit-blast the sum a_plus_b given the bits in a_bits and b_bits. The resulting output bits will be in the vector output_bits. The return value is a theorem saying there is no overflow for this sum. (TODO, it's just an empty theorem for now). </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a613cf0998893c8b66e40acf63b40a825">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06407">6407</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.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__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00064">CVC3::BVPLUS</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory_8h_source.html#l00579">CVC3::Theory::falseExpr()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00240">CVC3::Theorem::getLHS()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="expr_8h_source.html#l00965">CVC3::Expr::iffExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04940">CVC3::TheoryBitvector::newBoolExtractExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8h_source.html#l00951">CVC3::Expr::orExpr()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00486">rat()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="ad3bdebd3ad40f70a1592fda3fae82e71"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvSDivRewrite" ref="ad3bdebd3ad40f70a1592fda3fae82e71" args="(const Expr &amp;sDivExpr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::bvSDivRewrite </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>sDivExpr</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Rewrite the signed divide in terms of the unsigned one. </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a8737b8dee3cf693cba13dd073b132294">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06462">6462</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l00941">CVC3::Expr::andExpr()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8h_source.html#l00068">CVC3::BVSDIV</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="expr_8h_source.html#l00961">CVC3::Expr::iteExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05089">CVC3::TheoryBitvector::newBVUDivExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04930">CVC3::TheoryBitvector::newBVUminusExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a73632313f926e7b93104538c465bbcfb"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvSRemRewrite" ref="a73632313f926e7b93104538c465bbcfb" args="(const Expr &amp;sRemExpr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::bvSRemRewrite </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>sRemExpr</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Rewrite the signed remainder in terms of the unsigned one. </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a41766b9dbe8dd7e8ebf5cf0349cf2e9e">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06518">6518</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l00941">CVC3::Expr::andExpr()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00070">CVC3::BVSREM</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="expr_8h_source.html#l00961">CVC3::Expr::iteExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04930">CVC3::TheoryBitvector::newBVUminusExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05100">CVC3::TheoryBitvector::newBVURemExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a8d5827e983be4b7ed387314332ac4613"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::bvSModRewrite" ref="a8d5827e983be4b7ed387314332ac4613" args="(const Expr &amp;sModExpr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::bvSModRewrite </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>sModExpr</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Rewrite the signed mod in terms of the unsigned one. </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#af8734beba48ae58dd465efd808f73117">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06574">6574</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l00941">CVC3::Expr::andExpr()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00036">CVC3::BITVECTOR</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00071">CVC3::BVSMOD</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="expr_8h_source.html#l00961">CVC3::Expr::iteExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05214">CVC3::TheoryBitvector::newBVConstExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05237">CVC3::TheoryBitvector::newBVExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05275">CVC3::TheoryBitvector::newBVPlusExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04930">CVC3::TheoryBitvector::newBVUminusExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05100">CVC3::TheoryBitvector::newBVURemExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a9200f74bce7930bb77d5e2a00b81a1d4"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::zeroBVOR" ref="a9200f74bce7930bb77d5e2a00b81a1d4" args="(const Expr &amp;orEqZero)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::zeroBVOR </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>orEqZero</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Rewrite </p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[x_1 \vee x_2 \vee \ldots \vee x_n = 0\]" src="form_331.png"/>
</p>
<p> into </p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[x_1 = 0 \wedge x_2 = 0 \wedge \ldots \wedge x_n = 0\]" src="form_332.png"/>
</p>
<p>. </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a91229b0364c30d73cfdb5eba138ba712">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06631">6631</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.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#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8h_source.html#l00055">CVC3::BVOR</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05474">CVC3::TheoryBitvector::computeBVConst()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a1d422c14bfbcac9e91c53260b856b93e"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::oneBVAND" ref="a1d422c14bfbcac9e91c53260b856b93e" args="(const Expr &amp;andEqOne)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::oneBVAND </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>andEqOne</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Rewrite </p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[x_1 \wedge x_2 \wedge \ldots \wedge x_n = 1^n\]" src="form_333.png"/>
</p>
<p> into </p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[x_1 = 1^n \wedge x_2 = 1^n \wedge \ldots \wedge x_n = 1^n\]" src="form_334.png"/>
</p>
<p>. </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a94e717097d7f4156e647893dd506b91d">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06653">6653</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.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#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00054">CVC3::BVAND</a>, <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05474">CVC3::TheoryBitvector::computeBVConst()</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="rational_8h_source.html#l00159">CVC3::pow()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="a9c0a8eae91823c04c12dbedbbbbd417f"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::constEq" ref="a9c0a8eae91823c04c12dbedbbbbd417f" args="(const Expr &amp;eq)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::constEq </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>eq</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Equalities over constants go to true/false. </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a30e4cf2ef646b5fbc1e0b2b6fb88115a">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06675">6675</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8h_source.html#l00034">CVC3::BVCONST</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="theory_8h_source.html#l00579">CVC3::Theory::falseExpr()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00118">CVC3::TheoremProducer::newRWTheorem()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, <a class="el" href="theory_8h_source.html#l00582">CVC3::Theory::trueExpr()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<a class="anchor" id="adf540a2323b9f9ba281d2d67826cdae7"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::solveExtractOverlapApplies" ref="adf540a2323b9f9ba281d2d67826cdae7" args="(const Expr &amp;eq)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BitvectorTheoremProducer::solveExtractOverlapApplies </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>eq</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns true if equation is of the form x[i:j] = x[k:l], where the extracted segments overlap, i.e. i &gt; j &gt;= k &gt; l or k &gt; i &gt;= l &gt; j. </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a3b3ae2372cab5026feec302b6bdaa7d6">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06691">6691</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="theory__bitvector_8h_source.html#l00039">CVC3::EXTRACT</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05414">CVC3::TheoryBitvector::getExtractHi()</a>, and <a class="el" href="theory__bitvector_8cpp_source.html#l05405">CVC3::TheoryBitvector::getExtractLow()</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06713">solveExtractOverlap()</a>.</p>

</div>
</div>
<a class="anchor" id="a79998a92001fa8625a471bf7011b9cd3"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::solveExtractOverlap" ref="a79998a92001fa8625a471bf7011b9cd3" args="(const Expr &amp;eq)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> BitvectorTheoremProducer::solveExtractOverlap </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>eq</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the theorem that simplifies the equality of two overlapping extracts over the same term. </p>

<p>Implements <a class="el" href="classCVC3_1_1BitvectorProofRules.html#a4e491d1c488cb38d6e22ec21ac894f46">CVC3::BitvectorProofRules</a>.</p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06713">6713</a> of file <a class="el" href="bitvector__theorem__producer_8cpp_source.html">bitvector_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theory__bitvector_8cpp_source.html#l00045">CVC3::TheoryBitvector::BVSize()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">d_theoryBitvector</a>, <a class="el" href="assumptions_8h_source.html#l00083">CVC3::Assumptions::emptyAssump()</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="kinds_8h_source.html#l00085">EXISTS</a>, <a class="el" href="theory_8h_source.html#l00090">CVC3::Theory::getEM()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05414">CVC3::TheoryBitvector::getExtractHi()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05405">CVC3::TheoryBitvector::getExtractLow()</a>, <a class="el" href="expr_8h_source.html#l00965">CVC3::Expr::iffExpr()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00307">CVC3::TheoryBitvector::newBitvectorType()</a>, <a class="el" href="expr__manager_8h_source.html#l00484">CVC3::ExprManager::newBoundVarExpr()</a>, <a class="el" href="expr__manager_8h_source.html#l00506">CVC3::ExprManager::newClosureExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04997">CVC3::TheoryBitvector::newConcatExpr()</a>, <a class="el" href="theorem__producer_8cpp_source.html#l00075">CVC3::TheoremProducer::newPf()</a>, <a class="el" href="theorem__producer_8h_source.html#l00107">CVC3::TheoremProducer::newTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06691">solveExtractOverlapApplies()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem__producer_8h_source.html#l00159">CVC3::TheoremProducer::withProof()</a>.</p>

</div>
</div>
<hr/><h2>Member Data Documentation</h2>
<a class="anchor" id="adac6d564649b68cf95c22a82cefbbe72"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::d_theoryBitvector" ref="adac6d564649b68cf95c22a82cefbbe72" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1TheoryBitvector.html">TheoryBitvector</a>* <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#adac6d564649b68cf95c22a82cefbbe72">CVC3::BitvectorTheoremProducer::d_theoryBitvector</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8h_source.html#l00044">44</a> of file <a class="el" href="bitvector__theorem__producer_8h_source.html">bitvector_theorem_producer.h</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06324">bitblastBVMult()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06407">bitblastBVPlus()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00225">bitBlastDisEqnRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00142">bitBlastEqnRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00895">bitExtractAllToConstEq()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01575">bitExtractBitwise()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01829">bitExtractBVASHR()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01775">bitExtractBVLSHR()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01141">bitExtractBVMult()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01256">bitExtractBVPlus()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01337">bitExtractBVPlusPreComputed()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01721">bitExtractBVSHL()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01017">bitExtractConcatenation()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00977">bitExtractConstant()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01074">bitExtractConstBVMult()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01206">bitExtractExtraction()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01619">bitExtractFixedLeftShift()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01668">bitExtractFixedRightShift()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01539">bitExtractNot()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00948">bitExtractRewrite()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00380">bitExtractSXRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00927">bitExtractToExtract()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00066">bitvectorFalseRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00050">BitvectorTheoremProducer()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00104">bitvectorTrueRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02922">bitwiseConcat()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02842">bitwiseConst()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03068">bitwiseConstElim()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02970">bitwiseFlatten()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05298">buildPlusTerm()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02155">bvashrToConcat()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00704">bvConstIneqn()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03503">bvConstMultAssocRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02107">bvlshrToConcat()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04619">BVMult_order_subterms()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03541">bvMultAssocRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04128">bvmultBVUminus()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03329">bvmultConst()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03615">bvMultDistRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01497">bvPlusAssociativityRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03290">bvplusConst()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02318">bvplusZeroConcatRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06462">bvSDivRewrite()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02135">bvShiftZero()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02068">bvshlSplit()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02033">bvshlToConcat()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06574">bvSModRewrite()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06518">bvSRemRewrite()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06243">bvUDivConst()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06272">bvUDivTheorem()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04011">bvuminusBVConst()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04038">bvuminusBVMult()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03989">bvuminusToBVPlus()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04105">bvuminusVar()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06201">bvURemConst()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06229">bvURemRewrite()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05692">canonBVEQ()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04770">canonBVMult()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05559">canonBVPlus()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05587">canonBVUMinus()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05169">chopConcat()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03723">collectLikeTermsOfPlus()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03692">collectOneTermOfPlus()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03865">combineLikeTermsRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01406">computeCarryPreComputed()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03195">concatConst()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03239">concatMergeExtract()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06675">constEq()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02270">constMultToPlus()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01968">constWidthLeftShiftToConcat()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03785">createNewPlusCollection()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04882">distributive_rule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01893">eqConst()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01911">eqToBits()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04294">expandTypePred()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02532">extractBitwise()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04209">extractBVMult()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04241">extractBVPlus()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02465">extractConcat()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02365">extractConst()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02421">extractExtract()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02397">extractWhole()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03655">flattenBVPlus()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03403">flipBVMult()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00762">generalIneqn()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05020">getPlusTerms()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04371">isolate_var()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02627">iteBVnegRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02591">iteExtractRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01944">leftShiftToConcat()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00658">lhsEqRhsIneqn()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03916">lhsMinusRhsRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04687">liftConcatBVMult()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04924">liftConcatBVPlus()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04343">MarkNonSolvableEq()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02744">negBVand()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02766">negBVor()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02815">negBVxnor()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02789">negBVxor()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02678">negConcat()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02655">negConst()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02719">negElim()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00606">notBVEQ1Rule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00631">notBVLTRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05657">okToSplit()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06653">oneBVAND()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03378">oneCoeffBVMult()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03424">pad()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00305">padBVLTRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03479">padBVMult()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03449">padBVPlus()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00397">padBVSLTRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05609">processExtract()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06109">repeatRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02226">rewriteBVCOMP()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02241">rewriteBVSub()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02196">rewriteNAND()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02211">rewriteNOR()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02181">rewriteXNOR()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02001">rightShiftToConcat()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06142">rotlRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06173">rotrRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03160">sameKidCheck()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00437">signBVLTRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00339">signExtendRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06713">solveExtractOverlap()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06691">solveExtractOverlapApplies()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03845">sumNormalizedElements()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04277">typePredBit()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06631">zeroBVOR()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l03356">zeroCoeffBVMult()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06081">zeroExtendRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00686">zeroLeq()</a>, and <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01470">zeroPaddingRule()</a>.</p>

</div>
</div>
<a class="anchor" id="ae3c2817336952a9c84ca8a44db3896e1"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::d_bvZero" ref="ae3c2817336952a9c84ca8a44db3896e1" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#ae3c2817336952a9c84ca8a44db3896e1">CVC3::BitvectorTheoremProducer::d_bvZero</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Constant 1-bit bit-vector 0bin0. </p>
<p>instance of bitvector DP </p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8h_source.html#l00046">46</a> of file <a class="el" href="bitvector__theorem__producer_8h_source.html">bitvector_theorem_producer.h</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00050">BitvectorTheoremProducer()</a>, and <a class="el" href="bitvector__theorem__producer_8h_source.html#l00050">bvZero()</a>.</p>

</div>
</div>
<a class="anchor" id="aed61523f51f9daff35bf4823e9c4c06e"></a><!-- doxytag: member="CVC3::BitvectorTheoremProducer::d_bvOne" ref="aed61523f51f9daff35bf4823e9c4c06e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1BitvectorTheoremProducer.html#aed61523f51f9daff35bf4823e9c4c06e">CVC3::BitvectorTheoremProducer::d_bvOne</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Constant 1-bit bit-vector 0bin1. </p>

<p>Definition at line <a class="el" href="bitvector__theorem__producer_8h_source.html#l00048">48</a> of file <a class="el" href="bitvector__theorem__producer_8h_source.html">bitvector_theorem_producer.h</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00050">BitvectorTheoremProducer()</a>, and <a class="el" href="bitvector__theorem__producer_8h_source.html#l00052">bvOne()</a>.</p>

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