Sophie

Sophie

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

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::Theory 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_1Theory.html">Theory</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="#friends">Friends</a>  </div>
  <div class="headertitle">
<div class="title">CVC3::Theory Class Reference<div class="ingroups"><a class="el" href="group__Theories.html">Theories</a></div></div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="CVC3::Theory" -->
<p>Base class for theories.  
 <a href="classCVC3_1_1Theory.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="theory_8h_source.html">theory.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for CVC3::Theory:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classCVC3_1_1Theory.png" usemap="#CVC3::Theory_map" alt=""/>
  <map id="CVC3::Theory_map" name="CVC3::Theory_map">
<area href="classCVC3_1_1TheoryArith.html" title="This theory handles basic linear arithmetic." alt="CVC3::TheoryArith" shape="rect" coords="152,56,294,80"/>
<area href="classCVC3_1_1TheoryArray.html" title="This theory handles arrays." alt="CVC3::TheoryArray" shape="rect" coords="152,112,294,136"/>
<area href="classCVC3_1_1TheoryBitvector.html" title="Theory of bitvectors of known length \ (operations include: @,[i:j],[i],+,.,BVAND,BVNEG)" alt="CVC3::TheoryBitvector" shape="rect" coords="152,168,294,192"/>
<area href="classCVC3_1_1TheoryCore.html" title="This theory handles the built-in logical connectives plus equality. It also handles the registration ..." alt="CVC3::TheoryCore" shape="rect" coords="152,224,294,248"/>
<area href="classCVC3_1_1TheoryDatatype.html" title="This theory handles datatypes." alt="CVC3::TheoryDatatype" shape="rect" coords="152,280,294,304"/>
<area href="classCVC3_1_1TheoryQuant.html" title="This theory handles quantifiers." alt="CVC3::TheoryQuant" shape="rect" coords="152,336,294,360"/>
<area href="classCVC3_1_1TheoryRecords.html" title="This theory handles records." alt="CVC3::TheoryRecords" shape="rect" coords="152,392,294,416"/>
<area href="classCVC3_1_1TheorySimulate.html" title="&quot;Theory&quot; of symbolic simulation." alt="CVC3::TheorySimulate" shape="rect" coords="152,448,294,472"/>
<area href="classCVC3_1_1TheoryUF.html" title="This theory handles uninterpreted functions." alt="CVC3::TheoryUF" shape="rect" coords="152,504,294,528"/>
</map>
 </div></div>

<p><a href="classCVC3_1_1Theory-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_1Theory.html#a8fa244df7dcd091e8a5c3381053cc394">Theory</a> (<a class="el" href="classCVC3_1_1TheoryCore.html">TheoryCore</a> *theoryCore, const std::string &amp;name)
<dl class="el"><dd class="mdescRight">Whether theory has been used (for smtlib translator)  <a href="#a8fa244df7dcd091e8a5c3381053cc394"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theory.html#ac4527f940d280bca9ae279520fd1bc17">~Theory</a> (void)
<dl class="el"><dd class="mdescRight">Destructor.  <a href="#ac4527f940d280bca9ae279520fd1bc17"></a><br/></dl><li><a class="el" href="classCVC3_1_1ExprManager.html">ExprManager</a> * <a class="el" href="classCVC3_1_1Theory.html#abc2e30308c9e1f3cf752cfe8d939df1e">getEM</a> ()
<dl class="el"><dd class="mdescRight">Access to <a class="el" href="classCVC3_1_1ExprManager.html">ExprManager</a>.  <a href="#abc2e30308c9e1f3cf752cfe8d939df1e"></a><br/></dl><li><a class="el" href="classCVC3_1_1TheoryCore.html">TheoryCore</a> * <a class="el" href="classCVC3_1_1Theory.html#a90684d2a97738341c00f8f9c99af7b66">theoryCore</a> ()
<dl class="el"><dd class="mdescRight">Get a pointer to theoryCore.  <a href="#a90684d2a97738341c00f8f9c99af7b66"></a><br/></dl><li><a class="el" href="classCVC3_1_1CommonProofRules.html">CommonProofRules</a> * <a class="el" href="classCVC3_1_1Theory.html#a50802b148e8192178cf790e6c45ddff3">getCommonRules</a> ()
<dl class="el"><dd class="mdescRight">Get a pointer to common proof rules.  <a href="#a50802b148e8192178cf790e6c45ddff3"></a><br/></dl><li>const std::string &amp; <a class="el" href="classCVC3_1_1Theory.html#a4270eb556496ee10472b478b5792751c">getName</a> () const 
<dl class="el"><dd class="mdescRight">Get the name of the theory (for debugging purposes)  <a href="#a4270eb556496ee10472b478b5792751c"></a><br/></dl><li>virtual void <a class="el" href="classCVC3_1_1Theory.html#adaea4aa951adbe1561f7b445517378b6">setUsed</a> ()
<dl class="el"><dd class="mdescRight">Set the "used" flag on this theory (for smtlib translator)  <a href="#adaea4aa951adbe1561f7b445517378b6"></a><br/></dl><li>virtual bool <a class="el" href="classCVC3_1_1Theory.html#a5dad9fa356483782703a1ef1024d2a74">theoryUsed</a> ()
<dl class="el"><dd class="mdescRight">Get whether theory has been used (for smtlib translator)  <a href="#a5dad9fa356483782703a1ef1024d2a74"></a><br/></dl><li>virtual void <a class="el" href="group__Theory__API.html#ga664e787b0eb7e5e6fdb03efeb409d38a">addSharedTerm</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Notify theory of a new shared term.  <a href="group__Theory__API.html#ga664e787b0eb7e5e6fdb03efeb409d38a"></a><br/></dl><li>virtual void <a class="el" href="group__Theory__API.html#ga58de37714dd855f4d50de15108b8dbc7">assertFact</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;e)=0
<dl class="el"><dd class="mdescRight">Assert a new fact to the decision procedure.  <a href="group__Theory__API.html#ga58de37714dd855f4d50de15108b8dbc7"></a><br/></dl><li>virtual void <a class="el" href="group__Theory__API.html#gae0bb3d506dad8d69da546777cae27228">checkSat</a> (bool fullEffort)=0
<dl class="el"><dd class="mdescRight">Check for satisfiability in the theory.  <a href="group__Theory__API.html#gae0bb3d506dad8d69da546777cae27228"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__Theory__API.html#gaa6475baeb444915fa3b2f5c58dc5148a">rewrite</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Theory-specific rewrite rules.  <a href="group__Theory__API.html#gaa6475baeb444915fa3b2f5c58dc5148a"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__Theory__API.html#gab66d477fcc5c27075a25dbfec4988537">theoryPreprocess</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Theory-specific preprocessing.  <a href="group__Theory__API.html#gab66d477fcc5c27075a25dbfec4988537"></a><br/></dl><li>virtual void <a class="el" href="group__Theory__API.html#ga6896845c1e25b3452238059d779fc4c8">setup</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Set up the term e for call-backs when e or its children change.  <a href="group__Theory__API.html#ga6896845c1e25b3452238059d779fc4c8"></a><br/></dl><li>virtual void <a class="el" href="group__Theory__API.html#gac41af6a90290fe83b2ee6c53cbfc4a62">update</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;e, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;d)
<dl class="el"><dd class="mdescRight">Notify a theory of a new equality.  <a href="group__Theory__API.html#gac41af6a90290fe83b2ee6c53cbfc4a62"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__Theory__API.html#ga3908ecb66d7ba9830e7cf5d1a8ab91c3">solve</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;e)
<dl class="el"><dd class="mdescRight">An optional solver.  <a href="group__Theory__API.html#ga3908ecb66d7ba9830e7cf5d1a8ab91c3"></a><br/></dl><li>virtual void <a class="el" href="group__Theory__API.html#gacdab59f42f5124655275d2e08e7aa0e3">checkAssertEqInvariant</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;e)
<dl class="el"><dd class="mdescRight">A debug check used by the primary solver.  <a href="group__Theory__API.html#gacdab59f42f5124655275d2e08e7aa0e3"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__Theory__API.html#ga55b82868b8e9e60906756e797da9355a">simplifyOp</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Recursive simplification step.  <a href="group__Theory__API.html#ga55b82868b8e9e60906756e797da9355a"></a><br/></dl><li>virtual void <a class="el" href="group__Theory__API.html#gac22e5fff02a4681c3972e3637bd15748">checkType</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Check that e is a valid <a class="el" href="classCVC3_1_1Type.html" title="MS C++ specific settings.">Type</a> expr.  <a href="group__Theory__API.html#gac22e5fff02a4681c3972e3637bd15748"></a><br/></dl><li>virtual <a class="el" href="namespaceCVC3.html#af969e724f8b7016909f5804e8cea3e54">Cardinality</a> <a class="el" href="group__Theory__API.html#ga166b2a0c7ec3b09e079c2f84bb6087bc">finiteTypeInfo</a> (<a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, <a class="el" href="classCVC3_1_1Unsigned.html">Unsigned</a> &amp;n, bool enumerate, bool computeSize)
<dl class="el"><dd class="mdescRight">Compute information related to finiteness of types.  <a href="group__Theory__API.html#ga166b2a0c7ec3b09e079c2f84bb6087bc"></a><br/></dl><li>virtual void <a class="el" href="group__Theory__API.html#gabaed6b47e6fdea3ae1e53ff75f1882db">computeType</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Compute and store the type of e.  <a href="group__Theory__API.html#gabaed6b47e6fdea3ae1e53ff75f1882db"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Type.html">Type</a> <a class="el" href="group__Theory__API.html#gaa29925192ee19a6d1f0644174cfd07af">computeBaseType</a> (const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;tp)
<dl class="el"><dd class="mdescRight">Compute the base type of the top-level operator of an arbitrary type.  <a href="group__Theory__API.html#gaa29925192ee19a6d1f0644174cfd07af"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="group__Theory__API.html#ga19d53b411ccc48276f6666183b3c5887">computeTypePred</a> (const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;t, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight"><a class="el" href="classCVC3_1_1Theory.html" title="Base class for theories.">Theory</a> specific computation of the subtyping predicate for type t applied to the expression e.  <a href="group__Theory__API.html#ga19d53b411ccc48276f6666183b3c5887"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="group__Theory__API.html#ga9278ad3a6eb8351865a71acd7bb7f968">computeTCC</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Compute and cache the TCC of e.  <a href="group__Theory__API.html#ga9278ad3a6eb8351865a71acd7bb7f968"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="group__Theory__API.html#ga378bef078620e67fc80f36fa79320d91">parseExprOp</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Theory-specific parsing implemented by the DP.  <a href="group__Theory__API.html#ga378bef078620e67fc80f36fa79320d91"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1ExprStream.html">ExprStream</a> &amp; <a class="el" href="group__Theory__API.html#ga49009744d64bbc47785f3fc5fa6884ca">print</a> (<a class="el" href="classCVC3_1_1ExprStream.html">ExprStream</a> &amp;os, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Theory-specific pretty-printing.  <a href="group__Theory__API.html#ga49009744d64bbc47785f3fc5fa6884ca"></a><br/></dl><li>virtual void <a class="el" href="group__Theory__API.html#ga37309ea20a161f2529cbb0ab79f9ed3f">computeModelTerm</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;v)
<dl class="el"><dd class="mdescRight">Add variables from 'e' to 'v' for constructing a concrete model.  <a href="group__Theory__API.html#ga37309ea20a161f2529cbb0ab79f9ed3f"></a><br/></dl><li>virtual void <a class="el" href="group__Theory__API.html#gab23238889b7f68caa0715e6ab5d31775">refineCounterExample</a> ()
<dl class="el"><dd class="mdescRight">Process disequalities from the arrangement for model generation.  <a href="group__Theory__API.html#gab23238889b7f68caa0715e6ab5d31775"></a><br/></dl><li>virtual void <a class="el" href="group__Theory__API.html#ga6a6bc2982a8c71475cd9f1b6a4aa388e">computeModelBasic</a> (const std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;v)
<dl class="el"><dd class="mdescRight">Assign concrete values to basic-type variables in v.  <a href="group__Theory__API.html#ga6a6bc2982a8c71475cd9f1b6a4aa388e"></a><br/></dl><li>virtual void <a class="el" href="group__Theory__API.html#ga4a5b9fff88df80582fc76fd3def55002">computeModel</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;vars)
<dl class="el"><dd class="mdescRight">Compute the value of a compound variable from the more primitive ones.  <a href="group__Theory__API.html#ga4a5b9fff88df80582fc76fd3def55002"></a><br/></dl><li>virtual void <a class="el" href="group__Theory__API.html#ga4ce2fe1baec76fcb6120bbd86623ecd2">assertTypePred</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;pred)
<dl class="el"><dd class="mdescRight">Receives all the type predicates for the types of the given theory.  <a href="group__Theory__API.html#ga4ce2fe1baec76fcb6120bbd86623ecd2"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="group__Theory__API.html#gaacb9782eae3d1121c415cd4b7650025c">rewriteAtomic</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Theory-specific rewrites for atomic formulas.  <a href="group__Theory__API.html#gaacb9782eae3d1121c415cd4b7650025c"></a><br/></dl><li>virtual void <a class="el" href="group__Theory__API.html#ga30a5750a0c38416c847e411c7400214a">notifyInconsistent</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;thm)
<dl class="el"><dd class="mdescRight">Notification of conflict.  <a href="group__Theory__API.html#ga30a5750a0c38416c847e411c7400214a"></a><br/></dl><li>virtual void <a class="el" href="group__Theory__API.html#gafb1431aa8258f6663ad948ebb08e5330">registerAtom</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;thm)
<li>virtual void <a class="el" href="group__Theory__API.html#gaae6aca3030e9857d149b8ea26c44b535">registerAtom</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Theory-specific registration of atoms.  <a href="group__Theory__API.html#gaae6aca3030e9857d149b8ea26c44b535"></a><br/></dl></ul>
<tr><td colspan="2"><div class="groupHeader">Core Framework Functionality</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>These methods provide convenient access to core functionality for the benefit of decision procedures. </p>
</div></td></tr>
<ul>
<li>virtual bool <a class="el" href="classCVC3_1_1Theory.html#ab85541a91803599b7495f709c72c28c5">inconsistent</a> ()
<dl class="el"><dd class="mdescRight">Check if the current context is inconsistent.  <a href="#ab85541a91803599b7495f709c72c28c5"></a><br/></dl><li>virtual void <a class="el" href="classCVC3_1_1Theory.html#a89f8e1e02e22ef524c286ce8b87bdea4">setInconsistent</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;e)
<dl class="el"><dd class="mdescRight">Make the context inconsistent; The formula proved by e must FALSE.  <a href="#a89f8e1e02e22ef524c286ce8b87bdea4"></a><br/></dl><li>virtual void <a class="el" href="classCVC3_1_1Theory.html#a08cc815e21d2972f54f8c1e70ce8ab51">setIncomplete</a> (const std::string &amp;reason)
<dl class="el"><dd class="mdescRight">Mark the current decision branch as possibly incomplete.  <a href="#a08cc815e21d2972f54f8c1e70ce8ab51"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1Theory.html#a52158688456f8605b064fbbf7a46039c">simplify</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Simplify a term e and return a <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a>(e==e')  <a href="#a52158688456f8605b064fbbf7a46039c"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1Theory.html#a9d441225b287419426c80a0374d6c6cb">simplifyExpr</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Simplify a term e w.r.t. the current context.  <a href="#a9d441225b287419426c80a0374d6c6cb"></a><br/></dl><li>virtual void <a class="el" href="classCVC3_1_1Theory.html#a93856c9af82b2c25c51b3c36bafb71f4">enqueueFact</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;e)
<dl class="el"><dd class="mdescRight">Submit a derived fact to the core from a decision procedure.  <a href="#a93856c9af82b2c25c51b3c36bafb71f4"></a><br/></dl><li>virtual void <a class="el" href="classCVC3_1_1Theory.html#af833743a1332ba2b84bdc4118a05300f">enqueueSE</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;e)
<dl class="el"><dd class="mdescRight">Check if the current context is inconsistent.  <a href="#af833743a1332ba2b84bdc4118a05300f"></a><br/></dl><li>virtual void <a class="el" href="classCVC3_1_1Theory.html#a135cfab97004ee025a7840d72b6c4e1d">assertEqualities</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;e)
<dl class="el"><dd class="mdescRight">Handle new equalities (usually asserted through addFact)  <a href="#a135cfab97004ee025a7840d72b6c4e1d"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1Theory.html#abd5a64ee867dda0c216a04e9fc7fbd6c">parseExpr</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Parse the generic expression.  <a href="#abd5a64ee867dda0c216a04e9fc7fbd6c"></a><br/></dl><li>virtual void <a class="el" href="classCVC3_1_1Theory.html#a917b117d28514f486b296568fcd1cfd1">assignValue</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;t, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;val)
<dl class="el"><dd class="mdescRight">Assigns t a concrete value val. Used in model generation.  <a href="#a917b117d28514f486b296568fcd1cfd1"></a><br/></dl><li>virtual void <a class="el" href="classCVC3_1_1Theory.html#a4a9cda0b7c7b2fd0874e7d7b9819a68f">assignValue</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;thm)
<dl class="el"><dd class="mdescRight">Record a derived assignment to a variable (LHS).  <a href="#a4a9cda0b7c7b2fd0874e7d7b9819a68f"></a><br/></dl></ul>
<tr><td colspan="2"><div class="groupHeader">Theory Helper Methods</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>These methods provide basic functionality needed by all theories. </p>
</div></td></tr>
<ul>
<li>void <a class="el" href="classCVC3_1_1Theory.html#a41499be2b31d82e7bec5efc880126510">registerKinds</a> (<a class="el" href="classCVC3_1_1Theory.html">Theory</a> *theory, std::vector&lt; int &gt; &amp;kinds)
<dl class="el"><dd class="mdescRight">Register new kinds with the given theory.  <a href="#a41499be2b31d82e7bec5efc880126510"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1Theory.html#aafdee81857fde584632759c78ed821f5">unregisterKinds</a> (<a class="el" href="classCVC3_1_1Theory.html">Theory</a> *theory, std::vector&lt; int &gt; &amp;kinds)
<dl class="el"><dd class="mdescRight">Unregister kinds for a theory.  <a href="#aafdee81857fde584632759c78ed821f5"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1Theory.html#a97a6f8e09f71513da969fa7847346c6f">registerTheory</a> (<a class="el" href="classCVC3_1_1Theory.html">Theory</a> *theory, std::vector&lt; int &gt; &amp;kinds, bool hasSolver=false)
<dl class="el"><dd class="mdescRight">Register a new theory.  <a href="#a97a6f8e09f71513da969fa7847346c6f"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1Theory.html#a6bdcdfdf6d658b1b1b7c548ea4782e6e">unregisterTheory</a> (<a class="el" href="classCVC3_1_1Theory.html">Theory</a> *theory, std::vector&lt; int &gt; &amp;kinds, bool hasSolver)
<dl class="el"><dd class="mdescRight">Unregister a theory.  <a href="#a6bdcdfdf6d658b1b1b7c548ea4782e6e"></a><br/></dl><li>int <a class="el" href="classCVC3_1_1Theory.html#ab7c83d1e21c1553ff229447fe6d51530">getNumTheories</a> ()
<dl class="el"><dd class="mdescRight">Return the number of registered theories.  <a href="#ab7c83d1e21c1553ff229447fe6d51530"></a><br/></dl><li>bool <a class="el" href="classCVC3_1_1Theory.html#a8dc9b3350f948ce5b6112a4812819696">hasTheory</a> (int kind)
<dl class="el"><dd class="mdescRight">Test whether a kind maps to any theory.  <a href="#a8dc9b3350f948ce5b6112a4812819696"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theory.html">Theory</a> * <a class="el" href="classCVC3_1_1Theory.html#a01fa8047ed1f649dc98831cb536187e4">theoryOf</a> (int kind)
<dl class="el"><dd class="mdescRight">Return the theory associated with a kind.  <a href="#a01fa8047ed1f649dc98831cb536187e4"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theory.html">Theory</a> * <a class="el" href="classCVC3_1_1Theory.html#ad4fea3e52e80f6ea2fb1a1eaaa7163b8">theoryOf</a> (const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;e)
<dl class="el"><dd class="mdescRight">Return the theory associated with a type.  <a href="#ad4fea3e52e80f6ea2fb1a1eaaa7163b8"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theory.html">Theory</a> * <a class="el" href="classCVC3_1_1Theory.html#a9ea78dba89246dda6c504c7af5201f1b">theoryOf</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Return the theory associated with an <a class="el" href="classCVC3_1_1Expr.html" title="Data structure of expressions in CVC3.">Expr</a>.  <a href="#a9ea78dba89246dda6c504c7af5201f1b"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1Theory.html#ac59f888b3b3f973580e061ffd803b6bb">find</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Return the theorem that e is equal to its find.  <a href="#ac59f888b3b3f973580e061ffd803b6bb"></a><br/></dl><li>const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp; <a class="el" href="classCVC3_1_1Theory.html#a89a91d7480d5783fb0c0f67f2fdb7873">findRef</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Return the find as a reference: expr must have a find.  <a href="#a89a91d7480d5783fb0c0f67f2fdb7873"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1Theory.html#ab46ce7e7b6c9425a42df38ccf56642b6">findReduce</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Return find-reduced version of e.  <a href="#ab46ce7e7b6c9425a42df38ccf56642b6"></a><br/></dl><li>bool <a class="el" href="classCVC3_1_1Theory.html#ad0f5335bae1a358802ec5b958e77934e">findReduced</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Return true iff e is find-reduced.  <a href="#ad0f5335bae1a358802ec5b958e77934e"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1Theory.html#a08412b310cb743536f7edd9fccd60e46">findExpr</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Return the find of e, or e if it has no find.  <a href="#a08412b310cb743536f7edd9fccd60e46"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1Theory.html#af38bdeb162a9ab9bd81ce40f598f608f">getTCC</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Compute the TCC of e, or the subtyping predicate, if e is a type.  <a href="#af38bdeb162a9ab9bd81ce40f598f608f"></a><br/></dl><li><a class="el" href="classCVC3_1_1Type.html">Type</a> <a class="el" href="classCVC3_1_1Theory.html#aa408fe61c3d28f4333b78a3027606bb8">getBaseType</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Compute (or look up in cache) the base type of e and return the result.  <a href="#aa408fe61c3d28f4333b78a3027606bb8"></a><br/></dl><li><a class="el" href="classCVC3_1_1Type.html">Type</a> <a class="el" href="classCVC3_1_1Theory.html#a26afbc255a32b9fcff11d6b2625157ae">getBaseType</a> (const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;tp)
<dl class="el"><dd class="mdescRight">Compute the base type from an arbitrary type.  <a href="#a26afbc255a32b9fcff11d6b2625157ae"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1Theory.html#a39539e895f8aade88ae5bc05bbcc9302">getTypePred</a> (const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;t, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Calls the correct theory to compute a type predicate.  <a href="#a39539e895f8aade88ae5bc05bbcc9302"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1Theory.html#ad6cb45844df7f1b08a53e41e40a362e3">updateHelper</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Update the children of the term e.  <a href="#ad6cb45844df7f1b08a53e41e40a362e3"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1Theory.html#a29cc343040a52a299a4f20123edf4c75">setupCC</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Setup a term for congruence closure (must have sig and rep attributes)  <a href="#a29cc343040a52a299a4f20123edf4c75"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1Theory.html#a0b9e5a75b0e23a334563392f075df9e2">updateCC</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;e, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;d)
<dl class="el"><dd class="mdescRight">Update a term w.r.t. congruence closure (must be setup with <a class="el" href="classCVC3_1_1Theory.html#a29cc343040a52a299a4f20123edf4c75" title="Setup a term for congruence closure (must have sig and rep attributes)">setupCC()</a>)  <a href="#a0b9e5a75b0e23a334563392f075df9e2"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1Theory.html#a2d91d71489b0c0a9822cef765326bc89">rewriteCC</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Rewrite a term w.r.t. congruence closure (must be setup with <a class="el" href="classCVC3_1_1Theory.html#a29cc343040a52a299a4f20123edf4c75" title="Setup a term for congruence closure (must have sig and rep attributes)">setupCC()</a>)  <a href="#a2d91d71489b0c0a9822cef765326bc89"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1Theory.html#ad8b27aeea37d99def7a3c0348ded3e66">getModelTerm</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;v)
<dl class="el"><dd class="mdescRight">Calls the correct theory to get all of the terms that need to be assigned values in the concrete model.  <a href="#ad8b27aeea37d99def7a3c0348ded3e66"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1Theory.html#a4867f332c809f6efe8f01ffa45c32db3">getModelValue</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Fetch the concrete assignment to the variable during model generation.  <a href="#a4867f332c809f6efe8f01ffa45c32db3"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1Theory.html#a605e960d2442b587046c562723b7f03a">addSplitter</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, int priority=0)
<dl class="el"><dd class="mdescRight">Suggest a splitter to the <a class="el" href="classCVC3_1_1SearchEngine.html" title="API to to a generic proof search engine.">SearchEngine</a>.  <a href="#a605e960d2442b587046c562723b7f03a"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1Theory.html#a688cd0c0b669ab9719f8a99cb207ad2c">addGlobalLemma</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;thm, int priority=0)
<dl class="el"><dd class="mdescRight">Add a global lemma.  <a href="#a688cd0c0b669ab9719f8a99cb207ad2c"></a><br/></dl></ul>
<tr><td colspan="2"><div class="groupHeader">Core Testers</div></td></tr>
<ul>
<li>bool <a class="el" href="classCVC3_1_1Theory.html#a8d466120560b7b91dc279e657fe3c433">isLeaf</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Test if e is an i-leaf term for the current theory.  <a href="#a8d466120560b7b91dc279e657fe3c433"></a><br/></dl><li>bool <a class="el" href="classCVC3_1_1Theory.html#aa0ef53bc2009d92763e0916c38aaf692">isLeafIn</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e1, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e2)
<dl class="el"><dd class="mdescRight">Test if e1 is an i-leaf in e2.  <a href="#aa0ef53bc2009d92763e0916c38aaf692"></a><br/></dl><li>bool <a class="el" href="classCVC3_1_1Theory.html#a8dd39cad11cf866afc6282475cfc81b7">leavesAreSimp</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Test if all i-leaves of e are simplified.  <a href="#a8dd39cad11cf866afc6282475cfc81b7"></a><br/></dl></ul>
<tr><td colspan="2"><div class="groupHeader">Common Type and Expr Methods</div></td></tr>
<ul>
<li><a class="el" href="classCVC3_1_1Type.html">Type</a> <a class="el" href="classCVC3_1_1Theory.html#a705d998884ec8a53c22220373472d868">boolType</a> ()
<dl class="el"><dd class="mdescRight">Return BOOLEAN type.  <a href="#a705d998884ec8a53c22220373472d868"></a><br/></dl><li>const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp; <a class="el" href="classCVC3_1_1Theory.html#a0bbf7c5b6079fc99a0f759e5809fe6f5">falseExpr</a> ()
<dl class="el"><dd class="mdescRight">Return FALSE <a class="el" href="classCVC3_1_1Expr.html" title="Data structure of expressions in CVC3.">Expr</a>.  <a href="#a0bbf7c5b6079fc99a0f759e5809fe6f5"></a><br/></dl><li>const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp; <a class="el" href="classCVC3_1_1Theory.html#ab8835beee96db67f3c26a604d96f2fe8">trueExpr</a> ()
<dl class="el"><dd class="mdescRight">Return TRUE <a class="el" href="classCVC3_1_1Expr.html" title="Data structure of expressions in CVC3.">Expr</a>.  <a href="#ab8835beee96db67f3c26a604d96f2fe8"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1Theory.html#a4f82b4903d68da2bd83afb104c2c62cc">newVar</a> (const std::string &amp;name, const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;type)
<dl class="el"><dd class="mdescRight">Create a new variable given its name and type.  <a href="#a4f82b4903d68da2bd83afb104c2c62cc"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1Theory.html#aa7b6e0e6f53256fd0e5573ad51ae472b">newVar</a> (const std::string &amp;name, const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;type, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;def)
<dl class="el"><dd class="mdescRight">Create a new named expression given its name, type, and definition.  <a href="#aa7b6e0e6f53256fd0e5573ad51ae472b"></a><br/></dl><li><a class="el" href="classCVC3_1_1Op.html">Op</a> <a class="el" href="classCVC3_1_1Theory.html#a97642364c244b753d33b551fc8c3bb9a">newFunction</a> (const std::string &amp;name, const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;type, bool computeTransClosure)
<dl class="el"><dd class="mdescRight">Create a new uninterpreted function.  <a href="#a97642364c244b753d33b551fc8c3bb9a"></a><br/></dl><li><a class="el" href="classCVC3_1_1Op.html">Op</a> <a class="el" href="classCVC3_1_1Theory.html#a61a4a3159152e1ff93dea55a33441557">lookupFunction</a> (const std::string &amp;name, <a class="el" href="classCVC3_1_1Type.html">Type</a> *type)
<dl class="el"><dd class="mdescRight">Look up a function by name.  <a href="#a61a4a3159152e1ff93dea55a33441557"></a><br/></dl><li><a class="el" href="classCVC3_1_1Op.html">Op</a> <a class="el" href="classCVC3_1_1Theory.html#ac6c5f95bbc428cad8085b416cd40292a">newFunction</a> (const std::string &amp;name, const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;type, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;def)
<dl class="el"><dd class="mdescRight">Create a new defined function.  <a href="#ac6c5f95bbc428cad8085b416cd40292a"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1Theory.html#a13ba9024a22362cc96760519a84f2316">addBoundVar</a> (const std::string &amp;name, const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;type)
<dl class="el"><dd class="mdescRight">Create and add a new bound variable to the stack, for <a class="el" href="group__Theory__API.html#ga378bef078620e67fc80f36fa79320d91" title="Theory-specific parsing implemented by the DP.">parseExprOp()</a>.  <a href="#a13ba9024a22362cc96760519a84f2316"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1Theory.html#aa8f3f9fb084f9d5e385255baab5dc8f3">addBoundVar</a> (const std::string &amp;name, const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;type, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;def)
<dl class="el"><dd class="mdescRight">Create and add a new bound named def to the stack, for <a class="el" href="group__Theory__API.html#ga378bef078620e67fc80f36fa79320d91" title="Theory-specific parsing implemented by the DP.">parseExprOp()</a>.  <a href="#aa8f3f9fb084f9d5e385255baab5dc8f3"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1Theory.html#a4b58aeebc3a62e41f0ce71ba01fa3961">lookupVar</a> (const std::string &amp;name, <a class="el" href="classCVC3_1_1Type.html">Type</a> *type)
<dl class="el"><dd class="mdescRight">Lookup variable and return it and its type. Return NULL <a class="el" href="classCVC3_1_1Expr.html" title="Data structure of expressions in CVC3.">Expr</a> if it doesn't exist yet.  <a href="#a4b58aeebc3a62e41f0ce71ba01fa3961"></a><br/></dl><li><a class="el" href="classCVC3_1_1Type.html">Type</a> <a class="el" href="classCVC3_1_1Theory.html#aadde006d0dea508fec039b8092b14ed6">newTypeExpr</a> (const std::string &amp;name)
<dl class="el"><dd class="mdescRight">Create a new uninterpreted type with the given name.  <a href="#aadde006d0dea508fec039b8092b14ed6"></a><br/></dl><li><a class="el" href="classCVC3_1_1Type.html">Type</a> <a class="el" href="classCVC3_1_1Theory.html#a4e57c5fb189f51c6e5abeeb0bcb1baef">lookupTypeExpr</a> (const std::string &amp;name)
<dl class="el"><dd class="mdescRight">Lookup type by name. Return Null if no such type exists.  <a href="#a4e57c5fb189f51c6e5abeeb0bcb1baef"></a><br/></dl><li><a class="el" href="classCVC3_1_1Type.html">Type</a> <a class="el" href="classCVC3_1_1Theory.html#a7aadedb0affc98a4cd1741f5dcf42d3a">newTypeExpr</a> (const std::string &amp;name, const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;def)
<dl class="el"><dd class="mdescRight">Create a new type abbreviation with the given name.  <a href="#a7aadedb0affc98a4cd1741f5dcf42d3a"></a><br/></dl><li><a class="el" href="classCVC3_1_1Type.html">Type</a> <a class="el" href="classCVC3_1_1Theory.html#af85a563480c411b1e8eb280de9f39bb2">newSubtypeExpr</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;pred, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;witness)
<dl class="el"><dd class="mdescRight">Create a new subtype expression.  <a href="#af85a563480c411b1e8eb280de9f39bb2"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1Theory.html#a07b326cd94b2bb8bafa39faf07caaec5">resolveID</a> (const std::string &amp;name)
<dl class="el"><dd class="mdescRight">Resolve an identifier, for use in <a class="el" href="group__Theory__API.html#ga378bef078620e67fc80f36fa79320d91" title="Theory-specific parsing implemented by the DP.">parseExprOp()</a>  <a href="#a07b326cd94b2bb8bafa39faf07caaec5"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1Theory.html#a6b1c155465b0c24885213e7442dd0882">installID</a> (const std::string &amp;name, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Install name as a new identifier associated with <a class="el" href="classCVC3_1_1Expr.html" title="Data structure of expressions in CVC3.">Expr</a> e.  <a href="#a6b1c155465b0c24885213e7442dd0882"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1Theory.html#a090c2b079f3b90b4f5da3d8606b14d16">typePred</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Return BOOLEAN type.  <a href="#a090c2b079f3b90b4f5da3d8606b14d16"></a><br/></dl></ul>
<tr><td colspan="2"><div class="groupHeader">Commonly Used Proof Rules</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="theory_api_core_proof_rules"></a> </p>
</div></td></tr>
<ul>
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1Theory.html#af860f5d5e01423628c97c399606916ff">reflexivityRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;a)
<dl class="el"><dd class="mdescRight">==&gt; a == a  <a href="#af860f5d5e01423628c97c399606916ff"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1Theory.html#a7440711981ac1bba2bed7476c0fa4e0b">symmetryRule</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;a1_eq_a2)
<dl class="el"><dd class="mdescRight">a1 == a2 ==&gt; a2 == a1  <a href="#a7440711981ac1bba2bed7476c0fa4e0b"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1Theory.html#a76f6507116e36f46dab074781fb9bf2d">transitivityRule</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;a1_eq_a2, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;a2_eq_a3)
<dl class="el"><dd class="mdescRight">(a1 == a2) &amp; (a2 == a3) ==&gt; (a1 == a3)  <a href="#a76f6507116e36f46dab074781fb9bf2d"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1Theory.html#a92e2da5223d7fb620cce85b2813e047f">substitutivityRule</a> (const <a class="el" href="classCVC3_1_1Op.html">Op</a> &amp;op, const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;thms)
<dl class="el"><dd class="mdescRight">(c_1 == d_1) &amp; ... &amp; (c_n == d_n) ==&gt; op(c_1,...,c_n) == op(d_1,...,d_n)  <a href="#a92e2da5223d7fb620cce85b2813e047f"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1Theory.html#a83a1a0b30a27f887cef4c394544b30b0">substitutivityRule</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;t)
<dl class="el"><dd class="mdescRight">Special case for unary operators.  <a href="#a83a1a0b30a27f887cef4c394544b30b0"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1Theory.html#abddfe81d6d08a46f1d1b3aa80ac565d5">substitutivityRule</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;t1, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;t2)
<dl class="el"><dd class="mdescRight">Special case for binary operators.  <a href="#abddfe81d6d08a46f1d1b3aa80ac565d5"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1Theory.html#a8ab61a1574ac8c29db7ddb5b0d45235b">substitutivityRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, const std::vector&lt; unsigned &gt; &amp;changed, const std::vector&lt; <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &gt; &amp;thms)
<dl class="el"><dd class="mdescRight">Optimized: only positions which changed are included.  <a href="#a8ab61a1574ac8c29db7ddb5b0d45235b"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1Theory.html#a56f710c79a9b3464189e8bb4d9d8a8c2">substitutivityRule</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, int changed, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;thm)
<dl class="el"><dd class="mdescRight">Optimized: only a single position changed.  <a href="#a56f710c79a9b3464189e8bb4d9d8a8c2"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1Theory.html#aeda4c57dfbe357a80a348da9ffa71072">iffMP</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;e1, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;e1_iff_e2)
<dl class="el"><dd class="mdescRight">e1 AND (e1 IFF e2) ==&gt; e2  <a href="#aeda4c57dfbe357a80a348da9ffa71072"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1Theory.html#aba1822f2d985b50f6405c290c3814c1a">rewriteAnd</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">==&gt; AND(e1,e2) IFF [simplified expr]  <a href="#aba1822f2d985b50f6405c290c3814c1a"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1Theory.html#ad58c336212c2669f3cf32c0915ee3788">rewriteOr</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">==&gt; OR(e1,...,en) IFF [simplified expr]  <a href="#ad58c336212c2669f3cf32c0915ee3788"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1Theory.html#a0f2e0c6647ff6282ee2f65116a82e13b">rewriteIte</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Derived rule for rewriting ITE.  <a href="#a0f2e0c6647ff6282ee2f65116a82e13b"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1Theory.html#a07c2391015494b5f71def510c1fb6e26">renameExpr</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Derived rule to create a new name for an expression.  <a href="#a07c2391015494b5f71def510c1fb6e26"></a><br/></dl></ul>
<h2><a name="pro-attribs"></a>
Protected Attributes</h2>
<ul>
<li>bool <a class="el" href="classCVC3_1_1Theory.html#a262fdc338527489b376ec181ecc38ddc">d_theoryUsed</a>
</ul>
<h2><a name="pri-methods"></a>
Private Member Functions</h2>
<ul>
<li><a class="el" href="classCVC3_1_1Theory.html#a088f7f57d4e8db8e46af066e245c5ca9">Theory</a> (void)
<dl class="el"><dd class="mdescRight">Private default constructor.  <a href="#a088f7f57d4e8db8e46af066e245c5ca9"></a><br/></dl></ul>
<h2><a name="pri-attribs"></a>
Private Attributes</h2>
<ul>
<li><a class="el" href="classCVC3_1_1ExprManager.html">ExprManager</a> * <a class="el" href="classCVC3_1_1Theory.html#ad756f41e88f25eec335c9c1c004ae61f">d_em</a>
<li><a class="el" href="classCVC3_1_1TheoryCore.html">TheoryCore</a> * <a class="el" href="classCVC3_1_1Theory.html#a61d131675cc0db6a1743f1fe32b327dc">d_theoryCore</a>
<dl class="el"><dd class="mdescRight">Provides the core functionality.  <a href="#a61d131675cc0db6a1743f1fe32b327dc"></a><br/></dl><li><a class="el" href="classCVC3_1_1CommonProofRules.html">CommonProofRules</a> * <a class="el" href="classCVC3_1_1Theory.html#a59d055f2cf01f484ce36d56ddb82c8f8">d_commonRules</a>
<dl class="el"><dd class="mdescRight">Commonly used proof rules.  <a href="#a59d055f2cf01f484ce36d56ddb82c8f8"></a><br/></dl><li>std::string <a class="el" href="classCVC3_1_1Theory.html#a1e1919bd500a53974258165b80119836">d_name</a>
<dl class="el"><dd class="mdescRight">Name of the theory (for debugging)  <a href="#a1e1919bd500a53974258165b80119836"></a><br/></dl></ul>
<h2><a name="friends"></a>
Friends</h2>
<ul>
<li>class <a class="el" href="classCVC3_1_1Theory.html#acaa2f18ede56d1a823f3f28bcdeccde2">TheoryCore</a>
</ul>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Base class for theories. </p>
<p><a class="anchor" id="Theory"></a></p>
<p>Author: Clark Barrett</p>
<p>Created: Thu Jan 30 16:37:56 2003</p>
<p>This is an abstract class which all theories should inherit from. In addition to providing an abstract theory interface, it provides access functions to core functionality. However, in order to avoid duplicating the data structures which implement this functionality, all the functionality is stored in a separate class (which actually derives from this one) called <a class="el" href="classCVC3_1_1TheoryCore.html" title="This theory handles the built-in logical connectives plus equality. It also handles the registration ...">TheoryCore</a>. These two classes work closely together to provide the core functionality. </p>

<p>Definition at line <a class="el" href="theory_8h_source.html#l00064">64</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a088f7f57d4e8db8e46af066e245c5ca9"></a><!-- doxytag: member="CVC3::Theory::Theory" ref="a088f7f57d4e8db8e46af066e245c5ca9" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Theory::Theory </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Private default constructor. </p>
<p>Everyone besides <a class="el" href="classCVC3_1_1TheoryCore.html" title="This theory handles the built-in logical connectives plus equality. It also handles the registration ...">TheoryCore</a> has to use the public constructor which sets up all the provided functionality automatically. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00033">33</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a8fa244df7dcd091e8a5c3381053cc394"></a><!-- doxytag: member="CVC3::Theory::Theory" ref="a8fa244df7dcd091e8a5c3381053cc394" args="(TheoryCore *theoryCore, const std::string &amp;name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Theory::Theory </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classCVC3_1_1TheoryCore.html">TheoryCore</a> *&#160;</td>
          <td class="paramname"><em>theoryCore</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></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Whether theory has been used (for smtlib translator) </p>
<p>Exposed constructor.</p>
<p>Note that each instance of <a class="el" href="classCVC3_1_1Theory.html" title="Base class for theories.">Theory</a> must have a name (mostly for debugging purposes). </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00036">36</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

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

<p>Destructor. </p>

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

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="abc2e30308c9e1f3cf752cfe8d939df1e"></a><!-- doxytag: member="CVC3::Theory::getEM" ref="abc2e30308c9e1f3cf752cfe8d939df1e" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1ExprManager.html">ExprManager</a>* CVC3::Theory::getEM </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Access to <a class="el" href="classCVC3_1_1ExprManager.html">ExprManager</a>. </p>

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

<p>References <a class="el" href="theory_8h_source.html#l00067">d_em</a>.</p>

<p>Referenced by <a class="el" href="theory_8cpp_source.html#l00709">addBoundVar()</a>, <a class="el" href="array__theorem__producer_8cpp_source.html#l00338">CVC3::ArrayTheoremProducer::arrayNotEq()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01575">CVC3::BitvectorTheoremProducer::bitExtractBitwise()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06272">CVC3::BitvectorTheoremProducer::bvUDivTheorem()</a>, <a class="el" href="theory__quant_8cpp_source.html#l07647">CVC3::TheoryQuant::checkSat()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00337">CVC3::TheoryUF::checkType()</a>, <a class="el" href="theory__records_8cpp_source.html#l00344">CVC3::TheoryRecords::checkType()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00436">CVC3::TheoryDatatype::checkType()</a>, <a class="el" href="theory__core_8cpp_source.html#l01408">CVC3::TheoryCore::checkType()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02932">CVC3::TheoryBitvector::checkType()</a>, <a class="el" href="theory__array_8cpp_source.html#l00731">CVC3::TheoryArray::checkType()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03673">CVC3::TheoryArithOld::checkType()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01884">CVC3::TheoryArithNew::checkType()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02695">CVC3::TheoryArith3::checkType()</a>, <a class="el" href="theory__core_8cpp_source.html#l03763">CVC3::TheoryCore::collectBasicVars()</a>, <a class="el" href="theory__core_8cpp_source.html#l03954">CVC3::TheoryCore::collectModelValues()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00509">CVC3::TheoryUF::computeModel()</a>, <a class="el" href="theory__array_8cpp_source.html#l00939">CVC3::TheoryArray::computeModel()</a>, <a class="el" href="theory__simulate_8cpp_source.html#l00164">CVC3::TheorySimulate::computeTCC()</a>, <a class="el" href="theory__quant_8cpp_source.html#l08714">CVC3::TheoryQuant::computeTCC()</a>, <a class="el" href="theory__records_8cpp_source.html#l00388">CVC3::TheoryRecords::computeType()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02969">CVC3::TheoryBitvector::computeType()</a>, <a class="el" href="theory__array_8cpp_source.html#l00810">CVC3::TheoryArray::computeType()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03725">CVC3::TheoryArithOld::computeType()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01936">CVC3::TheoryArithNew::computeType()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02747">CVC3::TheoryArith3::computeType()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00878">CVC3::TheoryDatatype::dataType()</a>, <a class="el" href="theory__quant_8cpp_source.html#l00633">CVC3::TheoryQuant::enqueueInst()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02532">CVC3::BitvectorTheoremProducer::extractBitwise()</a>, <a class="el" href="theory__core_8cpp_source.html#l01443">CVC3::TheoryCore::finiteTypeInfo()</a>, <a class="el" href="theory__array_8cpp_source.html#l00757">CVC3::TheoryArray::finiteTypeInfo()</a>, <a class="el" href="theory__core_8cpp_source.html#l04320">CVC3::TheoryCore::getAssignment()</a>, <a class="el" href="search_8cpp_source.html#l00091">CVC3::SearchEngine::getConcreteModel()</a>, <a class="el" href="theory__quant_8cpp_source.html#l02229">CVC3::CompleteInstPreProcessor::inst()</a>, <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00050">CVC3::TheoryDatatypeLazy::instantiate()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00075">CVC3::TheoryDatatype::instantiate()</a>, <a class="el" href="theory__quant_8cpp_source.html#l01373">CVC3::CompleteInstPreProcessor::isMacro()</a>, <a class="el" href="theory__uf_8cpp_source.html#l01129">CVC3::TheoryUF::lambdaExpr()</a>, <a class="el" href="theory_8cpp_source.html#l00697">lookupFunction()</a>, <a class="el" href="theory_8cpp_source.html#l00776">lookupVar()</a>, <a class="el" href="theory__quant_8cpp_source.html#l01827">CVC3::CompleteInstPreProcessor::minusOne()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04638">CVC3::TheoryBitvector::newBitvectorTypeExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04940">CVC3::TheoryBitvector::newBoolExtractExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04671">CVC3::TheoryBitvector::newBVAndExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05172">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#l04882">CVC3::TheoryBitvector::newBVIndexExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05038">CVC3::TheoryBitvector::newBVMultExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04707">CVC3::TheoryBitvector::newBVOrExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05275">CVC3::TheoryBitvector::newBVPlusExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04824">CVC3::TheoryBitvector::newBVXnorExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04773">CVC3::TheoryBitvector::newBVXorExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05023">CVC3::TheoryBitvector::newConcatExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04968">CVC3::TheoryBitvector::newFixedConstWidthLeftShiftExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04954">CVC3::TheoryBitvector::newFixedLeftShiftExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04982">CVC3::TheoryBitvector::newFixedRightShiftExpr()</a>, <a class="el" href="theory_8cpp_source.html#l00647">newFunction()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04867">CVC3::TheoryBitvector::newSXExpr()</a>, <a class="el" href="theory_8cpp_source.html#l00790">newTypeExpr()</a>, <a class="el" href="theory_8cpp_source.html#l00569">newVar()</a>, <a class="el" href="theory__core_8h_source.html#l00181">CVC3::TheoryCore::CoreNotifyObj::notify()</a>, <a class="el" href="theory__core_8cpp_source.html#l03589">CVC3::TheoryCore::parseExpr()</a>, <a class="el" href="theory__uf_8cpp_source.html#l01015">CVC3::TheoryUF::parseExprOp()</a>, <a class="el" href="theory__simulate_8cpp_source.html#l00131">CVC3::TheorySimulate::parseExprOp()</a>, <a class="el" href="theory__quant_8cpp_source.html#l09009">CVC3::TheoryQuant::parseExprOp()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00731">CVC3::TheoryDatatype::parseExprOp()</a>, <a class="el" href="theory__core_8cpp_source.html#l01724">CVC3::TheoryCore::parseExprOp()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04087">CVC3::TheoryBitvector::parseExprOp()</a>, <a class="el" href="theory__array_8cpp_source.html#l01193">CVC3::TheoryArray::parseExprOp()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03833">CVC3::TheoryArithOld::parseExprOp()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l02040">CVC3::TheoryArithNew::parseExprOp()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02855">CVC3::TheoryArith3::parseExprOp()</a>, <a class="el" href="theory__quant_8cpp_source.html#l01822">CVC3::CompleteInstPreProcessor::plusOne()</a>, <a class="el" href="expr__transform_8cpp_source.html#l00079">CVC3::ExprTransform::preprocess()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00700">CVC3::TheoryUF::print()</a>, <a class="el" href="theory__quant_8cpp_source.html#l08729">CVC3::TheoryQuant::print()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00639">CVC3::TheoryDatatype::print()</a>, <a class="el" href="theory__core_8cpp_source.html#l02055">CVC3::TheoryCore::print()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00657">CVC3::TheoryUF::printSmtLibShared()</a>, <a class="el" href="theory__core_8cpp_source.html#l01915">CVC3::TheoryCore::printSmtLibShared()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05609">CVC3::BitvectorTheoremProducer::processExtract()</a>, <a class="el" href="theory__quant_8cpp_source.html#l01249">CVC3::CompleteInstPreProcessor::pullVarOut()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00300">CVC3::TheoryBitvector::rat()</a>, <a class="el" href="theory__arith_8h_source.html#l00156">CVC3::TheoryArith::rat()</a>, <a class="el" href="theory__quant_8cpp_source.html#l01499">CVC3::CompleteInstPreProcessor::recInstMacros()</a>, <a class="el" href="theory__records_8cpp_source.html#l00961">CVC3::TheoryRecords::recordExpr()</a>, <a class="el" href="theory__records_8cpp_source.html#l01004">CVC3::TheoryRecords::recordSelect()</a>, <a class="el" href="theory__records_8cpp_source.html#l00988">CVC3::TheoryRecords::recordType()</a>, <a class="el" href="theory__records_8cpp_source.html#l01010">CVC3::TheoryRecords::recordUpdate()</a>, <a class="el" href="theory__quant_8cpp_source.html#l01763">CVC3::CompleteInstPreProcessor::recRewriteNot()</a>, <a class="el" href="theory__quant_8cpp_source.html#l01693">CVC3::CompleteInstPreProcessor::recSkolemize()</a>, <a class="el" href="theory_8cpp_source.html#l00177">registerKinds()</a>, <a class="el" href="theory__quant_8cpp_source.html#l01462">CVC3::CompleteInstPreProcessor::simplifyEq()</a>, <a class="el" href="expr__transform_8cpp_source.html#l00476">CVC3::ExprTransform::simplifyWithCare()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06713">CVC3::BitvectorTheoremProducer::solveExtractOverlap()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l01809">CVC3::TheoryArith3::TheoryArith3()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01055">CVC3::TheoryArithNew::TheoryArithNew()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l02227">CVC3::TheoryArithOld::TheoryArithOld()</a>, <a class="el" href="theory__array_8cpp_source.html#l00042">CVC3::TheoryArray::TheoryArray()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l01708">CVC3::TheoryBitvector::TheoryBitvector()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00041">CVC3::TheoryDatatype::TheoryDatatype()</a>, <a class="el" href="theory_8cpp_source.html#l00252">theoryOf()</a>, <a class="el" href="theory__quant_8cpp_source.html#l00140">CVC3::TheoryQuant::TheoryQuant()</a>, <a class="el" href="theory__records_8cpp_source.html#l00096">CVC3::TheoryRecords::TheoryRecords()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00042">CVC3::TheoryUF::TheoryUF()</a>, <a class="el" href="theory__uf_8cpp_source.html#l01134">CVC3::TheoryUF::transClosureExpr()</a>, <a class="el" href="theory__records_8cpp_source.html#l01058">CVC3::TheoryRecords::tupleExpr()</a>, <a class="el" href="theory__records_8cpp_source.html#l01080">CVC3::TheoryRecords::tupleSelect()</a>, <a class="el" href="theory__records_8cpp_source.html#l01064">CVC3::TheoryRecords::tupleType()</a>, <a class="el" href="theory__records_8cpp_source.html#l01086">CVC3::TheoryRecords::tupleUpdate()</a>, <a class="el" href="theory_8cpp_source.html#l00190">unregisterKinds()</a>, <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00267">CVC3::TheoryDatatypeLazy::update()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00359">CVC3::TheoryDatatype::update()</a>, <a class="el" href="theory__array_8cpp_source.html#l00550">CVC3::TheoryArray::update()</a>, and <a class="el" href="theory_8cpp_source.html#l00473">updateCC()</a>.</p>

</div>
</div>
<a class="anchor" id="a90684d2a97738341c00f8f9c99af7b66"></a><!-- doxytag: member="CVC3::Theory::theoryCore" ref="a90684d2a97738341c00f8f9c99af7b66" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1TheoryCore.html">TheoryCore</a>* CVC3::Theory::theoryCore </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get a pointer to theoryCore. </p>

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

<p>References <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>.</p>

<p>Referenced by <a class="el" href="theory__quant_8cpp_source.html#l03813">CVC3::TheoryQuant::add_parent()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00079">CVC3::TheoryUF::assertFact()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l01861">CVC3::TheoryBitvector::assertFact()</a>, <a class="el" href="theory__array_8cpp_source.html#l00106">CVC3::TheoryArray::assertFact()</a>, <a class="el" href="theory__quant_8cpp_source.html#l07647">CVC3::TheoryQuant::checkSat()</a>, <a class="el" href="theory__quant_8cpp_source.html#l04210">CVC3::TheoryQuant::combineOldNewTrigs()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05570">CVC3::TheoryBitvector::computeTCC()</a>, <a class="el" href="theory__quant_8cpp_source.html#l00343">CVC3::TheoryQuant::debug()</a>, <a class="el" href="theory__quant_8cpp_source.html#l00633">CVC3::TheoryQuant::enqueueInst()</a>, <a class="el" href="theory__quant_8cpp_source.html#l00274">CVC3::TheoryQuant::getExprScore()</a>, <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00090">CVC3::TheoryDatatypeLazy::initializeLabels()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00112">CVC3::TheoryDatatype::initializeLabels()</a>, <a class="el" href="theory__quant_8cpp_source.html#l08537">CVC3::TheoryQuant::mapTermsByType()</a>, <a class="el" href="theory__quant_8cpp_source.html#l08385">CVC3::TheoryQuant::naiveCheckSat()</a>, <a class="el" href="theory__uf_8cpp_source.html#l01015">CVC3::TheoryUF::parseExprOp()</a>, <a class="el" href="theory__quant_8cpp_source.html#l09009">CVC3::TheoryQuant::parseExprOp()</a>, <a class="el" href="theory__array_8cpp_source.html#l01072">CVC3::TheoryArray::print()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00657">CVC3::TheoryUF::printSmtLibShared()</a>, <a class="el" href="theory__quant_8cpp_source.html#l07008">CVC3::TheoryQuant::pushBackList()</a>, <a class="el" href="theory__quant_8cpp_source.html#l07018">CVC3::TheoryQuant::pushForwList()</a>, <a class="el" href="theory__quant_8cpp_source.html#l08565">CVC3::TheoryQuant::recursiveMap()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03076">CVC3::TheoryArithOld::rewrite()</a>, <a class="el" href="theory__quant_8cpp_source.html#l08109">CVC3::TheoryQuant::saveContext()</a>, <a class="el" href="theory__records_8cpp_source.html#l00508">CVC3::TheoryRecords::setup()</a>, <a class="el" href="theory__array_8cpp_source.html#l00490">CVC3::TheoryArray::setup()</a>, <a class="el" href="theory__quant_8cpp_source.html#l02917">CVC3::TheoryQuant::setupTriggers()</a>, <a class="el" href="theory__quant_8cpp_source.html#l08119">CVC3::TheoryQuant::synCheckSat()</a>, <a class="el" href="theory__quant_8cpp_source.html#l07258">CVC3::TheoryQuant::synNewInst()</a>, <a class="el" href="theory__quant_8cpp_source.html#l02343">CVC3::TheoryQuant::theoryPreprocess()</a>, and <a class="el" href="theory__quant_8cpp_source.html#l00140">CVC3::TheoryQuant::TheoryQuant()</a>.</p>

</div>
</div>
<a class="anchor" id="a50802b148e8192178cf790e6c45ddff3"></a><!-- doxytag: member="CVC3::Theory::getCommonRules" ref="a50802b148e8192178cf790e6c45ddff3" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1CommonProofRules.html">CommonProofRules</a>* CVC3::Theory::getCommonRules </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get a pointer to common proof rules. </p>

<p>Definition at line <a class="el" href="theory_8h_source.html#l00096">96</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00069">d_commonRules</a>.</p>

<p>Referenced by <a class="el" href="theory__bitvector_8cpp_source.html#l01861">CVC3::TheoryBitvector::assertFact()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02020">CVC3::TheoryArith3::assertFact()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03621">CVC3::TheoryArithOld::checkAssertEqInvariant()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02643">CVC3::TheoryArith3::checkAssertEqInvariant()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02574">CVC3::TheoryBitvector::checkSat()</a>, <a class="el" href="theory__quant_8cpp_source.html#l01972">CVC3::CompleteInstPreProcessor::collectIndex()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02512">CVC3::TheoryBitvector::comparebv()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05570">CVC3::TheoryBitvector::computeTCC()</a>, <a class="el" href="expr__transform_8cpp_source.html#l00034">CVC3::ExprTransform::ExprTransform()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03273">CVC3::TheoryArithNew::getVariableIntroThm()</a>, <a class="el" href="theory__quant_8cpp_source.html#l01373">CVC3::CompleteInstPreProcessor::isMacro()</a>, <a class="el" href="theory__quant_8cpp_source.html#l01693">CVC3::CompleteInstPreProcessor::recSkolemize()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l04662">CVC3::TheoryArithOld::registerAtom()</a>, <a class="el" href="theory__array_8cpp_source.html#l00368">CVC3::TheoryArray::rewrite()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03076">CVC3::TheoryArithOld::rewrite()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02387">CVC3::TheoryArith3::rewrite()</a>, <a class="el" href="theory__quant_8cpp_source.html#l01731">CVC3::CompleteInstPreProcessor::simplifyQuant()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02818">CVC3::TheoryBitvector::solve()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l02227">CVC3::TheoryArithOld::TheoryArithOld()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00257">CVC3::TheoryUF::update()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03390">CVC3::TheoryArithOld::update()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01769">CVC3::TheoryArithNew::update()</a>, and <a class="el" href="theory__arith3_8cpp_source.html#l02534">CVC3::TheoryArith3::update()</a>.</p>

</div>
</div>
<a class="anchor" id="a4270eb556496ee10472b478b5792751c"></a><!-- doxytag: member="CVC3::Theory::getName" ref="a4270eb556496ee10472b478b5792751c" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const std::string&amp; CVC3::Theory::getName </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the name of the theory (for debugging purposes) </p>

<p>Definition at line <a class="el" href="theory_8h_source.html#l00099">99</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00070">d_name</a>.</p>

<p>Referenced by <a class="el" href="theory_8cpp_source.html#l00148">addSplitter()</a>, <a class="el" href="theory_8cpp_source.html#l00162">assignValue()</a>, <a class="el" href="theory__core_8cpp_source.html#l03817">CVC3::TheoryCore::buildModel()</a>, <a class="el" href="theory__core_8cpp_source.html#l03954">CVC3::TheoryCore::collectModelValues()</a>, <a class="el" href="theory_8cpp_source.html#l00527">getModelTerm()</a>, <a class="el" href="theory_8cpp_source.html#l00367">getTCC()</a>, <a class="el" href="theory__core_8cpp_source.html#l00098">CVC3::operator&lt;&lt;()</a>, and <a class="el" href="theory__core_8cpp_source.html#l03429">CVC3::TheoryCore::refineCounterExample()</a>.</p>

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

<p>Set the "used" flag on this theory (for smtlib translator) </p>

<p>Definition at line <a class="el" href="theory_8h_source.html#l00102">102</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00079">d_theoryUsed</a>.</p>

<p>Referenced by <a class="el" href="translator_8cpp_source.html#l01063">CVC3::Translator::processType()</a>.</p>

</div>
</div>
<a class="anchor" id="a5dad9fa356483782703a1ef1024d2a74"></a><!-- doxytag: member="CVC3::Theory::theoryUsed" ref="a5dad9fa356483782703a1ef1024d2a74" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool CVC3::Theory::theoryUsed </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get whether theory has been used (for smtlib translator) </p>

<p>Definition at line <a class="el" href="theory_8h_source.html#l00104">104</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00079">d_theoryUsed</a>.</p>

<p>Referenced by <a class="el" href="translator_8cpp_source.html#l01145">CVC3::Translator::finish()</a>.</p>

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

<p>Check if the current context is inconsistent. </p>

<p>Reimplemented in <a class="el" href="classCVC3_1_1TheoryCore.html#a289340e4457a79f1101f37c3a07a49ed">CVC3::TheoryCore</a>.</p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00097">97</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, and <a class="el" href="theory__core_8h_source.html#l00422">CVC3::TheoryCore::inconsistent()</a>.</p>

<p>Referenced by <a class="el" href="theory__arith__old_8cpp_source.html#l02831">CVC3::TheoryArithOld::assignVariables()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01399">CVC3::TheoryArithNew::assignVariables()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02248">CVC3::TheoryArith3::assignVariables()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l02606">CVC3::TheoryArithOld::checkSat()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02124">CVC3::TheoryArith3::checkSat()</a>, <a class="el" href="theory__records_8cpp_source.html#l00561">CVC3::TheoryRecords::update()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02695">CVC3::TheoryBitvector::update()</a>, <a class="el" href="theory__array_8cpp_source.html#l00550">CVC3::TheoryArray::update()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03390">CVC3::TheoryArithOld::update()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01769">CVC3::TheoryArithNew::update()</a>, and <a class="el" href="theory__arith3_8cpp_source.html#l02534">CVC3::TheoryArith3::update()</a>.</p>

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

<p>Make the context inconsistent; The formula proved by e must FALSE. </p>

<p>Reimplemented in <a class="el" href="classCVC3_1_1TheoryCore.html#a4a87431f344c128dc58d5c2bd9206784">CVC3::TheoryCore</a>.</p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00103">103</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, <a class="el" href="debug_8h_source.html#l00406">IF_DEBUG</a>, and <a class="el" href="theory__core_8cpp_source.html#l04245">CVC3::TheoryCore::setInconsistent()</a>.</p>

<p>Referenced by <a class="el" href="theory__bitvector_8cpp_source.html#l01861">CVC3::TheoryBitvector::assertFact()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l02481">CVC3::TheoryArithOld::assertFact()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03138">CVC3::TheoryArithNew::assertFact()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02020">CVC3::TheoryArith3::assertFact()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l02830">CVC3::TheoryArithNew::checkSat()</a>, <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00123">CVC3::TheoryDatatypeLazy::mergeLabels()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00144">CVC3::TheoryDatatype::mergeLabels()</a>, and <a class="el" href="theory__arith__old_8cpp_source.html#l03390">CVC3::TheoryArithOld::update()</a>.</p>

</div>
</div>
<a class="anchor" id="a08cc815e21d2972f54f8c1e70ce8ab51"></a><!-- doxytag: member="CVC3::Theory::setIncomplete" ref="a08cc815e21d2972f54f8c1e70ce8ab51" args="(const std::string &amp;reason)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Theory::setIncomplete </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>reason</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Mark the current decision branch as possibly incomplete. </p>
<p>This should be set when a decision procedure uses an incomplete algorithm, and cannot guarantee satisfiability after the final <a class="el" href="group__Theory__API.html#gae0bb3d506dad8d69da546777cae27228" title="Check for satisfiability in the theory.">checkSat()</a> call with full effort. An example would be instantiation of universal quantifiers.</p>
<p>A decision procedure can provide a reason for incompleteness, which will be reported back to the user. </p>

<p>Reimplemented in <a class="el" href="classCVC3_1_1TheoryCore.html#a1589ba9f082079a4dce4c9125befcf06">CVC3::TheoryCore</a>.</p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00112">112</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, and <a class="el" href="theory__core_8cpp_source.html#l04180">CVC3::TheoryCore::setIncomplete()</a>.</p>

<p>Referenced by <a class="el" href="theory__arith__old_8cpp_source.html#l02481">CVC3::TheoryArithOld::assertFact()</a>, <a class="el" href="theory__quant_8cpp_source.html#l08385">CVC3::TheoryQuant::naiveCheckSat()</a>, and <a class="el" href="theory__quant_8cpp_source.html#l08119">CVC3::TheoryQuant::synCheckSat()</a>.</p>

</div>
</div>
<a class="anchor" id="a52158688456f8605b064fbbf7a46039c"></a><!-- doxytag: member="CVC3::Theory::simplify" ref="a52158688456f8605b064fbbf7a46039c" 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> Theory::simplify </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>Simplify a term e and return a <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a>(e==e') </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classCVC3_1_1Theory.html#a9d441225b287419426c80a0374d6c6cb" title="Simplify a term e w.r.t. the current context.">simplifyExpr()</a> </dd></dl>

<p>Reimplemented in <a class="el" href="classCVC3_1_1TheoryCore.html#a8a66da5ca687474a3a725448a3be8c41">CVC3::TheoryCore</a>.</p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00119">119</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, and <a class="el" href="theory__core_8cpp_source.html#l00184">CVC3::TheoryCore::simplify()</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02020">CVC3::TheoryArith3::assertFact()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00156">CVC3::TheoryUF::checkSat()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02574">CVC3::TheoryBitvector::checkSat()</a>, <a class="el" href="theory__array_8cpp_source.html#l00154">CVC3::TheoryArray::checkSat()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02512">CVC3::TheoryBitvector::comparebv()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l03345">CVC3::TheoryBitvector::computeModel()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l02905">CVC3::TheoryArithOld::computeModel()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01456">CVC3::TheoryArithNew::computeModel()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02305">CVC3::TheoryArith3::computeModel()</a>, <a class="el" href="theory__quant_8cpp_source.html#l00633">CVC3::TheoryQuant::enqueueInst()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l04613">CVC3::TheoryArithOld::inequalityToFind()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00211">CVC3::TheoryUF::rewrite()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00320">CVC3::TheoryDatatype::rewrite()</a>, <a class="el" href="theory__array_8cpp_source.html#l00368">CVC3::TheoryArray::rewrite()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03076">CVC3::TheoryArithOld::rewrite()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01570">CVC3::TheoryArithNew::rewrite()</a>, <a class="el" href="theory_8h_source.html#l00430">simplifyExpr()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02695">CVC3::TheoryBitvector::update()</a>, <a class="el" href="theory__array_8cpp_source.html#l00550">CVC3::TheoryArray::update()</a>, and <a class="el" href="theory__arith__old_8cpp_source.html#l03390">CVC3::TheoryArithOld::update()</a>.</p>

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

<p>Simplify a term e w.r.t. the current context. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classCVC3_1_1Theory.html#a52158688456f8605b064fbbf7a46039c" title="Simplify a term e and return a Theorem(e==e&#39;)">simplify</a> </dd></dl>

<p>Definition at line <a class="el" href="theory_8h_source.html#l00430">430</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

<p>References <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, and <a class="el" href="theory_8cpp_source.html#l00119">simplify()</a>.</p>

<p>Referenced by <a class="el" href="theory__quant_8cpp_source.html#l01817">CVC3::CompleteInstPreProcessor::addIndex()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02020">CVC3::TheoryArith3::assertFact()</a>, <a class="el" href="theory__quant_8cpp_source.html#l07647">CVC3::TheoryQuant::checkSat()</a>, <a class="el" href="theory__quant_8cpp_source.html#l00633">CVC3::TheoryQuant::enqueueInst()</a>, <a class="el" href="search__fast_8cpp_source.html#l00438">CVC3::SearchEngineFast::findSplitter()</a>, <a class="el" href="theory__quant_8cpp_source.html#l03950">CVC3::TheoryQuant::multMatchChild()</a>, <a class="el" href="theory_8cpp_source.html#l00816">newSubtypeExpr()</a>, <a class="el" href="theory__quant_8cpp_source.html#l04377">CVC3::TheoryQuant::newTopMatchNoSig()</a>, <a class="el" href="theory__quant_8cpp_source.html#l04671">CVC3::TheoryQuant::newTopMatchSig()</a>, <a class="el" href="theory__quant_8cpp_source.html#l03700">CVC3::TheoryQuant::recGoodSemMatch()</a>, <a class="el" href="theory__quant_8cpp_source.html#l05587">CVC3::TheoryQuant::recMultMatch()</a>, <a class="el" href="theory__quant_8cpp_source.html#l05310">CVC3::TheoryQuant::recMultMatchDebug()</a>, <a class="el" href="theory__quant_8cpp_source.html#l05478">CVC3::TheoryQuant::recMultMatchOldWay()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l02726">CVC3::TheoryArithOld::refineCounterExample()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01298">CVC3::TheoryArithNew::refineCounterExample()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02147">CVC3::TheoryArith3::refineCounterExample()</a>, <a class="el" href="theory__array_8cpp_source.html#l00490">CVC3::TheoryArray::setup()</a>, <a class="el" href="theory__quant_8cpp_source.html#l00545">CVC3::TheoryQuant::simplifyExprMap()</a>, <a class="el" href="theory__quant_8cpp_source.html#l07248">CVC3::TheoryQuant::simpRAWList()</a>, and <a class="el" href="theory__quant_8cpp_source.html#l07258">CVC3::TheoryQuant::synNewInst()</a>.</p>

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

<p>Submit a derived fact to the core from a decision procedure. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">e</td><td>is the <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> for the new fact </td></tr>
  </table>
  </dd>
</dl>

<p>Reimplemented in <a class="el" href="classCVC3_1_1TheoryCore.html#a479141bc26a125b758a2acc6420274f9">CVC3::TheoryCore</a>.</p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00128">128</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, and <a class="el" href="theory__core_8cpp_source.html#l04213">CVC3::TheoryCore::enqueueFact()</a>.</p>

<p>Referenced by <a class="el" href="theory__uf_8cpp_source.html#l00079">CVC3::TheoryUF::assertFact()</a>, <a class="el" href="theory__records_8cpp_source.html#l00129">CVC3::TheoryRecords::assertFact()</a>, <a class="el" href="theory__quant_8cpp_source.html#l03502">CVC3::TheoryQuant::assertFact()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00201">CVC3::TheoryDatatype::assertFact()</a>, <a class="el" href="theory__array_8cpp_source.html#l00106">CVC3::TheoryArray::assertFact()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l02481">CVC3::TheoryArithOld::assertFact()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02020">CVC3::TheoryArith3::assertFact()</a>, <a class="el" href="theory_8h_source.html#l00350">assertTypePred()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00156">CVC3::TheoryUF::checkSat()</a>, <a class="el" href="theory__quant_8cpp_source.html#l07647">CVC3::TheoryQuant::checkSat()</a>, <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00178">CVC3::TheoryDatatypeLazy::checkSat()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00260">CVC3::TheoryDatatype::checkSat()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02574">CVC3::TheoryBitvector::checkSat()</a>, <a class="el" href="theory__array_8cpp_source.html#l00154">CVC3::TheoryArray::checkSat()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l02606">CVC3::TheoryArithOld::checkSat()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02124">CVC3::TheoryArith3::checkSat()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l02868">CVC3::TheoryArithNew::checkSatInteger()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02512">CVC3::TheoryBitvector::comparebv()</a>, <a class="el" href="theory__quant_8cpp_source.html#l00633">CVC3::TheoryQuant::enqueueInst()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00075">CVC3::TheoryDatatype::instantiate()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01168">CVC3::TheoryArithNew::processFiniteInterval()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l01917">CVC3::TheoryArith3::processFiniteInterval()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l04000">CVC3::TheoryArithNew::propagateTheory()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l04662">CVC3::TheoryArithOld::registerAtom()</a>, <a class="el" href="theory__quant_8cpp_source.html#l00998">CVC3::TheoryQuant::sendInstNew()</a>, <a class="el" href="theory__records_8cpp_source.html#l00508">CVC3::TheoryRecords::setup()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00339">CVC3::TheoryDatatype::setup()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02818">CVC3::TheoryBitvector::solve()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l05039">CVC3::TheoryArithOld::tryPropagate()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00257">CVC3::TheoryUF::update()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00359">CVC3::TheoryDatatype::update()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02695">CVC3::TheoryBitvector::update()</a>, <a class="el" href="theory__array_8cpp_source.html#l00550">CVC3::TheoryArray::update()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03390">CVC3::TheoryArithOld::update()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01769">CVC3::TheoryArithNew::update()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02534">CVC3::TheoryArith3::update()</a>, and <a class="el" href="theory_8cpp_source.html#l00473">updateCC()</a>.</p>

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

<p>Check if the current context is inconsistent. </p>

<p>Reimplemented in <a class="el" href="classCVC3_1_1TheoryCore.html#a09a7b1c4878f4ce9150fa89d304ca172">CVC3::TheoryCore</a>.</p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00134">134</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, and <a class="el" href="theory__core_8cpp_source.html#l00588">CVC3::TheoryCore::enqueueSE()</a>.</p>

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

<p>Handle new equalities (usually asserted through addFact) </p>
<p>INVARIANT: the <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> 'e' is an equality e1==e2, where e2 is i-leaf simplified in the current context, or a conjunction of such equalities. </p>

<p>Reimplemented in <a class="el" href="classCVC3_1_1TheoryCore.html#aaab0bd52237688848681cdb62c74f14c">CVC3::TheoryCore</a>.</p>

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

<p>References <a class="el" href="theory__core_8cpp_source.html#l04093">CVC3::TheoryCore::assertEqualities()</a>, and <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>.</p>

<p>Referenced by <a class="el" href="theory__array_8cpp_source.html#l00154">CVC3::TheoryArray::checkSat()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02512">CVC3::TheoryBitvector::comparebv()</a>, <a class="el" href="theory__records_8cpp_source.html#l00508">CVC3::TheoryRecords::setup()</a>, <a class="el" href="theory__records_8cpp_source.html#l00561">CVC3::TheoryRecords::update()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02695">CVC3::TheoryBitvector::update()</a>, <a class="el" href="theory__array_8cpp_source.html#l00550">CVC3::TheoryArray::update()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03390">CVC3::TheoryArithOld::update()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01769">CVC3::TheoryArithNew::update()</a>, and <a class="el" href="theory__arith3_8cpp_source.html#l02534">CVC3::TheoryArith3::update()</a>.</p>

</div>
</div>
<a class="anchor" id="abd5a64ee867dda0c216a04e9fc7fbd6c"></a><!-- doxytag: member="CVC3::Theory::parseExpr" ref="abd5a64ee867dda0c216a04e9fc7fbd6c" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> Theory::parseExpr </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>Parse the generic expression. </p>
<p>This method should be used in <a class="el" href="group__Theory__API.html#ga378bef078620e67fc80f36fa79320d91" title="Theory-specific parsing implemented by the DP.">parseExprOp()</a> for recursive calls to subexpressions, and is the method called by the command processor. </p>

<p>Reimplemented in <a class="el" href="classCVC3_1_1TheoryCore.html#a6f367b1f413d7f1275e72381724ca148">CVC3::TheoryCore</a>.</p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00519">519</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, and <a class="el" href="theory__core_8cpp_source.html#l03589">CVC3::TheoryCore::parseExpr()</a>.</p>

<p>Referenced by <a class="el" href="theory__uf_8cpp_source.html#l01015">CVC3::TheoryUF::parseExprOp()</a>, <a class="el" href="theory__simulate_8cpp_source.html#l00131">CVC3::TheorySimulate::parseExprOp()</a>, <a class="el" href="theory__records_8cpp_source.html#l00880">CVC3::TheoryRecords::parseExprOp()</a>, <a class="el" href="theory__quant_8cpp_source.html#l09009">CVC3::TheoryQuant::parseExprOp()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00731">CVC3::TheoryDatatype::parseExprOp()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04087">CVC3::TheoryBitvector::parseExprOp()</a>, <a class="el" href="theory__array_8cpp_source.html#l01193">CVC3::TheoryArray::parseExprOp()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03833">CVC3::TheoryArithOld::parseExprOp()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l02040">CVC3::TheoryArithNew::parseExprOp()</a>, and <a class="el" href="theory__arith3_8cpp_source.html#l02855">CVC3::TheoryArith3::parseExprOp()</a>.</p>

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

<p>Assigns t a concrete value val. Used in model generation. </p>

<p>Reimplemented in <a class="el" href="classCVC3_1_1TheoryCore.html#a584ebdaddb7e1a51b1740277a0b7098d">CVC3::TheoryCore</a>.</p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00162">162</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory__core_8cpp_source.html#l03713">CVC3::TheoryCore::assignValue()</a>, <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, <a class="el" href="theory_8h_source.html#l00099">getName()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p>

<p>Referenced by <a class="el" href="theory__arith__old_8cpp_source.html#l02831">CVC3::TheoryArithOld::assignVariables()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01399">CVC3::TheoryArithNew::assignVariables()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02248">CVC3::TheoryArith3::assignVariables()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00509">CVC3::TheoryUF::computeModel()</a>, <a class="el" href="theory__records_8cpp_source.html#l00281">CVC3::TheoryRecords::computeModel()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l03345">CVC3::TheoryBitvector::computeModel()</a>, <a class="el" href="theory__array_8cpp_source.html#l00939">CVC3::TheoryArray::computeModel()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l02905">CVC3::TheoryArithOld::computeModel()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01456">CVC3::TheoryArithNew::computeModel()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02305">CVC3::TheoryArith3::computeModel()</a>, and <a class="el" href="theory_8h_source.html#l00334">computeModel()</a>.</p>

</div>
</div>
<a class="anchor" id="a4a9cda0b7c7b2fd0874e7d7b9819a68f"></a><!-- doxytag: member="CVC3::Theory::assignValue" ref="a4a9cda0b7c7b2fd0874e7d7b9819a68f" args="(const Theorem &amp;thm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Theory::assignValue </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>Record a derived assignment to a variable (LHS). </p>

<p>Reimplemented in <a class="el" href="classCVC3_1_1TheoryCore.html#a1a5505333dc3aea609553ab72f509205">CVC3::TheoryCore</a>.</p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00170">170</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory__core_8cpp_source.html#l03713">CVC3::TheoryCore::assignValue()</a>, <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, <a class="el" href="theory_8h_source.html#l00099">getName()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p>

</div>
</div>
<a class="anchor" id="a41499be2b31d82e7bec5efc880126510"></a><!-- doxytag: member="CVC3::Theory::registerKinds" ref="a41499be2b31d82e7bec5efc880126510" args="(Theory *theory, std::vector&lt; int &gt; &amp;kinds)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Theory::registerKinds </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classCVC3_1_1Theory.html">Theory</a> *&#160;</td>
          <td class="paramname"><em>theory</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>kinds</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Register new kinds with the given theory. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00177">177</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="hash__map_8h_source.html#l00217">Hash::hash_map&lt; _Key, _Data, _HashFcn, _EqualKey &gt;::count()</a>, <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, <a class="el" href="theory__core_8h_source.html#l00128">CVC3::TheoryCore::d_theoryMap</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theory_8h_source.html#l00090">getEM()</a>, <a class="el" href="expr__manager_8cpp_source.html#l00405">CVC3::ExprManager::getKindName()</a>, and <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>.</p>

<p>Referenced by <a class="el" href="theory_8cpp_source.html#l00203">registerTheory()</a>.</p>

</div>
</div>
<a class="anchor" id="aafdee81857fde584632759c78ed821f5"></a><!-- doxytag: member="CVC3::Theory::unregisterKinds" ref="aafdee81857fde584632759c78ed821f5" args="(Theory *theory, std::vector&lt; int &gt; &amp;kinds)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Theory::unregisterKinds </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classCVC3_1_1Theory.html">Theory</a> *&#160;</td>
          <td class="paramname"><em>theory</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>kinds</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Unregister kinds for a theory. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00190">190</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, <a class="el" href="theory__core_8h_source.html#l00128">CVC3::TheoryCore::d_theoryMap</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="hash__map_8h_source.html#l00197">Hash::hash_map&lt; _Key, _Data, _HashFcn, _EqualKey &gt;::erase()</a>, <a class="el" href="theory_8h_source.html#l00090">getEM()</a>, and <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>.</p>

<p>Referenced by <a class="el" href="theory_8cpp_source.html#l00224">unregisterTheory()</a>.</p>

</div>
</div>
<a class="anchor" id="a97a6f8e09f71513da969fa7847346c6f"></a><!-- doxytag: member="CVC3::Theory::registerTheory" ref="a97a6f8e09f71513da969fa7847346c6f" args="(Theory *theory, std::vector&lt; int &gt; &amp;kinds, bool hasSolver=false)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Theory::registerTheory </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classCVC3_1_1Theory.html">Theory</a> *&#160;</td>
          <td class="paramname"><em>theory</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>kinds</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>hasSolver</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Register a new theory. </p>

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

<p>References <a class="el" href="theory__core_8h_source.html#l00131">CVC3::TheoryCore::d_solver</a>, <a class="el" href="theory__core_8h_source.html#l00125">CVC3::TheoryCore::d_theories</a>, <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, and <a class="el" href="theory_8cpp_source.html#l00177">registerKinds()</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l01809">CVC3::TheoryArith3::TheoryArith3()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01055">CVC3::TheoryArithNew::TheoryArithNew()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l02227">CVC3::TheoryArithOld::TheoryArithOld()</a>, <a class="el" href="theory__array_8cpp_source.html#l00042">CVC3::TheoryArray::TheoryArray()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l01708">CVC3::TheoryBitvector::TheoryBitvector()</a>, <a class="el" href="theory__core_8cpp_source.html#l00698">CVC3::TheoryCore::TheoryCore()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00041">CVC3::TheoryDatatype::TheoryDatatype()</a>, <a class="el" href="theory__quant_8cpp_source.html#l00140">CVC3::TheoryQuant::TheoryQuant()</a>, <a class="el" href="theory__records_8cpp_source.html#l00096">CVC3::TheoryRecords::TheoryRecords()</a>, <a class="el" href="theory__simulate_8cpp_source.html#l00035">CVC3::TheorySimulate::TheorySimulate()</a>, and <a class="el" href="theory__uf_8cpp_source.html#l00042">CVC3::TheoryUF::TheoryUF()</a>.</p>

</div>
</div>
<a class="anchor" id="a6bdcdfdf6d658b1b1b7c548ea4782e6e"></a><!-- doxytag: member="CVC3::Theory::unregisterTheory" ref="a6bdcdfdf6d658b1b1b7c548ea4782e6e" args="(Theory *theory, std::vector&lt; int &gt; &amp;kinds, bool hasSolver)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Theory::unregisterTheory </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classCVC3_1_1Theory.html">Theory</a> *&#160;</td>
          <td class="paramname"><em>theory</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>kinds</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>hasSolver</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Unregister a theory. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00224">224</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory__core_8h_source.html#l00131">CVC3::TheoryCore::d_solver</a>, <a class="el" href="theory__core_8h_source.html#l00125">CVC3::TheoryCore::d_theories</a>, <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, and <a class="el" href="theory_8cpp_source.html#l00190">unregisterKinds()</a>.</p>

<p>Referenced by <a class="el" href="theory__arith__old_8cpp_source.html#l02343">CVC3::TheoryArithOld::~TheoryArithOld()</a>.</p>

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

<p>Return the number of registered theories. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00241">241</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory__core_8h_source.html#l00125">CVC3::TheoryCore::d_theories</a>, and <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>.</p>

<p>Referenced by <a class="el" href="theory__core_8cpp_source.html#l03817">CVC3::TheoryCore::buildModel()</a>, and <a class="el" href="theory__core_8cpp_source.html#l03415">CVC3::TheoryCore::refineCounterExample()</a>.</p>

</div>
</div>
<a class="anchor" id="a8dc9b3350f948ce5b6112a4812819696"></a><!-- doxytag: member="CVC3::Theory::hasTheory" ref="a8dc9b3350f948ce5b6112a4812819696" args="(int kind)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool Theory::hasTheory </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>kind</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Test whether a kind maps to any theory. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00247">247</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="hash__map_8h_source.html#l00217">Hash::hash_map&lt; _Key, _Data, _HashFcn, _EqualKey &gt;::count()</a>, <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, and <a class="el" href="theory__core_8h_source.html#l00128">CVC3::TheoryCore::d_theoryMap</a>.</p>

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

</div>
</div>
<a class="anchor" id="a01fa8047ed1f649dc98831cb536187e4"></a><!-- doxytag: member="CVC3::Theory::theoryOf" ref="a01fa8047ed1f649dc98831cb536187e4" args="(int kind)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theory.html">Theory</a> * Theory::theoryOf </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>kind</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return the theory associated with a kind. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00252">252</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="hash__map_8h_source.html#l00217">Hash::hash_map&lt; _Key, _Data, _HashFcn, _EqualKey &gt;::count()</a>, <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, <a class="el" href="theory__core_8h_source.html#l00128">CVC3::TheoryCore::d_theoryMap</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theory_8h_source.html#l00090">getEM()</a>, and <a class="el" href="expr__manager_8cpp_source.html#l00405">CVC3::ExprManager::getKindName()</a>.</p>

<p>Referenced by <a class="el" href="theory__bitvector_8cpp_source.html#l01926">CVC3::TheoryBitvector::assertTypePred()</a>, <a class="el" href="theory__core_8cpp_source.html#l03817">CVC3::TheoryCore::buildModel()</a>, <a class="el" href="theory__core_8cpp_source.html#l01195">CVC3::TheoryCore::checkEquation()</a>, <a class="el" href="theory__core_8cpp_source.html#l03763">CVC3::TheoryCore::collectBasicVars()</a>, <a class="el" href="theory__core_8cpp_source.html#l03954">CVC3::TheoryCore::collectModelValues()</a>, <a class="el" href="theory__core_8cpp_source.html#l01650">CVC3::TheoryCore::computeTCC()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05570">CVC3::TheoryBitvector::computeTCC()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00417">CVC3::TheoryUF::computeType()</a>, <a class="el" href="theory__core_8cpp_source.html#l00074">CVC3::TypeComputerCore::computeType()</a>, <a class="el" href="theory__core_8cpp_source.html#l01704">CVC3::TheoryCore::computeTypePred()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00368">CVC3::TheoryUF::finiteTypeInfo()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00457">CVC3::TheoryDatatype::finiteTypeInfo()</a>, <a class="el" href="theory_8cpp_source.html#l00389">getBaseType()</a>, <a class="el" href="theory_8cpp_source.html#l00527">getModelTerm()</a>, <a class="el" href="theory_8cpp_source.html#l00367">getTCC()</a>, <a class="el" href="theory_8cpp_source.html#l00406">getTypePred()</a>, <a class="el" href="theory_8h_source.html#l00556">isLeaf()</a>, <a class="el" href="theory_8cpp_source.html#l00546">isLeafIn()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02291">CVC3::TheoryBitvector::isTermIn()</a>, <a class="el" href="theory__core_8cpp_source.html#l03589">CVC3::TheoryCore::parseExpr()</a>, <a class="el" href="translator_8cpp_source.html#l01063">CVC3::Translator::processType()</a>, <a class="el" href="theory__core_8cpp_source.html#l03541">CVC3::TheoryCore::registerAtom()</a>, <a class="el" href="search__impl__base_8h_source.html#l00200">CVC3::SearchImplBase::registerAtom()</a>, <a class="el" href="theory__core_8cpp_source.html#l00968">CVC3::TheoryCore::rewrite()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03076">CVC3::TheoryArithOld::rewrite()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01570">CVC3::TheoryArithNew::rewrite()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02387">CVC3::TheoryArith3::rewrite()</a>, <a class="el" href="theory__core_8cpp_source.html#l04029">CVC3::TheoryCore::rewriteLiteral()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00236">CVC3::TheoryUF::setup()</a>, <a class="el" href="theory__array_8cpp_source.html#l00490">CVC3::TheoryArray::setup()</a>, <a class="el" href="theory__core_8cpp_source.html#l04260">CVC3::TheoryCore::setupTerm()</a>, <a class="el" href="expr__transform_8cpp_source.html#l00476">CVC3::ExprTransform::simplifyWithCare()</a>, and <a class="el" href="theory__core_8cpp_source.html#l01248">CVC3::TheoryCore::solve()</a>.</p>

</div>
</div>
<a class="anchor" id="ad4fea3e52e80f6ea2fb1a1eaaa7163b8"></a><!-- doxytag: member="CVC3::Theory::theoryOf" ref="ad4fea3e52e80f6ea2fb1a1eaaa7163b8" args="(const Type &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theory.html">Theory</a> * Theory::theoryOf </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return the theory associated with a type. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00260">260</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="hash__map_8h_source.html#l00217">Hash::hash_map&lt; _Key, _Data, _HashFcn, _EqualKey &gt;::count()</a>, <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, <a class="el" href="theory__core_8h_source.html#l00128">CVC3::TheoryCore::d_theoryMap</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theory_8cpp_source.html#l00383">getBaseType()</a>, <a class="el" href="theory_8h_source.html#l00090">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>, and <a class="el" href="expr_8h_source.html#l01223">CVC3::Expr::isNull()</a>.</p>

</div>
</div>
<a class="anchor" id="a9ea78dba89246dda6c504c7af5201f1b"></a><!-- doxytag: member="CVC3::Theory::theoryOf" ref="a9ea78dba89246dda6c504c7af5201f1b" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theory.html">Theory</a> * Theory::theoryOf </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></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return the theory associated with an <a class="el" href="classCVC3_1_1Expr.html" title="Data structure of expressions in CVC3.">Expr</a>. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00271">271</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="hash__map_8h_source.html#l00217">Hash::hash_map&lt; _Key, _Data, _HashFcn, _EqualKey &gt;::count()</a>, <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, <a class="el" href="theory__core_8h_source.html#l00128">CVC3::TheoryCore::d_theoryMap</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theory_8cpp_source.html#l00383">getBaseType()</a>, <a class="el" href="theory_8h_source.html#l00090">getEM()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="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#l01014">CVC3::Expr::isApply()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="expr_8h_source.html#l00420">CVC3::Expr::isNot()</a>, <a class="el" href="expr_8h_source.html#l01223">CVC3::Expr::isNull()</a>, and <a class="el" href="expr_8h_source.html#l01005">CVC3::Expr::isVar()</a>.</p>

</div>
</div>
<a class="anchor" id="ac59f888b3b3f973580e061ffd803b6bb"></a><!-- doxytag: member="CVC3::Theory::find" ref="ac59f888b3b3f973580e061ffd803b6bb" 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> Theory::find </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></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return the theorem that e is equal to its find. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00310">310</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01237">CVC3::Expr::getFind()</a>, <a class="el" href="theorem_8cpp_source.html#l00240">CVC3::Theorem::getLHS()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="expr_8h_source.html#l01232">CVC3::Expr::hasFind()</a>, <a class="el" href="theorem_8h_source.html#l00171">CVC3::Theorem::isRefl()</a>, <a class="el" href="theory_8h_source.html#l00673">reflexivityRule()</a>, <a class="el" href="expr_8h_source.html#l01405">CVC3::Expr::setFind()</a>, and <a class="el" href="theory_8h_source.html#l00681">transitivityRule()</a>.</p>

<p>Referenced by <a class="el" href="theory__core_8cpp_source.html#l04093">CVC3::TheoryCore::assertEqualities()</a>, <a class="el" href="theory__core_8cpp_source.html#l03713">CVC3::TheoryCore::assignValue()</a>, <a class="el" href="theory__core_8cpp_source.html#l03817">CVC3::TheoryCore::buildModel()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00156">CVC3::TheoryUF::checkSat()</a>, <a class="el" href="theory__array_8cpp_source.html#l00154">CVC3::TheoryArray::checkSat()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l02606">CVC3::TheoryArithOld::checkSat()</a>, <a class="el" href="theory__core_8cpp_source.html#l03763">CVC3::TheoryCore::collectBasicVars()</a>, <a class="el" href="theory_8h_source.html#l00334">computeModel()</a>, <a class="el" href="theory__core_8cpp_source.html#l03449">CVC3::TheoryCore::computeModelBasic()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l05535">CVC3::TheoryArithOld::computeTermBounds()</a>, <a class="el" href="theory_8h_source.html#l00503">findExpr()</a>, <a class="el" href="theory_8cpp_source.html#l00327">findReduce()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02409">CVC3::TheoryBitvector::generalBitBlast()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03117">CVC3::TheoryArithNew::getBeta()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03082">CVC3::TheoryArithNew::getLowerBound()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03098">CVC3::TheoryArithNew::getLowerBoundThm()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03090">CVC3::TheoryArithNew::getUpperBound()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03107">CVC3::TheoryArithNew::getUpperBoundThm()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03273">CVC3::TheoryArithNew::getVariableIntroThm()</a>, <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00123">CVC3::TheoryDatatypeLazy::mergeLabels()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l04000">CVC3::TheoryArithNew::propagateTheory()</a>, <a class="el" href="theory__core_8cpp_source.html#l00968">CVC3::TheoryCore::rewrite()</a>, <a class="el" href="theory__records_8cpp_source.html#l00508">CVC3::TheoryRecords::setup()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02366">CVC3::TheoryBitvector::simplifyPendingEq()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03471">CVC3::TheoryArithNew::substAndCanonizeModTableaux()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03524">CVC3::TheoryArithNew::substAndCanonizeTableaux()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l05039">CVC3::TheoryArithOld::tryPropagate()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00257">CVC3::TheoryUF::update()</a>, <a class="el" href="theory__records_8cpp_source.html#l00561">CVC3::TheoryRecords::update()</a>, <a class="el" href="theory__core_8cpp_source.html#l01141">CVC3::TheoryCore::update()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02695">CVC3::TheoryBitvector::update()</a>, <a class="el" href="theory__array_8cpp_source.html#l00550">CVC3::TheoryArray::update()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03390">CVC3::TheoryArithOld::update()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01769">CVC3::TheoryArithNew::update()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02534">CVC3::TheoryArith3::update()</a>, and <a class="el" href="theory__bitvector_8cpp_source.html#l02791">CVC3::TheoryBitvector::updateSubterms()</a>.</p>

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

<p>Return the find as a reference: expr must have a find. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00295">295</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01237">CVC3::Expr::getFind()</a>, <a class="el" href="theorem_8cpp_source.html#l00240">CVC3::Theorem::getLHS()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="expr_8h_source.html#l01232">CVC3::Expr::hasFind()</a>, <a class="el" href="expr_8h_source.html#l01405">CVC3::Expr::setFind()</a>, and <a class="el" href="theory_8h_source.html#l00681">transitivityRule()</a>.</p>

<p>Referenced by <a class="el" href="theory__array_8cpp_source.html#l00550">CVC3::TheoryArray::update()</a>, and <a class="el" href="theory_8cpp_source.html#l00417">updateHelper()</a>.</p>

</div>
</div>
<a class="anchor" id="ab46ce7e7b6c9425a42df38ccf56642b6"></a><!-- doxytag: member="CVC3::Theory::findReduce" ref="ab46ce7e7b6c9425a42df38ccf56642b6" 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> Theory::findReduce </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></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return find-reduced version of e. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00327">327</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory_8h_source.html#l00069">d_commonRules</a>, <a class="el" href="theory_8cpp_source.html#l00310">find()</a>, <a class="el" href="expr_8h_source.html#l01232">CVC3::Expr::hasFind()</a>, <a class="el" href="theorem_8h_source.html#l00171">CVC3::Theorem::isRefl()</a>, <a class="el" href="theory_8h_source.html#l00673">reflexivityRule()</a>, and <a class="el" href="classCVC3_1_1CommonProofRules.html#a776c827bb6e3b889234429c49ae9ad6f">CVC3::CommonProofRules::substitutivityRule()</a>.</p>

</div>
</div>
<a class="anchor" id="ad0f5335bae1a358802ec5b958e77934e"></a><!-- doxytag: member="CVC3::Theory::findReduced" ref="ad0f5335bae1a358802ec5b958e77934e" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool Theory::findReduced </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></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return true iff e is find-reduced. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00357">357</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01237">CVC3::Expr::getFind()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, and <a class="el" href="expr_8h_source.html#l01232">CVC3::Expr::hasFind()</a>.</p>

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

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

<p>Return the find of e, or e if it has no find. </p>

<p>Definition at line <a class="el" href="theory_8h_source.html#l00503">503</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

<p>References <a class="el" href="theory_8cpp_source.html#l00310">find()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, and <a class="el" href="expr_8h_source.html#l01232">CVC3::Expr::hasFind()</a>.</p>

<p>Referenced by <a class="el" href="theory__arith__old_8cpp_source.html#l02831">CVC3::TheoryArithOld::assignVariables()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01399">CVC3::TheoryArithNew::assignVariables()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02248">CVC3::TheoryArith3::assignVariables()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l01237">CVC3::TheoryDatatype::canCollapse()</a>, <a class="el" href="theory__quant_8cpp_source.html#l07647">CVC3::TheoryQuant::checkSat()</a>, <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00178">CVC3::TheoryDatatypeLazy::checkSat()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00260">CVC3::TheoryDatatype::checkSat()</a>, <a class="el" href="theory__array_8cpp_source.html#l00154">CVC3::TheoryArray::checkSat()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l02905">CVC3::TheoryArithOld::computeModel()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01456">CVC3::TheoryArithNew::computeModel()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02305">CVC3::TheoryArith3::computeModel()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l02882">CVC3::TheoryArithOld::computeModelBasic()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01433">CVC3::TheoryArithNew::computeModelBasic()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02282">CVC3::TheoryArith3::computeModelBasic()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03575">CVC3::TheoryArithOld::computeModelTerm()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01833">CVC3::TheoryArithNew::computeModelTerm()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02597">CVC3::TheoryArith3::computeModelTerm()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l02759">CVC3::TheoryArithOld::findRationalBound()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01330">CVC3::TheoryArithNew::findRationalBound()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02179">CVC3::TheoryArith3::findRationalBound()</a>, <a class="el" href="decision__engine_8cpp_source.html#l00055">CVC3::DecisionEngine::findSplitterRec()</a>, <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00090">CVC3::TheoryDatatypeLazy::initializeLabels()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00112">CVC3::TheoryDatatype::initializeLabels()</a>, <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00050">CVC3::TheoryDatatypeLazy::instantiate()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00075">CVC3::TheoryDatatype::instantiate()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00144">CVC3::TheoryDatatype::mergeLabels()</a>, <a class="el" href="theory__quant_8cpp_source.html#l04377">CVC3::TheoryQuant::newTopMatchNoSig()</a>, <a class="el" href="theory__quant_8cpp_source.html#l04671">CVC3::TheoryQuant::newTopMatchSig()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l04000">CVC3::TheoryArithNew::propagateTheory()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l02726">CVC3::TheoryArithOld::refineCounterExample()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01298">CVC3::TheoryArithNew::refineCounterExample()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02147">CVC3::TheoryArith3::refineCounterExample()</a>, <a class="el" href="theory__array_8cpp_source.html#l00368">CVC3::TheoryArray::rewrite()</a>, <a class="el" href="theory__array_8cpp_source.html#l00490">CVC3::TheoryArray::setup()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00257">CVC3::TheoryUF::update()</a>, and <a class="el" href="theory__arith__old_8cpp_source.html#l03390">CVC3::TheoryArithOld::update()</a>.</p>

</div>
</div>
<a class="anchor" id="af38bdeb162a9ab9bd81ce40f598f608f"></a><!-- doxytag: member="CVC3::Theory::getTCC" ref="af38bdeb162a9ab9bd81ce40f598f608f" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> Theory::getTCC </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></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Compute the TCC of e, or the subtyping predicate, if e is a type. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00367">367</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory_8cpp_source.html#l00081">computeTCC()</a>, <a class="el" href="theory__core_8h_source.html#l00122">CVC3::TheoryCore::d_tccCache</a>, <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</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#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theory_8h_source.html#l00099">getName()</a>, <a class="el" href="expr_8h_source.html#l01005">CVC3::Expr::isVar()</a>, <a class="el" href="theory_8cpp_source.html#l00252">theoryOf()</a>, <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>, and <a class="el" href="theory_8h_source.html#l00582">trueExpr()</a>.</p>

<p>Referenced by <a class="el" href="theory__uf_8cpp_source.html#l00591">CVC3::TheoryUF::computeTCC()</a>, <a class="el" href="theory__quant_8cpp_source.html#l08714">CVC3::TheoryQuant::computeTCC()</a>, <a class="el" href="theory__core_8cpp_source.html#l01650">CVC3::TheoryCore::computeTCC()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05570">CVC3::TheoryBitvector::computeTCC()</a>, <a class="el" href="theory_8cpp_source.html#l00081">computeTCC()</a>, and <a class="el" href="theory_8cpp_source.html#l00816">newSubtypeExpr()</a>.</p>

</div>
</div>
<a class="anchor" id="aa408fe61c3d28f4333b78a3027606bb8"></a><!-- doxytag: member="CVC3::Theory::getBaseType" ref="aa408fe61c3d28f4333b78a3027606bb8" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Type.html">Type</a> Theory::getBaseType </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></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Compute (or look up in cache) the base type of e and return the result. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00383">383</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

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

<p>Referenced by <a class="el" href="theory__datatype_8cpp_source.html#l00191">CVC3::TheoryDatatype::addSharedTerm()</a>, <a class="el" href="array__theorem__producer_8cpp_source.html#l00338">CVC3::ArrayTheoremProducer::arrayNotEq()</a>, <a class="el" href="theory__records_8cpp_source.html#l00129">CVC3::TheoryRecords::assertFact()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00201">CVC3::TheoryDatatype::assertFact()</a>, <a class="el" href="theory__array_8cpp_source.html#l00106">CVC3::TheoryArray::assertFact()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01017">CVC3::BitvectorTheoremProducer::bitExtractConcatenation()</a>, <a class="el" href="theory__core_8cpp_source.html#l03817">CVC3::TheoryCore::buildModel()</a>, <a class="el" href="theory__quant_8cpp_source.html#l02798">CVC3::TheoryQuant::canMatch()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00260">CVC3::TheoryDatatype::checkSat()</a>, <a class="el" href="theory__core_8cpp_source.html#l03763">CVC3::TheoryCore::collectBasicVars()</a>, <a class="el" href="theory__core_8cpp_source.html#l03954">CVC3::TheoryCore::collectModelValues()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00471">CVC3::TheoryUF::computeBaseType()</a>, <a class="el" href="theory__records_8cpp_source.html#l00484">CVC3::TheoryRecords::computeBaseType()</a>, <a class="el" href="theory__core_8cpp_source.html#l01620">CVC3::TheoryCore::computeBaseType()</a>, <a class="el" href="theory__array_8cpp_source.html#l00887">CVC3::TheoryArray::computeBaseType()</a>, <a class="el" href="theory__records_8cpp_source.html#l00281">CVC3::TheoryRecords::computeModel()</a>, <a class="el" href="theory__array_8cpp_source.html#l00939">CVC3::TheoryArray::computeModel()</a>, <a class="el" href="theory__simulate_8cpp_source.html#l00065">CVC3::TheorySimulate::computeType()</a>, <a class="el" href="theory__records_8cpp_source.html#l00388">CVC3::TheoryRecords::computeType()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00562">CVC3::TheoryDatatype::computeType()</a>, <a class="el" href="theory__core_8cpp_source.html#l01471">CVC3::TheoryCore::computeType()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02969">CVC3::TheoryBitvector::computeType()</a>, <a class="el" href="theory__array_8cpp_source.html#l00810">CVC3::TheoryArray::computeType()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03725">CVC3::TheoryArithOld::computeType()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01936">CVC3::TheoryArithNew::computeType()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02747">CVC3::TheoryArith3::computeType()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00878">CVC3::TheoryDatatype::dataType()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01911">CVC3::BitvectorTheoremProducer::eqToBits()</a>, <a class="el" href="theory__quant_8cpp_source.html#l08653">CVC3::TheoryQuant::findInstAssumptions()</a>, <a class="el" href="translator_8cpp_source.html#l01145">CVC3::Translator::finish()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l01145">CVC3::TheoryDatatype::getConsPos()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l01161">CVC3::TheoryDatatype::getConstant()</a>, <a class="el" href="theory_8cpp_source.html#l00527">getModelTerm()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00075">CVC3::TheoryDatatype::instantiate()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00144">CVC3::TheoryDatatype::mergeLabels()</a>, <a class="el" href="theory__quant_8cpp_source.html#l04377">CVC3::TheoryQuant::newTopMatchNoSig()</a>, <a class="el" href="theory__quant_8cpp_source.html#l04671">CVC3::TheoryQuant::newTopMatchSig()</a>, <a class="el" href="theory_8cpp_source.html#l00610">newVar()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l04087">CVC3::TheoryBitvector::parseExprOp()</a>, <a class="el" href="theory__core_8cpp_source.html#l02055">CVC3::TheoryCore::print()</a>, <a class="el" href="theory__quant_8cpp_source.html#l03700">CVC3::TheoryQuant::recGoodSemMatch()</a>, <a class="el" href="theory__quant_8cpp_source.html#l08466">CVC3::TheoryQuant::recInstantiate()</a>, <a class="el" href="theory__quant_8cpp_source.html#l08565">CVC3::TheoryQuant::recursiveMap()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l02726">CVC3::TheoryArithOld::refineCounterExample()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01298">CVC3::TheoryArithNew::refineCounterExample()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02147">CVC3::TheoryArith3::refineCounterExample()</a>, <a class="el" href="theory__array_8cpp_source.html#l00368">CVC3::TheoryArray::rewrite()</a>, <a class="el" href="theory__core_8cpp_source.html#l04029">CVC3::TheoryCore::rewriteLiteral()</a>, <a class="el" href="theory__records_8cpp_source.html#l00508">CVC3::TheoryRecords::setup()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00339">CVC3::TheoryDatatype::setup()</a>, <a class="el" href="theory__core_8cpp_source.html#l01248">CVC3::TheoryCore::solve()</a>, <a class="el" href="theory_8cpp_source.html#l00260">theoryOf()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04277">CVC3::BitvectorTheoremProducer::typePredBit()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00359">CVC3::TheoryDatatype::update()</a>, and <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01470">CVC3::BitvectorTheoremProducer::zeroPaddingRule()</a>.</p>

</div>
</div>
<a class="anchor" id="a26afbc255a32b9fcff11d6b2625157ae"></a><!-- doxytag: member="CVC3::Theory::getBaseType" ref="a26afbc255a32b9fcff11d6b2625157ae" args="(const Type &amp;tp)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Type.html">Type</a> Theory::getBaseType </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;&#160;</td>
          <td class="paramname"><em>tp</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Compute the base type from an arbitrary type. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00389">389</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00265">computeBaseType()</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#l01223">CVC3::Expr::isNull()</a>, <a class="el" href="expr_8h_source.html#l01265">CVC3::Expr::lookupType()</a>, <a class="el" href="expr_8h_source.html#l01427">CVC3::Expr::setType()</a>, <a class="el" href="theory_8cpp_source.html#l00252">theoryOf()</a>, and <a class="el" href="type_8h_source.html#l00080">CVC3::Type::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a39539e895f8aade88ae5bc05bbcc9302"></a><!-- doxytag: member="CVC3::Theory::getTypePred" ref="a39539e895f8aade88ae5bc05bbcc9302" args="(const Type &amp;t, const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> Theory::getTypePred </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;&#160;</td>
          <td class="paramname"><em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Calls the correct theory to compute a type predicate. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00406">406</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00275">computeTypePred()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, and <a class="el" href="theory_8cpp_source.html#l00252">theoryOf()</a>.</p>

<p>Referenced by <a class="el" href="theory__uf_8cpp_source.html#l00591">CVC3::TheoryUF::computeTCC()</a>, <a class="el" href="theory__simulate_8cpp_source.html#l00164">CVC3::TheorySimulate::computeTCC()</a>, <a class="el" href="theory__records_8cpp_source.html#l00228">CVC3::TheoryRecords::computeTCC()</a>, <a class="el" href="theory__array_8cpp_source.html#l01041">CVC3::TheoryArray::computeTCC()</a>, <a class="el" href="theory__records_8cpp_source.html#l00312">CVC3::TheoryRecords::computeTypePred()</a>, and <a class="el" href="theory__core_8cpp_source.html#l01704">CVC3::TheoryCore::computeTypePred()</a>.</p>

</div>
</div>
<a class="anchor" id="ad6cb45844df7f1b08a53e41e40a362e3"></a><!-- doxytag: member="CVC3::Theory::updateHelper" ref="ad6cb45844df7f1b08a53e41e40a362e3" 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> Theory::updateHelper </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></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Update the children of the term e. </p>
<p>When a decision procedure receives a call to <a class="el" href="group__Theory__API.html#gac41af6a90290fe83b2ee6c53cbfc4a62" title="Notify a theory of a new equality.">update()</a> because a child of a term 'e' has changed, this method can be called to compute the new value of 'e'. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__Theory__API.html#gac41af6a90290fe83b2ee6c53cbfc4a62" title="Notify a theory of a new equality.">update</a> </dd></dl>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00417">417</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory_8h_source.html#l00069">d_commonRules</a>, <a class="el" href="theory_8cpp_source.html#l00295">findRef()</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="theory_8h_source.html#l00673">reflexivityRule()</a>, and <a class="el" href="classCVC3_1_1CommonProofRules.html#a776c827bb6e3b889234429c49ae9ad6f">CVC3::CommonProofRules::substitutivityRule()</a>.</p>

<p>Referenced by <a class="el" href="theory__uf_8cpp_source.html#l00257">CVC3::TheoryUF::update()</a>, <a class="el" href="theory__records_8cpp_source.html#l00561">CVC3::TheoryRecords::update()</a>, <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00267">CVC3::TheoryDatatypeLazy::update()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00359">CVC3::TheoryDatatype::update()</a>, <a class="el" href="theory__array_8cpp_source.html#l00550">CVC3::TheoryArray::update()</a>, and <a class="el" href="theory_8cpp_source.html#l00473">updateCC()</a>.</p>

</div>
</div>
<a class="anchor" id="a29cc343040a52a299a4f20123edf4c75"></a><!-- doxytag: member="CVC3::Theory::setupCC" ref="a29cc343040a52a299a4f20123edf4c75" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Theory::setupCC </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></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Setup a term for congruence closure (must have sig and rep attributes) </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00459">459</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="expr_8cpp_source.html#l00517">CVC3::Expr::addToNotify()</a>, <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory_8h_source.html#l00673">reflexivityRule()</a>, <a class="el" href="expr_8h_source.html#l01589">CVC3::Expr::setRep()</a>, <a class="el" href="expr_8h_source.html#l01578">CVC3::Expr::setSig()</a>, and <a class="el" href="expr_8h_source.html#l01483">CVC3::Expr::setUsesCC()</a>.</p>

<p>Referenced by <a class="el" href="theory__uf_8cpp_source.html#l00236">CVC3::TheoryUF::setup()</a>, <a class="el" href="theory__records_8cpp_source.html#l00508">CVC3::TheoryRecords::setup()</a>, <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00246">CVC3::TheoryDatatypeLazy::setup()</a>, and <a class="el" href="theory__datatype_8cpp_source.html#l00339">CVC3::TheoryDatatype::setup()</a>.</p>

</div>
</div>
<a class="anchor" id="a0b9e5a75b0e23a334563392f075df9e2"></a><!-- doxytag: member="CVC3::Theory::updateCC" ref="a0b9e5a75b0e23a334563392f075df9e2" args="(const Theorem &amp;e, const Expr &amp;d)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Theory::updateCC </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>d</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Update a term w.r.t. congruence closure (must be setup with <a class="el" href="classCVC3_1_1Theory.html#a29cc343040a52a299a4f20123edf4c75" title="Setup a term for congruence closure (must have sig and rep attributes)">setupCC()</a>) </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00473">473</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="expr_8cpp_source.html#l00517">CVC3::Expr::addToNotify()</a>, <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory_8cpp_source.html#l00128">enqueueFact()</a>, <a class="el" href="theory_8h_source.html#l00090">getEM()</a>, <a class="el" href="expr_8h_source.html#l01569">CVC3::Expr::getRep()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="expr_8h_source.html#l01560">CVC3::Expr::getSig()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="expr__manager_8h_source.html#l00341">CVC3::ExprManager::invalidateSimpCache()</a>, <a class="el" href="type_8h_source.html#l00060">CVC3::Type::isBool()</a>, <a class="el" href="theorem_8h_source.html#l00164">CVC3::Theorem::isNull()</a>, <a class="el" href="expr_8h_source.html#l01589">CVC3::Expr::setRep()</a>, <a class="el" href="expr_8h_source.html#l01578">CVC3::Expr::setSig()</a>, <a class="el" href="theory_8h_source.html#l00677">symmetryRule()</a>, <a class="el" href="theory_8h_source.html#l00681">transitivityRule()</a>, and <a class="el" href="theory_8cpp_source.html#l00417">updateHelper()</a>.</p>

<p>Referenced by <a class="el" href="theory__records_8cpp_source.html#l00561">CVC3::TheoryRecords::update()</a>.</p>

</div>
</div>
<a class="anchor" id="a2d91d71489b0c0a9822cef765326bc89"></a><!-- doxytag: member="CVC3::Theory::rewriteCC" ref="a2d91d71489b0c0a9822cef765326bc89" 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> Theory::rewriteCC </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></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Rewrite a term w.r.t. congruence closure (must be setup with <a class="el" href="classCVC3_1_1Theory.html#a29cc343040a52a299a4f20123edf4c75" title="Setup a term for congruence closure (must have sig and rep attributes)">setupCC()</a>) </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00512">512</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01569">CVC3::Expr::getRep()</a>, <a class="el" href="theorem_8h_source.html#l00164">CVC3::Theorem::isNull()</a>, <a class="el" href="theory_8h_source.html#l00673">reflexivityRule()</a>, and <a class="el" href="theory_8h_source.html#l00677">symmetryRule()</a>.</p>

<p>Referenced by <a class="el" href="theory__uf_8cpp_source.html#l00211">CVC3::TheoryUF::rewrite()</a>, and <a class="el" href="theory__records_8cpp_source.html#l00161">CVC3::TheoryRecords::rewrite()</a>.</p>

</div>
</div>
<a class="anchor" id="ad8b27aeea37d99def7a3c0348ded3e66"></a><!-- doxytag: member="CVC3::Theory::getModelTerm" ref="ad8b27aeea37d99def7a3c0348ded3e66" args="(const Expr &amp;e, std::vector&lt; Expr &gt; &amp;v)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Theory::getModelTerm </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>v</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Calls the correct theory to get all of the terms that need to be assigned values in the concrete model. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00527">527</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory_8cpp_source.html#l00047">computeModelTerm()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theory_8cpp_source.html#l00383">getBaseType()</a>, <a class="el" href="theory_8h_source.html#l00099">getName()</a>, <a class="el" href="debug_8h_source.html#l00406">IF_DEBUG</a>, <a class="el" href="theory_8cpp_source.html#l00252">theoryOf()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p>

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

</div>
</div>
<a class="anchor" id="a4867f332c809f6efe8f01ffa45c32db3"></a><!-- doxytag: member="CVC3::Theory::getModelValue" ref="a4867f332c809f6efe8f01ffa45c32db3" 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> Theory::getModelValue </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></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Fetch the concrete assignment to the variable during model generation. </p>

<p>Reimplemented in <a class="el" href="classCVC3_1_1TheoryCore.html#ab360cca9e30af4434130557f6b45f627">CVC3::TheoryCore</a>.</p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00541">541</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, and <a class="el" href="theory__core_8cpp_source.html#l00595">CVC3::TheoryCore::getModelValue()</a>.</p>

<p>Referenced by <a class="el" href="theory__uf_8cpp_source.html#l00509">CVC3::TheoryUF::computeModel()</a>, <a class="el" href="theory__records_8cpp_source.html#l00281">CVC3::TheoryRecords::computeModel()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l03345">CVC3::TheoryBitvector::computeModel()</a>, and <a class="el" href="theory__array_8cpp_source.html#l00939">CVC3::TheoryArray::computeModel()</a>.</p>

</div>
</div>
<a class="anchor" id="a605e960d2442b587046c562723b7f03a"></a><!-- doxytag: member="CVC3::Theory::addSplitter" ref="a605e960d2442b587046c562723b7f03a" args="(const Expr &amp;e, int priority=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Theory::addSplitter </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>priority</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Suggest a splitter to the <a class="el" href="classCVC3_1_1SearchEngine.html" title="API to to a generic proof search engine.">SearchEngine</a>. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00148">148</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory__core_8h_source.html#l00240">CVC3::TheoryCore::d_coreSatAPI</a>, <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theory_8h_source.html#l00099">getName()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="expr_8h_source.html#l00406">CVC3::Expr::isAbsLiteral()</a>, <a class="el" href="expr_8h_source.html#l00357">CVC3::Expr::isBoolConst()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p>

<p>Referenced by <a class="el" href="theory__arith3_8cpp_source.html#l02020">CVC3::TheoryArith3::assertFact()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00156">CVC3::TheoryUF::checkSat()</a>, <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00178">CVC3::TheoryDatatypeLazy::checkSat()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00260">CVC3::TheoryDatatype::checkSat()</a>, <a class="el" href="theory__array_8cpp_source.html#l00154">CVC3::TheoryArray::checkSat()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02512">CVC3::TheoryBitvector::comparebv()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l02726">CVC3::TheoryArithOld::refineCounterExample()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01298">CVC3::TheoryArithNew::refineCounterExample()</a>, and <a class="el" href="theory__arith3_8cpp_source.html#l02147">CVC3::TheoryArith3::refineCounterExample()</a>.</p>

</div>
</div>
<a class="anchor" id="a688cd0c0b669ab9719f8a99cb207ad2c"></a><!-- doxytag: member="CVC3::Theory::addGlobalLemma" ref="a688cd0c0b669ab9719f8a99cb207ad2c" args="(const Theorem &amp;thm, int priority=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Theory::addGlobalLemma </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>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>priority</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Add a global lemma. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00157">157</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory__core_8h_source.html#l00240">CVC3::TheoryCore::d_coreSatAPI</a>, and <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>.</p>

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

<p>Test if e is an i-leaf term for the current theory. </p>
<p>A term 'e' is an i-leaf for a theory 'i', if it is a variable, or 'e' belongs to a different theory. This definition makes sense for a larger term which by itself belongs to the current theory 'i', but (some of) its children are variables or belong to different theories. </p>

<p>Definition at line <a class="el" href="theory_8h_source.html#l00556">556</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01005">CVC3::Expr::isVar()</a>, and <a class="el" href="theory_8cpp_source.html#l00252">theoryOf()</a>.</p>

<p>Referenced by <a class="el" href="theory__bitvector_8cpp_source.html#l01861">CVC3::TheoryBitvector::assertFact()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03138">CVC3::TheoryArithNew::assertFact()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l02777">CVC3::TheoryArithNew::assertLower()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l02740">CVC3::TheoryArithNew::assertUpper()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05692">CVC3::BitvectorTheoremProducer::canonBVEQ()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l05345">CVC3::TheoryArithOld::canPickEqMonomial()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02301">CVC3::TheoryBitvector::canSolveFor()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03621">CVC3::TheoryArithOld::checkAssertEqInvariant()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02643">CVC3::TheoryArith3::checkAssertEqInvariant()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l02359">CVC3::TheoryArithOld::collectVars()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01155">CVC3::TheoryArithNew::collectVars()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l01904">CVC3::TheoryArith3::collectVars()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l05463">CVC3::TheoryArithOld::getLowerBound()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l05391">CVC3::TheoryArithOld::getUpperBound()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l05692">CVC3::TheoryArithOld::isConstrainedAbove()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l05746">CVC3::TheoryArithOld::isConstrainedBelow()</a>, <a class="el" href="theory_8cpp_source.html#l00546">isLeafIn()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02345">CVC3::TheoryBitvector::isLinearTerm()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l05210">CVC3::TheoryArithOld::isNonlinearSumTerm()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04371">CVC3::BitvectorTheoremProducer::isolate_var()</a>, <a class="el" href="theory_8cpp_source.html#l00557">leavesAreSimp()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l01965">CVC3::TheoryBitvector::multiply_coeff()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02178">CVC3::TheoryBitvector::Odd_coeff()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05657">CVC3::BitvectorTheoremProducer::okToSplit()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03600">CVC3::TheoryArithNew::pivotRule()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05609">CVC3::BitvectorTheoremProducer::processExtract()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03076">CVC3::TheoryArithOld::rewrite()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02387">CVC3::TheoryArith3::rewrite()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02366">CVC3::TheoryBitvector::simplifyPendingEq()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02818">CVC3::TheoryBitvector::solve()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03547">CVC3::TheoryArithOld::solve()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01805">CVC3::TheoryArithNew::solve()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02569">CVC3::TheoryArith3::solve()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l05334">CVC3::TheoryArithOld::termDegree()</a>, and <a class="el" href="theory__bitvector_8cpp_source.html#l02791">CVC3::TheoryBitvector::updateSubterms()</a>.</p>

</div>
</div>
<a class="anchor" id="aa0ef53bc2009d92763e0916c38aaf692"></a><!-- doxytag: member="CVC3::Theory::isLeafIn" ref="aa0ef53bc2009d92763e0916c38aaf692" args="(const Expr &amp;e1, const Expr &amp;e2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool Theory::isLeafIn </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>e2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Test if e1 is an i-leaf in e2. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classCVC3_1_1Theory.html#a8d466120560b7b91dc279e657fe3c433" title="Test if e is an i-leaf term for the current theory.">isLeaf</a> </dd></dl>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00546">546</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="theory_8h_source.html#l00556">isLeaf()</a>, and <a class="el" href="theory_8cpp_source.html#l00252">theoryOf()</a>.</p>

<p>Referenced by <a class="el" href="theory__bitvector_8cpp_source.html#l01861">CVC3::TheoryBitvector::assertFact()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05692">CVC3::BitvectorTheoremProducer::canonBVEQ()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l05345">CVC3::TheoryArithOld::canPickEqMonomial()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03621">CVC3::TheoryArithOld::checkAssertEqInvariant()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02643">CVC3::TheoryArith3::checkAssertEqInvariant()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04371">CVC3::BitvectorTheoremProducer::isolate_var()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02178">CVC3::TheoryBitvector::Odd_coeff()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05609">CVC3::BitvectorTheoremProducer::processExtract()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02818">CVC3::TheoryBitvector::solve()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03547">CVC3::TheoryArithOld::solve()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01805">CVC3::TheoryArithNew::solve()</a>, and <a class="el" href="theory__arith3_8cpp_source.html#l02569">CVC3::TheoryArith3::solve()</a>.</p>

</div>
</div>
<a class="anchor" id="a8dd39cad11cf866afc6282475cfc81b7"></a><!-- doxytag: member="CVC3::Theory::leavesAreSimp" ref="a8dd39cad11cf866afc6282475cfc81b7" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool Theory::leavesAreSimp </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></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Test if all i-leaves of e are simplified. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classCVC3_1_1Theory.html#a8d466120560b7b91dc279e657fe3c433" title="Test if e is an i-leaf term for the current theory.">isLeaf</a> </dd></dl>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00557">557</a> of file <a class="el" href="theory_8cpp_source.html">theory.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#l01237">CVC3::Expr::getFind()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="expr_8h_source.html#l01232">CVC3::Expr::hasFind()</a>, and <a class="el" href="theory_8h_source.html#l00556">isLeaf()</a>.</p>

<p>Referenced by <a class="el" href="theory__arith__old_8cpp_source.html#l03621">CVC3::TheoryArithOld::checkAssertEqInvariant()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02643">CVC3::TheoryArith3::checkAssertEqInvariant()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03076">CVC3::TheoryArithOld::rewrite()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02387">CVC3::TheoryArith3::rewrite()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01769">CVC3::TheoryArithNew::update()</a>, and <a class="el" href="theory__arith3_8cpp_source.html#l02534">CVC3::TheoryArith3::update()</a>.</p>

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

<p>Return BOOLEAN type. </p>

<p>Definition at line <a class="el" href="theory_8h_source.html#l00576">576</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00067">d_em</a>, and <a class="el" href="type_8h_source.html#l00073">CVC3::Type::typeBool()</a>.</p>

<p>Referenced by <a class="el" href="theory__core_8cpp_source.html#l01471">CVC3::TheoryCore::computeType()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02969">CVC3::TheoryBitvector::computeType()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03725">CVC3::TheoryArithOld::computeType()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01936">CVC3::TheoryArithNew::computeType()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02747">CVC3::TheoryArith3::computeType()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00878">CVC3::TheoryDatatype::dataType()</a>, <a class="el" href="theory__quant_8cpp_source.html#l08537">CVC3::TheoryQuant::mapTermsByType()</a>, <a class="el" href="theory__quant_8cpp_source.html#l09009">CVC3::TheoryQuant::parseExprOp()</a>, and <a class="el" href="theory__core_8cpp_source.html#l01724">CVC3::TheoryCore::parseExprOp()</a>.</p>

</div>
</div>
<a class="anchor" id="a0bbf7c5b6079fc99a0f759e5809fe6f5"></a><!-- doxytag: member="CVC3::Theory::falseExpr" ref="a0bbf7c5b6079fc99a0f759e5809fe6f5" args="()" -->
<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::Theory::falseExpr </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return FALSE <a class="el" href="classCVC3_1_1Expr.html" title="Data structure of expressions in CVC3.">Expr</a>. </p>

<p>Definition at line <a class="el" href="theory_8h_source.html#l00579">579</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00067">d_em</a>, and <a class="el" href="expr__manager_8h_source.html#l00278">CVC3::ExprManager::falseExpr()</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06324">CVC3::BitvectorTheoremProducer::bitblastBVMult()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06407">CVC3::BitvectorTheoremProducer::bitblastBVPlus()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00977">CVC3::BitvectorTheoremProducer::bitExtractConstant()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01619">CVC3::BitvectorTheoremProducer::bitExtractFixedLeftShift()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01668">CVC3::BitvectorTheoremProducer::bitExtractFixedRightShift()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00704">CVC3::BitvectorTheoremProducer::bvConstIneqn()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05692">CVC3::BitvectorTheoremProducer::canonBVEQ()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06675">CVC3::BitvectorTheoremProducer::constEq()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01893">CVC3::BitvectorTheoremProducer::eqConst()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04294">CVC3::BitvectorTheoremProducer::expandTypePred()</a>, <a class="el" href="theory__core_8cpp_source.html#l01443">CVC3::TheoryCore::finiteTypeInfo()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00762">CVC3::BitvectorTheoremProducer::generalIneqn()</a>, <a class="el" href="search_8cpp_source.html#l00091">CVC3::SearchEngine::getConcreteModel()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00658">CVC3::BitvectorTheoremProducer::lhsEqRhsIneqn()</a>, <a class="el" href="theory__quant_8cpp_source.html#l08537">CVC3::TheoryQuant::mapTermsByType()</a>, <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00123">CVC3::TheoryDatatypeLazy::mergeLabels()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00144">CVC3::TheoryDatatype::mergeLabels()</a>, <a class="el" href="theory__quant_8cpp_source.html#l04377">CVC3::TheoryQuant::newTopMatchNoSig()</a>, <a class="el" href="theory__quant_8cpp_source.html#l04671">CVC3::TheoryQuant::newTopMatchSig()</a>, <a class="el" href="theory__core_8cpp_source.html#l02055">CVC3::TheoryCore::print()</a>, <a class="el" href="search__impl__base_8h_source.html#l00222">CVC3::SearchImplBase::returnFromCheck()</a>, <a class="el" href="theory__core_8cpp_source.html#l04245">CVC3::TheoryCore::setInconsistent()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00437">CVC3::BitvectorTheoremProducer::signBVLTRule()</a>, <a class="el" href="search_8cpp_source.html#l00057">CVC3::SearchEngine::tryModelGeneration()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03390">CVC3::TheoryArithOld::update()</a>, and <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01470">CVC3::BitvectorTheoremProducer::zeroPaddingRule()</a>.</p>

</div>
</div>
<a class="anchor" id="ab8835beee96db67f3c26a604d96f2fe8"></a><!-- doxytag: member="CVC3::Theory::trueExpr" ref="ab8835beee96db67f3c26a604d96f2fe8" args="()" -->
<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::Theory::trueExpr </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return TRUE <a class="el" href="classCVC3_1_1Expr.html" title="Data structure of expressions in CVC3.">Expr</a>. </p>

<p>Definition at line <a class="el" href="theory_8h_source.html#l00582">582</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00067">d_em</a>, and <a class="el" href="expr__manager_8h_source.html#l00280">CVC3::ExprManager::trueExpr()</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01141">CVC3::BitvectorTheoremProducer::bitExtractBVMult()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00977">CVC3::BitvectorTheoremProducer::bitExtractConstant()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00704">CVC3::BitvectorTheoremProducer::bvConstIneqn()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l05692">CVC3::BitvectorTheoremProducer::canonBVEQ()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02574">CVC3::TheoryBitvector::checkSat()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00591">CVC3::TheoryUF::computeTCC()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00612">CVC3::TheoryDatatype::computeTCC()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l05570">CVC3::TheoryBitvector::computeTCC()</a>, <a class="el" href="theory_8cpp_source.html#l00081">computeTCC()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06675">CVC3::BitvectorTheoremProducer::constEq()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l01893">CVC3::BitvectorTheoremProducer::eqConst()</a>, <a class="el" href="theory__core_8cpp_source.html#l01443">CVC3::TheoryCore::finiteTypeInfo()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00762">CVC3::BitvectorTheoremProducer::generalIneqn()</a>, <a class="el" href="theory_8cpp_source.html#l00367">getTCC()</a>, <a class="el" href="theory__quant_8cpp_source.html#l02229">CVC3::CompleteInstPreProcessor::inst()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00658">CVC3::BitvectorTheoremProducer::lhsEqRhsIneqn()</a>, <a class="el" href="theory__quant_8cpp_source.html#l08537">CVC3::TheoryQuant::mapTermsByType()</a>, <a class="el" href="theory__quant_8cpp_source.html#l04377">CVC3::TheoryQuant::newTopMatchNoSig()</a>, <a class="el" href="theory__quant_8cpp_source.html#l04671">CVC3::TheoryQuant::newTopMatchSig()</a>, <a class="el" href="theory__core_8cpp_source.html#l02055">CVC3::TheoryCore::print()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00437">CVC3::BitvectorTheoremProducer::signBVLTRule()</a>, <a class="el" href="theory__quant_8cpp_source.html#l01462">CVC3::CompleteInstPreProcessor::simplifyEq()</a>, <a class="el" href="theory__quant_8cpp_source.html#l02343">CVC3::TheoryQuant::theoryPreprocess()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03390">CVC3::TheoryArithOld::update()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01769">CVC3::TheoryArithNew::update()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02534">CVC3::TheoryArith3::update()</a>, and <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l00686">CVC3::BitvectorTheoremProducer::zeroLeq()</a>.</p>

</div>
</div>
<a class="anchor" id="a4f82b4903d68da2bd83afb104c2c62cc"></a><!-- doxytag: member="CVC3::Theory::newVar" ref="a4f82b4903d68da2bd83afb104c2c62cc" args="(const std::string &amp;name, const Type &amp;type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> Theory::newVar </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;&#160;</td>
          <td class="paramname"><em>type</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a new variable given its name and type. </p>
<p>Add the variable to the database for resolving IDs in parseExpr </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00569">569</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory__core_8cpp_source.html#l03756">CVC3::TheoryCore::addToVarDB()</a>, <a class="el" href="type_8h_source.html#l00055">CVC3::Type::arity()</a>, <a class="el" href="theory_8h_source.html#l00067">d_em</a>, <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theory_8h_source.html#l00090">getEM()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theory_8cpp_source.html#l00910">installID()</a>, <a class="el" href="type_8h_source.html#l00060">CVC3::Type::isBool()</a>, <a class="el" href="type_8h_source.html#l00062">CVC3::Type::isFunction()</a>, <a class="el" href="type_8h_source.html#l00059">CVC3::Type::isNull()</a>, <a class="el" href="expr__manager_8h_source.html#l00481">CVC3::ExprManager::newSymbolExpr()</a>, <a class="el" href="expr__manager_8h_source.html#l00478">CVC3::ExprManager::newVarExpr()</a>, <a class="el" href="theory_8cpp_source.html#l00887">resolveID()</a>, <a class="el" href="type_8h_source.html#l00080">CVC3::Type::toString()</a>, <a class="el" href="kinds_8h_source.html#l00058">TYPEDEF</a>, and <a class="el" href="kinds_8h_source.html#l00242">UCONST</a>.</p>

<p>Referenced by <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06243">CVC3::BitvectorTheoremProducer::bvUDivConst()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l06201">CVC3::BitvectorTheoremProducer::bvURemConst()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l01161">CVC3::TheoryDatatype::getConstant()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03899">CVC3::TheoryArithNew::updateDependencies()</a>, and <a class="el" href="translator_8cpp_source.html#l01943">CVC3::Translator::zeroVar()</a>.</p>

</div>
</div>
<a class="anchor" id="aa7b6e0e6f53256fd0e5573ad51ae472b"></a><!-- doxytag: member="CVC3::Theory::newVar" ref="aa7b6e0e6f53256fd0e5573ad51ae472b" args="(const std::string &amp;name, const Type &amp;type, const Expr &amp;def)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> Theory::newVar </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;&#160;</td>
          <td class="paramname"><em>type</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>def</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a new named expression given its name, type, and definition. </p>
<p>Add the definition to the database for resolving IDs in parseExpr </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00610">610</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="kinds_8h_source.html#l00051">ARROW</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theory_8cpp_source.html#l00383">getBaseType()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="theory_8cpp_source.html#l00910">installID()</a>, <a class="el" href="expr_8h_source.html#l01223">CVC3::Expr::isNull()</a>, <a class="el" href="type_8h_source.html#l00059">CVC3::Type::isNull()</a>, <a class="el" href="theory_8cpp_source.html#l00887">resolveID()</a>, <a class="el" href="type_8h_source.html#l00080">CVC3::Type::toString()</a>, and <a class="el" href="kinds_8h_source.html#l00058">TYPEDEF</a>.</p>

</div>
</div>
<a class="anchor" id="a97642364c244b753d33b551fc8c3bb9a"></a><!-- doxytag: member="CVC3::Theory::newFunction" ref="a97642364c244b753d33b551fc8c3bb9a" args="(const std::string &amp;name, const Type &amp;type, bool computeTransClosure)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Op.html">Op</a> Theory::newFunction </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;&#160;</td>
          <td class="paramname"><em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>computeTransClosure</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a new uninterpreted function. </p>
<p>Add the definition to the database for resolving IDs in parseExpr </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00647">647</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory__core_8cpp_source.html#l03756">CVC3::TheoryCore::addToVarDB()</a>, <a class="el" href="type_8h_source.html#l00055">CVC3::Type::arity()</a>, <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theory_8h_source.html#l00090">getEM()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theory_8cpp_source.html#l00910">installID()</a>, <a class="el" href="type_8h_source.html#l00060">CVC3::Type::isBool()</a>, <a class="el" href="type_8h_source.html#l00062">CVC3::Type::isFunction()</a>, <a class="el" href="type_8h_source.html#l00059">CVC3::Type::isNull()</a>, <a class="el" href="expr__manager_8h_source.html#l00481">CVC3::ExprManager::newSymbolExpr()</a>, <a class="el" href="theory_8cpp_source.html#l00887">resolveID()</a>, <a class="el" href="type_8h_source.html#l00080">CVC3::Type::toString()</a>, <a class="el" href="kinds_8h_source.html#l00058">TYPEDEF</a>, and <a class="el" href="kinds_8h_source.html#l00088">UFUNC</a>.</p>

<p>Referenced by <a class="el" href="theory__datatype_8cpp_source.html#l00878">CVC3::TheoryDatatype::dataType()</a>.</p>

</div>
</div>
<a class="anchor" id="a61a4a3159152e1ff93dea55a33441557"></a><!-- doxytag: member="CVC3::Theory::lookupFunction" ref="a61a4a3159152e1ff93dea55a33441557" args="(const std::string &amp;name, Type *type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Op.html">Op</a> Theory::lookupFunction </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classCVC3_1_1Type.html">Type</a> *&#160;</td>
          <td class="paramname"><em>type</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Look up a function by name. </p>
<p>Returns the function and sets type to the type of the function if it exists. If not, returns a NULL <a class="el" href="classCVC3_1_1Op.html">Op</a> object. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00697">697</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00090">getEM()</a>, <a class="el" href="expr_8h_source.html#l01265">CVC3::Expr::lookupType()</a>, <a class="el" href="expr_8h_source.html#l01178">CVC3::Expr::mkOp()</a>, <a class="el" href="expr__manager_8h_source.html#l00481">CVC3::ExprManager::newSymbolExpr()</a>, and <a class="el" href="kinds_8h_source.html#l00088">UFUNC</a>.</p>

</div>
</div>
<a class="anchor" id="ac6c5f95bbc428cad8085b416cd40292a"></a><!-- doxytag: member="CVC3::Theory::newFunction" ref="ac6c5f95bbc428cad8085b416cd40292a" args="(const std::string &amp;name, const Type &amp;type, const Expr &amp;def)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Op.html">Op</a> Theory::newFunction </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;&#160;</td>
          <td class="paramname"><em>type</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>def</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a new defined function. </p>
<p>Add the definition to the database for resolving IDs in parseExpr </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00678">678</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theory_8cpp_source.html#l00910">installID()</a>, <a class="el" href="type_8h_source.html#l00059">CVC3::Type::isNull()</a>, <a class="el" href="expr_8h_source.html#l01178">CVC3::Expr::mkOp()</a>, <a class="el" href="theory_8cpp_source.html#l00887">resolveID()</a>, and <a class="el" href="type_8h_source.html#l00080">CVC3::Type::toString()</a>.</p>

</div>
</div>
<a class="anchor" id="a13ba9024a22362cc96760519a84f2316"></a><!-- doxytag: member="CVC3::Theory::addBoundVar" ref="a13ba9024a22362cc96760519a84f2316" args="(const std::string &amp;name, const Type &amp;type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> Theory::addBoundVar </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;&#160;</td>
          <td class="paramname"><em>type</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create and add a new bound variable to the stack, for <a class="el" href="group__Theory__API.html#ga378bef078620e67fc80f36fa79320d91" title="Theory-specific parsing implemented by the DP.">parseExprOp()</a>. </p>
<p>The stack is popped automatically upon return from the <a class="el" href="group__Theory__API.html#ga378bef078620e67fc80f36fa79320d91" title="Theory-specific parsing implemented by the DP.">parseExprOp()</a> which used this method.</p>
<p>Bound variable names may repeat, in which case the latest declaration takes precedence. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00709">709</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory_8cpp_source.html#l00706">boundVarCount</a>, <a class="el" href="expr__map_8h_source.html#l00175">CVC3::ExprMap&lt; Data &gt;::clear()</a>, <a class="el" href="theory__core_8h_source.html#l00111">CVC3::TheoryCore::d_boundVarMap</a>, <a class="el" href="theory__core_8h_source.html#l00109">CVC3::TheoryCore::d_boundVarStack</a>, <a class="el" href="theory__core_8h_source.html#l00120">CVC3::TheoryCore::d_parseCache</a>, <a class="el" href="theory__core_8h_source.html#l00118">CVC3::TheoryCore::d_parseCacheOther</a>, <a class="el" href="theory__core_8h_source.html#l00114">CVC3::TheoryCore::d_parseCacheTop</a>, <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr__map_8h_source.html#l00170">CVC3::ExprMap&lt; Data &gt;::empty()</a>, <a class="el" href="hash__map_8h_source.html#l00257">Hash::hash_map&lt; _Key, _Data, _HashFcn, _EqualKey &gt;::end()</a>, <a class="el" href="hash__map_8h_source.html#l00171">Hash::hash_map&lt; _Key, _Data, _HashFcn, _EqualKey &gt;::find()</a>, <a class="el" href="theory_8h_source.html#l00090">getEM()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</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="kinds_8h_source.html#l00099">TRACE</a>.</p>

<p>Referenced by <a class="el" href="theory__uf_8cpp_source.html#l01015">CVC3::TheoryUF::parseExprOp()</a>, <a class="el" href="theory__quant_8cpp_source.html#l09009">CVC3::TheoryQuant::parseExprOp()</a>, <a class="el" href="theory__core_8cpp_source.html#l01724">CVC3::TheoryCore::parseExprOp()</a>, and <a class="el" href="theory__array_8cpp_source.html#l01193">CVC3::TheoryArray::parseExprOp()</a>.</p>

</div>
</div>
<a class="anchor" id="aa8f3f9fb084f9d5e385255baab5dc8f3"></a><!-- doxytag: member="CVC3::Theory::addBoundVar" ref="aa8f3f9fb084f9d5e385255baab5dc8f3" args="(const std::string &amp;name, const Type &amp;type, const Expr &amp;def)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> Theory::addBoundVar </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;&#160;</td>
          <td class="paramname"><em>type</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>def</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create and add a new bound named def to the stack, for <a class="el" href="group__Theory__API.html#ga378bef078620e67fc80f36fa79320d91" title="Theory-specific parsing implemented by the DP.">parseExprOp()</a>. </p>
<p>The stack is popped automatically upon return from the <a class="el" href="group__Theory__API.html#ga378bef078620e67fc80f36fa79320d91" title="Theory-specific parsing implemented by the DP.">parseExprOp()</a> which used this method.</p>
<p>Bound variable names may repeat, in which case the latest declaration takes precedence.</p>
<p>The type may be Null, but 'def' must always be a valid <a class="el" href="classCVC3_1_1Expr.html" title="Data structure of expressions in CVC3.">Expr</a> </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00738">738</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory_8cpp_source.html#l00706">boundVarCount</a>, <a class="el" href="expr__map_8h_source.html#l00175">CVC3::ExprMap&lt; Data &gt;::clear()</a>, <a class="el" href="theory__core_8h_source.html#l00111">CVC3::TheoryCore::d_boundVarMap</a>, <a class="el" href="theory__core_8h_source.html#l00109">CVC3::TheoryCore::d_boundVarStack</a>, <a class="el" href="theory__core_8h_source.html#l00120">CVC3::TheoryCore::d_parseCache</a>, <a class="el" href="theory__core_8h_source.html#l00118">CVC3::TheoryCore::d_parseCacheOther</a>, <a class="el" href="theory__core_8h_source.html#l00114">CVC3::TheoryCore::d_parseCacheTop</a>, <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr__map_8h_source.html#l00170">CVC3::ExprMap&lt; Data &gt;::empty()</a>, <a class="el" href="hash__map_8h_source.html#l00257">Hash::hash_map&lt; _Key, _Data, _HashFcn, _EqualKey &gt;::end()</a>, <a class="el" href="hash__map_8h_source.html#l00171">Hash::hash_map&lt; _Key, _Data, _HashFcn, _EqualKey &gt;::find()</a>, <a class="el" href="theory_8h_source.html#l00090">getEM()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="type_8h_source.html#l00059">CVC3::Type::isNull()</a>, <a class="el" href="kinds_8h_source.html#l00227">LETDECL</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>, <a class="el" href="type_8h_source.html#l00080">CVC3::Type::toString()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p>

</div>
</div>
<a class="anchor" id="a4b58aeebc3a62e41f0ce71ba01fa3961"></a><!-- doxytag: member="CVC3::Theory::lookupVar" ref="a4b58aeebc3a62e41f0ce71ba01fa3961" args="(const std::string &amp;name, Type *type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> Theory::lookupVar </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classCVC3_1_1Type.html">Type</a> *&#160;</td>
          <td class="paramname"><em>type</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Lookup variable and return it and its type. Return NULL <a class="el" href="classCVC3_1_1Expr.html" title="Data structure of expressions in CVC3.">Expr</a> if it doesn't exist yet. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00776">776</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00090">getEM()</a>, <a class="el" href="expr_8h_source.html#l01265">CVC3::Expr::lookupType()</a>, and <a class="el" href="expr__manager_8h_source.html#l00478">CVC3::ExprManager::newVarExpr()</a>.</p>

</div>
</div>
<a class="anchor" id="aadde006d0dea508fec039b8092b14ed6"></a><!-- doxytag: member="CVC3::Theory::newTypeExpr" ref="aadde006d0dea508fec039b8092b14ed6" args="(const std::string &amp;name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Type.html">Type</a> Theory::newTypeExpr </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>name</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a new uninterpreted type with the given name. </p>
<p>Add the name to the global variable database d_globals </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00790">790</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00090">getEM()</a>, <a class="el" href="theory_8cpp_source.html#l00910">installID()</a>, <a class="el" href="expr_8h_source.html#l01223">CVC3::Expr::isNull()</a>, <a class="el" href="theory_8cpp_source.html#l00887">resolveID()</a>, and <a class="el" href="kinds_8h_source.html#l00056">TYPEDECL</a>.</p>

<p>Referenced by <a class="el" href="translator_8cpp_source.html#l01145">CVC3::Translator::finish()</a>.</p>

</div>
</div>
<a class="anchor" id="a4e57c5fb189f51c6e5abeeb0bcb1baef"></a><!-- doxytag: member="CVC3::Theory::lookupTypeExpr" ref="a4e57c5fb189f51c6e5abeeb0bcb1baef" args="(const std::string &amp;name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Type.html">Type</a> Theory::lookupTypeExpr </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>name</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Lookup type by name. Return Null if no such type exists. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00805">805</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01223">CVC3::Expr::isNull()</a>, <a class="el" href="expr_8h_source.html#l01020">CVC3::Expr::isType()</a>, <a class="el" href="theory_8cpp_source.html#l00887">resolveID()</a>, and <a class="el" href="kinds_8h_source.html#l00056">TYPEDECL</a>.</p>

</div>
</div>
<a class="anchor" id="a7aadedb0affc98a4cd1741f5dcf42d3a"></a><!-- doxytag: member="CVC3::Theory::newTypeExpr" ref="a7aadedb0affc98a4cd1741f5dcf42d3a" args="(const std::string &amp;name, const Type &amp;def)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Type.html">Type</a> Theory::newTypeExpr </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;&#160;</td>
          <td class="paramname"><em>def</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a new type abbreviation with the given name. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00872">872</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="theory_8cpp_source.html#l00910">installID()</a>, <a class="el" href="expr_8h_source.html#l01223">CVC3::Expr::isNull()</a>, and <a class="el" href="theory_8cpp_source.html#l00887">resolveID()</a>.</p>

</div>
</div>
<a class="anchor" id="af85a563480c411b1e8eb280de9f39bb2"></a><!-- doxytag: member="CVC3::Theory::newSubtypeExpr" ref="af85a563480c411b1e8eb280de9f39bb2" args="(const Expr &amp;pred, const Expr &amp;witness)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Type.html">Type</a> Theory::newSubtypeExpr </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>pred</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>witness</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a new subtype expression. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00816">816</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory__core_8h_source.html#l00240">CVC3::TheoryCore::d_coreSatAPI</a>, <a class="el" href="theory_8h_source.html#l00067">d_em</a>, <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, <a class="el" href="kinds_8h_source.html#l00085">EXISTS</a>, <a class="el" href="kinds_8h_source.html#l00084">FORALL</a>, <a class="el" href="expr_8h_source.html#l01069">CVC3::Expr::getBody()</a>, <a class="el" href="theory__core_8h_source.html#l00350">CVC3::TheoryCore::getFlags()</a>, <a class="el" href="theory_8cpp_source.html#l00367">getTCC()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="expr_8h_source.html#l01062">CVC3::Expr::getVars()</a>, <a class="el" href="expr_8h_source.html#l01011">CVC3::Expr::isLambda()</a>, <a class="el" href="expr_8h_source.html#l01223">CVC3::Expr::isNull()</a>, <a class="el" href="expr_8h_source.html#l01178">CVC3::Expr::mkOp()</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_8h_source.html#l00430">simplifyExpr()</a>, <a class="el" href="kinds_8h_source.html#l00193">SUBTYPE</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p>

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

</div>
</div>
<a class="anchor" id="a07b326cd94b2bb8bafa39faf07caaec5"></a><!-- doxytag: member="CVC3::Theory::resolveID" ref="a07b326cd94b2bb8bafa39faf07caaec5" args="(const std::string &amp;name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> Theory::resolveID </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>name</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Resolve an identifier, for use in <a class="el" href="group__Theory__API.html#ga378bef078620e67fc80f36fa79320d91" title="Theory-specific parsing implemented by the DP.">parseExprOp()</a> </p>
<p>First, search the bound variable stack, and if the name is not found, search the global constant and type declarations.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>an expression to use in place of the identifier, or Null if cannot resolve the name. </dd></dl>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00887">887</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory__core_8h_source.html#l00111">CVC3::TheoryCore::d_boundVarMap</a>, <a class="el" href="theory__core_8h_source.html#l00107">CVC3::TheoryCore::d_globals</a>, <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, <a class="el" href="hash__map_8h_source.html#l00257">Hash::hash_map&lt; _Key, _Data, _HashFcn, _EqualKey &gt;::end()</a>, <a class="el" href="hash__map_8h_source.html#l00171">Hash::hash_map&lt; _Key, _Data, _HashFcn, _EqualKey &gt;::find()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, and <a class="el" href="kinds_8h_source.html#l00044">RAW_LIST</a>.</p>

<p>Referenced by <a class="el" href="theory__uf_8cpp_source.html#l00079">CVC3::TheoryUF::assertFact()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00436">CVC3::TheoryDatatype::checkType()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00417">CVC3::TheoryUF::computeType()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00878">CVC3::TheoryDatatype::dataType()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l01086">CVC3::TheoryDatatype::datatypeConsExpr()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l01100">CVC3::TheoryDatatype::datatypeSelExpr()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l01112">CVC3::TheoryDatatype::datatypeTestExpr()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l01161">CVC3::TheoryDatatype::getConstant()</a>, <a class="el" href="theory_8cpp_source.html#l00910">installID()</a>, <a class="el" href="theory_8cpp_source.html#l00805">lookupTypeExpr()</a>, <a class="el" href="theory_8cpp_source.html#l00647">newFunction()</a>, <a class="el" href="theory_8cpp_source.html#l00790">newTypeExpr()</a>, <a class="el" href="theory_8cpp_source.html#l00569">newVar()</a>, <a class="el" href="theory__core_8cpp_source.html#l03589">CVC3::TheoryCore::parseExpr()</a>, and <a class="el" href="theory__uf_8cpp_source.html#l01015">CVC3::TheoryUF::parseExprOp()</a>.</p>

</div>
</div>
<a class="anchor" id="a6b1c155465b0c24885213e7442dd0882"></a><!-- doxytag: member="CVC3::Theory::installID" ref="a6b1c155465b0c24885213e7442dd0882" args="(const std::string &amp;name, const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Theory::installID </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>name</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>Install name as a new identifier associated with <a class="el" href="classCVC3_1_1Expr.html" title="Data structure of expressions in CVC3.">Expr</a> e. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00910">910</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory__core_8h_source.html#l00107">CVC3::TheoryCore::d_globals</a>, <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, and <a class="el" href="theory_8cpp_source.html#l00887">resolveID()</a>.</p>

<p>Referenced by <a class="el" href="theory__datatype_8cpp_source.html#l00878">CVC3::TheoryDatatype::dataType()</a>, <a class="el" href="theory_8cpp_source.html#l00647">newFunction()</a>, <a class="el" href="theory_8cpp_source.html#l00790">newTypeExpr()</a>, and <a class="el" href="theory_8cpp_source.html#l00569">newVar()</a>.</p>

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

<p>Return BOOLEAN type. </p>

<p>Reimplemented in <a class="el" href="classCVC3_1_1TheoryCore.html#a69cd86a10c207d95ded425684c5527b9">CVC3::TheoryCore</a>.</p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00918">918</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, and <a class="el" href="theory__core_8cpp_source.html#l04186">CVC3::TheoryCore::typePred()</a>.</p>

<p>Referenced by <a class="el" href="theory__bitvector_8cpp_source.html#l01861">CVC3::TheoryBitvector::assertFact()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03076">CVC3::TheoryArithOld::rewrite()</a>, and <a class="el" href="theory__arith3_8cpp_source.html#l02387">CVC3::TheoryArith3::rewrite()</a>.</p>

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

<p>==&gt; a == a </p>

<p>Definition at line <a class="el" href="theory_8h_source.html#l00673">673</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00069">d_commonRules</a>, and <a class="el" href="classCVC3_1_1CommonProofRules.html#a61c1fe56b4ed9744006883a7784ddb71">CVC3::CommonProofRules::reflexivityRule()</a>.</p>

<p>Referenced by <a class="el" href="theory__arith__new_8cpp_source.html#l03138">CVC3::TheoryArithNew::assertFact()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02922">CVC3::BitvectorTheoremProducer::bitwiseConcat()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l02318">CVC3::BitvectorTheoremProducer::bvplusZeroConcatRule()</a>, <a class="el" href="theory__core_8cpp_source.html#l00857">CVC3::TheoryCore::callTheoryPreprocess()</a>, <a class="el" href="theory__core_8cpp_source.html#l03954">CVC3::TheoryCore::collectModelValues()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00509">CVC3::TheoryUF::computeModel()</a>, <a class="el" href="theory__array_8cpp_source.html#l00939">CVC3::TheoryArray::computeModel()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04241">CVC3::BitvectorTheoremProducer::extractBVPlus()</a>, <a class="el" href="theory_8cpp_source.html#l00310">find()</a>, <a class="el" href="theory_8cpp_source.html#l00327">findReduce()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02409">CVC3::TheoryBitvector::generalBitBlast()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04687">CVC3::BitvectorTheoremProducer::liftConcatBVMult()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04924">CVC3::BitvectorTheoremProducer::liftConcatBVPlus()</a>, <a class="el" href="bitvector__theorem__producer_8cpp_source.html#l04343">CVC3::BitvectorTheoremProducer::MarkNonSolvableEq()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l02994">CVC3::TheoryArithOld::normalize()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01468">CVC3::TheoryArithNew::normalize()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02319">CVC3::TheoryArith3::normalize()</a>, <a class="el" href="theory__array_8cpp_source.html#l00345">CVC3::TheoryArray::pullIndex()</a>, <a class="el" href="expr__transform_8cpp_source.html#l00141">CVC3::ExprTransform::pushNegationRec()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00211">CVC3::TheoryUF::rewrite()</a>, <a class="el" href="theory__simulate_8cpp_source.html#l00053">CVC3::TheorySimulate::rewrite()</a>, <a class="el" href="theory__records_8cpp_source.html#l00161">CVC3::TheoryRecords::rewrite()</a>, <a class="el" href="theory__quant_8cpp_source.html#l00254">CVC3::TheoryQuant::rewrite()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00320">CVC3::TheoryDatatype::rewrite()</a>, <a class="el" href="theory__core_8cpp_source.html#l00968">CVC3::TheoryCore::rewrite()</a>, <a class="el" href="theory__array_8cpp_source.html#l00368">CVC3::TheoryArray::rewrite()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03076">CVC3::TheoryArithOld::rewrite()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01570">CVC3::TheoryArithNew::rewrite()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02387">CVC3::TheoryArith3::rewrite()</a>, <a class="el" href="theory_8h_source.html#l00159">rewrite()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02677">CVC3::TheoryBitvector::rewriteAtomic()</a>, <a class="el" href="theory_8h_source.html#l00365">rewriteAtomic()</a>, <a class="el" href="theory_8cpp_source.html#l00512">rewriteCC()</a>, <a class="el" href="theory_8cpp_source.html#l00923">rewriteIte()</a>, <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00246">CVC3::TheoryDatatypeLazy::setup()</a>, <a class="el" href="theory__array_8cpp_source.html#l00490">CVC3::TheoryArray::setup()</a>, <a class="el" href="theory_8cpp_source.html#l00459">setupCC()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l02458">CVC3::TheoryArithOld::setupRec()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01252">CVC3::TheoryArithNew::setupRec()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02001">CVC3::TheoryArith3::setupRec()</a>, <a class="el" href="theory__core_8cpp_source.html#l04260">CVC3::TheoryCore::setupTerm()</a>, <a class="el" href="theory__core_8cpp_source.html#l01292">CVC3::TheoryCore::simplifyOp()</a>, <a class="el" href="theory_8cpp_source.html#l00053">simplifyOp()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03471">CVC3::TheoryArithNew::substAndCanonizeModTableaux()</a>, <a class="el" href="theory__quant_8cpp_source.html#l02343">CVC3::TheoryQuant::theoryPreprocess()</a>, <a class="el" href="theory_8h_source.html#l00164">theoryPreprocess()</a>, and <a class="el" href="theory_8cpp_source.html#l00417">updateHelper()</a>.</p>

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

<p>a1 == a2 ==&gt; a2 == a1 </p>

<p>Definition at line <a class="el" href="theory_8h_source.html#l00677">677</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00069">d_commonRules</a>, and <a class="el" href="classCVC3_1_1CommonProofRules.html#a0a87e88508f49b73037e0024afa841bf">CVC3::CommonProofRules::symmetryRule()</a>.</p>

<p>Referenced by <a class="el" href="theory__core_8cpp_source.html#l04093">CVC3::TheoryCore::assertEqualities()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03138">CVC3::TheoryArithNew::assertFact()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02020">CVC3::TheoryArith3::assertFact()</a>, <a class="el" href="theory__core_8cpp_source.html#l03734">CVC3::TheoryCore::assignValue()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00509">CVC3::TheoryUF::computeModel()</a>, <a class="el" href="theory__array_8cpp_source.html#l00939">CVC3::TheoryArray::computeModel()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03662">CVC3::TheoryArithNew::getLowerBoundExplanation()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03749">CVC3::TheoryArithNew::getUpperBoundExplanation()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03273">CVC3::TheoryArithNew::getVariableIntroThm()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03600">CVC3::TheoryArithNew::pivotRule()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01168">CVC3::TheoryArithNew::processFiniteInterval()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l01917">CVC3::TheoryArith3::processFiniteInterval()</a>, <a class="el" href="theory__array_8cpp_source.html#l00368">CVC3::TheoryArray::rewrite()</a>, <a class="el" href="theory_8cpp_source.html#l00512">rewriteCC()</a>, <a class="el" href="theory__records_8cpp_source.html#l00508">CVC3::TheoryRecords::setup()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02366">CVC3::TheoryBitvector::simplifyPendingEq()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00425">CVC3::TheoryDatatype::solve()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02818">CVC3::TheoryBitvector::solve()</a>, <a class="el" href="theory__array_8cpp_source.html#l00718">CVC3::TheoryArray::solve()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03547">CVC3::TheoryArithOld::solve()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01805">CVC3::TheoryArithNew::solve()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02569">CVC3::TheoryArith3::solve()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00257">CVC3::TheoryUF::update()</a>, <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00267">CVC3::TheoryDatatypeLazy::update()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00359">CVC3::TheoryDatatype::update()</a>, <a class="el" href="theory__core_8cpp_source.html#l01141">CVC3::TheoryCore::update()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02695">CVC3::TheoryBitvector::update()</a>, <a class="el" href="theory__array_8cpp_source.html#l00550">CVC3::TheoryArray::update()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03390">CVC3::TheoryArithOld::update()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01769">CVC3::TheoryArithNew::update()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02534">CVC3::TheoryArith3::update()</a>, and <a class="el" href="theory_8cpp_source.html#l00473">updateCC()</a>.</p>

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

<p>(a1 == a2) &amp; (a2 == a3) ==&gt; (a1 == a3) </p>

<p>Definition at line <a class="el" href="theory_8h_source.html#l00681">681</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00069">d_commonRules</a>, and <a class="el" href="classCVC3_1_1CommonProofRules.html#a4a4e90cd69ce24e83ba2c217907c277a">CVC3::CommonProofRules::transitivityRule()</a>.</p>

<p>Referenced by <a class="el" href="theory__core_8cpp_source.html#l04093">CVC3::TheoryCore::assertEqualities()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02020">CVC3::TheoryArith3::assertFact()</a>, <a class="el" href="theory__core_8cpp_source.html#l03713">CVC3::TheoryCore::assignValue()</a>, <a class="el" href="theory__core_8cpp_source.html#l03862">CVC3::TheoryCore::buildModel()</a>, <a class="el" href="theory__core_8cpp_source.html#l00857">CVC3::TheoryCore::callTheoryPreprocess()</a>, <a class="el" href="theory__arith__old_8h_source.html#l00191">CVC3::TheoryArithOld::canonSimplify()</a>, <a class="el" href="theory__arith__new_8h_source.html#l00155">CVC3::TheoryArithNew::canonSimplify()</a>, <a class="el" href="theory__arith3_8h_source.html#l00167">CVC3::TheoryArith3::canonSimplify()</a>, <a class="el" href="theory__arith_8h_source.html#l00120">CVC3::TheoryArith::canonThm()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l02913">CVC3::TheoryArithOld::checkIntegerEquality()</a>, <a class="el" href="theory__array_8cpp_source.html#l00154">CVC3::TheoryArray::checkSat()</a>, <a class="el" href="theory__core_8cpp_source.html#l03954">CVC3::TheoryCore::collectModelValues()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02512">CVC3::TheoryBitvector::comparebv()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00509">CVC3::TheoryUF::computeModel()</a>, <a class="el" href="theory__records_8cpp_source.html#l00281">CVC3::TheoryRecords::computeModel()</a>, <a class="el" href="theory__array_8cpp_source.html#l00939">CVC3::TheoryArray::computeModel()</a>, <a class="el" href="theory_8cpp_source.html#l00310">find()</a>, <a class="el" href="theory_8cpp_source.html#l00295">findRef()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02409">CVC3::TheoryBitvector::generalBitBlast()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l04613">CVC3::TheoryArithOld::inequalityToFind()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03070">CVC3::TheoryArithOld::normalize()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01537">CVC3::TheoryArithNew::normalize()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02382">CVC3::TheoryArith3::normalize()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03600">CVC3::TheoryArithNew::pivotRule()</a>, <a class="el" href="theory__array_8cpp_source.html#l00345">CVC3::TheoryArray::pullIndex()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l02953">CVC3::TheoryArithOld::rafineInequalityToInteger()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01541">CVC3::TheoryArithNew::rafineIntegerConstraints()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00211">CVC3::TheoryUF::rewrite()</a>, <a class="el" href="theory__records_8cpp_source.html#l00161">CVC3::TheoryRecords::rewrite()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00320">CVC3::TheoryDatatype::rewrite()</a>, <a class="el" href="theory__core_8cpp_source.html#l00968">CVC3::TheoryCore::rewrite()</a>, <a class="el" href="theory__array_8cpp_source.html#l00368">CVC3::TheoryArray::rewrite()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03076">CVC3::TheoryArithOld::rewrite()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01570">CVC3::TheoryArithNew::rewrite()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02387">CVC3::TheoryArith3::rewrite()</a>, <a class="el" href="theory__bitvector_8h_source.html#l00218">CVC3::TheoryBitvector::rewriteBV()</a>, <a class="el" href="theory__records_8cpp_source.html#l00508">CVC3::TheoryRecords::setup()</a>, <a class="el" href="theory__core_8cpp_source.html#l01292">CVC3::TheoryCore::simplifyOp()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02366">CVC3::TheoryBitvector::simplifyPendingEq()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00257">CVC3::TheoryUF::update()</a>, <a class="el" href="theory__records_8cpp_source.html#l00561">CVC3::TheoryRecords::update()</a>, <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00267">CVC3::TheoryDatatypeLazy::update()</a>, <a class="el" href="theory__datatype_8cpp_source.html#l00359">CVC3::TheoryDatatype::update()</a>, <a class="el" href="theory__core_8cpp_source.html#l01141">CVC3::TheoryCore::update()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02695">CVC3::TheoryBitvector::update()</a>, <a class="el" href="theory__array_8cpp_source.html#l00550">CVC3::TheoryArray::update()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03390">CVC3::TheoryArithOld::update()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01769">CVC3::TheoryArithNew::update()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02534">CVC3::TheoryArith3::update()</a>, <a class="el" href="theory_8cpp_source.html#l00473">updateCC()</a>, and <a class="el" href="theory__bitvector_8cpp_source.html#l02791">CVC3::TheoryBitvector::updateSubterms()</a>.</p>

</div>
</div>
<a class="anchor" id="a92e2da5223d7fb620cce85b2813e047f"></a><!-- doxytag: member="CVC3::Theory::substitutivityRule" ref="a92e2da5223d7fb620cce85b2813e047f" args="(const Op &amp;op, const std::vector&lt; Theorem &gt; &amp;thms)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::Theory::substitutivityRule </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Op.html">Op</a> &amp;&#160;</td>
          <td class="paramname"><em>op</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>thms</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>(c_1 == d_1) &amp; ... &amp; (c_n == d_n) ==&gt; op(c_1,...,c_n) == op(d_1,...,d_n) </p>

<p>Definition at line <a class="el" href="theory_8h_source.html#l00686">686</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00069">d_commonRules</a>, and <a class="el" href="classCVC3_1_1CommonProofRules.html#a776c827bb6e3b889234429c49ae9ad6f">CVC3::CommonProofRules::substitutivityRule()</a>.</p>

<p>Referenced by <a class="el" href="theory__arith__new_8cpp_source.html#l03138">CVC3::TheoryArithNew::assertFact()</a>, <a class="el" href="theory__array_8cpp_source.html#l00154">CVC3::TheoryArray::checkSat()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00509">CVC3::TheoryUF::computeModel()</a>, <a class="el" href="theory__records_8cpp_source.html#l00281">CVC3::TheoryRecords::computeModel()</a>, <a class="el" href="theory__array_8cpp_source.html#l00939">CVC3::TheoryArray::computeModel()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02409">CVC3::TheoryBitvector::generalBitBlast()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03662">CVC3::TheoryArithNew::getLowerBoundExplanation()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03749">CVC3::TheoryArithNew::getUpperBoundExplanation()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l04613">CVC3::TheoryArithOld::inequalityToFind()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01168">CVC3::TheoryArithNew::processFiniteInterval()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l01917">CVC3::TheoryArith3::processFiniteInterval()</a>, <a class="el" href="theory__array_8cpp_source.html#l00345">CVC3::TheoryArray::pullIndex()</a>, <a class="el" href="theory__core_8cpp_source.html#l00968">CVC3::TheoryCore::rewrite()</a>, <a class="el" href="theory__array_8cpp_source.html#l00368">CVC3::TheoryArray::rewrite()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01570">CVC3::TheoryArithNew::rewrite()</a>, <a class="el" href="theory__records_8cpp_source.html#l00508">CVC3::TheoryRecords::setup()</a>, <a class="el" href="theory__core_8cpp_source.html#l01292">CVC3::TheoryCore::simplifyOp()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02366">CVC3::TheoryBitvector::simplifyPendingEq()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03447">CVC3::TheoryArithNew::substAndCanonizeModTableaux()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03524">CVC3::TheoryArithNew::substAndCanonizeTableaux()</a>, <a class="el" href="theory__array_8cpp_source.html#l00550">CVC3::TheoryArray::update()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03390">CVC3::TheoryArithOld::update()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01769">CVC3::TheoryArithNew::update()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02534">CVC3::TheoryArith3::update()</a>, and <a class="el" href="theory__bitvector_8cpp_source.html#l02791">CVC3::TheoryBitvector::updateSubterms()</a>.</p>

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

<p>Special case for unary operators. </p>

<p>Definition at line <a class="el" href="theory_8h_source.html#l00691">691</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00069">d_commonRules</a>, and <a class="el" href="classCVC3_1_1CommonProofRules.html#a776c827bb6e3b889234429c49ae9ad6f">CVC3::CommonProofRules::substitutivityRule()</a>.</p>

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

<p>Special case for binary operators. </p>

<p>Definition at line <a class="el" href="theory_8h_source.html#l00696">696</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00069">d_commonRules</a>, and <a class="el" href="classCVC3_1_1CommonProofRules.html#a776c827bb6e3b889234429c49ae9ad6f">CVC3::CommonProofRules::substitutivityRule()</a>.</p>

</div>
</div>
<a class="anchor" id="a8ab61a1574ac8c29db7ddb5b0d45235b"></a><!-- doxytag: member="CVC3::Theory::substitutivityRule" ref="a8ab61a1574ac8c29db7ddb5b0d45235b" args="(const Expr &amp;e, const std::vector&lt; unsigned &gt; &amp;changed, const std::vector&lt; Theorem &gt; &amp;thms)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::Theory::substitutivityRule </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; unsigned &gt; &amp;&#160;</td>
          <td class="paramname"><em>changed</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>thms</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Optimized: only positions which changed are included. </p>

<p>Definition at line <a class="el" href="theory_8h_source.html#l00702">702</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00069">d_commonRules</a>, and <a class="el" href="classCVC3_1_1CommonProofRules.html#a776c827bb6e3b889234429c49ae9ad6f">CVC3::CommonProofRules::substitutivityRule()</a>.</p>

</div>
</div>
<a class="anchor" id="a56f710c79a9b3464189e8bb4d9d8a8c2"></a><!-- doxytag: member="CVC3::Theory::substitutivityRule" ref="a56f710c79a9b3464189e8bb4d9d8a8c2" args="(const Expr &amp;e, int changed, const Theorem &amp;thm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> CVC3::Theory::substitutivityRule </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>changed</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;&#160;</td>
          <td class="paramname"><em>thm</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Optimized: only a single position changed. </p>

<p>Definition at line <a class="el" href="theory_8h_source.html#l00708">708</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00069">d_commonRules</a>, and <a class="el" href="classCVC3_1_1CommonProofRules.html#a776c827bb6e3b889234429c49ae9ad6f">CVC3::CommonProofRules::substitutivityRule()</a>.</p>

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

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

<p>Definition at line <a class="el" href="theory_8h_source.html#l00714">714</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00069">d_commonRules</a>, and <a class="el" href="classCVC3_1_1CommonProofRules.html#aebbcd4a194e4fdca0bcd16143fb03a75">CVC3::CommonProofRules::iffMP()</a>.</p>

<p>Referenced by <a class="el" href="theory__quant_8cpp_source.html#l03502">CVC3::TheoryQuant::assertFact()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03138">CVC3::TheoryArithNew::assertFact()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l02020">CVC3::TheoryArith3::assertFact()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l02913">CVC3::TheoryArithOld::checkIntegerEquality()</a>, <a class="el" href="theory__array_8cpp_source.html#l00154">CVC3::TheoryArray::checkSat()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02512">CVC3::TheoryBitvector::comparebv()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02409">CVC3::TheoryBitvector::generalBitBlast()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03662">CVC3::TheoryArithNew::getLowerBoundExplanation()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03749">CVC3::TheoryArithNew::getUpperBoundExplanation()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l04613">CVC3::TheoryArithOld::inequalityToFind()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03070">CVC3::TheoryArithOld::normalize()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03600">CVC3::TheoryArithNew::pivotRule()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01168">CVC3::TheoryArithNew::processFiniteInterval()</a>, <a class="el" href="theory__arith3_8cpp_source.html#l01917">CVC3::TheoryArith3::processFiniteInterval()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l02953">CVC3::TheoryArithOld::rafineInequalityToInteger()</a>, <a class="el" href="theory__core_8cpp_source.html#l04260">CVC3::TheoryCore::setupTerm()</a>, <a class="el" href="search__impl__base_8h_source.html#l00124">CVC3::SearchImplBase::simplify()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02366">CVC3::TheoryBitvector::simplifyPendingEq()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l02818">CVC3::TheoryBitvector::solve()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03447">CVC3::TheoryArithNew::substAndCanonizeModTableaux()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l03524">CVC3::TheoryArithNew::substAndCanonizeTableaux()</a>, <a class="el" href="theory__core_8cpp_source.html#l01141">CVC3::TheoryCore::update()</a>, <a class="el" href="theory__arith__old_8cpp_source.html#l03390">CVC3::TheoryArithOld::update()</a>, <a class="el" href="theory__arith__new_8cpp_source.html#l01769">CVC3::TheoryArithNew::update()</a>, and <a class="el" href="theory__arith3_8cpp_source.html#l02534">CVC3::TheoryArith3::update()</a>.</p>

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

<p>==&gt; AND(e1,e2) IFF [simplified expr] </p>

<p>Definition at line <a class="el" href="theory_8h_source.html#l00719">719</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00069">d_commonRules</a>, and <a class="el" href="classCVC3_1_1CommonProofRules.html#afb2ae30738c04b088459281d259a6d3a">CVC3::CommonProofRules::rewriteAnd()</a>.</p>

<p>Referenced by <a class="el" href="theory__uf_8cpp_source.html#l00591">CVC3::TheoryUF::computeTCC()</a>, <a class="el" href="theory__simulate_8cpp_source.html#l00164">CVC3::TheorySimulate::computeTCC()</a>, <a class="el" href="theory__records_8cpp_source.html#l00228">CVC3::TheoryRecords::computeTCC()</a>, <a class="el" href="theory__core_8cpp_source.html#l01650">CVC3::TheoryCore::computeTCC()</a>, <a class="el" href="theory__array_8cpp_source.html#l01041">CVC3::TheoryArray::computeTCC()</a>, <a class="el" href="theory__core_8cpp_source.html#l00968">CVC3::TheoryCore::rewrite()</a>, and <a class="el" href="theory__core_8cpp_source.html#l01292">CVC3::TheoryCore::simplifyOp()</a>.</p>

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

<p>==&gt; OR(e1,...,en) IFF [simplified expr] </p>

<p>Definition at line <a class="el" href="theory_8h_source.html#l00724">724</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00069">d_commonRules</a>, and <a class="el" href="classCVC3_1_1CommonProofRules.html#aa3cfb7d47a6d6bc84c85c7fa6a3e1242">CVC3::CommonProofRules::rewriteOr()</a>.</p>

<p>Referenced by <a class="el" href="theory__core_8cpp_source.html#l01650">CVC3::TheoryCore::computeTCC()</a>, <a class="el" href="theory__core_8cpp_source.html#l00968">CVC3::TheoryCore::rewrite()</a>, and <a class="el" href="theory__core_8cpp_source.html#l01292">CVC3::TheoryCore::simplifyOp()</a>.</p>

</div>
</div>
<a class="anchor" id="a0f2e0c6647ff6282ee2f65116a82e13b"></a><!-- doxytag: member="CVC3::Theory::rewriteIte" ref="a0f2e0c6647ff6282ee2f65116a82e13b" 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> Theory::rewriteIte </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></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Derived rule for rewriting ITE. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00923">923</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory_8h_source.html#l00069">d_commonRules</a>, <a class="el" href="theory_8h_source.html#l00673">reflexivityRule()</a>, <a class="el" href="classCVC3_1_1CommonProofRules.html#a95af3ce5ccd4212b15bac9b249004c48">CVC3::CommonProofRules::rewriteIteFalse()</a>, <a class="el" href="classCVC3_1_1CommonProofRules.html#a6cb02a9489ef5ed4e548f49bbd07439f">CVC3::CommonProofRules::rewriteIteSame()</a>, and <a class="el" href="classCVC3_1_1CommonProofRules.html#a0e770e47e947275a69b4c9f225f8beb6">CVC3::CommonProofRules::rewriteIteTrue()</a>.</p>

<p>Referenced by <a class="el" href="theory__array_8cpp_source.html#l00154">CVC3::TheoryArray::checkSat()</a>, and <a class="el" href="theory__core_8cpp_source.html#l00968">CVC3::TheoryCore::rewrite()</a>.</p>

</div>
</div>
<a class="anchor" id="a07c2391015494b5f71def510c1fb6e26"></a><!-- doxytag: member="CVC3::Theory::renameExpr" ref="a07c2391015494b5f71def510c1fb6e26" 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> Theory::renameExpr </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></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Derived rule to create a new name for an expression. </p>

<p>Definition at line <a class="el" href="theory_8cpp_source.html#l00935">935</a> of file <a class="el" href="theory_8cpp_source.html">theory.cpp</a>.</p>

<p>References <a class="el" href="theory__core_8cpp_source.html#l03756">CVC3::TheoryCore::addToVarDB()</a>, <a class="el" href="theory_8h_source.html#l00069">d_commonRules</a>, <a class="el" href="theory_8h_source.html#l00068">d_theoryCore</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="theorem_8cpp_source.html#l00224">CVC3::Theorem::isRewrite()</a>, <a class="el" href="expr_8h_source.html#l00432">CVC3::Expr::isSkolem()</a>, <a class="el" href="theorem_8h_source.html#l00404">CVC3::Theorem::toString()</a>, and <a class="el" href="classCVC3_1_1CommonProofRules.html#a10fa187373ec24079c10874d8e804ecb">CVC3::CommonProofRules::varIntroSkolem()</a>.</p>

<p>Referenced by <a class="el" href="theory__bitvector_8cpp_source.html#l02695">CVC3::TheoryBitvector::update()</a>, and <a class="el" href="theory__array_8cpp_source.html#l00550">CVC3::TheoryArray::update()</a>.</p>

</div>
</div>
<hr/><h2>Friends And Related Function Documentation</h2>
<a class="anchor" id="acaa2f18ede56d1a823f3f28bcdeccde2"></a><!-- doxytag: member="CVC3::Theory::TheoryCore" ref="acaa2f18ede56d1a823f3f28bcdeccde2" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">friend class <a class="el" href="classCVC3_1_1TheoryCore.html">TheoryCore</a><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="theory_8h_source.html#l00065">65</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

</div>
</div>
<hr/><h2>Member Data Documentation</h2>
<a class="anchor" id="ad756f41e88f25eec335c9c1c004ae61f"></a><!-- doxytag: member="CVC3::Theory::d_em" ref="ad756f41e88f25eec335c9c1c004ae61f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1ExprManager.html">ExprManager</a>* <a class="el" href="classCVC3_1_1Theory.html#ad756f41e88f25eec335c9c1c004ae61f">CVC3::Theory::d_em</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

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

<p>Referenced by <a class="el" href="theory__core_8cpp_source.html#l04093">CVC3::TheoryCore::assertEqualities()</a>, <a class="el" href="theory_8h_source.html#l00576">boolType()</a>, <a class="el" href="theory__core_8cpp_source.html#l03862">CVC3::TheoryCore::buildModel()</a>, <a class="el" href="theory__core_8cpp_source.html#l03449">CVC3::TheoryCore::computeModelBasic()</a>, <a class="el" href="theory__core_8cpp_source.html#l01471">CVC3::TheoryCore::computeType()</a>, <a class="el" href="theory_8h_source.html#l00579">falseExpr()</a>, <a class="el" href="theory_8h_source.html#l00090">getEM()</a>, <a class="el" href="theory_8cpp_source.html#l00816">newSubtypeExpr()</a>, <a class="el" href="theory_8cpp_source.html#l00569">newVar()</a>, <a class="el" href="theory__core_8cpp_source.html#l02055">CVC3::TheoryCore::print()</a>, <a class="el" href="theory__core_8cpp_source.html#l03429">CVC3::TheoryCore::refineCounterExample()</a>, <a class="el" href="theory__core_8cpp_source.html#l00698">CVC3::TheoryCore::TheoryCore()</a>, <a class="el" href="theory_8h_source.html#l00582">trueExpr()</a>, and <a class="el" href="theory__core_8cpp_source.html#l00847">CVC3::TheoryCore::~TheoryCore()</a>.</p>

</div>
</div>
<a class="anchor" id="a61d131675cc0db6a1743f1fe32b327dc"></a><!-- doxytag: member="CVC3::Theory::d_theoryCore" ref="a61d131675cc0db6a1743f1fe32b327dc" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1TheoryCore.html">TheoryCore</a>* <a class="el" href="classCVC3_1_1Theory.html#a61d131675cc0db6a1743f1fe32b327dc">CVC3::Theory::d_theoryCore</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Provides the core functionality. </p>

<p>Definition at line <a class="el" href="theory_8h_source.html#l00068">68</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

<p>Referenced by <a class="el" href="theory_8cpp_source.html#l00709">addBoundVar()</a>, <a class="el" href="theory_8cpp_source.html#l00157">addGlobalLemma()</a>, <a class="el" href="theory_8cpp_source.html#l00148">addSplitter()</a>, <a class="el" href="theory_8cpp_source.html#l00142">assertEqualities()</a>, <a class="el" href="theory_8cpp_source.html#l00162">assignValue()</a>, <a class="el" href="theory_8cpp_source.html#l00128">enqueueFact()</a>, <a class="el" href="theory_8cpp_source.html#l00134">enqueueSE()</a>, <a class="el" href="theory__core_8cpp_source.html#l04320">CVC3::TheoryCore::getAssignment()</a>, <a class="el" href="theory_8cpp_source.html#l00541">getModelValue()</a>, <a class="el" href="theory_8cpp_source.html#l00241">getNumTheories()</a>, <a class="el" href="theory_8cpp_source.html#l00367">getTCC()</a>, <a class="el" href="theory__core_8cpp_source.html#l04333">CVC3::TheoryCore::getValue()</a>, <a class="el" href="theory_8cpp_source.html#l00247">hasTheory()</a>, <a class="el" href="theory_8cpp_source.html#l00097">inconsistent()</a>, <a class="el" href="theory_8cpp_source.html#l00910">installID()</a>, <a class="el" href="theory_8cpp_source.html#l00647">newFunction()</a>, <a class="el" href="theory_8cpp_source.html#l00816">newSubtypeExpr()</a>, <a class="el" href="theory_8cpp_source.html#l00569">newVar()</a>, <a class="el" href="theory_8cpp_source.html#l00519">parseExpr()</a>, <a class="el" href="theory_8cpp_source.html#l00091">registerAtom()</a>, <a class="el" href="theory_8cpp_source.html#l00177">registerKinds()</a>, <a class="el" href="theory_8cpp_source.html#l00203">registerTheory()</a>, <a class="el" href="theory_8cpp_source.html#l00935">renameExpr()</a>, <a class="el" href="theory_8cpp_source.html#l00887">resolveID()</a>, <a class="el" href="theory_8cpp_source.html#l00112">setIncomplete()</a>, <a class="el" href="theory_8cpp_source.html#l00103">setInconsistent()</a>, <a class="el" href="theory_8cpp_source.html#l00119">simplify()</a>, <a class="el" href="theory_8cpp_source.html#l00053">simplifyOp()</a>, <a class="el" href="theory__core_8cpp_source.html#l00698">CVC3::TheoryCore::TheoryCore()</a>, <a class="el" href="theory_8h_source.html#l00093">theoryCore()</a>, <a class="el" href="theory_8cpp_source.html#l00252">theoryOf()</a>, <a class="el" href="theory_8cpp_source.html#l00918">typePred()</a>, <a class="el" href="theory_8cpp_source.html#l00190">unregisterKinds()</a>, and <a class="el" href="theory_8cpp_source.html#l00224">unregisterTheory()</a>.</p>

</div>
</div>
<a class="anchor" id="a59d055f2cf01f484ce36d56ddb82c8f8"></a><!-- doxytag: member="CVC3::Theory::d_commonRules" ref="a59d055f2cf01f484ce36d56ddb82c8f8" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1CommonProofRules.html">CommonProofRules</a>* <a class="el" href="classCVC3_1_1Theory.html#a59d055f2cf01f484ce36d56ddb82c8f8">CVC3::Theory::d_commonRules</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Commonly used proof rules. </p>

<p>Definition at line <a class="el" href="theory_8h_source.html#l00069">69</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

<p>Referenced by <a class="el" href="theory__core_8cpp_source.html#l04093">CVC3::TheoryCore::assertEqualities()</a>, <a class="el" href="theory__core_8cpp_source.html#l01220">CVC3::TheoryCore::checkSolved()</a>, <a class="el" href="theory_8cpp_source.html#l00081">computeTCC()</a>, <a class="el" href="theory_8cpp_source.html#l00327">findReduce()</a>, <a class="el" href="theory_8h_source.html#l00096">getCommonRules()</a>, <a class="el" href="theory_8h_source.html#l00714">iffMP()</a>, <a class="el" href="theory_8h_source.html#l00673">reflexivityRule()</a>, <a class="el" href="theory__core_8cpp_source.html#l03541">CVC3::TheoryCore::registerAtom()</a>, <a class="el" href="theory_8cpp_source.html#l00935">renameExpr()</a>, <a class="el" href="theory__core_8cpp_source.html#l00968">CVC3::TheoryCore::rewrite()</a>, <a class="el" href="theory_8h_source.html#l00719">rewriteAnd()</a>, <a class="el" href="theory_8cpp_source.html#l00923">rewriteIte()</a>, <a class="el" href="theory__core_8cpp_source.html#l04029">CVC3::TheoryCore::rewriteLiteral()</a>, <a class="el" href="theory_8h_source.html#l00724">rewriteOr()</a>, <a class="el" href="theory__core_8cpp_source.html#l01292">CVC3::TheoryCore::simplifyOp()</a>, <a class="el" href="theory_8cpp_source.html#l00053">simplifyOp()</a>, <a class="el" href="theory_8h_source.html#l00686">substitutivityRule()</a>, <a class="el" href="theory_8h_source.html#l00677">symmetryRule()</a>, <a class="el" href="theory__core_8cpp_source.html#l00698">CVC3::TheoryCore::TheoryCore()</a>, <a class="el" href="theory_8h_source.html#l00681">transitivityRule()</a>, <a class="el" href="theory__core_8cpp_source.html#l01141">CVC3::TheoryCore::update()</a>, and <a class="el" href="theory_8cpp_source.html#l00417">updateHelper()</a>.</p>

</div>
</div>
<a class="anchor" id="a1e1919bd500a53974258165b80119836"></a><!-- doxytag: member="CVC3::Theory::d_name" ref="a1e1919bd500a53974258165b80119836" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::string <a class="el" href="classCVC3_1_1Theory.html#a1e1919bd500a53974258165b80119836">CVC3::Theory::d_name</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Name of the theory (for debugging) </p>

<p>Definition at line <a class="el" href="theory_8h_source.html#l00070">70</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

<p>Referenced by <a class="el" href="theory_8h_source.html#l00099">getName()</a>, and <a class="el" href="theory__core_8cpp_source.html#l00698">CVC3::TheoryCore::TheoryCore()</a>.</p>

</div>
</div>
<a class="anchor" id="a262fdc338527489b376ec181ecc38ddc"></a><!-- doxytag: member="CVC3::Theory::d_theoryUsed" ref="a262fdc338527489b376ec181ecc38ddc" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classCVC3_1_1Theory.html#a262fdc338527489b376ec181ecc38ddc">CVC3::Theory::d_theoryUsed</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="theory_8h_source.html#l00079">79</a> of file <a class="el" href="theory_8h_source.html">theory.h</a>.</p>

<p>Referenced by <a class="el" href="theory__bitvector_8cpp_source.html#l04087">CVC3::TheoryBitvector::parseExprOp()</a>, <a class="el" href="theory__uf_8cpp_source.html#l00700">CVC3::TheoryUF::print()</a>, <a class="el" href="theory__simulate_8cpp_source.html#l00215">CVC3::TheorySimulate::print()</a>, <a class="el" href="theory__records_8cpp_source.html#l00584">CVC3::TheoryRecords::print()</a>, <a class="el" href="theory__quant_8cpp_source.html#l08729">CVC3::TheoryQuant::print()</a>, <a class="el" href="theory__array_8cpp_source.html#l01072">CVC3::TheoryArray::print()</a>, <a class="el" href="theory__bitvector_8cpp_source.html#l03429">CVC3::TheoryBitvector::printSmtLibShared()</a>, <a class="el" href="theory_8h_source.html#l00102">setUsed()</a>, <a class="el" href="theory__core_8cpp_source.html#l00698">CVC3::TheoryCore::TheoryCore()</a>, and <a class="el" href="theory_8h_source.html#l00104">theoryUsed()</a>.</p>

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