Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > a24e1a39141f9b4ca49bd1e2e23a54ba > files > 19

polybori-doc-0.5rc.p9-6mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>PolyBoRi: BooleMonomial.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.5.9 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</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 class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
    </ul>
  </div>
<h1>BooleMonomial.h</h1><a href="BooleMonomial_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// -*- c++ -*-</span>
<a name="l00002"></a>00002 <span class="comment">//*****************************************************************************</span>
<a name="l00151"></a>00151 <span class="comment"></span><span class="comment">//*****************************************************************************</span>
<a name="l00152"></a>00152 
<a name="l00153"></a>00153 <span class="preprocessor">#ifndef BooleMonomial_h_</span>
<a name="l00154"></a>00154 <span class="preprocessor"></span><span class="preprocessor">#define BooleMonomial_h_</span>
<a name="l00155"></a>00155 <span class="preprocessor"></span>
<a name="l00156"></a>00156 <span class="comment">// include basic definitions</span>
<a name="l00157"></a>00157 <span class="preprocessor">#include "<a class="code" href="pbori__defs_8h.html">pbori_defs.h</a>"</span>
<a name="l00158"></a>00158 
<a name="l00159"></a>00159 <span class="comment">// get definition of BoolePolynomial and BooleVariable</span>
<a name="l00160"></a>00160 <span class="preprocessor">#include "<a class="code" href="BoolePolynomial_8h.html">BoolePolynomial.h</a>"</span>
<a name="l00161"></a>00161 <span class="preprocessor">#include "<a class="code" href="BooleVariable_8h.html">BooleVariable.h</a>"</span>
<a name="l00162"></a>00162 <span class="comment">// get standard map functionality</span>
<a name="l00163"></a>00163 <span class="preprocessor">#include &lt;map&gt;</span>
<a name="l00164"></a>00164 
<a name="l00165"></a>00165 <span class="comment">// get variable iterator</span>
<a name="l00166"></a>00166 <span class="preprocessor">#include "<a class="code" href="CVariableIter_8h.html">CVariableIter.h</a>"</span>
<a name="l00167"></a>00167 
<a name="l00168"></a>00168 <span class="comment">// get variable iterator</span>
<a name="l00169"></a>00169 <span class="preprocessor">#include "<a class="code" href="PBoRiError_8h.html">PBoRiError.h</a>"</span>
<a name="l00170"></a>00170 
<a name="l00171"></a>00171 <a class="code" href="pbori__defs_8h.html#6ae360a591580558f31b6157ee792a10" title="Start project&amp;#39;s namespace.">BEGIN_NAMESPACE_PBORI</a>
<a name="l00172"></a>00172 
<a name="l00173"></a>00173 <span class="keyword">class </span>BooleVariable;
<a name="l00174"></a>00174 <span class="keyword">class </span>BooleExponent;
<a name="l00175"></a>00175 <span class="keyword">template</span> &lt;<span class="keyword">class</span> DDType, <span class="keyword">class</span> MonomType&gt; <span class="keyword">class </span>CDDOperations;
<a name="l00176"></a>00176 
<a name="l00185"></a><a class="code" href="classpolybori_1_1BooleMonomial.html">00185</a> <span class="keyword">class </span><a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a> {
<a name="l00186"></a>00186 
<a name="l00187"></a>00187  <span class="keyword">public</span>:
<a name="l00188"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#e93d16556ee01649fe5d050f4fdeb0d1">00188</a>   <span class="keyword">template</span> &lt;<span class="keyword">class</span>, <span class="keyword">class</span>&gt; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classpolybori_1_1CDDOperations.html">CDDOperations</a>;
<a name="l00189"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#62ad52f8c65f749d2b2e25c48ca81ef3">00189</a>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classpolybori_1_1COrderBase.html" title="This class defines ordering related functions.">COrderBase</a>;
<a name="l00190"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#cd03c4a7738297292b27c2c28e3dbd04">00190</a>   <span class="keyword">template</span> &lt;<span class="keyword">class</span>, <span class="keyword">class</span>&gt; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classCTermGeneratorBase.html">CTermGeneratorBase</a>;
<a name="l00191"></a>00191 
<a name="l00192"></a>00192   <span class="comment">//-------------------------------------------------------------------------</span>
<a name="l00193"></a>00193   <span class="comment">// types definitions</span>
<a name="l00194"></a>00194   <span class="comment">//-------------------------------------------------------------------------</span>
<a name="l00195"></a>00195 
<a name="l00197"></a>00197 
<a name="l00198"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#b8ef0078862a39f44536fbddf145e1c3">00198</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CDDInterface.html">CTypes::dd_type</a> <a class="code" href="classpolybori_1_1CDDInterface.html">dd_type</a>;
<a name="l00199"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#8c6a010c64cdd814454094adaaf694a5">00199</a>   <span class="keyword">typedef</span> CTypes::size_type size_type;
<a name="l00200"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#5aa2051b32664928bac19cf6e89c4607">00200</a>   <span class="keyword">typedef</span> <a class="code" href="namespacepolybori_1_1groebner.html#ef37a95e97afbd561cc4c5f84d660765">CTypes::idx_type</a> <a class="code" href="namespacepolybori_1_1groebner.html#ef37a95e97afbd561cc4c5f84d660765">idx_type</a>;
<a name="l00201"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#c0db090f68262d440492e79d299572cd">00201</a>   <span class="keyword">typedef</span> CTypes::hash_type hash_type;
<a name="l00202"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#e7eee5761fd8b835cea774f8f769c71d">00202</a>   <span class="keyword">typedef</span> CTypes::bool_type bool_type;
<a name="l00203"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#983c8221113525a285b542407fe43ec0">00203</a>   <span class="keyword">typedef</span> CTypes::comp_type comp_type;
<a name="l00204"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#fe35ca1ed1a818918f5201bddc533cb4">00204</a>   <span class="keyword">typedef</span> CTypes::integer_type integer_type;
<a name="l00205"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#af039ed980d944b98f5967c92f93333b">00205</a>   <span class="keyword">typedef</span> CTypes::ostream_type ostream_type;
<a name="l00207"></a>00207 
<a name="l00209"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#5421ea67b92c7b530e8d69831df559fe">00209</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a> <span class="keyword">self</span>;
<a name="l00210"></a>00210 
<a name="l00212"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#0c2c73cbcf10863817c6751a0578c306">00212</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1BoolePolynomial.html" title="This class wraps the underlying decicion diagram type and defines the necessary operations...">BoolePolynomial</a> <a class="code" href="classpolybori_1_1BoolePolynomial.html" title="This class wraps the underlying decicion diagram type and defines the necessary operations...">poly_type</a>;
<a name="l00213"></a>00213 
<a name="l00215"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#b762c4c19b98631b524adb202588b6ed">00215</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1BooleVariable.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">poly_type::var_type</a> <a class="code" href="classpolybori_1_1BooleVariable.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">var_type</a>;
<a name="l00216"></a>00216 
<a name="l00218"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#c42b1ece9b517f538311a4d97479cc7b">00218</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1BooleConstant.html" title="This class wraps a bool value, which was not converted to a boolean polynomial or...">poly_type::constant_type</a> <a class="code" href="classpolybori_1_1BooleConstant.html" title="This class wraps a bool value, which was not converted to a boolean polynomial or...">constant_type</a>;
<a name="l00219"></a>00219 
<a name="l00221"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#d808fd10e3adf11aba1bb694d502d271">00221</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1BooleSet.html">poly_type::set_type</a> <a class="code" href="classpolybori_1_1BooleSet.html">set_type</a>;
<a name="l00222"></a>00222 
<a name="l00224"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#75c4211bbb64be56dcae3fd7a9a208d8">00224</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1BooleExponent.html" title="This class is just a wrapper for using variables for storing indices as interim data...">poly_type::exp_type</a> <a class="code" href="classpolybori_1_1BooleExponent.html" title="This class is just a wrapper for using variables for storing indices as interim data...">exp_type</a>;
<a name="l00225"></a>00225 
<a name="l00227"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#217f482ef03ea81b4c6afc9357e20a73">00227</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1BooleRing.html" title="This class is just a wrapper for reinterpreting decicion diagram managers as Boolean...">poly_type::ring_type</a> <a class="code" href="classpolybori_1_1BooleRing.html" title="This class is just a wrapper for reinterpreting decicion diagram managers as Boolean...">ring_type</a>;
<a name="l00228"></a>00228 
<a name="l00230"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#05886e7e9eacdf4d911f5b59fbe42925">00230</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CCuddFirstIter.html" title="This class defines an iterator over the first minimal term of a given ZDD node.">poly_type::first_iterator</a> <a class="code" href="classpolybori_1_1CCuddFirstIter.html" title="This class defines an iterator over the first minimal term of a given ZDD node.">const_iterator</a>;
<a name="l00231"></a>00231 
<a name="l00233"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#66acd739ddf0d7fdcd778e769fe3dfb0">00233</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CVariableIter.html" title="This template class defines an iterator for monomial types.">CVariableIter&lt;const_iterator, var_type&gt;</a> <a class="code" href="classpolybori_1_1CVariableIter.html" title="This template class defines an iterator for monomial types.">variable_iterator</a>;
<a name="l00234"></a>00234 
<a name="l00236"></a>00236   <span class="comment">//  typedef generate_index_map&lt;self&gt;::type idx_map_type;</span>
<a name="l00237"></a>00237 
<a name="l00238"></a>00238   <span class="keyword">typedef</span> std::map&lt;<span class="keyword">self</span>, <a class="code" href="namespacepolybori_1_1groebner.html#ef37a95e97afbd561cc4c5f84d660765">idx_type</a>, <a class="code" href="classpolybori_1_1symmetric__composition.html" title="Compose a binary function with a default constructable unary function for both arguments...">symmetric_composition</a>&lt;
<a name="l00239"></a>00239     std::less&lt;poly_type::navigator&gt;, 
<a name="l00240"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#5098408fbdcf7bac7d818be20a98e3c0">00240</a>     <a class="code" href="classpolybori_1_1navigates.html">navigates&lt;poly_type&gt;</a> &gt; &gt; idx_map_type;
<a name="l00241"></a>00241 
<a name="l00243"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#3076cdbc8783193bb280dd51f2669fc3">00243</a>   <span class="keyword">typedef</span> <a class="code" href="structpolybori_1_1valid__tag.html" title="This class shows, whether a property of an order is valid.">dd_type::easy_equality_property</a> <a class="code" href="structpolybori_1_1valid__tag.html" title="This class shows, whether a property of an order is valid.">easy_equality_property</a>;
<a name="l00244"></a>00244 
<a name="l00246"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#48e7b303e66ee8c7d88224a65a0ec640">00246</a>   <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>():
<a name="l00247"></a>00247     m_poly( <a class="code" href="classpolybori_1_1BooleEnv.html" title="This class is just a wrapper accessing global structures.">BooleEnv</a>::one() )  { }
<a name="l00248"></a>00248 
<a name="l00250"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#5767926c75129f0a620ba5e21cc71cbe">00250</a>   <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>(<span class="keyword">const</span> <span class="keyword">self</span>&amp; rhs):  
<a name="l00251"></a>00251     m_poly(rhs.m_poly) {}
<a name="l00252"></a>00252 
<a name="l00254"></a>00254   <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>(<span class="keyword">const</span> var_type&amp; rhs);  <span class="comment">// not inlined to avoid dependency loop</span>
<a name="l00255"></a>00255                                        <span class="comment">// (both depend on poly_type)</span>
<a name="l00256"></a>00256 
<a name="l00258"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#57315945829d7b96ad2795b1ca8b8ade">00258</a>   <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleExponent.html" title="This class is just a wrapper for using variables for storing indices as interim data...">exp_type</a>&amp; rhs, <span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleRing.html" title="This class is just a wrapper for reinterpreting decicion diagram managers as Boolean...">ring_type</a>&amp; ring): 
<a name="l00259"></a>00259     m_poly(rhs, ring) { }
<a name="l00260"></a>00260 
<a name="l00262"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#f4e9314075413b2a306c200a9707128e">00262</a>   <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleRing.html" title="This class is just a wrapper for reinterpreting decicion diagram managers as Boolean...">ring_type</a>&amp; ring): 
<a name="l00263"></a>00263     m_poly(ring.one()) {}
<a name="l00264"></a>00264 
<a name="l00266"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#03e88c8956221d469564421b219711d5">00266</a>   <a class="code" href="classpolybori_1_1BooleMonomial.html#03e88c8956221d469564421b219711d5" title="Destructor.">~BooleMonomial</a>() {}
<a name="l00267"></a>00267 
<a name="l00269"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#32443f002de79bb218a7f566dfd7086f">00269</a>   operator const BoolePolynomial&amp;()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_poly; }
<a name="l00270"></a>00270 
<a name="l00272"></a>00272   exp_type exp() <span class="keyword">const</span>;
<a name="l00273"></a>00273 
<a name="l00274"></a>00274 
<a name="l00276"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#525ffe23d66ef5a8fcccb178f1226f12">00276</a>   <a class="code" href="classpolybori_1_1CCuddFirstIter.html" title="This class defines an iterator over the first minimal term of a given ZDD node.">const_iterator</a> <a class="code" href="classpolybori_1_1BooleMonomial.html#525ffe23d66ef5a8fcccb178f1226f12" title="Start iteration over indices.">begin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_poly.firstBegin(); }
<a name="l00277"></a>00277 
<a name="l00279"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#144a9252492dcb1854154095e634eee5">00279</a>   <a class="code" href="classpolybori_1_1CCuddFirstIter.html" title="This class defines an iterator over the first minimal term of a given ZDD node.">const_iterator</a> <a class="code" href="classpolybori_1_1BooleMonomial.html#144a9252492dcb1854154095e634eee5" title="Finish iteration over indices.">end</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_poly.firstEnd(); }
<a name="l00280"></a>00280 
<a name="l00282"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#d419387f1feda4d1bc59be0aad915c14">00282</a>   <a class="code" href="classpolybori_1_1CVariableIter.html" title="This template class defines an iterator for monomial types.">variable_iterator</a> <a class="code" href="classpolybori_1_1BooleMonomial.html#d419387f1feda4d1bc59be0aad915c14" title="Start iteration over variables.">variableBegin</a>()<span class="keyword"> const </span>{ 
<a name="l00283"></a>00283     <span class="keywordflow">return</span> <a class="code" href="classpolybori_1_1CVariableIter.html" title="This template class defines an iterator for monomial types.">variable_iterator</a>(begin(), ring()); 
<a name="l00284"></a>00284   }
<a name="l00285"></a>00285 
<a name="l00287"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#aea55681119e64b96e08223cbf961a2e">00287</a>   <a class="code" href="classpolybori_1_1CVariableIter.html" title="This template class defines an iterator for monomial types.">variable_iterator</a> <a class="code" href="classpolybori_1_1BooleMonomial.html#aea55681119e64b96e08223cbf961a2e" title="Finish iteration over variables.">variableEnd</a>()<span class="keyword"> const </span>{ 
<a name="l00288"></a>00288     <span class="keywordflow">return</span> <a class="code" href="classpolybori_1_1CVariableIter.html" title="This template class defines an iterator for monomial types.">variable_iterator</a>(end(), ring()); 
<a name="l00289"></a>00289   }
<a name="l00290"></a>00290 
<a name="l00292"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#7f8db3627c0fcdb60bafe6e6f25bfc3a">00292</a>   size_type <a class="code" href="classpolybori_1_1BooleMonomial.html#7f8db3627c0fcdb60bafe6e6f25bfc3a" title="Degree of the monomial.">deg</a>()<span class="keyword"> const </span>{
<a name="l00294"></a>00294 <span class="preprocessor">    #if 0</span>
<a name="l00295"></a>00295 <span class="preprocessor"></span>    <span class="keywordflow">return</span> m_poly.nNodes(); 
<a name="l00296"></a>00296 <span class="preprocessor">    #else</span>
<a name="l00297"></a>00297 <span class="preprocessor"></span>    <span class="keywordflow">return</span> std::distance(m_poly.firstBegin(),m_poly.firstEnd());
<a name="l00298"></a>00298 <span class="preprocessor">    #endif</span>
<a name="l00299"></a>00299 <span class="preprocessor"></span>    }
<a name="l00300"></a>00300 
<a name="l00302"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#f41263f68e4c4e25530132ee69cce943">00302</a>   size_type <a class="code" href="classpolybori_1_1BooleMonomial.html#f41263f68e4c4e25530132ee69cce943" title="Size of the exponents.">size</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> deg(); }
<a name="l00303"></a>00303 
<a name="l00305"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#8f2276fdfa44d2fb08b53d423be6f2b1">00305</a>   <a class="code" href="classpolybori_1_1BooleSet.html">set_type</a> <a class="code" href="classpolybori_1_1BooleMonomial.html#8f2276fdfa44d2fb08b53d423be6f2b1" title="Divisors of the monomial.">divisors</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_poly.lmDivisors(); }
<a name="l00306"></a>00306 
<a name="l00308"></a>00308   set_type multiples(<span class="keyword">const</span> <span class="keyword">self</span>&amp;) <span class="keyword">const</span>; 
<a name="l00309"></a>00309 
<a name="l00311"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#2d69a19345d4a07f5c791cfab4ad6a16">00311</a>   hash_type <a class="code" href="classpolybori_1_1BooleMonomial.html#2d69a19345d4a07f5c791cfab4ad6a16" title="Hash value of the monomial.">stableHash</a>()<span class="keyword"> const </span>{
<a name="l00312"></a>00312     <span class="keywordflow">return</span> <a class="code" href="namespacepolybori.html#e483cc7d390b3083d418e16bbfc224c3">stable_first_hash_range</a>(m_poly.navigation());
<a name="l00313"></a>00313   }
<a name="l00314"></a>00314 
<a name="l00316"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#5a1570365678bb21087aca36830e7c17">00316</a>   hash_type <a class="code" href="classpolybori_1_1BooleMonomial.html#5a1570365678bb21087aca36830e7c17" title="Get unique hash value (valid only per runtime).">hash</a>()<span class="keyword"> const </span>{  <span class="keywordflow">return</span> m_poly.hash(); }
<a name="l00317"></a>00317 
<a name="l00319"></a>00319   <span class="keyword">self</span>&amp; <a class="code" href="classchangeAssign.html" title="Accessing .change(); variante using member templates.">changeAssign</a>(<a class="code" href="namespacepolybori_1_1groebner.html#ef37a95e97afbd561cc4c5f84d660765">idx_type</a>);
<a name="l00320"></a>00320 
<a name="l00322"></a>00322   <span class="keyword">self</span> <a class="code" href="classchange.html" title="Accessing .change().">change</a>(<a class="code" href="namespacepolybori_1_1groebner.html#ef37a95e97afbd561cc4c5f84d660765">idx_type</a>) <span class="keyword">const</span>;
<a name="l00323"></a>00323 
<a name="l00324"></a>00324 
<a name="l00326"></a>00326 
<a name="l00327"></a>00327   <span class="keyword">self</span>&amp; <a class="code" href="namespacepolybori.html#8eba69f420ed15210027edd66e988bf8" title="Multiplication of a polynomial by a variable with assignment.">operator*=</a>(<span class="keyword">const</span> <span class="keyword">self</span>&amp;);
<a name="l00328"></a>00328   <span class="keyword">self</span>&amp; <a class="code" href="namespacepolybori.html#0294e69f51e17d2b890bf91b55a99696" title="Division of a polynomial by a variable (forcing monomial variant).">operator/=</a>(<span class="keyword">const</span> <span class="keyword">self</span>&amp;);
<a name="l00329"></a>00329   <span class="keyword">self</span>&amp; <a class="code" href="namespacepolybori.html#8eba69f420ed15210027edd66e988bf8" title="Multiplication of a polynomial by a variable with assignment.">operator*=</a>(<span class="keyword">const</span> var_type&amp;);
<a name="l00330"></a>00330   <span class="keyword">self</span>&amp; <a class="code" href="namespacepolybori.html#0294e69f51e17d2b890bf91b55a99696" title="Division of a polynomial by a variable (forcing monomial variant).">operator/=</a>(<span class="keyword">const</span> var_type&amp;);
<a name="l00332"></a>00332 
<a name="l00334"></a>00334 
<a name="l00335"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#755aba27c181441ad2ea548f5036e761">00335</a>   bool_type <a class="code" href="classpolybori_1_1BooleMonomial.html#755aba27c181441ad2ea548f5036e761">operator==</a>(<span class="keyword">const</span> <span class="keyword">self</span>&amp; rhs)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_poly == rhs.m_poly; }
<a name="l00336"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#9485154173cb1cdcba46c8624b115439">00336</a>   bool_type <a class="code" href="classpolybori_1_1BooleMonomial.html#9485154173cb1cdcba46c8624b115439">operator!=</a>(<span class="keyword">const</span> <span class="keyword">self</span>&amp; rhs)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_poly != rhs.m_poly; }
<a name="l00337"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#1f63f9f398387cfe6f47c6ba43138bd3">00337</a>   bool_type <a class="code" href="classpolybori_1_1BooleMonomial.html#1f63f9f398387cfe6f47c6ba43138bd3">operator==</a>(<a class="code" href="classpolybori_1_1BooleConstant.html" title="This class wraps a bool value, which was not converted to a boolean polynomial or...">constant_type</a> rhs)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_poly == rhs; }
<a name="l00338"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#00d8f29619ac88f9544688e8e1ef60ba">00338</a>   bool_type <a class="code" href="classpolybori_1_1BooleMonomial.html#00d8f29619ac88f9544688e8e1ef60ba">operator!=</a>(<a class="code" href="classpolybori_1_1BooleConstant.html" title="This class wraps a bool value, which was not converted to a boolean polynomial or...">constant_type</a> rhs)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_poly != rhs; }
<a name="l00339"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#0b49d4b1f7700056498a631fd3335457">00339</a>   bool_type <a class="code" href="classpolybori_1_1BooleMonomial.html#0b49d4b1f7700056498a631fd3335457">isOne</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_poly.isOne(); }
<a name="l00340"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#d0982eab817d9137c41b7ada2bbdc021">00340</a>   bool_type <a class="code" href="classpolybori_1_1BooleMonomial.html#d0982eab817d9137c41b7ada2bbdc021">isConstant</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_poly.isConstant(); }
<a name="l00342"></a>00342 
<a name="l00344"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#1d5bda51e3183bb389d8bbc605f69f83">00344</a>   bool_type <a class="code" href="classpolybori_1_1BooleMonomial.html#1d5bda51e3183bb389d8bbc605f69f83" title="Test for reducibility.">reducibleBy</a>(<span class="keyword">const</span> <span class="keyword">self</span>&amp; rhs)<span class="keyword"> const </span>{ 
<a name="l00345"></a>00345     <span class="keywordflow">return</span> m_poly.reducibleBy(rhs); }
<a name="l00346"></a>00346   bool_type reducibleBy(<span class="keyword">const</span> var_type&amp; rhs) <span class="keyword">const</span>;
<a name="l00347"></a>00347 
<a name="l00349"></a>00349   comp_type compare(<span class="keyword">const</span> <span class="keyword">self</span>&amp;) <span class="keyword">const</span>;
<a name="l00350"></a>00350 
<a name="l00352"></a>00352   size_type LCMDeg(<span class="keyword">const</span> <span class="keyword">self</span>&amp;) <span class="keyword">const</span>;
<a name="l00353"></a>00353 
<a name="l00355"></a>00355   <span class="keyword">self</span>&amp; LCMAssign(<span class="keyword">const</span> <span class="keyword">self</span>&amp;);
<a name="l00356"></a>00356 
<a name="l00358"></a>00358   <span class="keyword">self</span> <a class="code" href="namespacepolybori.html#8bc2708dcbadf25d81b985f170d82a74" title="Compute the greatest common divisor of two monomials.">LCM</a>(<span class="keyword">const</span> <span class="keyword">self</span>&amp;) <span class="keyword">const</span>;
<a name="l00359"></a>00359 
<a name="l00361"></a>00361   <span class="keyword">self</span>&amp; GCDAssign(<span class="keyword">const</span> <span class="keyword">self</span>&amp;);
<a name="l00362"></a>00362 
<a name="l00364"></a>00364   <span class="keyword">self</span> <a class="code" href="namespacepolybori.html#7e0a3e6b6683d0bcda5877b4df7160bd" title="Compute the greatest common divisor of two monomials.">GCD</a>(<span class="keyword">const</span> <span class="keyword">self</span>&amp;) <span class="keyword">const</span>;
<a name="l00365"></a>00365  
<a name="l00367"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#4884899505316ffe516f66256743b4e1">00367</a>   <span class="keyword">const</span> <a class="code" href="classpolybori_1_1CDDInterface.html">dd_type</a>&amp; <a class="code" href="classpolybori_1_1BooleMonomial.html#4884899505316ffe516f66256743b4e1" title="Read-only access to internal decision diagramm structure.">diagram</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_poly.diagram(); }
<a name="l00368"></a>00368 
<a name="l00370"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#42c6a4a067541423960b3f4d229bbc3b">00370</a>   <a class="code" href="classpolybori_1_1BooleSet.html">set_type</a> <span class="keyword">set</span>() <span class="keyword">const</span> { <span class="keywordflow">return</span> m_poly.set(); }
<a name="l00371"></a>00371 
<a name="l00373"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#c55c858f07aca383a710e888a17cde6c">00373</a>   <span class="keyword">self</span>&amp; <a class="code" href="classpolybori_1_1BooleMonomial.html#c55c858f07aca383a710e888a17cde6c" title="Removes the first variables from monomial.">popFirst</a>() { 
<a name="l00374"></a>00374     assert(!m_poly.isConstant());
<a name="l00375"></a>00375     <span class="keywordflow">return</span> *<span class="keyword">this</span> = <a class="code" href="classpolybori_1_1BooleSet.html">set_type</a>( <a class="code" href="classpolybori_1_1CDDInterface.html">dd_type</a>(m_poly.diagram().manager(),
<a name="l00376"></a>00376                                      m_poly.navigation().thenBranch()) ); 
<a name="l00377"></a>00377   }
<a name="l00378"></a>00378 
<a name="l00380"></a>00380   var_type firstVariable() <span class="keyword">const</span>;
<a name="l00381"></a>00381 
<a name="l00383"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#d78df1d46dae6f71c05f5dba0861b22c">00383</a>   <a class="code" href="namespacepolybori_1_1groebner.html#ef37a95e97afbd561cc4c5f84d660765">idx_type</a> <a class="code" href="classpolybori_1_1BooleMonomial.html#d78df1d46dae6f71c05f5dba0861b22c" title="Get first index in monomial.">firstIndex</a>()<span class="keyword"> const </span>{
<a name="l00384"></a>00384     assert(!m_poly.isConstant());
<a name="l00385"></a>00385     <span class="keywordflow">return</span> *begin();
<a name="l00386"></a>00386   }
<a name="l00387"></a>00387 
<a name="l00389"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#e0d640f9ebc821179c772515b1dbd54b">00389</a>   <a class="code" href="classpolybori_1_1BooleRing.html" title="This class is just a wrapper for reinterpreting decicion diagram managers as Boolean...">ring_type</a> <a class="code" href="classpolybori_1_1BooleMonomial.html#e0d640f9ebc821179c772515b1dbd54b" title="Access ring, where this belongs to.">ring</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_poly.ring(); } 
<a name="l00390"></a>00390 
<a name="l00391"></a>00391 <span class="keyword">protected</span>:
<a name="l00393"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#dc63e7b0e79d566c42bd047aeb2f56cf">00393</a>   <a class="code" href="classpolybori_1_1CDDInterface.html">dd_type</a>&amp; <a class="code" href="classpolybori_1_1BooleMonomial.html#dc63e7b0e79d566c42bd047aeb2f56cf" title="Access to internal decision diagramm structure.">internalDiagram</a>() { <span class="keywordflow">return</span> m_poly.internalDiagram(); }
<a name="l00394"></a>00394 
<a name="l00396"></a>00396   <span class="comment">//  BooleMonomial(const dd_type&amp; rhs): m_poly(rhs) {}</span>
<a name="l00398"></a><a class="code" href="classpolybori_1_1BooleMonomial.html#a307490c6b340f1b73c520e79dc5edc9">00398</a> <span class="comment"></span>  <a class="code" href="classpolybori_1_1BooleMonomial.html#a307490c6b340f1b73c520e79dc5edc9" title="Construct from decision diagram.">BooleMonomial</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleSet.html">set_type</a>&amp; rhs): m_poly(rhs.diagram()) {
<a name="l00399"></a>00399     assert(!m_poly.isZero());
<a name="l00400"></a>00400   }
<a name="l00401"></a>00401 
<a name="l00402"></a>00402 <span class="keyword">private</span>:
<a name="l00403"></a>00403   <a class="code" href="classpolybori_1_1BoolePolynomial.html" title="This class wraps the underlying decicion diagram type and defines the necessary operations...">BoolePolynomial</a> m_poly;
<a name="l00404"></a>00404 };
<a name="l00405"></a>00405 
<a name="l00407"></a>00407 <span class="keyword">inline</span> BooleMonomial
<a name="l00408"></a><a class="code" href="namespacepolybori.html#77e199828cafa5b365a0bd01d8ba7e02">00408</a> <a class="code" href="namespacepolybori.html#77e199828cafa5b365a0bd01d8ba7e02" title="Multiplication of monomials.">operator*</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>&amp; lhs, <span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>&amp; rhs) {
<a name="l00409"></a>00409   <span class="keywordflow">return</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>(lhs) *= rhs;
<a name="l00410"></a>00410 }
<a name="l00412"></a>00412 <span class="keyword">inline</span> BooleMonomial
<a name="l00413"></a><a class="code" href="namespacepolybori.html#74ee1e1b8f3663bc2b2bab350676dda5">00413</a> <a class="code" href="namespacepolybori.html#77e199828cafa5b365a0bd01d8ba7e02" title="Multiplication of monomials.">operator*</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>&amp; lhs, <span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleVariable.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleVariable</a>&amp; rhs) {
<a name="l00414"></a>00414   <span class="keywordflow">return</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>(lhs) *= rhs;
<a name="l00415"></a>00415 }
<a name="l00417"></a>00417 <span class="keyword">inline</span> BoolePolynomial
<a name="l00418"></a><a class="code" href="namespacepolybori.html#f96ade7e06a57228386c2d7bb2dfa407">00418</a> <a class="code" href="namespacepolybori.html#77e199828cafa5b365a0bd01d8ba7e02" title="Multiplication of monomials.">operator*</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>&amp; lhs, <a class="code" href="classpolybori_1_1BooleConstant.html" title="This class wraps a bool value, which was not converted to a boolean polynomial or...">BooleConstant</a> rhs) {
<a name="l00419"></a>00419   <span class="keywordflow">return</span> <a class="code" href="classpolybori_1_1BoolePolynomial.html" title="This class wraps the underlying decicion diagram type and defines the necessary operations...">BoolePolynomial</a>(lhs) *= rhs;
<a name="l00420"></a>00420 }
<a name="l00421"></a>00421 
<a name="l00423"></a>00423 <span class="keyword">inline</span> BoolePolynomial
<a name="l00424"></a><a class="code" href="namespacepolybori.html#f9ea6a60be8af98a2a2638adb5bd5448">00424</a> <a class="code" href="namespacepolybori.html#77e199828cafa5b365a0bd01d8ba7e02" title="Multiplication of monomials.">operator*</a>(<a class="code" href="classpolybori_1_1BooleConstant.html" title="This class wraps a bool value, which was not converted to a boolean polynomial or...">BooleConstant</a> lhs, <span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>&amp; rhs) {
<a name="l00425"></a>00425   <span class="keywordflow">return</span> rhs * lhs;
<a name="l00426"></a>00426 }
<a name="l00427"></a>00427 
<a name="l00429"></a>00429 <span class="keyword">inline</span> BooleMonomial
<a name="l00430"></a><a class="code" href="namespacepolybori.html#b898153f8dea82bdd23d6ccdb280f887">00430</a> <a class="code" href="namespacepolybori.html#b898153f8dea82bdd23d6ccdb280f887" title="Division of monomials.">operator/</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>&amp; lhs, <span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>&amp; rhs) {
<a name="l00431"></a>00431   <span class="keywordflow">return</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>(lhs) /= rhs;
<a name="l00432"></a>00432 }
<a name="l00433"></a>00433 
<a name="l00435"></a>00435 <span class="keyword">inline</span> BooleMonomial
<a name="l00436"></a><a class="code" href="namespacepolybori.html#34899840786d7960f30bbfd1a365ec3f">00436</a> <a class="code" href="namespacepolybori.html#b898153f8dea82bdd23d6ccdb280f887" title="Division of monomials.">operator/</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>&amp; lhs, <span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleVariable.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleVariable</a>&amp; rhs) {
<a name="l00437"></a>00437   <span class="keywordflow">return</span>  lhs / <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>(rhs);
<a name="l00438"></a>00438 }
<a name="l00439"></a>00439 
<a name="l00441"></a>00441 <span class="keyword">inline</span> BooleMonomial::bool_type
<a name="l00442"></a><a class="code" href="namespacepolybori.html#243175046ed0218cf5a9687bce17a19e">00442</a> <a class="code" href="namespacepolybori.html#0705f6dda19681aa006a7e1120f52213" title="Less than comparision.">operator&lt;</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>&amp; lhs, <span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>&amp; rhs) {
<a name="l00443"></a>00443 
<a name="l00444"></a>00444   <span class="keywordflow">return</span> (lhs.<a class="code" href="classpolybori_1_1BooleMonomial.html#2ece9c4978232a3c6eb84546bb9dbedf" title="Compare with rhs monomial and return comparision code.">compare</a>(rhs) == CTypes::less_than);
<a name="l00445"></a>00445 }
<a name="l00446"></a>00446 
<a name="l00448"></a>00448 <span class="keyword">inline</span> BooleMonomial::bool_type
<a name="l00449"></a><a class="code" href="namespacepolybori.html#f953e7437dae11bdaab30f725eb17279">00449</a> <a class="code" href="namespacepolybori.html#80517b393fe00951064261d287ddf356" title="Greater than comparision.">operator&gt;</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>&amp; lhs, <span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>&amp; rhs) {
<a name="l00450"></a>00450 
<a name="l00451"></a>00451   <span class="keywordflow">return</span> (lhs.<a class="code" href="classpolybori_1_1BooleMonomial.html#2ece9c4978232a3c6eb84546bb9dbedf" title="Compare with rhs monomial and return comparision code.">compare</a>(rhs) == CTypes::greater_than);
<a name="l00452"></a>00452 }
<a name="l00453"></a>00453 
<a name="l00455"></a>00455 <span class="keyword">inline</span> BooleMonomial::bool_type
<a name="l00456"></a><a class="code" href="namespacepolybori.html#281e36d00b6d20baabb9cf474db64d47">00456</a> <a class="code" href="namespacepolybori.html#77daea56b2553c99bedab92cd14f7bb5" title="Less or equal than comparision.">operator&lt;=</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>&amp; lhs, <span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>&amp; rhs) {
<a name="l00457"></a>00457 
<a name="l00458"></a>00458   <span class="keywordflow">return</span> (lhs.<a class="code" href="classpolybori_1_1BooleMonomial.html#2ece9c4978232a3c6eb84546bb9dbedf" title="Compare with rhs monomial and return comparision code.">compare</a>(rhs) &lt;= CTypes::less_or_equal_max);
<a name="l00459"></a>00459 }
<a name="l00460"></a>00460 
<a name="l00462"></a>00462 <span class="keyword">inline</span> BooleMonomial::bool_type
<a name="l00463"></a><a class="code" href="namespacepolybori.html#13bc6bff14732b01c1e7e6ba053b933f">00463</a> <a class="code" href="namespacepolybori.html#9d6eea14a1d7dd2fda19959faafbac40" title="Greater or equal than comparision.">operator&gt;=</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>&amp; lhs, <span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>&amp; rhs) {
<a name="l00464"></a>00464 
<a name="l00465"></a>00465   <span class="keywordflow">return</span> (lhs.<a class="code" href="classpolybori_1_1BooleMonomial.html#2ece9c4978232a3c6eb84546bb9dbedf" title="Compare with rhs monomial and return comparision code.">compare</a>(rhs) &gt;= CTypes::greater_or_equal_min);
<a name="l00466"></a>00466 }
<a name="l00467"></a>00467 
<a name="l00468"></a>00468 
<a name="l00470"></a>00470 <span class="keyword">inline</span> BooleMonomial
<a name="l00471"></a><a class="code" href="namespacepolybori.html#4a21cc0bdd459bfcd2d914fb54b44917">00471</a> <a class="code" href="namespacepolybori.html#7e0a3e6b6683d0bcda5877b4df7160bd" title="Compute the greatest common divisor of two monomials.">GCD</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>&amp; lhs, <span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>&amp; rhs ){
<a name="l00472"></a>00472 
<a name="l00473"></a>00473   <span class="keywordflow">return</span> lhs.<a class="code" href="classpolybori_1_1BooleMonomial.html#1d5c778300c8058b0234b5739183a9c2" title="Compute the greatest common divisor.">GCD</a>(rhs);
<a name="l00474"></a>00474 }
<a name="l00475"></a>00475 
<a name="l00477"></a>00477 <span class="keyword">inline</span> BooleMonomial
<a name="l00478"></a><a class="code" href="namespacepolybori.html#629f757a8c28d1a8f2b6137f45e1c320">00478</a> <a class="code" href="namespacepolybori.html#8bc2708dcbadf25d81b985f170d82a74" title="Compute the greatest common divisor of two monomials.">LCM</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>&amp; lhs, <span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>&amp; rhs ){
<a name="l00479"></a>00479 
<a name="l00480"></a>00480   <span class="keywordflow">return</span> lhs.<a class="code" href="classpolybori_1_1BooleMonomial.html#5266d92b608e44adcb45b061d81601b5" title="Compute the greatest common divisor.">LCM</a>(rhs);
<a name="l00481"></a>00481 }
<a name="l00482"></a>00482 
<a name="l00485"></a>00485 BooleMonomial::bool_type
<a name="l00486"></a>00486 <a class="code" href="namespacepolybori.html#0399063f63fe12eb7ec176a86f5c69fc" title="Checks whether BooleVariable(lhs) &amp;gt; BooleVariable(rhs).">greater_variable</a>(<a class="code" href="namespacepolybori_1_1groebner.html#ef37a95e97afbd561cc4c5f84d660765">BooleMonomial::idx_type</a> lhs, <a class="code" href="namespacepolybori_1_1groebner.html#ef37a95e97afbd561cc4c5f84d660765">BooleMonomial::idx_type</a> rhs);
<a name="l00487"></a>00487 
<a name="l00488"></a>00488 
<a name="l00490"></a>00490 <span class="keyword">inline</span> BoolePolynomial
<a name="l00491"></a><a class="code" href="namespacepolybori.html#ac52a194f4da739d7a1f7f640a5e6eed">00491</a> <a class="code" href="namespacepolybori.html#77e199828cafa5b365a0bd01d8ba7e02" title="Multiplication of monomials.">operator*</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleVariable.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleVariable</a>&amp; lhs, <span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleConstant.html" title="This class wraps a bool value, which was not converted to a boolean polynomial or...">BooleConstant</a>&amp; rhs){
<a name="l00492"></a>00492 
<a name="l00493"></a>00493   <span class="keywordflow">return</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>(lhs) * rhs;
<a name="l00494"></a>00494 }
<a name="l00495"></a>00495 
<a name="l00497"></a>00497 <span class="keyword">inline</span> BoolePolynomial
<a name="l00498"></a><a class="code" href="namespacepolybori.html#34b14f001d9e85837c789c1f32258b3e">00498</a> <a class="code" href="namespacepolybori.html#77e199828cafa5b365a0bd01d8ba7e02" title="Multiplication of monomials.">operator*</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleConstant.html" title="This class wraps a bool value, which was not converted to a boolean polynomial or...">BooleConstant</a>&amp; lhs, <span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleVariable.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleVariable</a>&amp; rhs){
<a name="l00499"></a>00499 
<a name="l00500"></a>00500   <span class="keywordflow">return</span> rhs * lhs;
<a name="l00501"></a>00501 }
<a name="l00502"></a>00502 
<a name="l00504"></a>00504 <span class="keyword">inline</span> BoolePolynomial
<a name="l00505"></a><a class="code" href="namespacepolybori.html#9ab2779c2164a08856c4d98a8259c547">00505</a> <a class="code" href="namespacepolybori.html#77e199828cafa5b365a0bd01d8ba7e02" title="Multiplication of monomials.">operator*</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleVariable.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleVariable</a>&amp; lhs, 
<a name="l00506"></a>00506           <span class="keyword">const</span> <a class="code" href="classpolybori_1_1BoolePolynomial.html" title="This class wraps the underlying decicion diagram type and defines the necessary operations...">BoolePolynomial</a>&amp; rhs){
<a name="l00507"></a>00507 
<a name="l00508"></a>00508   <span class="keywordflow">return</span> <a class="code" href="classpolybori_1_1BoolePolynomial.html" title="This class wraps the underlying decicion diagram type and defines the necessary operations...">BoolePolynomial</a>(rhs) *= <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>(lhs);
<a name="l00509"></a>00509 }
<a name="l00510"></a>00510 
<a name="l00512"></a>00512 <span class="keyword">inline</span> BooleMonomial
<a name="l00513"></a><a class="code" href="namespacepolybori.html#a24acf542a1b987ce21b80178f43b705">00513</a> <a class="code" href="namespacepolybori.html#77e199828cafa5b365a0bd01d8ba7e02" title="Multiplication of monomials.">operator*</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleVariable.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleVariable</a>&amp; lhs, 
<a name="l00514"></a>00514           <span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>&amp; rhs){
<a name="l00515"></a>00515 
<a name="l00516"></a>00516   <span class="keywordflow">return</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>(lhs) * rhs;
<a name="l00517"></a>00517 }
<a name="l00518"></a>00518 
<a name="l00520"></a>00520 <span class="keyword">inline</span> BoolePolynomial&amp;
<a name="l00521"></a><a class="code" href="namespacepolybori.html#8eba69f420ed15210027edd66e988bf8">00521</a> <a class="code" href="namespacepolybori.html#8eba69f420ed15210027edd66e988bf8" title="Multiplication of a polynomial by a variable with assignment.">operator*=</a>(<a class="code" href="classpolybori_1_1BoolePolynomial.html" title="This class wraps the underlying decicion diagram type and defines the necessary operations...">BoolePolynomial</a>&amp; lhs, 
<a name="l00522"></a>00522            <span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleVariable.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleVariable</a>&amp; rhs){
<a name="l00523"></a>00523 
<a name="l00524"></a>00524   <span class="keywordflow">return</span> lhs *= <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>(rhs);
<a name="l00525"></a>00525 }
<a name="l00526"></a>00526 
<a name="l00528"></a>00528 <span class="keyword">inline</span> BooleMonomial
<a name="l00529"></a><a class="code" href="namespacepolybori.html#94258ba8503802604b427d0992d544a8">00529</a> <a class="code" href="namespacepolybori.html#77e199828cafa5b365a0bd01d8ba7e02" title="Multiplication of monomials.">operator*</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleVariable.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleVariable</a>&amp; lhs, 
<a name="l00530"></a>00530           <span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleVariable.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleVariable</a>&amp; rhs){
<a name="l00531"></a>00531 
<a name="l00532"></a>00532   <span class="keywordflow">return</span> <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>(lhs) *= <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>(rhs);
<a name="l00533"></a>00533 }
<a name="l00534"></a>00534 
<a name="l00536"></a>00536 <span class="keyword">inline</span> BoolePolynomial
<a name="l00537"></a><a class="code" href="namespacepolybori.html#d02a459e8afd753ed7ef7cd8f6cd3580">00537</a> <a class="code" href="namespacepolybori.html#77e199828cafa5b365a0bd01d8ba7e02" title="Multiplication of monomials.">operator*</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1BoolePolynomial.html" title="This class wraps the underlying decicion diagram type and defines the necessary operations...">BoolePolynomial</a>&amp; lhs, 
<a name="l00538"></a>00538           <span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleVariable.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleVariable</a>&amp; rhs){
<a name="l00539"></a>00539 
<a name="l00540"></a>00540   <span class="keywordflow">return</span> <a class="code" href="classpolybori_1_1BoolePolynomial.html" title="This class wraps the underlying decicion diagram type and defines the necessary operations...">BoolePolynomial</a>(lhs) *= <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>(rhs);
<a name="l00541"></a>00541 }
<a name="l00542"></a>00542 
<a name="l00544"></a>00544 <span class="keyword">inline</span> BoolePolynomial&amp;
<a name="l00545"></a><a class="code" href="namespacepolybori.html#0294e69f51e17d2b890bf91b55a99696">00545</a> <a class="code" href="namespacepolybori.html#0294e69f51e17d2b890bf91b55a99696" title="Division of a polynomial by a variable (forcing monomial variant).">operator/=</a>(<a class="code" href="classpolybori_1_1BoolePolynomial.html" title="This class wraps the underlying decicion diagram type and defines the necessary operations...">BoolePolynomial</a>&amp; lhs, <span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleVariable.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleVariable</a>&amp; rhs){
<a name="l00546"></a>00546 
<a name="l00547"></a>00547   <span class="keywordflow">return</span> lhs /= <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>(rhs);
<a name="l00548"></a>00548 }
<a name="l00549"></a>00549 
<a name="l00551"></a>00551 <span class="keyword">inline</span> BoolePolynomial
<a name="l00552"></a><a class="code" href="namespacepolybori.html#861f9badde1c6af3568c5fea40f5bc5a">00552</a> <a class="code" href="namespacepolybori.html#b898153f8dea82bdd23d6ccdb280f887" title="Division of monomials.">operator/</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1BoolePolynomial.html" title="This class wraps the underlying decicion diagram type and defines the necessary operations...">BoolePolynomial</a>&amp; lhs, 
<a name="l00553"></a>00553           <span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleVariable.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleVariable</a>&amp; rhs){
<a name="l00554"></a>00554 
<a name="l00555"></a>00555   <span class="keywordflow">return</span> lhs / <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>(rhs);
<a name="l00556"></a>00556 }
<a name="l00557"></a>00557 
<a name="l00558"></a>00558 
<a name="l00560"></a>00560 <span class="keyword">inline</span> BoolePolynomial
<a name="l00561"></a><a class="code" href="namespacepolybori.html#b3536570011f6d9ccacfabf01a8792ef">00561</a> <a class="code" href="namespacepolybori.html#b3536570011f6d9ccacfabf01a8792ef" title="Remainder of division of a polynomial by a variable.">operator%</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1BoolePolynomial.html" title="This class wraps the underlying decicion diagram type and defines the necessary operations...">BoolePolynomial</a>&amp; lhs, 
<a name="l00562"></a>00562           <span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleVariable.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleVariable</a>&amp; rhs){
<a name="l00563"></a>00563 
<a name="l00564"></a>00564   <span class="keywordflow">return</span> lhs % <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>(rhs);
<a name="l00565"></a>00565 }
<a name="l00566"></a>00566 
<a name="l00568"></a>00568 <span class="keyword">inline</span> BoolePolynomial&amp;
<a name="l00569"></a><a class="code" href="namespacepolybori.html#9874e6918ff751d2b09c63be7f1bab8e">00569</a> <a class="code" href="namespacepolybori.html#9874e6918ff751d2b09c63be7f1bab8e" title="Remainder of division of a polynomial by a variable (with assignment).">operator%=</a>(<a class="code" href="classpolybori_1_1BoolePolynomial.html" title="This class wraps the underlying decicion diagram type and defines the necessary operations...">BoolePolynomial</a>&amp; lhs, 
<a name="l00570"></a>00570           <span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleVariable.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleVariable</a>&amp; rhs){
<a name="l00571"></a>00571 
<a name="l00572"></a>00572   <span class="keywordflow">return</span> lhs %= <a class="code" href="classpolybori_1_1BooleMonomial.html" title="This class is just a wrapper for using variables from cudd&amp;#39;s decicion diagram...">BooleMonomial</a>(rhs);
<a name="l00573"></a>00573 }
<a name="l00574"></a>00574 
<a name="l00575"></a>00575 <a class="code" href="pbori__defs_8h.html#faf094fde6c1a7f1aad18bcb455f3b06" title="Finish project&amp;#39;s namespace.">END_NAMESPACE_PBORI</a>
<a name="l00576"></a>00576 
<a name="l00577"></a>00577 
<a name="l00578"></a>00578 <span class="preprocessor">#endif // of BooleMonomial_h_</span>
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Wed Sep 9 14:30:52 2009 for PolyBoRi by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>