Sophie

Sophie

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

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::RecordsTheoremProducer 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_1RecordsTheoremProducer.html">RecordsTheoremProducer</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a>  </div>
  <div class="headertitle">
<div class="title">CVC3::RecordsTheoremProducer Class Reference</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="CVC3::RecordsTheoremProducer" --><!-- doxytag: inherits="CVC3::RecordsProofRules,CVC3::TheoremProducer" -->
<p><code>#include &lt;<a class="el" href="records__theorem__producer_8h_source.html">records_theorem_producer.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for CVC3::RecordsTheoremProducer:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classCVC3_1_1RecordsTheoremProducer.png" usemap="#CVC3::RecordsTheoremProducer_map" alt=""/>
  <map id="CVC3::RecordsTheoremProducer_map" name="CVC3::RecordsTheoremProducer_map">
<area href="classCVC3_1_1RecordsProofRules.html" alt="CVC3::RecordsProofRules" shape="rect" coords="0,0,201,24"/>
<area href="classCVC3_1_1TheoremProducer.html" alt="CVC3::TheoremProducer" shape="rect" coords="211,0,412,24"/>
</map>
 </div></div>

<p><a href="classCVC3_1_1RecordsTheoremProducer-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_1RecordsTheoremProducer.html#ae3c59db05725732c5cd94761d9e58862">RecordsTheoremProducer</a> (<a class="el" href="classCVC3_1_1TheoremManager.html">TheoremManager</a> *tm, <a class="el" href="classCVC3_1_1TheoryRecords.html">TheoryRecords</a> *t)
<li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#a6daf5a4886315133bf830d52c6fb010d">rewriteLitSelect</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">==&gt; (SELECT (LITERAL v1 ... vi ...) fi) = vi  <a href="#a6daf5a4886315133bf830d52c6fb010d"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#aa5d335a5684178e3553a9ce69a265046">rewriteUpdateSelect</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">==&gt; (RECORD_SELECT (RECORD_UPDATE r fi vi) fj) = vi  <a href="#aa5d335a5684178e3553a9ce69a265046"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#ae794bafd39256699bda95e85e01ffd39">rewriteLitUpdate</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">==&gt; (RECORD_UPDATE (RECORD (f1 v1) ... (fi vi) ...) fi v') =(RECORD (f1 v1) ... (fi v') ...) and same for tuples.  <a href="#ae794bafd39256699bda95e85e01ffd39"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#ab544bdb188ab71aee6632e22cd1e1384">expandEq</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;eqThrm)
<dl class="el"><dd class="mdescRight">From T|- e = e' return T|- AND (e.i = e'.i) for all i.  <a href="#ab544bdb188ab71aee6632e22cd1e1384"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#abf649085219bc8a7d787cb6dff3faa02">expandNeq</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &amp;neqThrm)
<dl class="el"><dd class="mdescRight">From T|- NOT e=e' return T|- NOT AND (e.i = e'.i) for all i.  <a href="#abf649085219bc8a7d787cb6dff3faa02"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#af56c2526f560cb39a139abe6cf2ac695">expandRecord</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Expand a record into a literal: |- e = (# f1:=e.f1, ..., fn:=e.fn #)  <a href="#af56c2526f560cb39a139abe6cf2ac695"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#a01aaea1cec3e1ccdbbdf15b597d966f4">expandTuple</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Expand a tuple into a literal: |- e = (e.0, ..., e.n-1)  <a href="#a01aaea1cec3e1ccdbbdf15b597d966f4"></a><br/></dl><li>bool <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#a58c96735d0cf8932a162fe1a4a206f37">isRecordType</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Test whether expr is a record type.  <a href="#a58c96735d0cf8932a162fe1a4a206f37"></a><br/></dl><li>bool <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#a4977723bfdf10e344ed1c516fd946cdb">isRecordType</a> (const <a class="el" href="classCVC3_1_1Type.html">Type</a> &amp;t)
<dl class="el"><dd class="mdescRight">Test whether <a class="el" href="classCVC3_1_1Type.html" title="MS C++ specific settings.">Type</a> is a record type.  <a href="#a4977723bfdf10e344ed1c516fd946cdb"></a><br/></dl><li>bool <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#ae68b804354e94823df645f71e03b9a62">isRecordAccess</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Test whether expr is a record select/update subclass.  <a href="#ae68b804354e94823df645f71e03b9a62"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#a3ab7c99b6e0525c7cbc0d3793819b2ff">recordExpr</a> (const std::vector&lt; std::string &gt; &amp;fields, const std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;kids)
<dl class="el"><dd class="mdescRight">Create a record literal.  <a href="#a3ab7c99b6e0525c7cbc0d3793819b2ff"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#a616604275fb8ec78e77d7124cf11cc4c">recordExpr</a> (const std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;fields, const std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;kids)
<dl class="el"><dd class="mdescRight">Create a record literal.  <a href="#a616604275fb8ec78e77d7124cf11cc4c"></a><br/></dl><li><a class="el" href="classCVC3_1_1Type.html">Type</a> <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#abb8b17796882d077d7e5f7c948092c99">recordType</a> (const std::vector&lt; std::string &gt; &amp;fields, const std::vector&lt; <a class="el" href="classCVC3_1_1Type.html">Type</a> &gt; &amp;types)
<dl class="el"><dd class="mdescRight">Create a record type.  <a href="#abb8b17796882d077d7e5f7c948092c99"></a><br/></dl><li><a class="el" href="classCVC3_1_1Type.html">Type</a> <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#aa979f814d7a6a303db5dc7df37e55d37">recordType</a> (const std::vector&lt; std::string &gt; &amp;fields, const std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;types)
<dl class="el"><dd class="mdescRight">Create a record type (field types are given as a vector of <a class="el" href="classCVC3_1_1Expr.html" title="Data structure of expressions in CVC3.">Expr</a>)  <a href="#aa979f814d7a6a303db5dc7df37e55d37"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#aed507ebecfef1025611db992ab56f742">recordSelect</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;r, const std::string &amp;field)
<dl class="el"><dd class="mdescRight">Create a record field select expression.  <a href="#aed507ebecfef1025611db992ab56f742"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#af3aa58710dd1e1adda7e9d44034a1c59">recordUpdate</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;r, const std::string &amp;field, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;val)
<dl class="el"><dd class="mdescRight">Create a record field update expression.  <a href="#af3aa58710dd1e1adda7e9d44034a1c59"></a><br/></dl><li>const std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp; <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#a08633fbeae1c47829a4c9bdd7a41fe7d">getFields</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;r)
<dl class="el"><dd class="mdescRight">Get the list of fields from a record literal.  <a href="#a08633fbeae1c47829a4c9bdd7a41fe7d"></a><br/></dl><li>const std::string &amp; <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#aa2c1c602fa7852e2763a302a762e603a">getField</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, int i)
<dl class="el"><dd class="mdescRight">Get the i-th field name from the record literal or type.  <a href="#aa2c1c602fa7852e2763a302a762e603a"></a><br/></dl><li>int <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#a9f85306f8dae0320b9e40ff28b01c9bc">getFieldIndex</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e, const std::string &amp;field)
<dl class="el"><dd class="mdescRight">Get the field index in the record literal or type.  <a href="#a9f85306f8dae0320b9e40ff28b01c9bc"></a><br/></dl><li>const std::string &amp; <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#a6a0dfc215413b8abc6ec4ff7e7cd12d1">getField</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Get the field name from the record select and update expressions.  <a href="#a6a0dfc215413b8abc6ec4ff7e7cd12d1"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#a960fee8c9325fad718a8be238875d5b8">tupleExpr</a> (const std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;kids)
<dl class="el"><dd class="mdescRight">Create a tuple literal.  <a href="#a960fee8c9325fad718a8be238875d5b8"></a><br/></dl><li><a class="el" href="classCVC3_1_1Type.html">Type</a> <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#a413511978f60a7e1f54cd186bca87442">tupleType</a> (const std::vector&lt; <a class="el" href="classCVC3_1_1Type.html">Type</a> &gt; &amp;types)
<dl class="el"><dd class="mdescRight">Create a tuple type.  <a href="#a413511978f60a7e1f54cd186bca87442"></a><br/></dl><li><a class="el" href="classCVC3_1_1Type.html">Type</a> <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#a3ad57212a5d742b61ecb5070241e77b4">tupleType</a> (const std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;types)
<dl class="el"><dd class="mdescRight">Create a tuple type (types of components are given as Exprs)  <a href="#a3ad57212a5d742b61ecb5070241e77b4"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#a24701af52ba0f642726415dde80b76a0">tupleSelect</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;tup, int i)
<dl class="el"><dd class="mdescRight">Create a tuple index selector expression.  <a href="#a24701af52ba0f642726415dde80b76a0"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#a406e3f4f7bb74f88a15a6dd0c0b840fe">tupleUpdate</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;tup, int i, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;val)
<dl class="el"><dd class="mdescRight">Create a tuple index update expression.  <a href="#a406e3f4f7bb74f88a15a6dd0c0b840fe"></a><br/></dl><li>int <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#a7bff3a1cf4d8a59fe856fdcc03ac001b">getIndex</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Get the index from the tuple select and update expressions.  <a href="#a7bff3a1cf4d8a59fe856fdcc03ac001b"></a><br/></dl><li>bool <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#a89194281ebd13904ef0a1ca3af913768">isTupleAccess</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;e)
<dl class="el"><dd class="mdescRight">Test whether expr is a tuple select/update subclass.  <a href="#a89194281ebd13904ef0a1ca3af913768"></a><br/></dl></ul>
<h2><a name="pri-attribs"></a>
Private Attributes</h2>
<ul>
<li><a class="el" href="classCVC3_1_1TheoryRecords.html">TheoryRecords</a> * <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#ac6f50b4b5349eeb108350de0a0a4d966">d_theoryRecords</a>
</ul>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock">
<p>Definition at line <a class="el" href="records__theorem__producer_8h_source.html#l00029">29</a> of file <a class="el" href="records__theorem__producer_8h_source.html">records_theorem_producer.h</a>.</p>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ae3c59db05725732c5cd94761d9e58862"></a><!-- doxytag: member="CVC3::RecordsTheoremProducer::RecordsTheoremProducer" ref="ae3c59db05725732c5cd94761d9e58862" args="(TheoremManager *tm, TheoryRecords *t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CVC3::RecordsTheoremProducer::RecordsTheoremProducer </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classCVC3_1_1TheoremManager.html">TheoremManager</a> *&#160;</td>
          <td class="paramname"><em>tm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classCVC3_1_1TheoryRecords.html">TheoryRecords</a> *&#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>Definition at line <a class="el" href="records__theorem__producer_8h_source.html#l00035">35</a> of file <a class="el" href="records__theorem__producer_8h_source.html">records_theorem_producer.h</a>.</p>

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

<p>==&gt; (SELECT (LITERAL v1 ... vi ...) fi) = vi </p>

<p>Implements <a class="el" href="classCVC3_1_1RecordsProofRules.html#a3e3add607e89398f2cc6cc38ea99d1ff">CVC3::RecordsProofRules</a>.</p>

<p>Definition at line <a class="el" href="records__theorem__producer_8cpp_source.html#l00040">40</a> of file <a class="el" href="records__theorem__producer_8cpp_source.html">records_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__records_8h_source.html#l00030">CVC3::RECORD</a>, <a class="el" href="theory__records_8h_source.html#l00031">CVC3::RECORD_SELECT</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, <a class="el" href="theory__records_8h_source.html#l00034">CVC3::TUPLE</a>, and <a class="el" href="theory__records_8h_source.html#l00035">CVC3::TUPLE_SELECT</a>.</p>

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

<p>==&gt; (RECORD_SELECT (RECORD_UPDATE r fi vi) fj) = vi </p>

<p>Implements <a class="el" href="classCVC3_1_1RecordsProofRules.html#aa89519b074a161d4709cc57c72be9877">CVC3::RecordsProofRules</a>.</p>

<p>Definition at line <a class="el" href="records__theorem__producer_8cpp_source.html#l00081">81</a> of file <a class="el" href="records__theorem__producer_8cpp_source.html">records_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__records_8h_source.html#l00031">CVC3::RECORD_SELECT</a>, <a class="el" href="theory__records_8h_source.html#l00032">CVC3::RECORD_UPDATE</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, <a class="el" href="theory__records_8h_source.html#l00035">CVC3::TUPLE_SELECT</a>, and <a class="el" href="theory__records_8h_source.html#l00036">CVC3::TUPLE_UPDATE</a>.</p>

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

<p>==&gt; (RECORD_UPDATE (RECORD (f1 v1) ... (fi vi) ...) fi v') =(RECORD (f1 v1) ... (fi v') ...) and same for tuples. </p>

<p>Implements <a class="el" href="classCVC3_1_1RecordsProofRules.html#a123d754579587119040963036a57b20c">CVC3::RecordsProofRules</a>.</p>

<p>Definition at line <a class="el" href="records__theorem__producer_8cpp_source.html#l00120">120</a> of file <a class="el" href="records__theorem__producer_8cpp_source.html">records_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l01162">CVC3::Expr::getKids()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theory__records_8h_source.html#l00030">CVC3::RECORD</a>, <a class="el" href="theory__records_8h_source.html#l00032">CVC3::RECORD_UPDATE</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, <a class="el" href="theory__records_8h_source.html#l00034">CVC3::TUPLE</a>, and <a class="el" href="theory__records_8h_source.html#l00036">CVC3::TUPLE_UPDATE</a>.</p>

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

<p>From T|- e = e' return T|- AND (e.i = e'.i) for all i. </p>

<p>Implements <a class="el" href="classCVC3_1_1RecordsProofRules.html#a70d657a0ff820b3276c88d4208b2c6d7">CVC3::RecordsProofRules</a>.</p>

<p>Definition at line <a class="el" href="records__theorem__producer_8cpp_source.html#l00205">205</a> of file <a class="el" href="records__theorem__producer_8cpp_source.html">records_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l00945">CVC3::andExpr()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00240">CVC3::Theorem::getLHS()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="expr_8h_source.html#l00965">CVC3::Expr::iffExpr()</a>, <a class="el" href="type_8h_source.html#l00060">CVC3::Type::isBool()</a>, <a class="el" href="theorem_8cpp_source.html#l00224">CVC3::Theorem::isRewrite()</a>, <a class="el" href="theory__records_8h_source.html#l00033">CVC3::RECORD_TYPE</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theory__records_8h_source.html#l00037">CVC3::TUPLE_TYPE</a>.</p>

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

<p>From T|- NOT e=e' return T|- NOT AND (e.i = e'.i) for all i. </p>

<p>Implements <a class="el" href="classCVC3_1_1RecordsProofRules.html#a4194c198132271ad4119723310acd1df">CVC3::RecordsProofRules</a>.</p>

<p>Definition at line <a class="el" href="records__theorem__producer_8cpp_source.html#l00158">158</a> of file <a class="el" href="records__theorem__producer_8cpp_source.html">records_theorem_producer.cpp</a>.</p>

<p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="kinds_8h_source.html#l00061">EQ</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01196">CVC3::Expr::getOpKind()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="expr_8h_source.html#l00965">CVC3::Expr::iffExpr()</a>, <a class="el" href="type_8h_source.html#l00060">CVC3::Type::isBool()</a>, <a class="el" href="kinds_8h_source.html#l00066">NOT</a>, <a class="el" href="expr_8h_source.html#l00955">CVC3::orExpr()</a>, <a class="el" href="theory__records_8h_source.html#l00033">CVC3::RECORD_TYPE</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theory__records_8h_source.html#l00037">CVC3::TUPLE_TYPE</a>.</p>

</div>
</div>
<a class="anchor" id="af56c2526f560cb39a139abe6cf2ac695"></a><!-- doxytag: member="CVC3::RecordsTheoremProducer::expandRecord" ref="af56c2526f560cb39a139abe6cf2ac695" 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> RecordsTheoremProducer::expandRecord </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>Expand a record into a literal: |- e = (# f1:=e.f1, ..., fn:=e.fn #) </p>

<p>Implements <a class="el" href="classCVC3_1_1RecordsProofRules.html#ab813be2b9919eae3952a0f0a73ed5e3a">CVC3::RecordsProofRules</a>.</p>

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

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

</div>
</div>
<a class="anchor" id="a01aaea1cec3e1ccdbbdf15b597d966f4"></a><!-- doxytag: member="CVC3::RecordsTheoremProducer::expandTuple" ref="a01aaea1cec3e1ccdbbdf15b597d966f4" 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> RecordsTheoremProducer::expandTuple </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>Expand a tuple into a literal: |- e = (e.0, ..., e.n-1) </p>

<p>Implements <a class="el" href="classCVC3_1_1RecordsProofRules.html#a249e1cab39dd671e11f775b8f9658629">CVC3::RecordsProofRules</a>.</p>

<p>Definition at line <a class="el" href="records__theorem__producer_8cpp_source.html#l00269">269</a> of file <a class="el" href="records__theorem__producer_8cpp_source.html">records_theorem_producer.cpp</a>.</p>

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

</div>
</div>
<a class="anchor" id="a58c96735d0cf8932a162fe1a4a206f37"></a><!-- doxytag: member="CVC3::RecordsTheoremProducer::isRecordType" ref="a58c96735d0cf8932a162fe1a4a206f37" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool CVC3::RecordsTheoremProducer::isRecordType </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 whether expr is a record type. </p>

<p>Definition at line <a class="el" href="records__theorem__producer_8h_source.html#l00047">47</a> of file <a class="el" href="records__theorem__producer_8h_source.html">records_theorem_producer.h</a>.</p>

<p>References <a class="el" href="records__theorem__producer_8h_source.html#l00031">d_theoryRecords</a>, and <a class="el" href="theory__records_8h_source.html#l00095">CVC3::TheoryRecords::isRecordType()</a>.</p>

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

<p>Test whether <a class="el" href="classCVC3_1_1Type.html" title="MS C++ specific settings.">Type</a> is a record type. </p>

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

<p>References <a class="el" href="records__theorem__producer_8h_source.html#l00031">d_theoryRecords</a>, and <a class="el" href="theory__records_8h_source.html#l00095">CVC3::TheoryRecords::isRecordType()</a>.</p>

</div>
</div>
<a class="anchor" id="ae68b804354e94823df645f71e03b9a62"></a><!-- doxytag: member="CVC3::RecordsTheoremProducer::isRecordAccess" ref="ae68b804354e94823df645f71e03b9a62" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool CVC3::RecordsTheoremProducer::isRecordAccess </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 whether expr is a record select/update subclass. </p>

<p>Definition at line <a class="el" href="records__theorem__producer_8h_source.html#l00053">53</a> of file <a class="el" href="records__theorem__producer_8h_source.html">records_theorem_producer.h</a>.</p>

<p>References <a class="el" href="records__theorem__producer_8h_source.html#l00031">d_theoryRecords</a>, and <a class="el" href="theory__records_8h_source.html#l00103">CVC3::TheoryRecords::isRecordAccess()</a>.</p>

</div>
</div>
<a class="anchor" id="a3ab7c99b6e0525c7cbc0d3793819b2ff"></a><!-- doxytag: member="CVC3::RecordsTheoremProducer::recordExpr" ref="a3ab7c99b6e0525c7cbc0d3793819b2ff" args="(const std::vector&lt; std::string &gt; &amp;fields, const std::vector&lt; Expr &gt; &amp;kids)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> CVC3::RecordsTheoremProducer::recordExpr </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; std::string &gt; &amp;&#160;</td>
          <td class="paramname"><em>fields</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>kids</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a record literal. </p>

<p>Definition at line <a class="el" href="records__theorem__producer_8h_source.html#l00056">56</a> of file <a class="el" href="records__theorem__producer_8h_source.html">records_theorem_producer.h</a>.</p>

<p>References <a class="el" href="records__theorem__producer_8h_source.html#l00031">d_theoryRecords</a>, and <a class="el" href="theory__records_8cpp_source.html#l00961">CVC3::TheoryRecords::recordExpr()</a>.</p>

</div>
</div>
<a class="anchor" id="a616604275fb8ec78e77d7124cf11cc4c"></a><!-- doxytag: member="CVC3::RecordsTheoremProducer::recordExpr" ref="a616604275fb8ec78e77d7124cf11cc4c" args="(const std::vector&lt; Expr &gt; &amp;fields, const std::vector&lt; Expr &gt; &amp;kids)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> CVC3::RecordsTheoremProducer::recordExpr </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>fields</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>kids</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a record literal. </p>

<p>Definition at line <a class="el" href="records__theorem__producer_8h_source.html#l00060">60</a> of file <a class="el" href="records__theorem__producer_8h_source.html">records_theorem_producer.h</a>.</p>

<p>References <a class="el" href="records__theorem__producer_8h_source.html#l00031">d_theoryRecords</a>, and <a class="el" href="theory__records_8cpp_source.html#l00961">CVC3::TheoryRecords::recordExpr()</a>.</p>

</div>
</div>
<a class="anchor" id="abb8b17796882d077d7e5f7c948092c99"></a><!-- doxytag: member="CVC3::RecordsTheoremProducer::recordType" ref="abb8b17796882d077d7e5f7c948092c99" args="(const std::vector&lt; std::string &gt; &amp;fields, const std::vector&lt; Type &gt; &amp;types)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Type.html">Type</a> CVC3::RecordsTheoremProducer::recordType </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; std::string &gt; &amp;&#160;</td>
          <td class="paramname"><em>fields</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="classCVC3_1_1Type.html">Type</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>types</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a record type. </p>

<p>Definition at line <a class="el" href="records__theorem__producer_8h_source.html#l00064">64</a> of file <a class="el" href="records__theorem__producer_8h_source.html">records_theorem_producer.h</a>.</p>

<p>References <a class="el" href="records__theorem__producer_8h_source.html#l00031">d_theoryRecords</a>, and <a class="el" href="theory__records_8cpp_source.html#l00977">CVC3::TheoryRecords::recordType()</a>.</p>

</div>
</div>
<a class="anchor" id="aa979f814d7a6a303db5dc7df37e55d37"></a><!-- doxytag: member="CVC3::RecordsTheoremProducer::recordType" ref="aa979f814d7a6a303db5dc7df37e55d37" args="(const std::vector&lt; std::string &gt; &amp;fields, const std::vector&lt; Expr &gt; &amp;types)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Type.html">Type</a> CVC3::RecordsTheoremProducer::recordType </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; std::string &gt; &amp;&#160;</td>
          <td class="paramname"><em>fields</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>types</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a record type (field types are given as a vector of <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="records__theorem__producer_8h_source.html#l00068">68</a> of file <a class="el" href="records__theorem__producer_8h_source.html">records_theorem_producer.h</a>.</p>

<p>References <a class="el" href="records__theorem__producer_8h_source.html#l00031">d_theoryRecords</a>, and <a class="el" href="theory__records_8cpp_source.html#l00977">CVC3::TheoryRecords::recordType()</a>.</p>

</div>
</div>
<a class="anchor" id="aed507ebecfef1025611db992ab56f742"></a><!-- doxytag: member="CVC3::RecordsTheoremProducer::recordSelect" ref="aed507ebecfef1025611db992ab56f742" args="(const Expr &amp;r, const std::string &amp;field)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> CVC3::RecordsTheoremProducer::recordSelect </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>r</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>field</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a record field select expression. </p>

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

<p>References <a class="el" href="records__theorem__producer_8h_source.html#l00031">d_theoryRecords</a>, and <a class="el" href="theory__records_8cpp_source.html#l01004">CVC3::TheoryRecords::recordSelect()</a>.</p>

</div>
</div>
<a class="anchor" id="af3aa58710dd1e1adda7e9d44034a1c59"></a><!-- doxytag: member="CVC3::RecordsTheoremProducer::recordUpdate" ref="af3aa58710dd1e1adda7e9d44034a1c59" args="(const Expr &amp;r, const std::string &amp;field, const Expr &amp;val)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> CVC3::RecordsTheoremProducer::recordUpdate </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &amp;&#160;</td>
          <td class="paramname"><em>r</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>field</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> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a record field update expression. </p>

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

<p>References <a class="el" href="records__theorem__producer_8h_source.html#l00031">d_theoryRecords</a>, and <a class="el" href="theory__records_8cpp_source.html#l01010">CVC3::TheoryRecords::recordUpdate()</a>.</p>

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

<p>Get the list of fields from a record literal. </p>

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

<p>References <a class="el" href="records__theorem__producer_8h_source.html#l00031">d_theoryRecords</a>, and <a class="el" href="theory__records_8cpp_source.html#l01017">CVC3::TheoryRecords::getFields()</a>.</p>

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

<p>Get the i-th field name from the record literal or type. </p>

<p>Definition at line <a class="el" href="records__theorem__producer_8h_source.html#l00082">82</a> of file <a class="el" href="records__theorem__producer_8h_source.html">records_theorem_producer.h</a>.</p>

<p>References <a class="el" href="records__theorem__producer_8h_source.html#l00031">d_theoryRecords</a>, and <a class="el" href="theory__records_8cpp_source.html#l01027">CVC3::TheoryRecords::getField()</a>.</p>

</div>
</div>
<a class="anchor" id="a9f85306f8dae0320b9e40ff28b01c9bc"></a><!-- doxytag: member="CVC3::RecordsTheoremProducer::getFieldIndex" ref="a9f85306f8dae0320b9e40ff28b01c9bc" args="(const Expr &amp;e, const std::string &amp;field)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int CVC3::RecordsTheoremProducer::getFieldIndex </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::string &amp;&#160;</td>
          <td class="paramname"><em>field</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the field index in the record literal or type. </p>
<p>The field must be present in the record; otherwise it's an error. </p>

<p>Definition at line <a class="el" href="records__theorem__producer_8h_source.html#l00086">86</a> of file <a class="el" href="records__theorem__producer_8h_source.html">records_theorem_producer.h</a>.</p>

<p>References <a class="el" href="records__theorem__producer_8h_source.html#l00031">d_theoryRecords</a>, and <a class="el" href="theory__records_8cpp_source.html#l01037">CVC3::TheoryRecords::getFieldIndex()</a>.</p>

</div>
</div>
<a class="anchor" id="a6a0dfc215413b8abc6ec4ff7e7cd12d1"></a><!-- doxytag: member="CVC3::RecordsTheoremProducer::getField" ref="a6a0dfc215413b8abc6ec4ff7e7cd12d1" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const std::string&amp; CVC3::RecordsTheoremProducer::getField </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>Get the field name from the record select and update expressions. </p>

<p>Definition at line <a class="el" href="records__theorem__producer_8h_source.html#l00089">89</a> of file <a class="el" href="records__theorem__producer_8h_source.html">records_theorem_producer.h</a>.</p>

<p>References <a class="el" href="records__theorem__producer_8h_source.html#l00031">d_theoryRecords</a>, and <a class="el" href="theory__records_8cpp_source.html#l01027">CVC3::TheoryRecords::getField()</a>.</p>

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

<p>Create a tuple literal. </p>

<p>Definition at line <a class="el" href="records__theorem__producer_8h_source.html#l00092">92</a> of file <a class="el" href="records__theorem__producer_8h_source.html">records_theorem_producer.h</a>.</p>

<p>References <a class="el" href="records__theorem__producer_8h_source.html#l00031">d_theoryRecords</a>, and <a class="el" href="theory__records_8cpp_source.html#l01058">CVC3::TheoryRecords::tupleExpr()</a>.</p>

</div>
</div>
<a class="anchor" id="a413511978f60a7e1f54cd186bca87442"></a><!-- doxytag: member="CVC3::RecordsTheoremProducer::tupleType" ref="a413511978f60a7e1f54cd186bca87442" args="(const std::vector&lt; Type &gt; &amp;types)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1Type.html">Type</a> CVC3::RecordsTheoremProducer::tupleType </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="classCVC3_1_1Type.html">Type</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>types</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a tuple type. </p>

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

<p>References <a class="el" href="records__theorem__producer_8h_source.html#l00031">d_theoryRecords</a>, and <a class="el" href="theory__records_8cpp_source.html#l01064">CVC3::TheoryRecords::tupleType()</a>.</p>

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

<p>Create a tuple type (types of components are given as Exprs) </p>

<p>Definition at line <a class="el" href="records__theorem__producer_8h_source.html#l00098">98</a> of file <a class="el" href="records__theorem__producer_8h_source.html">records_theorem_producer.h</a>.</p>

<p>References <a class="el" href="records__theorem__producer_8h_source.html#l00031">d_theoryRecords</a>, and <a class="el" href="theory__records_8cpp_source.html#l01064">CVC3::TheoryRecords::tupleType()</a>.</p>

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

<p>Create a tuple index selector expression. </p>

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

<p>References <a class="el" href="records__theorem__producer_8h_source.html#l00031">d_theoryRecords</a>, and <a class="el" href="theory__records_8cpp_source.html#l01080">CVC3::TheoryRecords::tupleSelect()</a>.</p>

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

<p>Create a tuple index update expression. </p>

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

<p>References <a class="el" href="records__theorem__producer_8h_source.html#l00031">d_theoryRecords</a>, and <a class="el" href="theory__records_8cpp_source.html#l01086">CVC3::TheoryRecords::tupleUpdate()</a>.</p>

</div>
</div>
<a class="anchor" id="a7bff3a1cf4d8a59fe856fdcc03ac001b"></a><!-- doxytag: member="CVC3::RecordsTheoremProducer::getIndex" ref="a7bff3a1cf4d8a59fe856fdcc03ac001b" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int CVC3::RecordsTheoremProducer::getIndex </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>Get the index from the tuple select and update expressions. </p>

<p>Definition at line <a class="el" href="records__theorem__producer_8h_source.html#l00107">107</a> of file <a class="el" href="records__theorem__producer_8h_source.html">records_theorem_producer.h</a>.</p>

<p>References <a class="el" href="records__theorem__producer_8h_source.html#l00031">d_theoryRecords</a>, and <a class="el" href="theory__records_8cpp_source.html#l01092">CVC3::TheoryRecords::getIndex()</a>.</p>

</div>
</div>
<a class="anchor" id="a89194281ebd13904ef0a1ca3af913768"></a><!-- doxytag: member="CVC3::RecordsTheoremProducer::isTupleAccess" ref="a89194281ebd13904ef0a1ca3af913768" args="(const Expr &amp;e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool CVC3::RecordsTheoremProducer::isTupleAccess </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 whether expr is a tuple select/update subclass. </p>

<p>Definition at line <a class="el" href="records__theorem__producer_8h_source.html#l00110">110</a> of file <a class="el" href="records__theorem__producer_8h_source.html">records_theorem_producer.h</a>.</p>

<p>References <a class="el" href="records__theorem__producer_8h_source.html#l00031">d_theoryRecords</a>, and <a class="el" href="theory__records_8h_source.html#l00147">CVC3::TheoryRecords::isTupleAccess()</a>.</p>

</div>
</div>
<hr/><h2>Member Data Documentation</h2>
<a class="anchor" id="ac6f50b4b5349eeb108350de0a0a4d966"></a><!-- doxytag: member="CVC3::RecordsTheoremProducer::d_theoryRecords" ref="ac6f50b4b5349eeb108350de0a0a4d966" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCVC3_1_1TheoryRecords.html">TheoryRecords</a>* <a class="el" href="classCVC3_1_1RecordsTheoremProducer.html#ac6f50b4b5349eeb108350de0a0a4d966">CVC3::RecordsTheoremProducer::d_theoryRecords</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

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

<p>Referenced by <a class="el" href="records__theorem__producer_8h_source.html#l00082">getField()</a>, <a class="el" href="records__theorem__producer_8h_source.html#l00086">getFieldIndex()</a>, <a class="el" href="records__theorem__producer_8h_source.html#l00079">getFields()</a>, <a class="el" href="records__theorem__producer_8h_source.html#l00107">getIndex()</a>, <a class="el" href="records__theorem__producer_8h_source.html#l00053">isRecordAccess()</a>, <a class="el" href="records__theorem__producer_8h_source.html#l00047">isRecordType()</a>, <a class="el" href="records__theorem__producer_8h_source.html#l00110">isTupleAccess()</a>, <a class="el" href="records__theorem__producer_8h_source.html#l00056">recordExpr()</a>, <a class="el" href="records__theorem__producer_8h_source.html#l00072">recordSelect()</a>, <a class="el" href="records__theorem__producer_8h_source.html#l00064">recordType()</a>, <a class="el" href="records__theorem__producer_8h_source.html#l00075">recordUpdate()</a>, <a class="el" href="records__theorem__producer_8h_source.html#l00092">tupleExpr()</a>, <a class="el" href="records__theorem__producer_8h_source.html#l00101">tupleSelect()</a>, <a class="el" href="records__theorem__producer_8h_source.html#l00095">tupleType()</a>, and <a class="el" href="records__theorem__producer_8h_source.html#l00104">tupleUpdate()</a>.</p>

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