<!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::TheoryDatatypeLazy 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 <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 Page</span></a></li> <li><a href="pages.html"><span>Related 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 List</span></a></li> <li><a href="classes.html"><span>Class Index</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class 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_1TheoryDatatypeLazy.html">TheoryDatatypeLazy</a> </li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#pub-methods">Public Member Functions</a> | <a href="#pri-types">Private Types</a> | <a href="#pri-methods">Private Member Functions</a> | <a href="#pri-attribs">Private Attributes</a> </div> <div class="headertitle"> <div class="title">CVC3::TheoryDatatypeLazy Class Reference<div class="ingroups"><a class="el" href="group__Theories.html">Theories</a></div></div> </div> </div> <div class="contents"> <!-- doxytag: class="CVC3::TheoryDatatypeLazy" --><!-- doxytag: inherits="CVC3::TheoryDatatype" --> <p>This theory handles datatypes. <a href="classCVC3_1_1TheoryDatatypeLazy.html#details">More...</a></p> <p><code>#include <<a class="el" href="theory__datatype__lazy_8h_source.html">theory_datatype_lazy.h</a>></code></p> <div class="dynheader"> Inheritance diagram for CVC3::TheoryDatatypeLazy:</div> <div class="dyncontent"> <div class="center"> <img src="classCVC3_1_1TheoryDatatypeLazy.png" usemap="#CVC3::TheoryDatatypeLazy_map" alt=""/> <map id="CVC3::TheoryDatatypeLazy_map" name="CVC3::TheoryDatatypeLazy_map"> <area href="classCVC3_1_1TheoryDatatype.html" title="This theory handles datatypes." alt="CVC3::TheoryDatatype" shape="rect" coords="0,56,169,80"/> <area href="classCVC3_1_1Theory.html" title="Base class for theories." alt="CVC3::Theory" shape="rect" coords="0,0,169,24"/> </map> </div></div> <p><a href="classCVC3_1_1TheoryDatatypeLazy-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_1TheoryDatatypeLazy.html#ab5f0bb6ca7f6e9496e1dd54ccea09f35">TheoryDatatypeLazy</a> (<a class="el" href="classCVC3_1_1TheoryCore.html">TheoryCore</a> *theoryCore) <li><a class="el" href="classCVC3_1_1TheoryDatatypeLazy.html#a7fa0885b1cd220052db73be7be4a278d">~TheoryDatatypeLazy</a> () <li>void <a class="el" href="classCVC3_1_1TheoryDatatypeLazy.html#ad89c1890b5ed73dea2be216f5c299f6b">checkSat</a> (bool fullEffort) <dl class="el"><dd class="mdescRight">Check for satisfiability in the theory. <a href="#ad89c1890b5ed73dea2be216f5c299f6b"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1TheoryDatatypeLazy.html#ab9b700715fb9450717a3afded5a378ec">setup</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <dl class="el"><dd class="mdescRight">Set up the term e for call-backs when e or its children change. <a href="#ab9b700715fb9450717a3afded5a378ec"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1TheoryDatatypeLazy.html#a1f5719671fd527eb010fbb2a2f14e79d">update</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &e, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &d) <dl class="el"><dd class="mdescRight">Notify a theory of a new equality. <a href="#a1f5719671fd527eb010fbb2a2f14e79d"></a><br/></dl></ul> <h2><a name="pri-types"></a> Private Types</h2> <ul> <li>enum <a class="el" href="classCVC3_1_1TheoryDatatypeLazy.html#abe2ec47fb8b06ceab03d5cf6afbbe6e1">ProcessKinds</a> { <a class="el" href="classCVC3_1_1TheoryDatatypeLazy.html#abe2ec47fb8b06ceab03d5cf6afbbe6e1a1ce6ec1069f8004532be473371dee6f3">MERGE1</a> = 0, <a class="el" href="classCVC3_1_1TheoryDatatypeLazy.html#abe2ec47fb8b06ceab03d5cf6afbbe6e1a557a22ca32f3635486a5e2a1840656d7">MERGE2</a>, <a class="el" href="classCVC3_1_1TheoryDatatypeLazy.html#abe2ec47fb8b06ceab03d5cf6afbbe6e1aa194ff21850e4ccb9f0e61ba3c5b7bfb">ENQUEUE</a> } </ul> <h2><a name="pri-methods"></a> Private Member Functions</h2> <ul> <li>void <a class="el" href="classCVC3_1_1TheoryDatatypeLazy.html#a7e7f8d89852266d4a66d27c5a61237bc">instantiate</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e, const <a class="el" href="classCVC3_1_1Unsigned.html">Unsigned</a> &u) <li>void <a class="el" href="classCVC3_1_1TheoryDatatypeLazy.html#a273b34945dbc3a4f1e4e3d020a20fc88">initializeLabels</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e, const <a class="el" href="classCVC3_1_1Type.html">Type</a> &t) <li>void <a class="el" href="classCVC3_1_1TheoryDatatypeLazy.html#a59df564de13b5482c49581880e816c8f">mergeLabels</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &thm, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e1, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e2) <li>void <a class="el" href="classCVC3_1_1TheoryDatatypeLazy.html#a7e537c63d898af8fea10fb11c526ef2a">mergeLabels</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &thm, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e, unsigned position, bool positive) </ul> <h2><a name="pri-attribs"></a> Private Attributes</h2> <ul> <li><a class="el" href="classCVC3_1_1CDList.html">CDList</a>< <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> > <a class="el" href="classCVC3_1_1TheoryDatatypeLazy.html#a75042011bc9636d788c84d92c94250e7">d_processQueue</a> <li><a class="el" href="classCVC3_1_1CDList.html">CDList</a>< <a class="el" href="classCVC3_1_1TheoryDatatypeLazy.html#abe2ec47fb8b06ceab03d5cf6afbbe6e1">ProcessKinds</a> > <a class="el" href="classCVC3_1_1TheoryDatatypeLazy.html#a1f2bd4ae44724fea619151260c7c0250">d_processQueueKind</a> <li><a class="el" href="classCVC3_1_1CDO.html">CDO</a>< unsigned > <a class="el" href="classCVC3_1_1TheoryDatatypeLazy.html#afe146101faad984357b92935b04ddd41">d_processIndex</a> <li><a class="el" href="classCVC3_1_1CDO.html">CDO</a>< bool > <a class="el" href="classCVC3_1_1TheoryDatatypeLazy.html#a7b8182ac7c805444afd13e2fe3b9d970">d_typeComplete</a> </ul> <hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <div class="textblock"><p>This theory handles datatypes. </p> <p>Author: Clark Barrett</p> <p>Created: Wed Dec 1 22:27:12 2004 </p> <p>Definition at line <a class="el" href="theory__datatype__lazy_8h_source.html#l00042">42</a> of file <a class="el" href="theory__datatype__lazy_8h_source.html">theory_datatype_lazy.h</a>.</p> </div><hr/><h2>Member Enumeration Documentation</h2> <a class="anchor" id="abe2ec47fb8b06ceab03d5cf6afbbe6e1"></a><!-- doxytag: member="CVC3::TheoryDatatypeLazy::ProcessKinds" ref="abe2ec47fb8b06ceab03d5cf6afbbe6e1" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="classCVC3_1_1TheoryDatatypeLazy.html#abe2ec47fb8b06ceab03d5cf6afbbe6e1">CVC3::TheoryDatatypeLazy::ProcessKinds</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><em><a class="anchor" id="abe2ec47fb8b06ceab03d5cf6afbbe6e1a1ce6ec1069f8004532be473371dee6f3"></a><!-- doxytag: member="MERGE1" ref="abe2ec47fb8b06ceab03d5cf6afbbe6e1a1ce6ec1069f8004532be473371dee6f3" args="" -->MERGE1</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" id="abe2ec47fb8b06ceab03d5cf6afbbe6e1a557a22ca32f3635486a5e2a1840656d7"></a><!-- doxytag: member="MERGE2" ref="abe2ec47fb8b06ceab03d5cf6afbbe6e1a557a22ca32f3635486a5e2a1840656d7" args="" -->MERGE2</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" id="abe2ec47fb8b06ceab03d5cf6afbbe6e1aa194ff21850e4ccb9f0e61ba3c5b7bfb"></a><!-- doxytag: member="ENQUEUE" ref="abe2ec47fb8b06ceab03d5cf6afbbe6e1aa194ff21850e4ccb9f0e61ba3c5b7bfb" args="" -->ENQUEUE</em> </td><td> </td></tr> </table> </dd> </dl> <p>Definition at line <a class="el" href="theory__datatype__lazy_8h_source.html#l00044">44</a> of file <a class="el" href="theory__datatype__lazy_8h_source.html">theory_datatype_lazy.h</a>.</p> </div> </div> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="ab5f0bb6ca7f6e9496e1dd54ccea09f35"></a><!-- doxytag: member="CVC3::TheoryDatatypeLazy::TheoryDatatypeLazy" ref="ab5f0bb6ca7f6e9496e1dd54ccea09f35" args="(TheoryCore *theoryCore)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">TheoryDatatypeLazy::TheoryDatatypeLazy </td> <td>(</td> <td class="paramtype"><a class="el" href="classCVC3_1_1TheoryCore.html">TheoryCore</a> * </td> <td class="paramname"><em>theoryCore</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00041">41</a> of file <a class="el" href="theory__datatype__lazy_8cpp_source.html">theory_datatype_lazy.cpp</a>.</p> </div> </div> <a class="anchor" id="a7fa0885b1cd220052db73be7be4a278d"></a><!-- doxytag: member="CVC3::TheoryDatatypeLazy::~TheoryDatatypeLazy" ref="a7fa0885b1cd220052db73be7be4a278d" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">CVC3::TheoryDatatypeLazy::~TheoryDatatypeLazy </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="theory__datatype__lazy_8h_source.html#l00064">64</a> of file <a class="el" href="theory__datatype__lazy_8h_source.html">theory_datatype_lazy.h</a>.</p> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="a7e7f8d89852266d4a66d27c5a61237bc"></a><!-- doxytag: member="CVC3::TheoryDatatypeLazy::instantiate" ref="a7e7f8d89852266d4a66d27c5a61237bc" args="(const Expr &e, const Unsigned &u)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void TheoryDatatypeLazy::instantiate </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </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_1Unsigned.html">Unsigned</a> & </td> <td class="paramname"><em>u</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [private, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Reimplemented from <a class="el" href="classCVC3_1_1TheoryDatatype.html#a61b966ebd57ae1b2819f8d6ac73555f6">CVC3::TheoryDatatype</a>.</p> <p>Definition at line <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00050">50</a> of file <a class="el" href="theory__datatype__lazy_8cpp_source.html">theory_datatype_lazy.cpp</a>.</p> <p>References <a class="el" href="type_8h_source.html#l00055">CVC3::Type::arity()</a>, <a class="el" href="expr__map_8h_source.html#l00190">CVC3::ExprMap< Data >::begin()</a>, <a class="el" href="theory__datatype_8h_source.html#l00057">CVC3::TheoryDatatype::d_datatypes</a>, <a class="el" href="theory__datatype_8h_source.html#l00068">CVC3::TheoryDatatype::d_facts</a>, <a class="el" href="theory__datatype__lazy_8h_source.html#l00050">d_processQueue</a>, <a class="el" href="theory__datatype__lazy_8h_source.html#l00051">d_processQueueKind</a>, <a class="el" href="theory__datatype_8h_source.html#l00054">CVC3::TheoryDatatype::d_rules</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="classCVC3_1_1DatatypeProofRules.html#a1f1fede903939b996f001baf43ec1f17">CVC3::DatatypeProofRules::dummyTheorem()</a>, <a class="el" href="expr__map_8h_source.html#l00191">CVC3::ExprMap< Data >::end()</a>, <a class="el" href="theory__datatype__lazy_8h_source.html#l00047">ENQUEUE</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="kinds_8h_source.html#l00085">EXISTS</a>, <a class="el" href="expr__map_8h_source.html#l00194">CVC3::ExprMap< Data >::find()</a>, <a class="el" href="theory_8h_source.html#l00503">CVC3::Theory::findExpr()</a>, <a class="el" href="theory_8h_source.html#l00090">CVC3::Theory::getEM()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="expr_8h_source.html#l01232">CVC3::Expr::hasFind()</a>, <a class="el" href="theory__datatype_8h_source.html#l00136">CVC3::isConstructor()</a>, <a class="el" href="expr_8h_source.html#l01326">CVC3::Expr::isFinite()</a>, <a class="el" href="expr_8h_source.html#l01382">CVC3::Expr::isSelected()</a>, <a class="el" href="expr_8h_source.html#l01370">CVC3::Expr::isTranslated()</a>, <a class="el" href="expr_8h_source.html#l01178">CVC3::Expr::mkOp()</a>, <a class="el" href="expr__manager_8h_source.html#l00506">CVC3::ExprManager::newClosureExpr()</a>, <a class="el" href="cdlist_8h_source.html#l00066">CVC3::CDList< T >::push_back()</a>, <a class="el" href="expr_8h_source.html#l01518">CVC3::Expr::setTranslated()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="type_8h_source.html#l00080">CVC3::Type::toString()</a>.</p> <p>Referenced by <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00090">initializeLabels()</a>, and <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00123">mergeLabels()</a>.</p> </div> </div> <a class="anchor" id="a273b34945dbc3a4f1e4e3d020a20fc88"></a><!-- doxytag: member="CVC3::TheoryDatatypeLazy::initializeLabels" ref="a273b34945dbc3a4f1e4e3d020a20fc88" args="(const Expr &e, const Type &t)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void TheoryDatatypeLazy::initializeLabels </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </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_1Type.html">Type</a> & </td> <td class="paramname"><em>t</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [private, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Reimplemented from <a class="el" href="classCVC3_1_1TheoryDatatype.html#a3915e378cdf3889e9776b7f0e8c7ee15">CVC3::TheoryDatatype</a>.</p> <p>Definition at line <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00090">90</a> of file <a class="el" href="theory__datatype__lazy_8cpp_source.html">theory_datatype_lazy.cpp</a>.</p> <p>References <a class="el" href="theory__datatype_8h_source.html#l00057">CVC3::TheoryDatatype::d_datatypes</a>, <a class="el" href="theory__datatype_8h_source.html#l00066">CVC3::TheoryDatatype::d_labels</a>, <a class="el" href="theory__datatype_8h_source.html#l00069">CVC3::TheoryDatatype::d_splitters</a>, <a class="el" href="theory__datatype__lazy_8h_source.html#l00053">d_typeComplete</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="cdmap_8h_source.html#l00258">CVC3::CDMap< Key, Data, HashFcn >::end()</a>, <a class="el" href="expr__map_8h_source.html#l00191">CVC3::ExprMap< Data >::end()</a>, <a class="el" href="cdmap_8h_source.html#l00303">CVC3::CDMap< Key, Data, HashFcn >::find()</a>, <a class="el" href="expr__map_8h_source.html#l00194">CVC3::ExprMap< Data >::find()</a>, <a class="el" href="theory_8h_source.html#l00503">CVC3::Theory::findExpr()</a>, <a class="el" href="theory__datatype_8h_source.html#l00146">CVC3::getConstructor()</a>, <a class="el" href="type_8h_source.html#l00052">CVC3::Type::getExpr()</a>, <a class="el" href="cdmap_8h_source.html#l00190">CVC3::CDMap< Key, Data, HashFcn >::insert()</a>, <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00050">instantiate()</a>, <a class="el" href="theory__datatype_8h_source.html#l00136">CVC3::isConstructor()</a>, <a class="el" href="cdlist_8h_source.html#l00066">CVC3::CDList< T >::push_back()</a>, <a class="el" href="theory_8h_source.html#l00093">CVC3::Theory::theoryCore()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> <p>Referenced by <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00246">setup()</a>.</p> </div> </div> <a class="anchor" id="a59df564de13b5482c49581880e816c8f"></a><!-- doxytag: member="CVC3::TheoryDatatypeLazy::mergeLabels" ref="a59df564de13b5482c49581880e816c8f" args="(const Theorem &thm, const Expr &e1, const Expr &e2)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void TheoryDatatypeLazy::mergeLabels </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>thm</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </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> & </td> <td class="paramname"><em>e2</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [private, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Reimplemented from <a class="el" href="classCVC3_1_1TheoryDatatype.html#a942fa3974b5c4bc2f44e202a6adc80c8">CVC3::TheoryDatatype</a>.</p> <p>Definition at line <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00123">123</a> of file <a class="el" href="theory__datatype__lazy_8cpp_source.html">theory_datatype_lazy.cpp</a>.</p> <p>References <a class="el" href="theory__datatype_8h_source.html#l00068">CVC3::TheoryDatatype::d_facts</a>, <a class="el" href="theory__datatype_8h_source.html#l00066">CVC3::TheoryDatatype::d_labels</a>, <a class="el" href="theory__datatype_8h_source.html#l00054">CVC3::TheoryDatatype::d_rules</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="classCVC3_1_1DatatypeProofRules.html#a1f1fede903939b996f001baf43ec1f17">CVC3::DatatypeProofRules::dummyTheorem()</a>, <a class="el" href="cdmap_8h_source.html#l00258">CVC3::CDMap< Key, Data, HashFcn >::end()</a>, <a class="el" href="theory_8h_source.html#l00579">CVC3::Theory::falseExpr()</a>, <a class="el" href="cdmap_8h_source.html#l00303">CVC3::CDMap< Key, Data, HashFcn >::find()</a>, <a class="el" href="theory_8cpp_source.html#l00310">CVC3::Theory::find()</a>, <a class="el" href="expr_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="expr_8h_source.html#l01232">CVC3::Expr::hasFind()</a>, <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00050">instantiate()</a>, <a class="el" href="theorem_8h_source.html#l00164">CVC3::Theorem::isNull()</a>, <a class="el" href="cdlist_8h_source.html#l00066">CVC3::CDList< T >::push_back()</a>, and <a class="el" href="theory_8cpp_source.html#l00103">CVC3::Theory::setInconsistent()</a>.</p> <p>Referenced by <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00178">checkSat()</a>.</p> </div> </div> <a class="anchor" id="a7e537c63d898af8fea10fb11c526ef2a"></a><!-- doxytag: member="CVC3::TheoryDatatypeLazy::mergeLabels" ref="a7e537c63d898af8fea10fb11c526ef2a" args="(const Theorem &thm, const Expr &e, unsigned position, bool positive)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void TheoryDatatypeLazy::mergeLabels </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>thm</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned </td> <td class="paramname"><em>position</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"><em>positive</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [private, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Reimplemented from <a class="el" href="classCVC3_1_1TheoryDatatype.html#a602556d54fd1ad24a04437416613c7a4">CVC3::TheoryDatatype</a>.</p> <p>Definition at line <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00151">151</a> of file <a class="el" href="theory__datatype__lazy_8cpp_source.html">theory_datatype_lazy.cpp</a>.</p> <p>References <a class="el" href="theory__datatype_8h_source.html#l00068">CVC3::TheoryDatatype::d_facts</a>, <a class="el" href="theory__datatype_8h_source.html#l00066">CVC3::TheoryDatatype::d_labels</a>, <a class="el" href="theory__datatype_8h_source.html#l00054">CVC3::TheoryDatatype::d_rules</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="classCVC3_1_1DatatypeProofRules.html#a1f1fede903939b996f001baf43ec1f17">CVC3::DatatypeProofRules::dummyTheorem()</a>, <a class="el" href="cdmap_8h_source.html#l00258">CVC3::CDMap< Key, Data, HashFcn >::end()</a>, <a class="el" href="theory_8h_source.html#l00579">CVC3::Theory::falseExpr()</a>, <a class="el" href="cdmap_8h_source.html#l00303">CVC3::CDMap< Key, Data, HashFcn >::find()</a>, <a class="el" href="theory_8cpp_source.html#l00310">CVC3::Theory::find()</a>, <a class="el" href="expr_8h_source.html#l01232">CVC3::Expr::hasFind()</a>, <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00050">instantiate()</a>, <a class="el" href="cdlist_8h_source.html#l00066">CVC3::CDList< T >::push_back()</a>, and <a class="el" href="theory_8cpp_source.html#l00103">CVC3::Theory::setInconsistent()</a>.</p> </div> </div> <a class="anchor" id="ad89c1890b5ed73dea2be216f5c299f6b"></a><!-- doxytag: member="CVC3::TheoryDatatypeLazy::checkSat" ref="ad89c1890b5ed73dea2be216f5c299f6b" args="(bool fullEffort)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void TheoryDatatypeLazy::checkSat </td> <td>(</td> <td class="paramtype">bool </td> <td class="paramname"><em>fullEffort</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Check for satisfiability in the theory. </p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">fullEffort</td><td>when it is false, checkSat can do as much or as little work as it likes, though simple inferences and checks for consistency should be done to increase efficiency. If fullEffort is true, checkSat must check whether the set of facts given by assertFact together with the arrangement of shared terms (provided by addSharedTerm) induced by the global find database equivalence relation are satisfiable. If satisfiable, checkSat does nothing.</td></tr> </table> </dd> </dl> <p>If satisfiability can be acheived by merging some of the shared terms, a new fact must be enqueued using enqueueFact (this fact need not be a literal). If there is no way to make things satisfiable, setInconsistent must be called. </p> <p>Reimplemented from <a class="el" href="classCVC3_1_1TheoryDatatype.html#a50136aaaf32b6b42751290cb2ccfedf6">CVC3::TheoryDatatype</a>.</p> <p>Definition at line <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00178">178</a> of file <a class="el" href="theory__datatype__lazy_8cpp_source.html">theory_datatype_lazy.cpp</a>.</p> <p>References <a class="el" href="theory_8cpp_source.html#l00148">CVC3::Theory::addSplitter()</a>, <a class="el" href="expr__map_8h_source.html#l00190">CVC3::ExprMap< Data >::begin()</a>, <a class="el" href="theory__datatype_8h_source.html#l00057">CVC3::TheoryDatatype::d_datatypes</a>, <a class="el" href="theory__datatype_8h_source.html#l00068">CVC3::TheoryDatatype::d_facts</a>, <a class="el" href="theory__datatype_8h_source.html#l00066">CVC3::TheoryDatatype::d_labels</a>, <a class="el" href="theory__datatype__lazy_8h_source.html#l00052">d_processIndex</a>, <a class="el" href="theory__datatype__lazy_8h_source.html#l00050">d_processQueue</a>, <a class="el" href="theory__datatype__lazy_8h_source.html#l00051">d_processQueueKind</a>, <a class="el" href="theory__datatype_8h_source.html#l00071">CVC3::TheoryDatatype::d_splitterAsserted</a>, <a class="el" href="theory__datatype_8h_source.html#l00069">CVC3::TheoryDatatype::d_splitters</a>, <a class="el" href="theory__datatype_8h_source.html#l00070">CVC3::TheoryDatatype::d_splittersIndex</a>, <a class="el" href="theory__datatype__lazy_8h_source.html#l00053">d_typeComplete</a>, <a class="el" href="theory__datatype_8cpp_source.html#l01112">CVC3::TheoryDatatype::datatypeTestExpr()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr__map_8h_source.html#l00191">CVC3::ExprMap< Data >::end()</a>, <a class="el" href="cdmap_8h_source.html#l00258">CVC3::CDMap< Key, Data, HashFcn >::end()</a>, <a class="el" href="theory__datatype__lazy_8h_source.html#l00047">ENQUEUE</a>, <a class="el" href="theory_8cpp_source.html#l00128">CVC3::Theory::enqueueFact()</a>, <a class="el" href="expr__map_8h_source.html#l00194">CVC3::ExprMap< Data >::find()</a>, <a class="el" href="cdmap_8h_source.html#l00303">CVC3::CDMap< Key, Data, HashFcn >::find()</a>, <a class="el" href="theory_8h_source.html#l00503">CVC3::Theory::findExpr()</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#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#l01382">CVC3::Expr::isSelected()</a>, <a class="el" href="theory__datatype__lazy_8h_source.html#l00045">MERGE1</a>, <a class="el" href="theory__datatype__lazy_8h_source.html#l00046">MERGE2</a>, <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00123">mergeLabels()</a>, <a class="el" href="cdlist_8h_source.html#l00066">CVC3::CDList< T >::push_back()</a>, <a class="el" href="expr_8h_source.html#l01533">CVC3::Expr::setSelected()</a>, <a class="el" href="cdlist_8h_source.html#l00064">CVC3::CDList< T >::size()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="type_8h_source.html#l00080">CVC3::Type::toString()</a>.</p> </div> </div> <a class="anchor" id="ab9b700715fb9450717a3afded5a378ec"></a><!-- doxytag: member="CVC3::TheoryDatatypeLazy::setup" ref="ab9b700715fb9450717a3afded5a378ec" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void TheoryDatatypeLazy::setup </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Set up the term e for call-backs when e or its children change. </p> <p>setup is called once for each expression associated with the theory. It is typically used to setup theory-specific data for an expression and to add call-back information for use with update. </p> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classCVC3_1_1TheoryDatatypeLazy.html#a1f5719671fd527eb010fbb2a2f14e79d" title="Notify a theory of a new equality.">update</a> </dd></dl> <p>Reimplemented from <a class="el" href="classCVC3_1_1TheoryDatatype.html#a8825c26c5b357ec4a6fde28aaceeea44">CVC3::TheoryDatatype</a>.</p> <p>Definition at line <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00246">246</a> of file <a class="el" href="theory__datatype__lazy_8cpp_source.html">theory_datatype_lazy.cpp</a>.</p> <p>References <a class="el" href="expr_8cpp_source.html#l00517">CVC3::Expr::addToNotify()</a>, <a class="el" href="kinds_8h_source.html#l00090">APPLY</a>, <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theory__datatype_8h_source.html#l00066">CVC3::TheoryDatatype::d_labels</a>, <a class="el" href="theory__datatype__lazy_8h_source.html#l00050">d_processQueue</a>, <a class="el" href="theory__datatype__lazy_8h_source.html#l00051">d_processQueueKind</a>, <a class="el" href="theory__datatype_8h_source.html#l00054">CVC3::TheoryDatatype::d_rules</a>, <a class="el" href="theory__datatype_8h_source.html#l00035">CVC3::DATATYPE</a>, <a class="el" href="cdmap_8h_source.html#l00258">CVC3::CDMap< Key, Data, HashFcn >::end()</a>, <a class="el" href="theory__datatype__lazy_8h_source.html#l00047">ENQUEUE</a>, <a class="el" href="cdmap_8h_source.html#l00303">CVC3::CDMap< Key, Data, HashFcn >::find()</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_8h_source.html#l01259">CVC3::Expr::getType()</a>, <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00090">initializeLabels()</a>, <a class="el" href="theory__datatype_8h_source.html#l00136">CVC3::isConstructor()</a>, <a class="el" href="theory__datatype_8h_source.html#l00140">CVC3::isSelector()</a>, <a class="el" href="theory__datatype__lazy_8h_source.html#l00046">MERGE2</a>, <a class="el" href="classCVC3_1_1DatatypeProofRules.html#acbe824de0e366b711db6d23e23b72509">CVC3::DatatypeProofRules::noCycle()</a>, <a class="el" href="cdlist_8h_source.html#l00066">CVC3::CDList< T >::push_back()</a>, <a class="el" href="theory_8h_source.html#l00673">CVC3::Theory::reflexivityRule()</a>, <a class="el" href="expr_8h_source.html#l01533">CVC3::Expr::setSelected()</a>, and <a class="el" href="theory_8cpp_source.html#l00459">CVC3::Theory::setupCC()</a>.</p> </div> </div> <a class="anchor" id="a1f5719671fd527eb010fbb2a2f14e79d"></a><!-- doxytag: member="CVC3::TheoryDatatypeLazy::update" ref="a1f5719671fd527eb010fbb2a2f14e79d" args="(const Theorem &e, const Expr &d)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void TheoryDatatypeLazy::update </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </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> & </td> <td class="paramname"><em>d</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Notify a theory of a new equality. </p> <p>update is a call-back used by the notify mechanism of the core theory. It works as follows. When an equation t1 = t2 makes it into the core framework, the two find equivalence classes for t1 and t2 are merged. The result is that t2 is the new equivalence class representative and t1 is no longer an equivalence class representative. When this happens, the notify list of t1 is traversed. Notify list entries consist of a theory and an expression d. For each entry (i,d), i->update(e, d) is called, where e is the theorem corresponding to the equality t1=t2.</p> <p>To add the entry (i,d) to a term t1's notify list, a call must be made to t1.addNotify(i,d). This is typically done in setup.</p> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classCVC3_1_1TheoryDatatypeLazy.html#ab9b700715fb9450717a3afded5a378ec" title="Set up the term e for call-backs when e or its children change.">setup</a> </dd></dl> <p>Reimplemented from <a class="el" href="classCVC3_1_1TheoryDatatype.html#a4d1da766acf310b425f564027c70b8b9">CVC3::TheoryDatatype</a>.</p> <p>Definition at line <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00267">267</a> of file <a class="el" href="theory__datatype__lazy_8cpp_source.html">theory_datatype_lazy.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__datatype_8cpp_source.html#l01237">CVC3::TheoryDatatype::canCollapse()</a>, <a class="el" href="theory__datatype_8h_source.html#l00068">CVC3::TheoryDatatype::d_facts</a>, <a class="el" href="theory__datatype__lazy_8h_source.html#l00050">d_processQueue</a>, <a class="el" href="theory__datatype__lazy_8h_source.html#l00051">d_processQueueKind</a>, <a class="el" href="theory__datatype_8h_source.html#l00054">CVC3::TheoryDatatype::d_rules</a>, <a class="el" href="classCVC3_1_1DatatypeProofRules.html#a0ae4bc02188f1115e9ba2a44185b1d16">CVC3::DatatypeProofRules::decompose()</a>, <a class="el" href="theory__datatype__lazy_8h_source.html#l00047">ENQUEUE</a>, <a class="el" href="theory_8h_source.html#l00090">CVC3::Theory::getEM()</a>, <a class="el" href="theorem_8cpp_source.html#l00240">CVC3::Theorem::getLHS()</a>, <a class="el" href="expr_8h_source.html#l01191">CVC3::Expr::getOpExpr()</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__manager_8h_source.html#l00341">CVC3::ExprManager::invalidateSimpCache()</a>, <a class="el" href="expr_8h_source.html#l01014">CVC3::Expr::isApply()</a>, <a class="el" href="theory__datatype_8h_source.html#l00136">CVC3::isConstructor()</a>, <a class="el" href="theorem_8h_source.html#l00164">CVC3::Theorem::isNull()</a>, <a class="el" href="expr_8h_source.html#l01223">CVC3::Expr::isNull()</a>, <a class="el" href="theory__datatype_8h_source.html#l00140">CVC3::isSelector()</a>, <a class="el" href="theory__datatype_8h_source.html#l00143">CVC3::isTester()</a>, <a class="el" href="theory__datatype__lazy_8h_source.html#l00046">MERGE2</a>, <a class="el" href="cdlist_8h_source.html#l00066">CVC3::CDList< T >::push_back()</a>, <a class="el" href="classCVC3_1_1DatatypeProofRules.html#a8ecc9e0e858ab2da52632df61ee8a44e">CVC3::DatatypeProofRules::rewriteSelCons()</a>, <a class="el" href="classCVC3_1_1DatatypeProofRules.html#ad6df2a8a8c661ed1a1be34ce66910a36">CVC3::DatatypeProofRules::rewriteTestCons()</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">CVC3::Theory::symmetryRule()</a>, <a class="el" href="theory_8h_source.html#l00681">CVC3::Theory::transitivityRule()</a>, and <a class="el" href="theory_8cpp_source.html#l00417">CVC3::Theory::updateHelper()</a>.</p> </div> </div> <hr/><h2>Member Data Documentation</h2> <a class="anchor" id="a75042011bc9636d788c84d92c94250e7"></a><!-- doxytag: member="CVC3::TheoryDatatypeLazy::d_processQueue" ref="a75042011bc9636d788c84d92c94250e7" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1CDList.html">CDList</a><<a class="el" href="classCVC3_1_1Theorem.html">Theorem</a>> <a class="el" href="classCVC3_1_1TheoryDatatypeLazy.html#a75042011bc9636d788c84d92c94250e7">CVC3::TheoryDatatypeLazy::d_processQueue</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="theory__datatype__lazy_8h_source.html#l00050">50</a> of file <a class="el" href="theory__datatype__lazy_8h_source.html">theory_datatype_lazy.h</a>.</p> <p>Referenced by <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00178">checkSat()</a>, <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00050">instantiate()</a>, <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00246">setup()</a>, and <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00267">update()</a>.</p> </div> </div> <a class="anchor" id="a1f2bd4ae44724fea619151260c7c0250"></a><!-- doxytag: member="CVC3::TheoryDatatypeLazy::d_processQueueKind" ref="a1f2bd4ae44724fea619151260c7c0250" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1CDList.html">CDList</a><<a class="el" href="classCVC3_1_1TheoryDatatypeLazy.html#abe2ec47fb8b06ceab03d5cf6afbbe6e1">ProcessKinds</a>> <a class="el" href="classCVC3_1_1TheoryDatatypeLazy.html#a1f2bd4ae44724fea619151260c7c0250">CVC3::TheoryDatatypeLazy::d_processQueueKind</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="theory__datatype__lazy_8h_source.html#l00051">51</a> of file <a class="el" href="theory__datatype__lazy_8h_source.html">theory_datatype_lazy.h</a>.</p> <p>Referenced by <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00178">checkSat()</a>, <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00050">instantiate()</a>, <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00246">setup()</a>, and <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00267">update()</a>.</p> </div> </div> <a class="anchor" id="afe146101faad984357b92935b04ddd41"></a><!-- doxytag: member="CVC3::TheoryDatatypeLazy::d_processIndex" ref="afe146101faad984357b92935b04ddd41" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1CDO.html">CDO</a><unsigned> <a class="el" href="classCVC3_1_1TheoryDatatypeLazy.html#afe146101faad984357b92935b04ddd41">CVC3::TheoryDatatypeLazy::d_processIndex</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="theory__datatype__lazy_8h_source.html#l00052">52</a> of file <a class="el" href="theory__datatype__lazy_8h_source.html">theory_datatype_lazy.h</a>.</p> <p>Referenced by <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00178">checkSat()</a>.</p> </div> </div> <a class="anchor" id="a7b8182ac7c805444afd13e2fe3b9d970"></a><!-- doxytag: member="CVC3::TheoryDatatypeLazy::d_typeComplete" ref="a7b8182ac7c805444afd13e2fe3b9d970" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1CDO.html">CDO</a><bool> <a class="el" href="classCVC3_1_1TheoryDatatypeLazy.html#a7b8182ac7c805444afd13e2fe3b9d970">CVC3::TheoryDatatypeLazy::d_typeComplete</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="theory__datatype__lazy_8h_source.html#l00053">53</a> of file <a class="el" href="theory__datatype__lazy_8h_source.html">theory_datatype_lazy.h</a>.</p> <p>Referenced by <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00178">checkSat()</a>, and <a class="el" href="theory__datatype__lazy_8cpp_source.html#l00090">initializeLabels()</a>.</p> </div> </div> <hr/>The documentation for this class was generated from the following files:<ul> <li><a class="el" href="theory__datatype__lazy_8h_source.html">theory_datatype_lazy.h</a></li> <li><a class="el" href="theory__datatype__lazy_8cpp_source.html">theory_datatype_lazy.cpp</a></li> </ul> </div> <hr class="footer"/><address class="footer"><small>Generated on Wed Sep 7 2011 for CVC3 by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> </body> </html>