<!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: cnf.h Source File</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><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>File Members</span></a></li> </ul> </div> <div class="header"> <div class="headertitle"> <div class="title">cnf.h</div> </div> </div> <div class="contents"> <a href="cnf_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*****************************************************************************/</span><span class="comment"></span> <a name="l00002"></a>00002 <span class="comment">/*!</span> <a name="l00003"></a>00003 <span class="comment"> *\file cnf.h</span> <a name="l00004"></a>00004 <span class="comment"> *\brief Basic classes for reasoning about formulas in CNF</span> <a name="l00005"></a>00005 <span class="comment"> *</span> <a name="l00006"></a>00006 <span class="comment"> * Author: Clark Barrett</span> <a name="l00007"></a>00007 <span class="comment"> *</span> <a name="l00008"></a>00008 <span class="comment"> * Created: Mon Dec 12 20:32:33 2005</span> <a name="l00009"></a>00009 <span class="comment"> *</span> <a name="l00010"></a>00010 <span class="comment"> * <hr></span> <a name="l00011"></a>00011 <span class="comment"> *</span> <a name="l00012"></a>00012 <span class="comment"> * License to use, copy, modify, sell and/or distribute this software</span> <a name="l00013"></a>00013 <span class="comment"> * and its documentation for any purpose is hereby granted without</span> <a name="l00014"></a>00014 <span class="comment"> * royalty, subject to the terms and conditions defined in the \ref</span> <a name="l00015"></a>00015 <span class="comment"> * LICENSE file provided with this distribution.</span> <a name="l00016"></a>00016 <span class="comment"> * </span> <a name="l00017"></a>00017 <span class="comment"> * <hr></span> <a name="l00018"></a>00018 <span class="comment"> */</span> <a name="l00019"></a>00019 <span class="comment">/*****************************************************************************/</span> <a name="l00020"></a>00020 <a name="l00021"></a>00021 <span class="preprocessor">#ifndef _cvc3__include__cnf_h_</span> <a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define _cvc3__include__cnf_h_</span> <a name="l00023"></a>00023 <span class="preprocessor"></span> <a name="l00024"></a>00024 <span class="preprocessor">#include <deque></span> <a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="compat__hash__map_8h.html">compat_hash_map.h</a>"</span> <a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="cvc__util_8h.html" title="basic helper utilities">cvc_util.h</a>"</span> <a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="cdo_8h.html">cdo.h</a>"</span> <a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="cdlist_8h.html">cdlist.h</a>"</span> <a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="theorem_8h.html">theorem.h</a>"</span> <a name="l00030"></a>00030 <a name="l00031"></a>00031 <a name="l00032"></a><a class="code" href="namespaceSAT.html">00032</a> <span class="keyword">namespace </span>SAT { <a name="l00033"></a>00033 <a name="l00034"></a><a class="code" href="classSAT_1_1Var.html">00034</a> <span class="keyword">class </span><a class="code" href="classSAT_1_1Var.html">Var</a> { <a name="l00035"></a><a class="code" href="classSAT_1_1Var.html#a01ef74403ce6078716f39185f5f4c0b0">00035</a> <span class="keywordtype">int</span> <a class="code" href="classSAT_1_1Var.html#a01ef74403ce6078716f39185f5f4c0b0">d_index</a>; <a name="l00036"></a>00036 <span class="keyword">public</span>: <a name="l00037"></a><a class="code" href="classSAT_1_1Var.html#ac9cf10f19f5f4d86ad539777fd8ca5ae">00037</a> <span class="keyword">enum</span> <a class="code" href="classSAT_1_1Var.html#ac9cf10f19f5f4d86ad539777fd8ca5ae">Val</a> { <a class="code" href="classSAT_1_1Var.html#ac9cf10f19f5f4d86ad539777fd8ca5aea98bec3ab0d44524d1ea379c9209b9b1a">UNKNOWN</a> = -1, <a class="code" href="classSAT_1_1Var.html#ac9cf10f19f5f4d86ad539777fd8ca5aea008d21718d47e187cbc98a0fcd8fbc03">FALSE_VAL</a>, <a class="code" href="classSAT_1_1Var.html#ac9cf10f19f5f4d86ad539777fd8ca5aea9e61954c8499a11875554e5583da88b7">TRUE_VAL</a>}; <a name="l00038"></a>00038 <span class="keyword">static</span> <a class="code" href="classSAT_1_1Var.html#ac9cf10f19f5f4d86ad539777fd8ca5ae">Val</a> <a class="code" href="classSAT_1_1Var.html#a6925789c47aff6619853a1f47592fee5">invertValue</a>(<a class="code" href="classSAT_1_1Var.html#ac9cf10f19f5f4d86ad539777fd8ca5ae">Val</a>); <a name="l00039"></a><a class="code" href="classSAT_1_1Var.html#a9f8ea526dd81b86484d019619070b2d3">00039</a> <a class="code" href="classSAT_1_1Var.html#a9f8ea526dd81b86484d019619070b2d3">Var</a>() : <a class="code" href="classSAT_1_1Var.html#a01ef74403ce6078716f39185f5f4c0b0">d_index</a>(-1) {} <a name="l00040"></a><a class="code" href="classSAT_1_1Var.html#a3db749176e3431f8c80b7b2ecf97f93b">00040</a> <a class="code" href="classSAT_1_1Var.html#a3db749176e3431f8c80b7b2ecf97f93b">Var</a>(<span class="keywordtype">int</span> index) :<a class="code" href="classSAT_1_1Var.html#a01ef74403ce6078716f39185f5f4c0b0">d_index</a>(index) {} <a name="l00041"></a><a class="code" href="classSAT_1_1Var.html#a19796fef4a1ceef4a29540a9c378cdad">00041</a> <a class="code" href="classSAT_1_1Var.html#a19796fef4a1ceef4a29540a9c378cdad">operator int</a>() { <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1Var.html#a01ef74403ce6078716f39185f5f4c0b0">d_index</a>; } <a name="l00042"></a><a class="code" href="classSAT_1_1Var.html#a95b8a85adb5fa5eba0fc090c240558b9">00042</a> <span class="keywordtype">bool</span> <a class="code" href="classSAT_1_1Var.html#a95b8a85adb5fa5eba0fc090c240558b9">isNull</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1Var.html#a01ef74403ce6078716f39185f5f4c0b0">d_index</a> == -1; } <a name="l00043"></a><a class="code" href="classSAT_1_1Var.html#a625819a54d89e98b26ae423b7a9fe1c8">00043</a> <span class="keywordtype">void</span> <a class="code" href="classSAT_1_1Var.html#a625819a54d89e98b26ae423b7a9fe1c8">reset</a>() { <a class="code" href="classSAT_1_1Var.html#a01ef74403ce6078716f39185f5f4c0b0">d_index</a> = -1; } <a name="l00044"></a><a class="code" href="classSAT_1_1Var.html#a736443cd1ae4e1135d83c13bda3cbd80">00044</a> <span class="keywordtype">int</span> <a class="code" href="classSAT_1_1Var.html#a736443cd1ae4e1135d83c13bda3cbd80">getIndex</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1Var.html#a01ef74403ce6078716f39185f5f4c0b0">d_index</a>; } <a name="l00045"></a><a class="code" href="classSAT_1_1Var.html#a685cd5d7b11f6ce00074de3e1241c708">00045</a> <span class="keywordtype">bool</span> <a class="code" href="classSAT_1_1Var.html#a685cd5d7b11f6ce00074de3e1241c708">isVar</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1Var.html#a01ef74403ce6078716f39185f5f4c0b0">d_index</a> > 0; } <a name="l00046"></a><a class="code" href="classSAT_1_1Var.html#ac66aa57028fd1b9f5271bd6710dac2b4">00046</a> <span class="keywordtype">bool</span> <a class="code" href="classSAT_1_1Var.html#ac66aa57028fd1b9f5271bd6710dac2b4">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSAT_1_1Var.html">Var</a>& var)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (<a class="code" href="classSAT_1_1Var.html#a01ef74403ce6078716f39185f5f4c0b0">d_index</a> == var.<a class="code" href="classSAT_1_1Var.html#a01ef74403ce6078716f39185f5f4c0b0">d_index</a>); } <a name="l00047"></a>00047 }; <a name="l00048"></a><a class="code" href="classSAT_1_1Var.html#a6925789c47aff6619853a1f47592fee5">00048</a> <span class="keyword">inline</span> <a class="code" href="classSAT_1_1Var.html#ac9cf10f19f5f4d86ad539777fd8ca5ae">Var::Val</a> <a class="code" href="classSAT_1_1Var.html#a6925789c47aff6619853a1f47592fee5">Var::invertValue</a>(<a class="code" href="classSAT_1_1Var.html#ac9cf10f19f5f4d86ad539777fd8ca5ae">Var::Val</a> v) <a name="l00049"></a>00049 { <span class="keywordflow">return</span> v == <a class="code" href="classSAT_1_1Var.html#ac9cf10f19f5f4d86ad539777fd8ca5aea98bec3ab0d44524d1ea379c9209b9b1a">Var::UNKNOWN</a> ? <a class="code" href="classSAT_1_1Var.html#ac9cf10f19f5f4d86ad539777fd8ca5aea98bec3ab0d44524d1ea379c9209b9b1a">Var::UNKNOWN</a> : <a class="code" href="classSAT_1_1Var.html#ac9cf10f19f5f4d86ad539777fd8ca5ae">Var::Val</a>(1-v); } <a name="l00050"></a>00050 <a name="l00051"></a><a class="code" href="classSAT_1_1Lit.html">00051</a> <span class="keyword">class </span><a class="code" href="classSAT_1_1Lit.html">Lit</a> { <a name="l00052"></a><a class="code" href="classSAT_1_1Lit.html#a91211e315ebefaa64af5111f6dce2ac3">00052</a> <span class="keywordtype">int</span> <a class="code" href="classSAT_1_1Lit.html#a91211e315ebefaa64af5111f6dce2ac3">d_index</a>; <a name="l00053"></a><a class="code" href="classSAT_1_1Lit.html#a4ce14efe342a740556003ec1c0d2e006">00053</a> <span class="keyword">static</span> <a class="code" href="classSAT_1_1Lit.html">Lit</a> <a class="code" href="classSAT_1_1Lit.html#a4ce14efe342a740556003ec1c0d2e006">mkLit</a>(<span class="keywordtype">int</span> index) { <a class="code" href="classSAT_1_1Lit.html">Lit</a> l; l.<a class="code" href="classSAT_1_1Lit.html#a91211e315ebefaa64af5111f6dce2ac3">d_index</a> = index; <span class="keywordflow">return</span> l; } <a name="l00054"></a>00054 <span class="keyword">public</span>: <a name="l00055"></a><a class="code" href="classSAT_1_1Lit.html#ad350b64d5c89f8544d0a2f814e93755e">00055</a> <a class="code" href="classSAT_1_1Lit.html#ad350b64d5c89f8544d0a2f814e93755e">Lit</a>() : <a class="code" href="classSAT_1_1Lit.html#a91211e315ebefaa64af5111f6dce2ac3">d_index</a>(0) {} <a name="l00056"></a><a class="code" href="classSAT_1_1Lit.html#a5c955a0b510f25a1ec1493f9b559c6e5">00056</a> <span class="keyword">explicit</span> <a class="code" href="classSAT_1_1Lit.html#a5c955a0b510f25a1ec1493f9b559c6e5">Lit</a>(<a class="code" href="classSAT_1_1Var.html">Var</a> v, <span class="keywordtype">bool</span> positive=<span class="keyword">true</span>) { <a name="l00057"></a>00057 <span class="keywordflow">if</span> (v.<a class="code" href="classSAT_1_1Var.html#a95b8a85adb5fa5eba0fc090c240558b9">isNull</a>()) <a class="code" href="classSAT_1_1Lit.html#a91211e315ebefaa64af5111f6dce2ac3">d_index</a> = 0; <a name="l00058"></a>00058 <span class="keywordflow">else</span> <a class="code" href="classSAT_1_1Lit.html#a91211e315ebefaa64af5111f6dce2ac3">d_index</a> = positive ? v+1 : -v-1; <a name="l00059"></a>00059 } <a name="l00060"></a><a class="code" href="classSAT_1_1Lit.html#ae639d83f877c976508d280a25c54e12b">00060</a> <span class="keyword">static</span> <a class="code" href="classSAT_1_1Lit.html">Lit</a> <a class="code" href="classSAT_1_1Lit.html#ae639d83f877c976508d280a25c54e12b">getTrue</a>() { <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1Lit.html#a4ce14efe342a740556003ec1c0d2e006">mkLit</a>(1); } <a name="l00061"></a><a class="code" href="classSAT_1_1Lit.html#af31c280c018065d2c1232a2cb8503fa7">00061</a> <span class="keyword">static</span> <a class="code" href="classSAT_1_1Lit.html">Lit</a> <a class="code" href="classSAT_1_1Lit.html#af31c280c018065d2c1232a2cb8503fa7">getFalse</a>() { <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1Lit.html#a4ce14efe342a740556003ec1c0d2e006">mkLit</a>(-1); } <a name="l00062"></a>00062 <a name="l00063"></a><a class="code" href="classSAT_1_1Lit.html#ad5f6236c582c95356d720a7401623f36">00063</a> <span class="keywordtype">bool</span> <a class="code" href="classSAT_1_1Lit.html#ad5f6236c582c95356d720a7401623f36">isNull</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1Lit.html#a91211e315ebefaa64af5111f6dce2ac3">d_index</a> == 0; } <a name="l00064"></a><a class="code" href="classSAT_1_1Lit.html#ada14f3ca2b88500b5c2500d60e7f554b">00064</a> <span class="keywordtype">bool</span> <a class="code" href="classSAT_1_1Lit.html#ada14f3ca2b88500b5c2500d60e7f554b">isPositive</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1Lit.html#a91211e315ebefaa64af5111f6dce2ac3">d_index</a> > 1; } <a name="l00065"></a><a class="code" href="classSAT_1_1Lit.html#ae6fbaf94176fd32347ff14ba3cbc3363">00065</a> <span class="keywordtype">bool</span> <a class="code" href="classSAT_1_1Lit.html#ae6fbaf94176fd32347ff14ba3cbc3363">isInverted</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1Lit.html#a91211e315ebefaa64af5111f6dce2ac3">d_index</a> < -1; } <a name="l00066"></a><a class="code" href="classSAT_1_1Lit.html#ab866c8154de88e5285f166f53cdf2d33">00066</a> <span class="keywordtype">bool</span> <a class="code" href="classSAT_1_1Lit.html#ab866c8154de88e5285f166f53cdf2d33">isFalse</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1Lit.html#a91211e315ebefaa64af5111f6dce2ac3">d_index</a> == -1; } <a name="l00067"></a><a class="code" href="classSAT_1_1Lit.html#a770e1901858f699490f50e9d2ff1d070">00067</a> <span class="keywordtype">bool</span> <a class="code" href="classSAT_1_1Lit.html#a770e1901858f699490f50e9d2ff1d070">isTrue</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1Lit.html#a91211e315ebefaa64af5111f6dce2ac3">d_index</a> == 1; } <a name="l00068"></a><a class="code" href="classSAT_1_1Lit.html#aeb84cef22c7dbf459f95dff9b7cbb4a7">00068</a> <span class="keywordtype">bool</span> <a class="code" href="classSAT_1_1Lit.html#aeb84cef22c7dbf459f95dff9b7cbb4a7">isVar</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceCVC3.html#a39fc111339d6dffdc98d6a25b68dff0e">abs</a>(<a class="code" href="classSAT_1_1Lit.html#a91211e315ebefaa64af5111f6dce2ac3">d_index</a>) > 1; } <a name="l00069"></a><a class="code" href="classSAT_1_1Lit.html#a744e350c39286a2ea093c3c5f1d083a4">00069</a> <span class="keywordtype">int</span> <a class="code" href="classSAT_1_1Lit.html#a744e350c39286a2ea093c3c5f1d083a4">getID</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1Lit.html#a91211e315ebefaa64af5111f6dce2ac3">d_index</a>; } <a name="l00070"></a><a class="code" href="classSAT_1_1Lit.html#a57e2e6e37cad9595c3edbea88a41262f">00070</a> <a class="code" href="classSAT_1_1Var.html">Var</a> <a class="code" href="classSAT_1_1Lit.html#a57e2e6e37cad9595c3edbea88a41262f">getVar</a>()<span class="keyword"> const </span>{ <a name="l00071"></a>00071 <a class="code" href="debug_8h.html#a40dac3bdb2166ffc852ee8b1489d2b56">DebugAssert</a>(<a class="code" href="classSAT_1_1Lit.html#aeb84cef22c7dbf459f95dff9b7cbb4a7">isVar</a>(),<span class="stringliteral">"Bad call to Lit::getVar"</span>); <a name="l00072"></a>00072 <span class="keywordflow">return</span> <a class="code" href="namespaceCVC3.html#a39fc111339d6dffdc98d6a25b68dff0e">abs</a>(<a class="code" href="classSAT_1_1Lit.html#a91211e315ebefaa64af5111f6dce2ac3">d_index</a>)-1; <a name="l00073"></a>00073 } <a name="l00074"></a><a class="code" href="classSAT_1_1Lit.html#a3bb64db99db01facd58c54e48b3f7800">00074</a> <span class="keywordtype">void</span> <a class="code" href="classSAT_1_1Lit.html#a3bb64db99db01facd58c54e48b3f7800">reset</a>() { <a class="code" href="classSAT_1_1Lit.html#a91211e315ebefaa64af5111f6dce2ac3">d_index</a> = 0; } <a name="l00075"></a><a class="code" href="classSAT_1_1Lit.html#ae5bf44d7d8e353cd1968ed105ef842cd">00075</a> <span class="keyword">friend</span> <a class="code" href="classSAT_1_1Lit.html">Lit</a> <a class="code" href="classSAT_1_1Lit.html#ae5bf44d7d8e353cd1968ed105ef842cd">operator!</a>(<span class="keyword">const</span> <a class="code" href="classSAT_1_1Lit.html">Lit</a>& lit) { <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1Lit.html#a4ce14efe342a740556003ec1c0d2e006">mkLit</a>(-lit.<a class="code" href="classSAT_1_1Lit.html#a91211e315ebefaa64af5111f6dce2ac3">d_index</a>); } <a name="l00076"></a>00076 }; <a name="l00077"></a>00077 <a name="l00078"></a><a class="code" href="classSAT_1_1Clause.html">00078</a> <span class="keyword">class </span><a class="code" href="classSAT_1_1Clause.html">Clause</a> { <a name="l00079"></a><a class="code" href="classSAT_1_1Clause.html#a82a2e007da132feab7b6a2322a669b22">00079</a> <span class="keywordtype">int</span> <a class="code" href="classSAT_1_1Clause.html#a82a2e007da132feab7b6a2322a669b22">d_satisfied</a>:1; <a name="l00080"></a><a class="code" href="classSAT_1_1Clause.html#a0f0c7bf5e7ed13659de7833887921c98">00080</a> <span class="keywordtype">int</span> <a class="code" href="classSAT_1_1Clause.html#a0f0c7bf5e7ed13659de7833887921c98">d_unit</a>:1; <a name="l00081"></a><a class="code" href="classSAT_1_1Clause.html#ae5504b9674dbfbb7c579027805d7bb16">00081</a> std::vector<Lit> <a class="code" href="classSAT_1_1Clause.html#ae5504b9674dbfbb7c579027805d7bb16">d_lits</a>; <a name="l00082"></a><a class="code" href="classSAT_1_1Clause.html#a1f48e48e24f17ae7131c2fe3a1879cd6">00082</a> <a class="code" href="classCVC3_1_1Theorem.html">CVC3::Theorem</a> <a class="code" href="classSAT_1_1Clause.html#a1f48e48e24f17ae7131c2fe3a1879cd6">d_reason</a>; <span class="comment">//the theorem for the clause, used in proofs. by yeting</span> <a name="l00083"></a>00083 <a name="l00084"></a>00084 <span class="keyword">public</span>: <a name="l00085"></a>00085 <a name="l00086"></a><a class="code" href="classSAT_1_1Clause.html#a50d7f57e0458520fbd90ec157e14b1ab">00086</a> <a class="code" href="classSAT_1_1Clause.html#a50d7f57e0458520fbd90ec157e14b1ab">Clause</a>(): <a class="code" href="classSAT_1_1Clause.html#a82a2e007da132feab7b6a2322a669b22">d_satisfied</a>(0), <a class="code" href="classSAT_1_1Clause.html#a0f0c7bf5e7ed13659de7833887921c98">d_unit</a>(0) { }; <a name="l00087"></a>00087 <a name="l00088"></a><a class="code" href="classSAT_1_1Clause.html#abce68afd36de5c1b77d2957671342efc">00088</a> <a class="code" href="classSAT_1_1Clause.html#a50d7f57e0458520fbd90ec157e14b1ab">Clause</a>(<span class="keyword">const</span> <a class="code" href="classSAT_1_1Clause.html">Clause</a>& clause) <a name="l00089"></a>00089 : <a class="code" href="classSAT_1_1Clause.html#a82a2e007da132feab7b6a2322a669b22">d_satisfied</a>(clause.<a class="code" href="classSAT_1_1Clause.html#a82a2e007da132feab7b6a2322a669b22">d_satisfied</a>), <a class="code" href="classSAT_1_1Clause.html#a0f0c7bf5e7ed13659de7833887921c98">d_unit</a>(clause.<a class="code" href="classSAT_1_1Clause.html#a0f0c7bf5e7ed13659de7833887921c98">d_unit</a>), <a name="l00090"></a><a class="code" href="classSAT_1_1Clause.html#af739bca890fe8219a7ebda3beefb0474">00090</a> <a class="code" href="classSAT_1_1Clause.html#ae5504b9674dbfbb7c579027805d7bb16">d_lits</a>(clause.<a class="code" href="classSAT_1_1Clause.html#ae5504b9674dbfbb7c579027805d7bb16">d_lits</a>), <a class="code" href="classSAT_1_1Clause.html#a1f48e48e24f17ae7131c2fe3a1879cd6">d_reason</a>(clause.<a class="code" href="classSAT_1_1Clause.html#a1f48e48e24f17ae7131c2fe3a1879cd6">d_reason</a>) { }; <a name="l00091"></a>00091 <a name="l00092"></a>00092 <span class="keyword">typedef</span> std::vector<Lit>::const_iterator <a class="code" href="classSAT_1_1Clause.html#af739bca890fe8219a7ebda3beefb0474">const_iterator</a>; <a name="l00093"></a><a class="code" href="classSAT_1_1Clause.html#a6d0f568c60e06a1c59c2bf37788ff778">00093</a> <a class="code" href="classSAT_1_1Clause.html#af739bca890fe8219a7ebda3beefb0474">const_iterator</a> <a class="code" href="classSAT_1_1Clause.html#a6d0f568c60e06a1c59c2bf37788ff778">begin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1Clause.html#ae5504b9674dbfbb7c579027805d7bb16">d_lits</a>.begin(); } <a name="l00094"></a><a class="code" href="classSAT_1_1Clause.html#a38094b009b923d08ca9b1a8f517b591e">00094</a> <a class="code" href="classSAT_1_1Clause.html#af739bca890fe8219a7ebda3beefb0474">const_iterator</a> <a class="code" href="classSAT_1_1Clause.html#a38094b009b923d08ca9b1a8f517b591e">end</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1Clause.html#ae5504b9674dbfbb7c579027805d7bb16">d_lits</a>.end(); } <a name="l00095"></a>00095 <a name="l00096"></a><a class="code" href="classSAT_1_1Clause.html#a7c3a264e08e022cd1b7526b62a55302d">00096</a> <span class="keywordtype">void</span> <a class="code" href="classSAT_1_1Clause.html#a7c3a264e08e022cd1b7526b62a55302d">clear</a>() { <a class="code" href="classSAT_1_1Clause.html#a82a2e007da132feab7b6a2322a669b22">d_satisfied</a> = <a class="code" href="classSAT_1_1Clause.html#a0f0c7bf5e7ed13659de7833887921c98">d_unit</a> = 0; <a class="code" href="classSAT_1_1Clause.html#ae5504b9674dbfbb7c579027805d7bb16">d_lits</a>.clear(); } <a name="l00097"></a><a class="code" href="classSAT_1_1Clause.html#a3c64729606d93f16b66f58d62ef253d5">00097</a> <span class="keywordtype">unsigned</span> <a class="code" href="classSAT_1_1Clause.html#a3c64729606d93f16b66f58d62ef253d5">size</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1Clause.html#ae5504b9674dbfbb7c579027805d7bb16">d_lits</a>.size(); } <a name="l00098"></a><a class="code" href="classSAT_1_1Clause.html#a70345bd3ad10d629dde238b8868dcfd3">00098</a> <span class="keywordtype">void</span> <a class="code" href="classSAT_1_1Clause.html#a70345bd3ad10d629dde238b8868dcfd3">addLiteral</a>(<a class="code" href="classSAT_1_1Lit.html">Lit</a> l) { <span class="keywordflow">if</span> (!<a class="code" href="classSAT_1_1Clause.html#a82a2e007da132feab7b6a2322a669b22">d_satisfied</a>) <a class="code" href="classSAT_1_1Clause.html#ae5504b9674dbfbb7c579027805d7bb16">d_lits</a>.push_back(l); } <a name="l00099"></a>00099 <span class="keywordtype">unsigned</span> <a class="code" href="classSAT_1_1Clause.html#a88bfd90868e75a24feffc7f428e30369">getMaxVar</a>() <span class="keyword">const</span>; <a name="l00100"></a><a class="code" href="classSAT_1_1Clause.html#aa3369b90f9db9e4653be5544117b4ba1">00100</a> <span class="keywordtype">bool</span> <a class="code" href="classSAT_1_1Clause.html#aa3369b90f9db9e4653be5544117b4ba1">isSatisfied</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1Clause.html#a82a2e007da132feab7b6a2322a669b22">d_satisfied</a> != 0; } <a name="l00101"></a><a class="code" href="classSAT_1_1Clause.html#abcf5873b0dcc37651c1af59c610a13a9">00101</a> <span class="keywordtype">bool</span> <a class="code" href="classSAT_1_1Clause.html#abcf5873b0dcc37651c1af59c610a13a9">isUnit</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1Clause.html#a0f0c7bf5e7ed13659de7833887921c98">d_unit</a> != 0; } <a name="l00102"></a><a class="code" href="classSAT_1_1Clause.html#a2b0467a4d28bbb34316aefd11113c273">00102</a> <span class="keywordtype">bool</span> <a class="code" href="classSAT_1_1Clause.html#a2b0467a4d28bbb34316aefd11113c273">isNull</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1Clause.html#ae5504b9674dbfbb7c579027805d7bb16">d_lits</a>.size() == 0; } <a name="l00103"></a><a class="code" href="classSAT_1_1Clause.html#aab7aa74c7b44a33a190fb8f04bc6c6fe">00103</a> <span class="keywordtype">void</span> <a class="code" href="classSAT_1_1Clause.html#aab7aa74c7b44a33a190fb8f04bc6c6fe">setSatisfied</a>() { <a class="code" href="classSAT_1_1Clause.html#a82a2e007da132feab7b6a2322a669b22">d_satisfied</a> = 1; } <a name="l00104"></a><a class="code" href="classSAT_1_1Clause.html#a0f3cbc4ee36da4af89d7be70252222d9">00104</a> <span class="keywordtype">void</span> <a class="code" href="classSAT_1_1Clause.html#a0f3cbc4ee36da4af89d7be70252222d9">setUnit</a>() { <a class="code" href="classSAT_1_1Clause.html#a0f0c7bf5e7ed13659de7833887921c98">d_unit</a> = 1; } <a name="l00105"></a>00105 <span class="keywordtype">void</span> <a class="code" href="classSAT_1_1Clause.html#ad906b9b541550cffbf95b6ed3c68e6d4">print</a>() <span class="keyword">const</span>; <a name="l00106"></a><a class="code" href="classSAT_1_1Clause.html#a69be447d7ada144c2a905cf42f4a7a82">00106</a> <span class="keywordtype">void</span> <a class="code" href="classSAT_1_1Clause.html#a69be447d7ada144c2a905cf42f4a7a82">setClauseTheorem</a>(<a class="code" href="classCVC3_1_1Theorem.html">CVC3::Theorem</a> thm){ <a class="code" href="classSAT_1_1Clause.html#a1f48e48e24f17ae7131c2fe3a1879cd6">d_reason</a> = thm;} <a name="l00107"></a>00107 <a name="l00108"></a><a class="code" href="classSAT_1_1Clause.html#aa4d692df8aaef4ea4c1c45af006c1301">00108</a> <a class="code" href="classCVC3_1_1Theorem.html">CVC3::Theorem</a> <a class="code" href="classSAT_1_1Clause.html#aa4d692df8aaef4ea4c1c45af006c1301">getClauseTheorem</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1Clause.html#a1f48e48e24f17ae7131c2fe3a1879cd6">d_reason</a>;} <a name="l00109"></a>00109 }; <a name="l00110"></a>00110 <a name="l00111"></a>00111 <a name="l00112"></a><a class="code" href="classSAT_1_1CNF__Formula.html">00112</a> <span class="keyword">class </span><a class="code" href="classSAT_1_1CNF__Formula.html">CNF_Formula</a> { <a name="l00113"></a>00113 <span class="keyword">protected</span>: <a name="l00114"></a><a class="code" href="classSAT_1_1CNF__Formula.html#ac638646a5ac87ff246e3d1d7278463f0">00114</a> <a class="code" href="classSAT_1_1Clause.html">Clause</a>* <a class="code" href="classSAT_1_1CNF__Formula.html#ac638646a5ac87ff246e3d1d7278463f0">d_current</a>; <a name="l00115"></a>00115 <a name="l00116"></a>00116 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSAT_1_1CNF__Formula.html#a2a648614c90bccd3fe0a884749349ef1">setNumVars</a>(<span class="keywordtype">unsigned</span> <a class="code" href="classSAT_1_1CNF__Formula.html#acbdfb5348367dd76a65661dd1ea3599f">numVars</a>) = 0; <a name="l00117"></a>00117 <span class="keywordtype">void</span> <a class="code" href="classSAT_1_1CNF__Formula.html#a9f9af9ad14a66890d4dbb001aa070dc3">copy</a>(<span class="keyword">const</span> <a class="code" href="classSAT_1_1CNF__Formula.html">CNF_Formula</a>& cnf); <a name="l00118"></a>00118 <a name="l00119"></a>00119 <span class="keyword">public</span>: <a name="l00120"></a><a class="code" href="classSAT_1_1CNF__Formula.html#af57c405a51d608f57626df49ffe825f9">00120</a> <a class="code" href="classSAT_1_1CNF__Formula.html#af57c405a51d608f57626df49ffe825f9">CNF_Formula</a>() : <a class="code" href="classSAT_1_1CNF__Formula.html#ac638646a5ac87ff246e3d1d7278463f0">d_current</a>(NULL) {} <a name="l00121"></a><a class="code" href="classSAT_1_1CNF__Formula.html#a3d0f37f512f07883394805a90df9d641">00121</a> <span class="keyword">virtual</span> <a class="code" href="classSAT_1_1CNF__Formula.html#a3d0f37f512f07883394805a90df9d641">~CNF_Formula</a>() {} <a name="l00122"></a>00122 <a name="l00123"></a><a class="code" href="classSAT_1_1CNF__Formula.html#ac247d01a4cc1e5aab84294cb4c00ddbf">00123</a> <span class="keyword">typedef</span> std::deque<Clause>::const_iterator <a class="code" href="classSAT_1_1CNF__Formula.html#ac247d01a4cc1e5aab84294cb4c00ddbf">const_iterator</a>; <a name="l00124"></a>00124 <a name="l00125"></a>00125 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSAT_1_1CNF__Formula.html#a15e2d3d65a38c23558a0ae8cf35f1938">empty</a>() <span class="keyword">const</span> = 0; <a name="l00126"></a>00126 <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classSAT_1_1Clause.html">Clause</a>& <a class="code" href="classSAT_1_1CNF__Formula.html#a46737d000053162c46af92bf15766642">operator[]</a>(<span class="keywordtype">int</span> i) <span class="keyword">const</span> = 0; <a name="l00127"></a>00127 <span class="keyword">virtual</span> <a class="code" href="classSAT_1_1CNF__Formula.html#ac247d01a4cc1e5aab84294cb4c00ddbf">const_iterator</a> <a class="code" href="classSAT_1_1CNF__Formula.html#a69dfc94796b23b6913c44a4d6d60f0d8">begin</a>() <span class="keyword">const</span> = 0; <a name="l00128"></a>00128 <span class="keyword">virtual</span> <a class="code" href="classSAT_1_1CNF__Formula.html#ac247d01a4cc1e5aab84294cb4c00ddbf">const_iterator</a> <a class="code" href="classSAT_1_1CNF__Formula.html#a6631cf3c5a6938f655360f7f63522b79">end</a>() <span class="keyword">const</span> = 0; <a name="l00129"></a>00129 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <a class="code" href="classSAT_1_1CNF__Formula.html#acbdfb5348367dd76a65661dd1ea3599f">numVars</a>() <span class="keyword">const</span> = 0; <a name="l00130"></a>00130 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <a class="code" href="classSAT_1_1CNF__Formula.html#a78d99de58d45109256158d55e65bb96f">numClauses</a>() <span class="keyword">const</span> = 0; <a name="l00131"></a>00131 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSAT_1_1CNF__Formula.html#ab9f3ffd03469b827138a14392960ba30">newClause</a>() = 0; <a name="l00132"></a>00132 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSAT_1_1CNF__Formula.html#a3b0eb426b9713bbc92041f046dd83ab5">registerUnit</a>() = 0; <a name="l00133"></a>00133 <a name="l00134"></a><a class="code" href="classSAT_1_1CNF__Formula.html#a4c59929d06b987ed68639f1b85a62606">00134</a> <span class="keywordtype">void</span> <a class="code" href="classSAT_1_1CNF__Formula.html#a4c59929d06b987ed68639f1b85a62606">addLiteral</a>(<a class="code" href="classSAT_1_1Lit.html">Lit</a> l, <span class="keywordtype">bool</span> invert=<span class="keyword">false</span>) <a name="l00135"></a>00135 { <span class="keywordflow">if</span> (l.<a class="code" href="classSAT_1_1Lit.html#aeb84cef22c7dbf459f95dff9b7cbb4a7">isVar</a>() && unsigned(l.<a class="code" href="classSAT_1_1Lit.html#a57e2e6e37cad9595c3edbea88a41262f">getVar</a>()) > <a class="code" href="classSAT_1_1CNF__Formula.html#acbdfb5348367dd76a65661dd1ea3599f">numVars</a>()) <a name="l00136"></a>00136 <a class="code" href="classSAT_1_1CNF__Formula.html#a2a648614c90bccd3fe0a884749349ef1">setNumVars</a>(l.<a class="code" href="classSAT_1_1Lit.html#a57e2e6e37cad9595c3edbea88a41262f">getVar</a>()); <a name="l00137"></a>00137 <a class="code" href="classSAT_1_1CNF__Formula.html#ac638646a5ac87ff246e3d1d7278463f0">d_current</a>-><a class="code" href="classSAT_1_1Clause.html#a70345bd3ad10d629dde238b8868dcfd3">addLiteral</a>(invert ? !l : l); } <a name="l00138"></a><a class="code" href="classSAT_1_1CNF__Formula.html#ac7c33df20bc0ac09a831de55bc4773a9">00138</a> <a class="code" href="classSAT_1_1Clause.html">Clause</a>& <a class="code" href="classSAT_1_1CNF__Formula.html#ac7c33df20bc0ac09a831de55bc4773a9">getCurrentClause</a>() { <span class="keywordflow">return</span> *<a class="code" href="classSAT_1_1CNF__Formula.html#ac638646a5ac87ff246e3d1d7278463f0">d_current</a>; } <a name="l00139"></a>00139 <span class="keywordtype">void</span> <a class="code" href="classSAT_1_1CNF__Formula.html#a7d85ca3c21713ab64142ecda50bf8476">print</a>() <span class="keyword">const</span>; <a name="l00140"></a>00140 <span class="keyword">const</span> <a class="code" href="classSAT_1_1CNF__Formula.html">CNF_Formula</a>& <a class="code" href="classSAT_1_1CNF__Formula.html#a77b5e97b49bc46d0eb7928c29a341a98">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classSAT_1_1CNF__Formula.html">CNF_Formula</a>& cnf); <a name="l00141"></a>00141 <span class="keyword">const</span> <a class="code" href="classSAT_1_1CNF__Formula.html">CNF_Formula</a>& <a class="code" href="classSAT_1_1CNF__Formula.html#a77b5e97b49bc46d0eb7928c29a341a98">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classSAT_1_1Clause.html">Clause</a>& c); <a name="l00142"></a>00142 }; <a name="l00143"></a>00143 <a name="l00144"></a>00144 <a name="l00145"></a><a class="code" href="classSAT_1_1CNF__Formula__Impl.html">00145</a> <span class="keyword">class </span><a class="code" href="classSAT_1_1CNF__Formula__Impl.html">CNF_Formula_Impl</a> :<span class="keyword">public</span> <a class="code" href="classSAT_1_1CNF__Formula.html">CNF_Formula</a> { <a name="l00146"></a><a class="code" href="classSAT_1_1CNF__Formula__Impl.html#a572e3d2d4333290f5632902ce701d1a5">00146</a> <a class="code" href="classHash_1_1hash__map.html">std::hash_map<int, bool></a> <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#a572e3d2d4333290f5632902ce701d1a5">d_lits</a>; <a name="l00147"></a><a class="code" href="classSAT_1_1CNF__Formula__Impl.html#ac96490e959862063b370e79085e4ab67">00147</a> std::deque<Clause> <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#ac96490e959862063b370e79085e4ab67">d_formula</a>; <a name="l00148"></a><a class="code" href="classSAT_1_1CNF__Formula__Impl.html#a64d083ac6c0bbd52edaca213dcf84b0a">00148</a> <span class="keywordtype">unsigned</span> <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#a64d083ac6c0bbd52edaca213dcf84b0a">d_numVars</a>; <a name="l00149"></a>00149 <span class="keyword">private</span>: <a name="l00150"></a><a class="code" href="classSAT_1_1CNF__Formula__Impl.html#a096fb99ab48eb623116c288bc43d7877">00150</a> <span class="keywordtype">void</span> <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#a096fb99ab48eb623116c288bc43d7877">setNumVars</a>(<span class="keywordtype">unsigned</span> <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#acf6148ff29fbfa341e58c134dc77fda0">numVars</a>) { <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#a64d083ac6c0bbd52edaca213dcf84b0a">d_numVars</a> = <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#acf6148ff29fbfa341e58c134dc77fda0">numVars</a>; } <a name="l00151"></a>00151 <span class="keyword">public</span>: <a name="l00152"></a><a class="code" href="classSAT_1_1CNF__Formula__Impl.html#a4d1ed697fe1e2c50a6442304480b496b">00152</a> <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#a4d1ed697fe1e2c50a6442304480b496b">CNF_Formula_Impl</a>() : <a class="code" href="classSAT_1_1CNF__Formula.html">CNF_Formula</a>(), <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#a64d083ac6c0bbd52edaca213dcf84b0a">d_numVars</a>(0) {} <a name="l00153"></a><a class="code" href="classSAT_1_1CNF__Formula__Impl.html#a39b98ba60bf53df6247643de77706ac2">00153</a> <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#a39b98ba60bf53df6247643de77706ac2">CNF_Formula_Impl</a>(<span class="keyword">const</span> <a class="code" href="classSAT_1_1CNF__Formula.html">CNF_Formula</a>& cnf) : <a class="code" href="classSAT_1_1CNF__Formula.html">CNF_Formula</a>() { <a class="code" href="classSAT_1_1CNF__Formula.html#a9f9af9ad14a66890d4dbb001aa070dc3">copy</a>(cnf); } <a name="l00154"></a><a class="code" href="classSAT_1_1CNF__Formula__Impl.html#a41f7fb3a1ae1922889e0745f91f56a93">00154</a> <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#a41f7fb3a1ae1922889e0745f91f56a93">~CNF_Formula_Impl</a>() {}; <a name="l00155"></a>00155 <a name="l00156"></a><a class="code" href="classSAT_1_1CNF__Formula__Impl.html#a22f2d325345957ac96478fd4aa87fd9c">00156</a> <span class="keywordtype">bool</span> <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#a22f2d325345957ac96478fd4aa87fd9c">empty</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#ac96490e959862063b370e79085e4ab67">d_formula</a>.empty(); } <a name="l00157"></a><a class="code" href="classSAT_1_1CNF__Formula__Impl.html#ade695e467e158eb2550683c14f19be34">00157</a> <span class="keyword">const</span> <a class="code" href="classSAT_1_1Clause.html">Clause</a>& <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#ade695e467e158eb2550683c14f19be34">operator[]</a>(<span class="keywordtype">int</span> i)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#ac96490e959862063b370e79085e4ab67">d_formula</a>[i]; } <a name="l00158"></a><a class="code" href="classSAT_1_1CNF__Formula__Impl.html#a688bb703f9faac959eed7e9587c13658">00158</a> <a class="code" href="classSAT_1_1CNF__Formula.html#ac247d01a4cc1e5aab84294cb4c00ddbf">const_iterator</a> <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#a688bb703f9faac959eed7e9587c13658">begin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#ac96490e959862063b370e79085e4ab67">d_formula</a>.begin(); } <a name="l00159"></a><a class="code" href="classSAT_1_1CNF__Formula__Impl.html#a91087be2e218a74f381ed2b77e4c79dd">00159</a> <a class="code" href="classSAT_1_1CNF__Formula.html#ac247d01a4cc1e5aab84294cb4c00ddbf">const_iterator</a> <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#a91087be2e218a74f381ed2b77e4c79dd">end</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#ac96490e959862063b370e79085e4ab67">d_formula</a>.end(); } <a name="l00160"></a><a class="code" href="classSAT_1_1CNF__Formula__Impl.html#acf6148ff29fbfa341e58c134dc77fda0">00160</a> <span class="keywordtype">unsigned</span> <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#acf6148ff29fbfa341e58c134dc77fda0">numVars</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#a64d083ac6c0bbd52edaca213dcf84b0a">d_numVars</a>; } <a name="l00161"></a><a class="code" href="classSAT_1_1CNF__Formula__Impl.html#a136ece8939e5be6f5218705694fa7f14">00161</a> <span class="keywordtype">unsigned</span> <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#a136ece8939e5be6f5218705694fa7f14">numClauses</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#ac96490e959862063b370e79085e4ab67">d_formula</a>.size(); } <a name="l00162"></a><a class="code" href="classSAT_1_1CNF__Formula__Impl.html#accfd5e8d24cbb46cef5c4025a92c40eb">00162</a> <span class="keywordtype">void</span> <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#accfd5e8d24cbb46cef5c4025a92c40eb">deleteLast</a>() { <a class="code" href="debug_8h.html#a40dac3bdb2166ffc852ee8b1489d2b56">DebugAssert</a>(<a class="code" href="classSAT_1_1CNF__Formula__Impl.html#ac96490e959862063b370e79085e4ab67">d_formula</a>.size() > 0, <span class="stringliteral">"size == 0"</span>); <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#ac96490e959862063b370e79085e4ab67">d_formula</a>.pop_back(); } <a name="l00163"></a>00163 <span class="keywordtype">void</span> <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#adffd09ad005d74fdad1be0fc80727767">newClause</a>(); <a name="l00164"></a>00164 <span class="keywordtype">void</span> <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#ab72a764586f913bc1aa45e0334a75140">registerUnit</a>(); <a name="l00165"></a>00165 <a name="l00166"></a>00166 <span class="keywordtype">void</span> <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#ad4e85285d108ed917b748e09c356aa7d">simplify</a>(); <a name="l00167"></a>00167 <span class="keywordtype">void</span> <a class="code" href="classSAT_1_1CNF__Formula__Impl.html#a6bc99606944e873ded2b37c954b18170">reset</a>(); <a name="l00168"></a>00168 }; <a name="l00169"></a>00169 <a name="l00170"></a>00170 <a name="l00171"></a><a class="code" href="classSAT_1_1CD__CNF__Formula.html">00171</a> <span class="keyword">class </span><a class="code" href="classSAT_1_1CD__CNF__Formula.html">CD_CNF_Formula</a> :<span class="keyword">public</span> <a class="code" href="classSAT_1_1CNF__Formula.html">CNF_Formula</a> { <a name="l00172"></a><a class="code" href="classSAT_1_1CD__CNF__Formula.html#ad8b8b293de3947b8dce36a60589a0beb">00172</a> <a class="code" href="classCVC3_1_1CDList.html">CVC3::CDList<Clause></a> <a class="code" href="classSAT_1_1CD__CNF__Formula.html#ad8b8b293de3947b8dce36a60589a0beb">d_formula</a>; <a name="l00173"></a><a class="code" href="classSAT_1_1CD__CNF__Formula.html#ad4d9ce6f94857fe118ea7221912f54c2">00173</a> <a class="code" href="classCVC3_1_1CDO.html">CVC3::CDO<unsigned></a> <a class="code" href="classSAT_1_1CD__CNF__Formula.html#ad4d9ce6f94857fe118ea7221912f54c2">d_numVars</a>; <a name="l00174"></a>00174 <span class="keyword">private</span>: <a name="l00175"></a><a class="code" href="classSAT_1_1CD__CNF__Formula.html#ae4dbe394f6fd9ef53b6d2b7951c704e3">00175</a> <span class="keywordtype">void</span> <a class="code" href="classSAT_1_1CD__CNF__Formula.html#ae4dbe394f6fd9ef53b6d2b7951c704e3">setNumVars</a>(<span class="keywordtype">unsigned</span> <a class="code" href="classSAT_1_1CD__CNF__Formula.html#a32f2ac750f25a593d413dc5fa43d6dd2">numVars</a>) { <a class="code" href="classSAT_1_1CD__CNF__Formula.html#ad4d9ce6f94857fe118ea7221912f54c2">d_numVars</a> = <a class="code" href="classSAT_1_1CD__CNF__Formula.html#a32f2ac750f25a593d413dc5fa43d6dd2">numVars</a>; } <a name="l00176"></a>00176 <span class="keyword">public</span>: <a name="l00177"></a><a class="code" href="classSAT_1_1CD__CNF__Formula.html#a5ed0499393400456a1da983d79fee59d">00177</a> <a class="code" href="classSAT_1_1CD__CNF__Formula.html#a5ed0499393400456a1da983d79fee59d">CD_CNF_Formula</a>(<a class="code" href="classCVC3_1_1Context.html">CVC3::Context</a>* context) <a name="l00178"></a>00178 : <a class="code" href="classSAT_1_1CNF__Formula.html">CNF_Formula</a>(), <a class="code" href="classSAT_1_1CD__CNF__Formula.html#ad8b8b293de3947b8dce36a60589a0beb">d_formula</a>(context), <a class="code" href="classSAT_1_1CD__CNF__Formula.html#ad4d9ce6f94857fe118ea7221912f54c2">d_numVars</a>(context, 0, 0) {} <a name="l00179"></a><a class="code" href="classSAT_1_1CD__CNF__Formula.html#a481478397e9a56a75f9ab1db76dcee42">00179</a> <a class="code" href="classSAT_1_1CD__CNF__Formula.html#a481478397e9a56a75f9ab1db76dcee42">~CD_CNF_Formula</a>() {} <a name="l00180"></a>00180 <a name="l00181"></a><a class="code" href="classSAT_1_1CD__CNF__Formula.html#a3773c2c9cbbe24234b6f4c85a48d9e01">00181</a> <span class="keywordtype">bool</span> <a class="code" href="classSAT_1_1CD__CNF__Formula.html#a3773c2c9cbbe24234b6f4c85a48d9e01">empty</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1CD__CNF__Formula.html#ad8b8b293de3947b8dce36a60589a0beb">d_formula</a>.<a class="code" href="classCVC3_1_1CDList.html#afafb842f23a41289eb104404e5eb94bf">empty</a>(); } <a name="l00182"></a><a class="code" href="classSAT_1_1CD__CNF__Formula.html#aab7165cf79dc81e322c6988e972d6bc1">00182</a> <span class="keyword">const</span> <a class="code" href="classSAT_1_1Clause.html">Clause</a>& <a class="code" href="classSAT_1_1CD__CNF__Formula.html#aab7165cf79dc81e322c6988e972d6bc1">operator[]</a>(<span class="keywordtype">int</span> i)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1CD__CNF__Formula.html#ad8b8b293de3947b8dce36a60589a0beb">d_formula</a>[i]; } <a name="l00183"></a><a class="code" href="classSAT_1_1CD__CNF__Formula.html#a4022c7fcf4f27acd242be18f4a1f0c6a">00183</a> <a class="code" href="classSAT_1_1CNF__Formula.html#ac247d01a4cc1e5aab84294cb4c00ddbf">const_iterator</a> <a class="code" href="classSAT_1_1CD__CNF__Formula.html#a4022c7fcf4f27acd242be18f4a1f0c6a">begin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1CD__CNF__Formula.html#ad8b8b293de3947b8dce36a60589a0beb">d_formula</a>.<a class="code" href="classCVC3_1_1CDList.html#ae2cf006604b1ab88139332a5e2c08568">begin</a>(); } <a name="l00184"></a><a class="code" href="classSAT_1_1CD__CNF__Formula.html#aa11182c6a4126ca808ea88e4255a7f80">00184</a> <a class="code" href="classSAT_1_1CNF__Formula.html#ac247d01a4cc1e5aab84294cb4c00ddbf">const_iterator</a> <a class="code" href="classSAT_1_1CD__CNF__Formula.html#aa11182c6a4126ca808ea88e4255a7f80">end</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1CD__CNF__Formula.html#ad8b8b293de3947b8dce36a60589a0beb">d_formula</a>.<a class="code" href="classCVC3_1_1CDList.html#a96313ff2924c89a93d7fe6c618c837af">end</a>(); } <a name="l00185"></a><a class="code" href="classSAT_1_1CD__CNF__Formula.html#a32f2ac750f25a593d413dc5fa43d6dd2">00185</a> <span class="keywordtype">unsigned</span> <a class="code" href="classSAT_1_1CD__CNF__Formula.html#a32f2ac750f25a593d413dc5fa43d6dd2">numVars</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1CD__CNF__Formula.html#ad4d9ce6f94857fe118ea7221912f54c2">d_numVars</a>.<a class="code" href="classCVC3_1_1CDO.html#a818fcacc7b30b0f05347335ab125626c">get</a>(); } <a name="l00186"></a><a class="code" href="classSAT_1_1CD__CNF__Formula.html#a40948c1f2c702dfe58e4b63776ec18fd">00186</a> <span class="keywordtype">unsigned</span> <a class="code" href="classSAT_1_1CD__CNF__Formula.html#a40948c1f2c702dfe58e4b63776ec18fd">numClauses</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classSAT_1_1CD__CNF__Formula.html#ad8b8b293de3947b8dce36a60589a0beb">d_formula</a>.<a class="code" href="classCVC3_1_1CDList.html#adf92d0f391d73e7ac70da57db135af27">size</a>(); } <a name="l00187"></a><a class="code" href="classSAT_1_1CD__CNF__Formula.html#a4eb2135609863c3a5e28383e279ec5a8">00187</a> <span class="keywordtype">void</span> <a class="code" href="classSAT_1_1CD__CNF__Formula.html#a4eb2135609863c3a5e28383e279ec5a8">deleteLast</a>() { <a class="code" href="classSAT_1_1CD__CNF__Formula.html#ad8b8b293de3947b8dce36a60589a0beb">d_formula</a>.<a class="code" href="classCVC3_1_1CDList.html#a49d135664e22701bc537fd799f82c740">pop_back</a>(); } <a name="l00188"></a>00188 <a name="l00189"></a>00189 <span class="keywordtype">void</span> <a class="code" href="classSAT_1_1CD__CNF__Formula.html#a9ef7d443b6dddb0f23fd07e81a60970c">newClause</a>(); <a name="l00190"></a>00190 <span class="keywordtype">void</span> <a class="code" href="classSAT_1_1CD__CNF__Formula.html#a41c4e53bdf4c9d98afbdbea4a735fce9">registerUnit</a>(); <a name="l00191"></a>00191 }; <a name="l00192"></a>00192 <a name="l00193"></a>00193 } <a name="l00194"></a>00194 <a name="l00195"></a>00195 <span class="preprocessor">#endif</span> </pre></div></div> </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>