Sophie

Sophie

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

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: BoolePolynomial.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>BoolePolynomial.h</h1><a href="BoolePolynomial_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="l00319"></a>00319 <span class="comment"></span><span class="comment">//*****************************************************************************</span>
<a name="l00320"></a>00320 
<a name="l00321"></a>00321 <span class="preprocessor">#ifndef BoolePolynomial_h_</span>
<a name="l00322"></a>00322 <span class="preprocessor"></span><span class="preprocessor">#define BoolePolynomial_h_</span>
<a name="l00323"></a>00323 <span class="preprocessor"></span>
<a name="l00324"></a>00324 <span class="comment">// include standard definitions</span>
<a name="l00325"></a>00325 <span class="preprocessor">#include &lt;vector&gt;</span>
<a name="l00326"></a>00326 
<a name="l00327"></a>00327 <span class="comment">// get standard map functionality</span>
<a name="l00328"></a>00328 <span class="preprocessor">#include &lt;map&gt;</span>
<a name="l00329"></a>00329 
<a name="l00330"></a>00330 <span class="comment">// get standard algorithmic functionalites</span>
<a name="l00331"></a>00331 <span class="preprocessor">#include &lt;algorithm&gt;</span>
<a name="l00332"></a>00332 
<a name="l00333"></a>00333 <span class="preprocessor">#include "<a class="code" href="BooleRing_8h.html">BooleRing.h</a>"</span>
<a name="l00334"></a>00334 <span class="comment">// include basic definitions and decision diagram interface</span>
<a name="l00335"></a>00335 <span class="preprocessor">#include "<a class="code" href="CDDInterface_8h.html">CDDInterface.h</a>"</span>
<a name="l00336"></a>00336 
<a name="l00337"></a>00337 <span class="comment">// include definition of sets of Boolean variables</span>
<a name="l00338"></a>00338 <span class="preprocessor">#include "<a class="code" href="CTermIter_8h.html">CTermIter.h</a>"</span>
<a name="l00339"></a>00339 <span class="preprocessor">#include "<a class="code" href="CBidirectTermIter_8h.html">CBidirectTermIter.h</a>"</span>
<a name="l00340"></a>00340 
<a name="l00341"></a>00341 <span class="preprocessor">#include "<a class="code" href="pbori__func_8h.html">pbori_func.h</a>"</span>
<a name="l00342"></a>00342 <span class="preprocessor">#include "<a class="code" href="pbori__tags_8h.html">pbori_tags.h</a>"</span>
<a name="l00343"></a>00343 <span class="preprocessor">#include "<a class="code" href="BooleSet_8h.html">BooleSet.h</a>"</span>
<a name="l00344"></a>00344 
<a name="l00345"></a>00345 <span class="preprocessor">#include "<a class="code" href="CTermIter_8h.html">CTermIter.h</a>"</span>
<a name="l00346"></a>00346 <span class="preprocessor">#include "<a class="code" href="BooleConstant_8h.html">BooleConstant.h</a>"</span>
<a name="l00347"></a>00347 
<a name="l00348"></a>00348 <a class="code" href="pbori__defs_8h.html#6ae360a591580558f31b6157ee792a10" title="Start project&amp;#39;s namespace.">BEGIN_NAMESPACE_PBORI</a>
<a name="l00349"></a>00349 
<a name="l00350"></a>00350 
<a name="l00351"></a>00351 <span class="comment">// forward declarations</span>
<a name="l00352"></a>00352 <span class="keyword">class </span>LexOrder;
<a name="l00353"></a>00353 <span class="keyword">class </span>DegLexOrder;
<a name="l00354"></a>00354 <span class="keyword">class </span>DegRevLexAscOrder;
<a name="l00355"></a>00355 <span class="keyword">class </span>BlockDegLexOrder;
<a name="l00356"></a>00356 <span class="keyword">class </span>BlockDegRevLexAscOrder;
<a name="l00357"></a>00357 
<a name="l00358"></a>00358 <span class="keyword">class </span>BooleMonomial;
<a name="l00359"></a>00359 <span class="keyword">class </span>BooleVariable;
<a name="l00360"></a>00360 <span class="keyword">class </span>BooleExponent;
<a name="l00361"></a>00361 
<a name="l00362"></a>00362 
<a name="l00363"></a>00363 <span class="keyword">template</span> &lt;<span class="keyword">class</span> IteratorType, <span class="keyword">class</span> MonomType&gt;
<a name="l00364"></a>00364 <span class="keyword">class </span>CIndirectIter;
<a name="l00365"></a>00365 
<a name="l00366"></a>00366 <span class="keyword">template</span> &lt;<span class="keyword">class</span> IteratorType, <span class="keyword">class</span> MonomType&gt;
<a name="l00367"></a>00367 <span class="keyword">class </span>COrderedIter;
<a name="l00368"></a>00368 
<a name="l00369"></a>00369 
<a name="l00370"></a>00370 <span class="comment">//template&lt;class, class, class, class&gt; class CGenericIter;</span>
<a name="l00371"></a>00371 <span class="keyword">template</span>&lt;<span class="keyword">class</span>, <span class="keyword">class</span>, <span class="keyword">class</span>, <span class="keyword">class</span>&gt; <span class="keyword">class </span>CDelayedTermIter;
<a name="l00372"></a>00372 
<a name="l00373"></a>00373 <span class="keyword">template</span>&lt;<span class="keyword">class</span> OrderType, <span class="keyword">class</span> NavigatorType, <span class="keyword">class</span> MonomType&gt;
<a name="l00374"></a>00374 <span class="keyword">class </span>CGenericIter;
<a name="l00375"></a>00375 
<a name="l00376"></a>00376 <span class="keyword">template</span>&lt;<span class="keyword">class</span> OrderType, <span class="keyword">class</span> NavigatorType, <span class="keyword">class</span> MonomType&gt;
<a name="l00377"></a>00377 <span class="keyword">class </span>MyCGenericIter;
<a name="l00378"></a>00378 
<a name="l00379"></a>00379 
<a name="l00380"></a>00380 <span class="keyword">template</span>&lt;<span class="keyword">class</span> NavigatorType, <span class="keyword">class</span> ExpType&gt;
<a name="l00381"></a>00381 <span class="keyword">class </span>CExpIter;
<a name="l00382"></a>00382 
<a name="l00383"></a>00383 
<a name="l00389"></a>00389 <span class="keyword">class </span>BoolePolynomial;
<a name="l00390"></a>00390 BoolePolynomial 
<a name="l00391"></a>00391 <a class="code" href="namespacepolybori.html#c52b8cfba4e31a876eb2b41c6fb7cce6" title="Multiplication of monomials.">operator+</a>(<span class="keyword">const</span> BoolePolynomial&amp; lhs, <span class="keyword">const</span> BoolePolynomial&amp; rhs);
<a name="l00392"></a>00392 
<a name="l00393"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html">00393</a> <span class="keyword">class </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 name="l00394"></a>00394 
<a name="l00395"></a>00395 <span class="keyword">public</span>:
<a name="l00396"></a>00396 
<a name="l00398"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#6e128d7cf48287a85e3841e4ab833401">00398</a>   <span class="keyword">friend</span> <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="l00399"></a>00399 
<a name="l00400"></a>00400   <span class="comment">//-------------------------------------------------------------------------</span>
<a name="l00401"></a>00401   <span class="comment">// types definitions</span>
<a name="l00402"></a>00402   <span class="comment">//-------------------------------------------------------------------------</span>
<a name="l00403"></a>00403 
<a name="l00405"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#6d59ce892902f060c65d78140c58555d">00405</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> <span class="keyword">self</span>;
<a name="l00406"></a>00406 
<a name="l00408"></a>00408 
<a name="l00409"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#89cb4781889d808a07f64edf5c80d29c">00409</a>   <span class="keyword">typedef</span> <a class="code" href="classCDDManager.html" title="this specialization of the template class CDDManager gives an interface to Cudd&amp;#39;s...">CTypes::manager_type</a> <a class="code" href="classCDDManager.html" title="this specialization of the template class CDDManager gives an interface to Cudd&amp;#39;s...">manager_type</a>;
<a name="l00410"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#91eb89556ec1b694c2712c10df179988">00410</a>   <span class="keyword">typedef</span> <a class="code" href="classCDDManager.html" title="this specialization of the template class CDDManager gives an interface to Cudd&amp;#39;s...">CTypes::manager_reference</a> <a class="code" href="classCDDManager.html" title="this specialization of the template class CDDManager gives an interface to Cudd&amp;#39;s...">manager_reference</a>;
<a name="l00411"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#48297dccccf39b86032cdbb25be986d2">00411</a>   <span class="keyword">typedef</span> CTypes::manager_ptr manager_ptr;
<a name="l00412"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#87bea0bc3c938c8d3528ea2119e410f5">00412</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="l00413"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#a95ed10bbb6de4d0c80ef3836e3c53aa">00413</a>   <span class="keyword">typedef</span> CTypes::size_type size_type;
<a name="l00414"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#387f5d548f4eb9882bf74f4e481cd76a">00414</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="l00415"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#f2fa5410a78b654163ea2e4061c0db3b">00415</a>   <span class="keyword">typedef</span> CTypes::bool_type bool_type;
<a name="l00416"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#773245778f095b9b8a9b6940d8f7f462">00416</a>   <span class="keyword">typedef</span> CTypes::ostream_type ostream_type;
<a name="l00417"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#f35f1df19ee1faf411fc3d10034464a0">00417</a>   <span class="keyword">typedef</span> CTypes::hash_type hash_type;
<a name="l00419"></a>00419 
<a name="l00421"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#e3af17208b8652d1ba82958cd5c066b8">00421</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.">dd_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.">first_iterator</a>;
<a name="l00422"></a>00422 
<a name="l00424"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#d033d988c944f4890ebfc6de317b2fc6">00424</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CCuddNavigator.html" title="This class defines an iterator for navigating through then and else branches of ZDDs...">dd_type::navigator</a> <a class="code" href="classpolybori_1_1CCuddNavigator.html" title="This class defines an iterator for navigating through then and else branches of ZDDs...">navigator</a>;
<a name="l00425"></a>00425 
<a name="l00427"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#0520db2e8d55f81515c8f42bc4ecd597">00427</a>   <span class="keyword">typedef</span> dd_type::pretty_out_type pretty_out_type;
<a name="l00428"></a>00428 
<a name="l00430"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#a618375c137ef1ef188836e18c64d2c1">00430</a>   <span class="keyword">typedef</span> dd_type::filename_type filename_type;
<a name="l00431"></a>00431 
<a name="l00433"></a>00433 
<a name="l00435"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#3b8240639fafff00bcd61e0696207041">00435</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> <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...">monom_type</a>; 
<a name="l00436"></a>00436 
<a name="l00438"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#1a5292b5add47d4156541368692289c3">00438</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...">BooleVariable</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="l00439"></a>00439 
<a name="l00441"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#1332be7d1907b20cab34600a2be81aab">00441</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...">BooleExponent</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="l00442"></a>00442 
<a name="l00444"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#936be21393c2a3da46b58d1d074c311e">00444</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...">BooleConstant</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="l00445"></a>00445 
<a name="l00447"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#f3e80a21ea24273fd86ec8960da4e9c3">00447</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...">BooleRing</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="l00448"></a>00448 
<a name="l00450"></a>00450   <span class="keyword">typedef</span> 
<a name="l00451"></a>00451   <a class="code" href="classpolybori_1_1binary__composition.html" title="Compose a binary function with two default constructable unary functions.">binary_composition&lt; std::plus&lt;size_type&gt;</a>, 
<a name="l00452"></a>00452                       <a class="code" href="classproject__ith.html" title="Virtually does nothing with the given arguments.">project_ith&lt;1&gt;</a>, <a class="code" href="structpolybori_1_1integral__constant.html" title="integral_constant&amp;lt;int_type, NUM&amp;gt;()() returns NUM of int_type, instead of possibly...">integral_constant&lt;size_type, 1&gt;</a> &gt; 
<a name="l00453"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#2e3754dea62021b7cc7d17301a0a4085">00453</a>   <a class="code" href="classpolybori_1_1binary__composition.html" title="Compose a binary function with two default constructable unary functions.">increment_type</a>;
<a name="l00454"></a>00454 
<a name="l00456"></a>00456   <span class="keyword">typedef</span> 
<a name="l00457"></a>00457   <a class="code" href="classpolybori_1_1binary__composition.html" title="Compose a binary function with two default constructable unary functions.">binary_composition&lt; std::minus&lt;size_type&gt;</a>, 
<a name="l00458"></a>00458                       <a class="code" href="classproject__ith.html" title="Virtually does nothing with the given arguments.">project_ith&lt;1&gt;</a>, <a class="code" href="structpolybori_1_1integral__constant.html" title="integral_constant&amp;lt;int_type, NUM&amp;gt;()() returns NUM of int_type, instead of possibly...">integral_constant&lt;size_type, 1&gt;</a> &gt; 
<a name="l00459"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#5c03532435d9bd7f2bf4a8f35db81589">00459</a>   <a class="code" href="classpolybori_1_1binary__composition.html" title="Compose a binary function with two default constructable unary functions.">decrement_type</a>;
<a name="l00460"></a>00460 
<a name="l00461"></a>00461 
<a name="l00462"></a>00462 
<a name="l00464"></a>00464   <span class="comment">//  typedef COrderedIter&lt;exp_type&gt; ordered_exp_iterator;</span>
<a name="l00465"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#0808840d34622ebab5325a6ca63b6c71">00465</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1COrderedIter.html">COrderedIter&lt;navigator, exp_type&gt;</a> <a class="code" href="classpolybori_1_1COrderedIter.html">ordered_exp_iterator</a>;
<a name="l00466"></a>00466 
<a name="l00468"></a>00468   <span class="comment">//  typedef COrderedIter&lt;monom_type&gt; ordered_iterator;</span>
<a name="l00469"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#4ccc7efb6914a9cb74076a0b669c6e83">00469</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1COrderedIter.html">COrderedIter&lt;navigator, monom_type&gt;</a> <a class="code" href="classpolybori_1_1COrderedIter.html">ordered_iterator</a>;
<a name="l00470"></a>00470 
<a name="l00472"></a>00472 
<a name="l00473"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#ea2f60574d3e589e1602c3030bd5e868">00473</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CGenericIter.html">CGenericIter&lt;LexOrder, navigator, monom_type&gt;</a> <a class="code" href="classpolybori_1_1CGenericIter.html">lex_iterator</a>;
<a name="l00475"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#8b8c24ea354a34a7210bd49f4902dc9a">00475</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CGenericIter.html">CGenericIter&lt;DegLexOrder, navigator, monom_type&gt;</a> <a class="code" href="classpolybori_1_1CGenericIter.html">dlex_iterator</a>;
<a name="l00476"></a>00476   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CGenericIter.html">CGenericIter&lt;DegRevLexAscOrder, navigator, monom_type&gt;</a> 
<a name="l00477"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#011c617a980db93511b0d5ce72dc029e">00477</a>   <a class="code" href="classpolybori_1_1CGenericIter.html">dp_asc_iterator</a>;
<a name="l00478"></a>00478 
<a name="l00479"></a>00479   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CGenericIter.html">CGenericIter&lt;BlockDegLexOrder,  navigator, monom_type&gt;</a> 
<a name="l00480"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#08b8a1de41631e78806059a177ccc2fc">00480</a>   <a class="code" href="classpolybori_1_1CGenericIter.html">block_dlex_iterator</a>;
<a name="l00481"></a>00481   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CGenericIter.html">CGenericIter&lt;BlockDegRevLexAscOrder,  navigator, monom_type&gt;</a> 
<a name="l00482"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#1658d8d6b51eb113b082cfbabd48abb0">00482</a>   <a class="code" href="classpolybori_1_1CGenericIter.html">block_dp_asc_iterator</a>;
<a name="l00483"></a>00483 
<a name="l00484"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#642ab9477c56f47107e0f3ac53923b5a">00484</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CGenericIter.html">CGenericIter&lt;LexOrder, navigator, exp_type&gt;</a> <a class="code" href="classpolybori_1_1CGenericIter.html">lex_exp_iterator</a>;
<a name="l00485"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#418e0eb830b0d2c5b5f27ddcfef596e0">00485</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CGenericIter.html">CGenericIter&lt;DegLexOrder,  navigator, exp_type&gt;</a> <a class="code" href="classpolybori_1_1CGenericIter.html">dlex_exp_iterator</a>;
<a name="l00486"></a>00486   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CGenericIter.html">CGenericIter&lt;DegRevLexAscOrder,  navigator, exp_type&gt;</a> 
<a name="l00487"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#f7f4618ce977c63cb828177cd45cfdb7">00487</a>   <a class="code" href="classpolybori_1_1CGenericIter.html">dp_asc_exp_iterator</a>;
<a name="l00488"></a>00488   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CGenericIter.html">CGenericIter&lt;BlockDegLexOrder, navigator, exp_type&gt;</a> 
<a name="l00489"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#341de73dfb0f50b80a2da4037200c238">00489</a>   <a class="code" href="classpolybori_1_1CGenericIter.html">block_dlex_exp_iterator</a>;
<a name="l00490"></a>00490   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CGenericIter.html">CGenericIter&lt;BlockDegRevLexAscOrder, navigator, exp_type&gt;</a> 
<a name="l00491"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#6210c943b9e9efc214a9c8177aa3da99">00491</a>   <a class="code" href="classpolybori_1_1CGenericIter.html">block_dp_asc_exp_iterator</a>;
<a name="l00493"></a>00493 
<a name="l00495"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#4f59b6c5446abff41285e7115d3d498f">00495</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CGenericIter.html">lex_iterator</a> <a class="code" href="classpolybori_1_1CGenericIter.html">const_iterator</a>;
<a name="l00496"></a>00496 
<a name="l00498"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#1d547e57c0ce704bbdf9fc21f0380596">00498</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CExpIter.html">CExpIter&lt;navigator, exp_type&gt;</a> <a class="code" href="classpolybori_1_1CExpIter.html">exp_iterator</a>;
<a name="l00499"></a>00499 
<a name="l00501"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#322d6adf91745e245a90c25aa94250d0">00501</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CGenericIter.html">CGenericIter&lt;LexOrder, navigator, size_type&gt;</a> <a class="code" href="classpolybori_1_1CGenericIter.html">deg_iterator</a>;
<a name="l00502"></a>00502 
<a name="l00504"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#fe8dacf966ec169a6a5fa2bbb7f16791">00504</a>   <span class="keyword">typedef</span> std::vector&lt;monom_type&gt; termlist_type;
<a name="l00505"></a>00505 
<a name="l00507"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#08ef023bd79bff09941462baa4f878c7">00507</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="l00508"></a>00508 
<a name="l00510"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#7cc61ccf051447e13bbf7556f71dd23f">00510</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1BooleSet.html">BooleSet</a> <a class="code" href="classpolybori_1_1BooleSet.html">set_type</a>;
<a name="l00511"></a>00511 
<a name="l00513"></a>00513   <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="l00514"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#2cf501ab6fe3f96105fcfaccf7b03f65">00514</a>     std::less&lt;navigator&gt;, <a class="code" href="classpolybori_1_1navigates.html">navigates&lt;self&gt;</a> &gt; &gt; idx_map_type;
<a name="l00515"></a>00515   <span class="keyword">typedef</span> std::map&lt;self, std::vector&lt;self&gt;, <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="l00516"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#12d6d340119c1578f9a54a53e870b30e">00516</a>     std::less&lt;navigator&gt;, <a class="code" href="classpolybori_1_1navigates.html">navigates&lt;self&gt;</a> &gt; &gt; poly_vec_map_type;
<a name="l00517"></a>00517 
<a name="l00518"></a>00518   <span class="comment">//-------------------------------------------------------------------------</span>
<a name="l00519"></a>00519   <span class="comment">// constructors and destructor</span>
<a name="l00520"></a>00520   <span class="comment">//-------------------------------------------------------------------------</span>
<a name="l00521"></a>00521 
<a name="l00523"></a>00523   <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 name="l00524"></a>00524 
<a name="l00526"></a>00526   <span class="keyword">explicit</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_1BooleConstant.html" title="This class wraps a bool value, which was not converted to a boolean polynomial or...">constant_type</a>);
<a name="l00527"></a>00527 
<a name="l00529"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#9108d586964665d194e2e759863dcf9e">00529</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>(<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> isOne, <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="l00530"></a>00530     m_dd(isOne? ring.one(): ring.zero() )  { }
<a name="l00531"></a>00531 
<a name="l00533"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#86db4cc0ee77d308745c956dc94cbfe8">00533</a>   <a class="code" href="classpolybori_1_1BoolePolynomial.html#86db4cc0ee77d308745c956dc94cbfe8" title="Construct polynomial from decision diagram.">BoolePolynomial</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1CDDInterface.html">dd_type</a>&amp; rhs): m_dd(rhs) {}
<a name="l00534"></a>00534 
<a name="l00536"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#7fd7f3f0f4d4aab8700370783ab3fe0e">00536</a>   <a class="code" href="classpolybori_1_1BoolePolynomial.html#7fd7f3f0f4d4aab8700370783ab3fe0e" title="Construct polynomial from a subset of the powerset over all variables.">BoolePolynomial</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1BooleSet.html">set_type</a>&amp; rhs): m_dd(rhs.diagram()) {}
<a name="l00537"></a>00537 
<a name="l00539"></a>00539   <a class="code" href="classpolybori_1_1BoolePolynomial.html" title="This class wraps the underlying decicion diagram type and defines the necessary operations...">BoolePolynomial</a>(<span class="keyword">const</span> exp_type&amp;, <span class="keyword">const</span> ring_type&amp;); 
<a name="l00540"></a>00540 
<a name="l00542"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#fe97bd28f09e4ccf49ad9163e4ca57f7">00542</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>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1CCuddNavigator.html" title="This class defines an iterator for navigating through then and else branches of ZDDs...">navigator</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="l00543"></a>00543     m_dd(ring.manager().manager(), rhs)  {
<a name="l00544"></a>00544     assert(rhs.<a class="code" href="classpolybori_1_1CCuddNavigator.html#458deac816e54ad5d5293b2461d4e36e" title="Check whether *this is not the default iterator self() (NULL pointer).">isValid</a>());
<a name="l00545"></a>00545   }
<a name="l00546"></a>00546 
<a name="l00548"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#1afd5799bfea9b38f03983963d75b7ec">00548</a>   <a class="code" href="classpolybori_1_1BoolePolynomial.html#1afd5799bfea9b38f03983963d75b7ec" title="Destructor.">~BoolePolynomial</a>() {}
<a name="l00549"></a>00549 
<a name="l00550"></a>00550   <span class="comment">//-------------------------------------------------------------------------</span>
<a name="l00551"></a>00551   <span class="comment">// operators and member functions</span>
<a name="l00552"></a>00552   <span class="comment">//-------------------------------------------------------------------------</span>
<a name="l00553"></a>00553 
<a name="l00554"></a>00554   <span class="comment">//  self&amp; operator=(const self&amp; rhs) { </span>
<a name="l00555"></a>00555   <span class="comment">//  return m_dd = rhs.m_dd;</span>
<a name="l00556"></a>00556   <span class="comment">// }</span>
<a name="l00557"></a>00557 
<a name="l00558"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#3758780d74fe1580bf60e4898e3a785f">00558</a>   <span class="keyword">self</span>&amp; <a class="code" href="classpolybori_1_1BoolePolynomial.html#3758780d74fe1580bf60e4898e3a785f">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) { 
<a name="l00559"></a>00559     <span class="keywordflow">return</span> (*<span class="keyword">this</span>) = <span class="keyword">self</span>(rhs);<span class="comment">//rhs.generate(*this); </span>
<a name="l00560"></a>00560   }
<a name="l00562"></a>00562 
<a name="l00563"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#13ad55948c5b1f7f4a773ea31bbea770">00563</a>   <span class="keyword">const</span> <span class="keyword">self</span>&amp; <a class="code" href="classpolybori_1_1BoolePolynomial.html#13ad55948c5b1f7f4a773ea31bbea770">operator-</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l00564"></a>00564   <span class="keyword">self</span>&amp; operator+=(<span class="keyword">const</span> <span class="keyword">self</span>&amp;);
<a name="l00565"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#475d6aaeeaea002211949b82ace7186d">00565</a>   <span class="keyword">self</span>&amp; <a class="code" href="classpolybori_1_1BoolePolynomial.html#475d6aaeeaea002211949b82ace7186d">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) {
<a name="l00566"></a>00566 
<a name="l00567"></a>00567     <span class="comment">//return *this = (self(*this) + (rhs).generate(*this));</span>
<a name="l00568"></a>00568     <span class="keywordflow">if</span> (rhs) (*this) = (*<span class="keyword">this</span> + ring().one());
<a name="l00569"></a>00569      <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00570"></a>00570   }
<a name="l00571"></a>00571   <span class="keyword">template</span> &lt;<span class="keyword">class</span> RHSType&gt;
<a name="l00572"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#b8e091abc2149b44a4cb107de0071181">00572</a>   <span class="keyword">self</span>&amp; <a class="code" href="classpolybori_1_1BoolePolynomial.html#b8e091abc2149b44a4cb107de0071181">operator-=</a>(<span class="keyword">const</span> RHSType&amp; rhs) { <span class="keywordflow">return</span> operator+=(rhs); }
<a name="l00573"></a>00573   <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> monom_type&amp;);
<a name="l00574"></a>00574   <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> exp_type&amp;);
<a name="l00575"></a>00575   <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="l00576"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#e5a7fb16866faa59f3def15442d75c06">00576</a>   <span class="keyword">self</span>&amp; <a class="code" href="classpolybori_1_1BoolePolynomial.html#e5a7fb16866faa59f3def15442d75c06">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) {
<a name="l00577"></a>00577     <span class="keywordflow">if</span> (!rhs) *<span class="keyword">this</span> = ring().zero();
<a name="l00578"></a>00578     <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00579"></a>00579   }
<a name="l00580"></a>00580   <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> monom_type&amp;);
<a name="l00581"></a>00581   <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> exp_type&amp;);
<a name="l00582"></a>00582   <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; rhs);
<a name="l00583"></a>00583   <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>(constant_type rhs);
<a name="l00584"></a>00584   <span class="keyword">self</span>&amp; <a class="code" href="namespacepolybori.html#9874e6918ff751d2b09c63be7f1bab8e" title="Remainder of division of a polynomial by a variable (with assignment).">operator%=</a>(<span class="keyword">const</span> monom_type&amp;);
<a name="l00585"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#2b39e36c457fe83ec05775205b71ed47">00585</a>   <span class="keyword">self</span>&amp; <a class="code" href="classpolybori_1_1BoolePolynomial.html#2b39e36c457fe83ec05775205b71ed47">operator%=</a>(<span class="keyword">const</span> <span class="keyword">self</span>&amp; rhs) { 
<a name="l00586"></a>00586     <span class="keywordflow">return</span> (*<span class="keyword">this</span>) -= (<span class="keyword">self</span>(rhs) *= (<span class="keyword">self</span>(*<span class="keyword">this</span>) /= rhs)); 
<a name="l00587"></a>00587   }
<a name="l00588"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#fa7153dd84ac056e8477fc2c671c4ab5">00588</a>   <span class="keyword">self</span>&amp; <a class="code" href="classpolybori_1_1BoolePolynomial.html#fa7153dd84ac056e8477fc2c671c4ab5">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="keywordflow">return</span> (*<span class="keyword">this</span>) /= (!rhs); }
<a name="l00590"></a>00590 
<a name="l00592"></a>00592 
<a name="l00593"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#97b434baf4c67dacb03bcd3814bad13f">00593</a>   bool_type <a class="code" href="classpolybori_1_1BoolePolynomial.html#97b434baf4c67dacb03bcd3814bad13f">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_dd == rhs.m_dd); }
<a name="l00594"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#bc33f178f342dbc73510e4111eaa107d">00594</a>   bool_type <a class="code" href="classpolybori_1_1BoolePolynomial.html#bc33f178f342dbc73510e4111eaa107d">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_dd != rhs.m_dd); }
<a name="l00595"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#99a07934b6d8a9d27c215d75e1cf6c61">00595</a>   bool_type <a class="code" href="classpolybori_1_1BoolePolynomial.html#99a07934b6d8a9d27c215d75e1cf6c61">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>{ 
<a name="l00596"></a>00596     <span class="keywordflow">return</span> ( rhs? isOne(): isZero() );
<a name="l00597"></a>00597   }
<a name="l00598"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#58466553efa10fe233417d74e92e1dd0">00598</a>   bool_type <a class="code" href="classpolybori_1_1BoolePolynomial.html#58466553efa10fe233417d74e92e1dd0">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>{
<a name="l00599"></a>00599     <span class="keywordflow">return</span> ( rhs? (!(isZero())): (!(isOne())) );
<a name="l00600"></a>00600   }
<a name="l00602"></a>00602 
<a name="l00604"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#fb4f4c542c9f279c8caa0c9e6e463f2b">00604</a>   bool_type <a class="code" href="classpolybori_1_1BoolePolynomial.html#fb4f4c542c9f279c8caa0c9e6e463f2b" title="Check whether polynomial is constant zero.">isZero</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_dd.emptiness(); }
<a name="l00605"></a>00605 
<a name="l00607"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#e85d40acf57ec4446514ae6ddab9c467">00607</a>   bool_type <a class="code" href="classpolybori_1_1BoolePolynomial.html#e85d40acf57ec4446514ae6ddab9c467" title="Check whether polynomial is constant one.">isOne</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_dd.blankness(); }
<a name="l00608"></a>00608 
<a name="l00610"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#b171f5956d5cdbb66e719f31263a2af9">00610</a>   bool_type <a class="code" href="classpolybori_1_1BoolePolynomial.html#b171f5956d5cdbb66e719f31263a2af9" title="Check whether polynomial is zero or one.">isConstant</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_dd.isConstant(); }
<a name="l00611"></a>00611 
<a name="l00613"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#13815791da65feedcbf725162d0aa20a">00613</a>   bool_type <a class="code" href="classpolybori_1_1BoolePolynomial.html#13815791da65feedcbf725162d0aa20a" title="Check whether polynomial has term one.">hasConstantPart</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_dd.ownsOne(); }
<a name="l00614"></a>00614 
<a name="l00616"></a>00616   bool_type reducibleBy(<span class="keyword">const</span> <span class="keyword">self</span>&amp;) <span class="keyword">const</span>;
<a name="l00617"></a>00617 
<a name="l00619"></a>00619   monom_type lead() <span class="keyword">const</span>;
<a name="l00620"></a>00620 
<a name="l00622"></a>00622   monom_type lexLead() <span class="keyword">const</span>;
<a name="l00623"></a>00623 
<a name="l00625"></a>00625   monom_type boundedLead(size_type bound) <span class="keyword">const</span>;
<a name="l00626"></a>00626 
<a name="l00628"></a>00628   exp_type leadExp() <span class="keyword">const</span>;
<a name="l00629"></a>00629 
<a name="l00631"></a>00631   exp_type boundedLeadExp(size_type bound) <span class="keyword">const</span>;
<a name="l00632"></a>00632 
<a name="l00634"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#ff8cb1483a75f5cfa739c81f9f5172f1">00634</a>   <a class="code" href="classpolybori_1_1BooleSet.html">set_type</a> <a class="code" href="classpolybori_1_1BoolePolynomial.html#ff8cb1483a75f5cfa739c81f9f5172f1" title="Get all divisors of the leading term.">lmDivisors</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> leadFirst().<a class="code" href="classpolybori_1_1CDDInterface.html#c3d85737b7c5146e2204655a1c967d25" title="Get decison diagram representing the divisors of the first term.">firstDivisors</a>(); };
<a name="l00635"></a>00635   
<a name="l00637"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#800406d4fbf4ac5370c1d89bdb16083c">00637</a>   hash_type <a class="code" href="classpolybori_1_1BoolePolynomial.html#800406d4fbf4ac5370c1d89bdb16083c" title="Get unique hash value (may change from run to run).">hash</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_dd.hash(); }
<a name="l00638"></a>00638 
<a name="l00640"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#2796c8a274f2a2557b97cff10081604a">00640</a>   hash_type <a class="code" href="classpolybori_1_1BoolePolynomial.html#2796c8a274f2a2557b97cff10081604a" title="Get hash value, which is reproducible.">stableHash</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_dd.stableHash(); } 
<a name="l00641"></a>00641 
<a name="l00643"></a>00643   hash_type lmStableHash() <span class="keyword">const</span>;
<a name="l00644"></a>00644   
<a name="l00646"></a>00646   size_type deg() <span class="keyword">const</span>;
<a name="l00647"></a>00647 
<a name="l00649"></a>00649   size_type lmDeg() <span class="keyword">const</span>;
<a name="l00650"></a>00650 
<a name="l00652"></a>00652   size_type lexLmDeg() <span class="keyword">const</span>;
<a name="l00653"></a>00653 
<a name="l00655"></a>00655   size_type totalDeg() <span class="keyword">const</span>;
<a name="l00656"></a>00656 
<a name="l00658"></a>00658   size_type lmTotalDeg() <span class="keyword">const</span>;
<a name="l00659"></a>00659 
<a name="l00661"></a>00661   <span class="keyword">self</span> gradedPart(size_type deg) <span class="keyword">const</span>;
<a name="l00662"></a>00662 
<a name="l00664"></a>00664   size_type nNodes() <span class="keyword">const</span>;
<a name="l00665"></a>00665 
<a name="l00667"></a>00667   size_type nUsedVariables() <span class="keyword">const</span>;
<a name="l00668"></a>00668 
<a name="l00670"></a>00670   monom_type usedVariables() <span class="keyword">const</span>;
<a name="l00671"></a>00671 
<a name="l00673"></a>00673   exp_type usedVariablesExp() <span class="keyword">const</span>;
<a name="l00674"></a>00674 
<a name="l00676"></a>00676   size_type length() <span class="keyword">const</span>;
<a name="l00677"></a>00677 
<a name="l00679"></a>00679   ostream_type&amp; print(ostream_type&amp;) <span class="keyword">const</span>;
<a name="l00680"></a>00680 
<a name="l00682"></a>00682   <span class="keywordtype">void</span> prettyPrint() <span class="keyword">const</span>;
<a name="l00683"></a>00683 
<a name="l00685"></a>00685   <span class="keywordtype">void</span> prettyPrint(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename) <span class="keyword">const</span>;
<a name="l00686"></a>00686 
<a name="l00688"></a>00688   const_iterator begin() <span class="keyword">const</span>;
<a name="l00689"></a>00689 
<a name="l00691"></a>00691   const_iterator end() <span class="keyword">const</span>;
<a name="l00692"></a>00692 
<a name="l00694"></a>00694   exp_iterator expBegin() <span class="keyword">const</span>;
<a name="l00695"></a>00695 
<a name="l00697"></a>00697   exp_iterator expEnd() <span class="keyword">const</span>;
<a name="l00698"></a>00698 
<a name="l00700"></a>00700   first_iterator firstBegin() <span class="keyword">const</span>;
<a name="l00701"></a>00701 
<a name="l00703"></a>00703   first_iterator firstEnd() <span class="keyword">const</span>;
<a name="l00704"></a>00704 
<a name="l00706"></a>00706   monom_type firstTerm() <span class="keyword">const</span>;
<a name="l00707"></a>00707 
<a name="l00709"></a>00709   deg_iterator degBegin() <span class="keyword">const</span>;
<a name="l00710"></a>00710 
<a name="l00712"></a>00712   deg_iterator degEnd() <span class="keyword">const</span>;
<a name="l00713"></a>00713 
<a name="l00715"></a>00715   ordered_iterator orderedBegin() <span class="keyword">const</span>; 
<a name="l00716"></a>00716 
<a name="l00718"></a>00718   ordered_iterator orderedEnd() <span class="keyword">const</span>;
<a name="l00719"></a>00719 
<a name="l00721"></a>00721   ordered_exp_iterator orderedExpBegin() <span class="keyword">const</span>; 
<a name="l00722"></a>00722 
<a name="l00724"></a>00724   ordered_exp_iterator orderedExpEnd() <span class="keyword">const</span>;
<a name="l00725"></a>00725 
<a name="l00727"></a>00727 
<a name="l00728"></a>00728   lex_iterator genericBegin(<a class="code" href="structpolybori_1_1lex__tag.html" title="Marker for lex ordering.">lex_tag</a>) <span class="keyword">const</span>;
<a name="l00729"></a>00729   lex_iterator genericEnd(<a class="code" href="structpolybori_1_1lex__tag.html" title="Marker for lex ordering.">lex_tag</a>) <span class="keyword">const</span>;
<a name="l00730"></a>00730   dlex_iterator genericBegin(<a class="code" href="structpolybori_1_1dlex__tag.html" title="Marker for deg-lex ordering.">dlex_tag</a>) <span class="keyword">const</span>;
<a name="l00731"></a>00731   dlex_iterator genericEnd(<a class="code" href="structpolybori_1_1dlex__tag.html" title="Marker for deg-lex ordering.">dlex_tag</a>) <span class="keyword">const</span>;
<a name="l00732"></a>00732   dp_asc_iterator genericBegin(<a class="code" href="structpolybori_1_1dp__asc__tag.html" title="Marker for ascending deg-rev-lex ordering.">dp_asc_tag</a>) <span class="keyword">const</span>;
<a name="l00733"></a>00733   dp_asc_iterator genericEnd(<a class="code" href="structpolybori_1_1dp__asc__tag.html" title="Marker for ascending deg-rev-lex ordering.">dp_asc_tag</a>) <span class="keyword">const</span>;
<a name="l00734"></a>00734   block_dlex_iterator genericBegin(<a class="code" href="structpolybori_1_1block__dlex__tag.html" title="Marker for block deg-lex ordering.">block_dlex_tag</a>) <span class="keyword">const</span>;
<a name="l00735"></a>00735   block_dlex_iterator genericEnd(<a class="code" href="structpolybori_1_1block__dlex__tag.html" title="Marker for block deg-lex ordering.">block_dlex_tag</a>) <span class="keyword">const</span>;
<a name="l00736"></a>00736   block_dp_asc_iterator genericBegin(<a class="code" href="structpolybori_1_1block__dp__asc__tag.html" title="Marker for ascending block deg-rev-lex ordering.">block_dp_asc_tag</a>) <span class="keyword">const</span>;
<a name="l00737"></a>00737   block_dp_asc_iterator genericEnd(<a class="code" href="structpolybori_1_1block__dp__asc__tag.html" title="Marker for ascending block deg-rev-lex ordering.">block_dp_asc_tag</a>) <span class="keyword">const</span>;
<a name="l00738"></a>00738 
<a name="l00739"></a>00739 
<a name="l00740"></a>00740   lex_exp_iterator genericExpBegin(<a class="code" href="structpolybori_1_1lex__tag.html" title="Marker for lex ordering.">lex_tag</a>) <span class="keyword">const</span>;
<a name="l00741"></a>00741   lex_exp_iterator genericExpEnd(<a class="code" href="structpolybori_1_1lex__tag.html" title="Marker for lex ordering.">lex_tag</a>) <span class="keyword">const</span>;
<a name="l00742"></a>00742   dlex_exp_iterator genericExpBegin(<a class="code" href="structpolybori_1_1dlex__tag.html" title="Marker for deg-lex ordering.">dlex_tag</a>) <span class="keyword">const</span>;
<a name="l00743"></a>00743   dlex_exp_iterator genericExpEnd(<a class="code" href="structpolybori_1_1dlex__tag.html" title="Marker for deg-lex ordering.">dlex_tag</a>) <span class="keyword">const</span>;
<a name="l00744"></a>00744   dp_asc_exp_iterator genericExpBegin(<a class="code" href="structpolybori_1_1dp__asc__tag.html" title="Marker for ascending deg-rev-lex ordering.">dp_asc_tag</a>) <span class="keyword">const</span>;
<a name="l00745"></a>00745   dp_asc_exp_iterator genericExpEnd(<a class="code" href="structpolybori_1_1dp__asc__tag.html" title="Marker for ascending deg-rev-lex ordering.">dp_asc_tag</a>) <span class="keyword">const</span>;
<a name="l00746"></a>00746   block_dlex_exp_iterator genericExpBegin(<a class="code" href="structpolybori_1_1block__dlex__tag.html" title="Marker for block deg-lex ordering.">block_dlex_tag</a>) <span class="keyword">const</span>;
<a name="l00747"></a>00747   block_dlex_exp_iterator genericExpEnd(<a class="code" href="structpolybori_1_1block__dlex__tag.html" title="Marker for block deg-lex ordering.">block_dlex_tag</a>) <span class="keyword">const</span>;
<a name="l00748"></a>00748   block_dp_asc_exp_iterator genericExpBegin(<a class="code" href="structpolybori_1_1block__dp__asc__tag.html" title="Marker for ascending block deg-rev-lex ordering.">block_dp_asc_tag</a>) <span class="keyword">const</span>;
<a name="l00749"></a>00749   block_dp_asc_exp_iterator genericExpEnd(<a class="code" href="structpolybori_1_1block__dp__asc__tag.html" title="Marker for ascending block deg-rev-lex ordering.">block_dp_asc_tag</a>) <span class="keyword">const</span>;
<a name="l00751"></a>00751 
<a name="l00753"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#f922cc6c7798bfee714a6614165b1e8b">00753</a>   <a class="code" href="classpolybori_1_1CCuddNavigator.html" title="This class defines an iterator for navigating through then and else branches of ZDDs...">navigator</a> <a class="code" href="classpolybori_1_1BoolePolynomial.html#f922cc6c7798bfee714a6614165b1e8b" title="Navigate through structure.">navigation</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_dd.navigation(); }
<a name="l00754"></a>00754  
<a name="l00756"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#8b143e2b48e41d8f322c86894b5f1dca">00756</a>   <a class="code" href="classpolybori_1_1CCuddNavigator.html" title="This class defines an iterator for navigating through then and else branches of ZDDs...">navigator</a> <a class="code" href="classpolybori_1_1BoolePolynomial.html#8b143e2b48e41d8f322c86894b5f1dca" title="End of navigation marker.">endOfNavigation</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classpolybori_1_1CCuddNavigator.html" title="This class defines an iterator for navigating through then and else branches of ZDDs...">navigator</a>(); }
<a name="l00757"></a>00757   
<a name="l00759"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#84f817f1c2aacd0441ded88421830fae">00759</a>   <a class="code" href="classpolybori_1_1CDDInterface.html">dd_type</a> <a class="code" href="classpolybori_1_1BoolePolynomial.html#84f817f1c2aacd0441ded88421830fae" title="gives a copy of the diagram">copyDiagram</a>(){   <span class="keywordflow">return</span> diagram();  }
<a name="l00760"></a>00760 
<a name="l00762"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#d932485cffe8b67d6a06b6bf4d018d5a">00762</a>   <a class="code" href="classpolybori_1_1BoolePolynomial.html#d932485cffe8b67d6a06b6bf4d018d5a" title="Casting operator to Boolean set.">operator set_type</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">set</span>(); };
<a name="l00763"></a>00763 
<a name="l00764"></a>00764   size_type eliminationLength() <span class="keyword">const</span>;
<a name="l00765"></a>00765   size_type eliminationLengthWithDegBound(size_type garantied_deg_bound) <span class="keyword">const</span>;
<a name="l00767"></a>00767   <span class="keywordtype">void</span> fetchTerms(termlist_type&amp;) <span class="keyword">const</span>;
<a name="l00768"></a>00768 
<a name="l00770"></a>00770   termlist_type terms() <span class="keyword">const</span>;
<a name="l00771"></a>00771 
<a name="l00773"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#a5e40309d6889917338db56513fa2d7f">00773</a>   <span class="keyword">const</span> <a class="code" href="classpolybori_1_1CDDInterface.html">dd_type</a>&amp; <a class="code" href="classpolybori_1_1BoolePolynomial.html#a5e40309d6889917338db56513fa2d7f" title="Read-only access to internal decision diagramm structure.">diagram</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_dd; }
<a name="l00774"></a>00774 
<a name="l00776"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#c9c0baa075563f8c6a66cd472ce85159">00776</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_dd; }
<a name="l00777"></a>00777 
<a name="l00779"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#3688c30c06b85a46e8f847087be5bc77">00779</a>   bool_type <a class="code" href="classpolybori_1_1BoolePolynomial.html#3688c30c06b85a46e8f847087be5bc77" title="Test, whether we have one term only.">isSingleton</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespacepolybori.html#c33297fcea6d9ca92eabacdeeb2e050e">dd_is_singleton</a>(navigation()); }
<a name="l00780"></a>00780 
<a name="l00782"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#864ddb70922d192548b84fa47195a886">00782</a>   bool_type <a class="code" href="classpolybori_1_1BoolePolynomial.html#864ddb70922d192548b84fa47195a886" title="Test, whether we have one or two terms only.">isSingletonOrPair</a>()<span class="keyword"> const </span>{ 
<a name="l00783"></a>00783     <span class="keywordflow">return</span> <a class="code" href="namespacepolybori.html#e0805d1b223014c55931ebb35a19b435">dd_is_singleton_or_pair</a>(navigation()); 
<a name="l00784"></a>00784   }
<a name="l00785"></a>00785 
<a name="l00787"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#2885c7c8578feeeb77bb4fa4eb7866e0">00787</a>   bool_type <a class="code" href="classpolybori_1_1BoolePolynomial.html#2885c7c8578feeeb77bb4fa4eb7866e0" title="Test, whether we have two terms only.">isPair</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespacepolybori.html#1e37aeba5f3db38e566e81de60082baa">dd_is_pair</a>(navigation()); }
<a name="l00788"></a>00788 
<a name="l00790"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#f1a245a3dbbd0b988c88a9dc3b29922b">00790</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_1BoolePolynomial.html#f1a245a3dbbd0b988c88a9dc3b29922b" title="Access ring, where this belongs to.">ring</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</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>(m_dd.manager()); } 
<a name="l00791"></a>00791 
<a name="l00792"></a>00792 <span class="keyword">protected</span>:
<a name="l00793"></a>00793 
<a name="l00795"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#48ce9d3984147a0c8c263f03305a2d42">00795</a>   <a class="code" href="classpolybori_1_1CDDInterface.html">dd_type</a>&amp; <a class="code" href="classpolybori_1_1BoolePolynomial.html#48ce9d3984147a0c8c263f03305a2d42" title="Access to internal decision diagramm structure.">internalDiagram</a>() { <span class="keywordflow">return</span> m_dd; }
<a name="l00796"></a>00796 
<a name="l00798"></a>00798   <span class="keyword">self</span> leadFirst() <span class="keyword">const</span>;
<a name="l00799"></a>00799 
<a name="l00801"></a>00801   set_type firstDivisors() <span class="keyword">const</span>;
<a name="l00802"></a>00802 
<a name="l00803"></a>00803 
<a name="l00804"></a>00804 <span class="keyword">private</span>:
<a name="l00806"></a>00806   dd_type m_dd;
<a name="l00807"></a>00807 };
<a name="l00808"></a>00808 
<a name="l00809"></a>00809 
<a name="l00811"></a>00811 <span class="keyword">inline</span> BoolePolynomial 
<a name="l00812"></a><a class="code" href="namespacepolybori.html#e62fab76df76c06c54ff1f5c0603cd0c">00812</a> <a class="code" href="namespacepolybori.html#c52b8cfba4e31a876eb2b41c6fb7cce6" 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, <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="l00813"></a>00813 
<a name="l00814"></a>00814   <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="l00815"></a>00815 }
<a name="l00817"></a>00817 <span class="keyword">inline</span> BoolePolynomial 
<a name="l00818"></a><a class="code" href="namespacepolybori.html#b9b2aa64c9f304e0de77c73683f6811d">00818</a> <a class="code" href="namespacepolybori.html#c52b8cfba4e31a876eb2b41c6fb7cce6" 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 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="l00819"></a>00819   <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="l00820"></a>00820   <span class="comment">//return BoolePolynomial(lhs) +=  BoolePolynomial(rhs);</span>
<a name="l00821"></a>00821 }
<a name="l00822"></a>00822 
<a name="l00824"></a>00824 <span class="keyword">inline</span> BoolePolynomial 
<a name="l00825"></a><a class="code" href="namespacepolybori.html#46556ccce3663e65ad0b316a73ec88a5">00825</a> <a class="code" href="namespacepolybori.html#c52b8cfba4e31a876eb2b41c6fb7cce6" 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_1BoolePolynomial.html" title="This class wraps the underlying decicion diagram type and defines the necessary operations...">BoolePolynomial</a>&amp; rhs) {
<a name="l00826"></a>00826 
<a name="l00827"></a>00827   <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) += (lhs);
<a name="l00828"></a>00828 }
<a name="l00829"></a>00829 
<a name="l00830"></a>00830 
<a name="l00832"></a>00832 <span class="keyword">template</span> &lt;<span class="keyword">class</span> RHSType&gt;
<a name="l00833"></a>00833 <span class="keyword">inline</span> BoolePolynomial 
<a name="l00834"></a><a class="code" href="namespacepolybori.html#f7abc8f06b9fdaf612832b6504b46374">00834</a> <a class="code" href="namespacepolybori.html#56b4635d7be1aa2293534708204d3181" 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, <span class="keyword">const</span> RHSType&amp; rhs) {
<a name="l00835"></a>00835 
<a name="l00836"></a>00836   <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="l00837"></a>00837 }
<a name="l00839"></a>00839 <span class="keyword">inline</span> BoolePolynomial 
<a name="l00840"></a><a class="code" href="namespacepolybori.html#2a594442a6e8f1c0d2347239a7c1a77c">00840</a> <a class="code" href="namespacepolybori.html#56b4635d7be1aa2293534708204d3181" title="Division 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_1BoolePolynomial.html" title="This class wraps the underlying decicion diagram type and defines the necessary operations...">BoolePolynomial</a>&amp; rhs) {
<a name="l00841"></a>00841 
<a name="l00842"></a>00842   <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) -= lhs);
<a name="l00843"></a>00843 }
<a name="l00844"></a>00844 
<a name="l00845"></a>00845 
<a name="l00847"></a><a class="code" href="BoolePolynomial_8h.html#89cc9efaf448e3809694f2ac9e18547f">00847</a> <span class="preprocessor">#define PBORI_RHS_MULT(type) inline BoolePolynomial \</span>
<a name="l00848"></a>00848 <span class="preprocessor">operator*(const BoolePolynomial&amp; lhs, const type&amp; rhs) { \</span>
<a name="l00849"></a>00849 <span class="preprocessor">    return BoolePolynomial(lhs) *= rhs; }</span>
<a name="l00850"></a>00850 <span class="preprocessor"></span>
<a name="l00851"></a><a class="code" href="namespacepolybori.html#59a9344bd6ef8e479b98dc45482ae115">00851</a> <a class="code" href="BoolePolynomial_8h.html#89cc9efaf448e3809694f2ac9e18547f" title="Multiplication with other left-hand side type.">PBORI_RHS_MULT</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>)
<a name="l00852"></a><a class="code" href="namespacepolybori.html#9d747a0204332207ce235f13d887f30a">00852</a> <a class="code" href="BoolePolynomial_8h.html#89cc9efaf448e3809694f2ac9e18547f" title="Multiplication with other left-hand side type.">PBORI_RHS_MULT</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="l00853"></a><a class="code" href="namespacepolybori.html#05f18c6f9e9ad5fff0e111840222d027">00853</a> <a class="code" href="BoolePolynomial_8h.html#89cc9efaf448e3809694f2ac9e18547f" title="Multiplication with other left-hand side type.">PBORI_RHS_MULT</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...">BooleExponent</a>)
<a name="l00854"></a><a class="code" href="namespacepolybori.html#c892571ed262d55aa2deafacee8488b5">00854</a> <a class="code" href="BoolePolynomial_8h.html#89cc9efaf448e3809694f2ac9e18547f" title="Multiplication with other left-hand side type.">PBORI_RHS_MULT</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>)
<a name="l00855"></a>00855 
<a name="l00856"></a>00856 
<a name="l00857"></a>00857 <span class="preprocessor">#undef PBORI_RHS_MULT</span>
<a name="l00858"></a>00858 <span class="preprocessor"></span>
<a name="l00860"></a><a class="code" href="BoolePolynomial_8h.html#e8f34d8bcabb02a153156e25683f04b3">00860</a> <span class="preprocessor">#define PBORI_LHS_MULT(type)  inline BoolePolynomial \</span>
<a name="l00861"></a>00861 <span class="preprocessor">operator*(const type&amp; lhs, const BoolePolynomial&amp; rhs) { return rhs * lhs; }</span>
<a name="l00862"></a>00862 <span class="preprocessor"></span>
<a name="l00863"></a><a class="code" href="namespacepolybori.html#7b71117bac1d4bcf85820f9cfa18b7f8">00863</a> <a class="code" href="BoolePolynomial_8h.html#e8f34d8bcabb02a153156e25683f04b3" title="Multiplication with other left-hand side type.">PBORI_LHS_MULT</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="l00864"></a><a class="code" href="namespacepolybori.html#ae0da32c8a20003efa9a52db450877a5">00864</a> <a class="code" href="BoolePolynomial_8h.html#e8f34d8bcabb02a153156e25683f04b3" title="Multiplication with other left-hand side type.">PBORI_LHS_MULT</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...">BooleExponent</a>)
<a name="l00865"></a><a class="code" href="namespacepolybori.html#6573aba02c5d43be8241dbba7ad42781">00865</a> <a class="code" href="BoolePolynomial_8h.html#e8f34d8bcabb02a153156e25683f04b3" title="Multiplication with other left-hand side type.">PBORI_LHS_MULT</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>)
<a name="l00866"></a>00866 
<a name="l00867"></a>00867 <span class="preprocessor">#undef PBORI_LHS_MULT</span>
<a name="l00868"></a>00868 <span class="preprocessor"></span>
<a name="l00869"></a>00869 
<a name="l00871"></a>00871 <span class="keyword">template</span> &lt;<span class="keyword">class</span> RHSType&gt;
<a name="l00872"></a>00872 <span class="keyword">inline</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 name="l00873"></a><a class="code" href="namespacepolybori.html#87f5b74f3d3c8a0899acc9b3149eedd4">00873</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, <span class="keyword">const</span> RHSType&amp; rhs){
<a name="l00874"></a>00874   <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="l00875"></a>00875 }
<a name="l00876"></a>00876 
<a name="l00878"></a>00878 <span class="keyword">template</span> &lt;<span class="keyword">class</span> RHSType&gt;
<a name="l00879"></a>00879 <span class="keyword">inline</span> BoolePolynomial
<a name="l00880"></a><a class="code" href="namespacepolybori.html#1324a6016eac89392f2de095b0ee977d">00880</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, <span class="keyword">const</span> RHSType&amp; rhs){
<a name="l00881"></a>00881 
<a name="l00882"></a>00882   <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="l00883"></a>00883 }
<a name="l00884"></a>00884 
<a name="l00886"></a>00886 <span class="keyword">inline</span> BoolePolynomial::bool_type
<a name="l00887"></a><a class="code" href="namespacepolybori.html#d7b7beadb4e8021c43d72dd8e851d27c">00887</a> <a class="code" href="namespacepolybori.html#d7b7beadb4e8021c43d72dd8e851d27c" title="Equality check (with constant lhs).">operator==</a>(BoolePolynomial::bool_type lhs, <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="l00888"></a>00888 
<a name="l00889"></a>00889   <span class="keywordflow">return</span> (rhs == lhs); 
<a name="l00890"></a>00890 }
<a name="l00891"></a>00891 
<a name="l00893"></a>00893 <span class="keyword">inline</span> BoolePolynomial::bool_type
<a name="l00894"></a><a class="code" href="namespacepolybori.html#9fc517d3020e8a2b95bcfccee4c20fb2">00894</a> <a class="code" href="namespacepolybori.html#9fc517d3020e8a2b95bcfccee4c20fb2" title="Nonquality check (with constant lhs).">operator!=</a>(BoolePolynomial::bool_type lhs, <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="l00895"></a>00895 
<a name="l00896"></a>00896   <span class="keywordflow">return</span> (rhs != lhs); 
<a name="l00897"></a>00897 }
<a name="l00898"></a>00898 
<a name="l00900"></a>00900 BoolePolynomial::ostream_type&amp; 
<a name="l00901"></a>00901 <a class="code" href="namespacepolybori.html#6a2252bb702be1219454e5782c3132d0" title="Stream output operator.">operator&lt;&lt;</a>(BoolePolynomial::ostream_type&amp;, <span class="keyword">const</span> BoolePolynomial&amp;);
<a name="l00902"></a>00902 
<a name="l00903"></a>00903 <span class="comment">// tests whether polynomial can be reduced by rhs</span>
<a name="l00904"></a>00904 <span class="keyword">inline</span> BoolePolynomial::bool_type
<a name="l00905"></a><a class="code" href="classpolybori_1_1BoolePolynomial.html#7276879e35ffafe7146d455fdb86e16c">00905</a> BoolePolynomial::reducibleBy(<span class="keyword">const</span> <span class="keyword">self</span>&amp; rhs)<span class="keyword"> const </span>{
<a name="l00906"></a>00906 
<a name="l00907"></a>00907   <a class="code" href="pbori__defs_8h.html#652ef33086b990b913379bf2f5b9a99e" title="Generate trace function if debugging.">PBORI_TRACE_FUNC</a>( <span class="stringliteral">"BoolePolynomial::reducibleBy(const self&amp;) const"</span> );
<a name="l00908"></a>00908 
<a name="l00909"></a>00909   <span class="keywordflow">if</span>( rhs.isOne() )
<a name="l00910"></a>00910     <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00911"></a>00911 
<a name="l00912"></a>00912   <span class="keywordflow">if</span>( <a class="code" href="classpolybori_1_1BoolePolynomial.html#fb4f4c542c9f279c8caa0c9e6e463f2b" title="Check whether polynomial is constant zero.">isZero</a>() )
<a name="l00913"></a>00913     <span class="keywordflow">return</span> rhs.isZero();
<a name="l00914"></a>00914 
<a name="l00915"></a>00915   <span class="keywordflow">return</span> std::includes(<a class="code" href="classpolybori_1_1BoolePolynomial.html#e3fca6ea42268282c18c5e1d181c2097" title="Start of first term.">firstBegin</a>(), <a class="code" href="classpolybori_1_1BoolePolynomial.html#2f358f22123340b8c4ecd5be236f2446" title="Finish of first term.">firstEnd</a>(), 
<a name="l00916"></a>00916                        rhs.firstBegin(), rhs.firstEnd());
<a name="l00917"></a>00917 
<a name="l00918"></a>00918 }
<a name="l00919"></a>00919 
<a name="l00920"></a>00920 
<a name="l00921"></a>00921 <a class="code" href="pbori__defs_8h.html#faf094fde6c1a7f1aad18bcb455f3b06" title="Finish project&amp;#39;s namespace.">END_NAMESPACE_PBORI</a>
<a name="l00922"></a>00922 
<a name="l00923"></a>00923 <span class="preprocessor">#endif // of BoolePolynomial_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>