This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
yap-6.3/packages/gecode/dev/extractor/xml/gcc_2bnd_8hpp.xml
Vitor Santos Costa a8eda03305 4.2.1 support
2014-01-22 09:41:47 +00:00

859 lines
167 KiB
XML

<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.6">
<compounddef id="gcc_2bnd_8hpp" kind="file">
<compoundname>bnd.hpp</compoundname>
<includedby refid="gcc_8hh" local="no">/usr/include/gecode/int/gcc.hh</includedby>
<invincdepgraph>
<node id="13314">
<label>/usr/include/gecode/int/gcc/bnd.hpp</label>
<link refid="gcc/bnd.hpp"/>
<childnode refid="13315" relation="include">
</childnode>
</node>
<node id="13315">
<label>/usr/include/gecode/int/gcc.hh</label>
<link refid="gcc_8hh_source"/>
</node>
</invincdepgraph>
<innernamespace refid="namespaceGecode">Gecode</innernamespace>
<innernamespace refid="namespaceGecode_1_1Int">Gecode::Int</innernamespace>
<innernamespace refid="namespaceGecode_1_1Int_1_1GCC">Gecode::Int::GCC</innernamespace>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<programlisting>
<codeline lineno="1"><highlight class="comment">/*<sp/>-*-<sp/>mode:<sp/>C++;<sp/>c-basic-offset:<sp/>2;<sp/>indent-tabs-mode:<sp/>nil<sp/>-*-<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="2"><highlight class="normal"></highlight><highlight class="comment">/*</highlight></codeline>
<codeline lineno="3"><highlight class="comment"><sp/>*<sp/><sp/>Main<sp/>authors:</highlight></codeline>
<codeline lineno="4"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/>Patrick<sp/>Pekczynski<sp/>&lt;pekczynski@ps.uni-sb.de&gt;</highlight></codeline>
<codeline lineno="5"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="6"><highlight class="comment"><sp/>*<sp/><sp/>Contributing<sp/>authors:</highlight></codeline>
<codeline lineno="7"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/>Christian<sp/>Schulte<sp/>&lt;schulte@gecode.org&gt;</highlight></codeline>
<codeline lineno="8"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/>Guido<sp/>Tack<sp/>&lt;tack@gecode.org&gt;</highlight></codeline>
<codeline lineno="9"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="10"><highlight class="comment"><sp/>*<sp/><sp/>Copyright:</highlight></codeline>
<codeline lineno="11"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/>Patrick<sp/>Pekczynski,<sp/>2004/2005</highlight></codeline>
<codeline lineno="12"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/>Christian<sp/>Schulte,<sp/>2009</highlight></codeline>
<codeline lineno="13"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/>Guido<sp/>Tack,<sp/>2009</highlight></codeline>
<codeline lineno="14"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="15"><highlight class="comment"><sp/>*<sp/><sp/>Last<sp/>modified:</highlight></codeline>
<codeline lineno="16"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/>$Date:<sp/>2012-09-07<sp/>17:31:22<sp/>+0200<sp/>(Fri,<sp/>07<sp/>Sep<sp/>2012)<sp/>$<sp/>by<sp/>$Author:<sp/>schulte<sp/>$</highlight></codeline>
<codeline lineno="17"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/>$Revision:<sp/>13068<sp/>$</highlight></codeline>
<codeline lineno="18"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="19"><highlight class="comment"><sp/>*<sp/><sp/>This<sp/>file<sp/>is<sp/>part<sp/>of<sp/>Gecode,<sp/>the<sp/>generic<sp/>constraint</highlight></codeline>
<codeline lineno="20"><highlight class="comment"><sp/>*<sp/><sp/>development<sp/>environment:</highlight></codeline>
<codeline lineno="21"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/>http://www.gecode.org</highlight></codeline>
<codeline lineno="22"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="23"><highlight class="comment"><sp/>*<sp/><sp/>Permission<sp/>is<sp/>hereby<sp/>granted,<sp/>free<sp/>of<sp/>charge,<sp/>to<sp/>any<sp/>person<sp/>obtaining</highlight></codeline>
<codeline lineno="24"><highlight class="comment"><sp/>*<sp/><sp/>a<sp/>copy<sp/>of<sp/>this<sp/>software<sp/>and<sp/>associated<sp/>documentation<sp/>files<sp/>(the</highlight></codeline>
<codeline lineno="25"><highlight class="comment"><sp/>*<sp/><sp/>&quot;Software&quot;),<sp/>to<sp/>deal<sp/>in<sp/>the<sp/>Software<sp/>without<sp/>restriction,<sp/>including</highlight></codeline>
<codeline lineno="26"><highlight class="comment"><sp/>*<sp/><sp/>without<sp/>limitation<sp/>the<sp/>rights<sp/>to<sp/>use,<sp/>copy,<sp/>modify,<sp/>merge,<sp/>publish,</highlight></codeline>
<codeline lineno="27"><highlight class="comment"><sp/>*<sp/><sp/>distribute,<sp/>sublicense,<sp/>and/or<sp/>sell<sp/>copies<sp/>of<sp/>the<sp/>Software,<sp/>and<sp/>to</highlight></codeline>
<codeline lineno="28"><highlight class="comment"><sp/>*<sp/><sp/>permit<sp/>persons<sp/>to<sp/>whom<sp/>the<sp/>Software<sp/>is<sp/>furnished<sp/>to<sp/>do<sp/>so,<sp/>subject<sp/>to</highlight></codeline>
<codeline lineno="29"><highlight class="comment"><sp/>*<sp/><sp/>the<sp/>following<sp/>conditions:</highlight></codeline>
<codeline lineno="30"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="31"><highlight class="comment"><sp/>*<sp/><sp/>The<sp/>above<sp/>copyright<sp/>notice<sp/>and<sp/>this<sp/>permission<sp/>notice<sp/>shall<sp/>be</highlight></codeline>
<codeline lineno="32"><highlight class="comment"><sp/>*<sp/><sp/>included<sp/>in<sp/>all<sp/>copies<sp/>or<sp/>substantial<sp/>portions<sp/>of<sp/>the<sp/>Software.</highlight></codeline>
<codeline lineno="33"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="34"><highlight class="comment"><sp/>*<sp/><sp/>THE<sp/>SOFTWARE<sp/>IS<sp/>PROVIDED<sp/>&quot;AS<sp/>IS&quot;,<sp/>WITHOUT<sp/>WARRANTY<sp/>OF<sp/>ANY<sp/>KIND,</highlight></codeline>
<codeline lineno="35"><highlight class="comment"><sp/>*<sp/><sp/>EXPRESS<sp/>OR<sp/>IMPLIED,<sp/>INCLUDING<sp/>BUT<sp/>NOT<sp/>LIMITED<sp/>TO<sp/>THE<sp/>WARRANTIES<sp/>OF</highlight></codeline>
<codeline lineno="36"><highlight class="comment"><sp/>*<sp/><sp/>MERCHANTABILITY,<sp/>FITNESS<sp/>FOR<sp/>A<sp/>PARTICULAR<sp/>PURPOSE<sp/>AND</highlight></codeline>
<codeline lineno="37"><highlight class="comment"><sp/>*<sp/><sp/>NONINFRINGEMENT.<sp/>IN<sp/>NO<sp/>EVENT<sp/>SHALL<sp/>THE<sp/>AUTHORS<sp/>OR<sp/>COPYRIGHT<sp/>HOLDERS<sp/>BE</highlight></codeline>
<codeline lineno="38"><highlight class="comment"><sp/>*<sp/><sp/>LIABLE<sp/>FOR<sp/>ANY<sp/>CLAIM,<sp/>DAMAGES<sp/>OR<sp/>OTHER<sp/>LIABILITY,<sp/>WHETHER<sp/>IN<sp/>AN<sp/>ACTION</highlight></codeline>
<codeline lineno="39"><highlight class="comment"><sp/>*<sp/><sp/>OF<sp/>CONTRACT,<sp/>TORT<sp/>OR<sp/>OTHERWISE,<sp/>ARISING<sp/>FROM,<sp/>OUT<sp/>OF<sp/>OR<sp/>IN<sp/>CONNECTION</highlight></codeline>
<codeline lineno="40"><highlight class="comment"><sp/>*<sp/><sp/>WITH<sp/>THE<sp/>SOFTWARE<sp/>OR<sp/>THE<sp/>USE<sp/>OR<sp/>OTHER<sp/>DEALINGS<sp/>IN<sp/>THE<sp/>SOFTWARE.</highlight></codeline>
<codeline lineno="41"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="42"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="43"><highlight class="normal"></highlight></codeline>
<codeline lineno="44"><highlight class="normal"></highlight><highlight class="keyword">namespace<sp/></highlight><highlight class="normal">Gecode<sp/>{<sp/></highlight><highlight class="keyword">namespace<sp/></highlight><highlight class="normal">Int<sp/>{<sp/></highlight><highlight class="keyword">namespace<sp/></highlight><highlight class="normal">GCC<sp/>{</highlight></codeline>
<codeline lineno="45"><highlight class="normal"></highlight></codeline>
<codeline lineno="46"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal">&lt;</highlight><highlight class="keyword">class</highlight><highlight class="normal"><sp/>Card&gt;</highlight></codeline>
<codeline lineno="47"><highlight class="normal"><sp/><sp/>forceinline</highlight></codeline>
<codeline lineno="48"><highlight class="normal"><sp/><sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1a6024398f86d20a2f893dd22d1656b5ec" kindref="member">Bnd&lt;Card&gt;::</ref></highlight></codeline>
<codeline lineno="49" refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1ab37d21eca1f614f18dc10490a2e3e216" refkind="member"><highlight class="normal"><ref refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1a6024398f86d20a2f893dd22d1656b5ec" kindref="member"> Bnd</ref>(<ref refid="classGecode_1_1Home" kindref="compound">Home</ref><sp/>home,<sp/><ref refid="classGecode_1_1ViewArray" kindref="compound">ViewArray&lt;IntView&gt;</ref>&amp;<sp/>x0,<sp/><ref refid="classGecode_1_1ViewArray" kindref="compound">ViewArray&lt;Card&gt;</ref>&amp;<sp/>k0,</highlight></codeline>
<codeline lineno="50"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>cf,<sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>nolbc)<sp/>:</highlight></codeline>
<codeline lineno="51"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classGecode_1_1Propagator" kindref="compound">Propagator</ref>(home),<sp/>x(x0),<sp/>y(home,<sp/>x0),<sp/>k(k0),</highlight></codeline>
<codeline lineno="52"><highlight class="normal"><sp/><sp/><sp/><sp/>card_fixed(cf),<sp/>skip_lbc(nolbc)<sp/>{</highlight></codeline>
<codeline lineno="53"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1a91118d84a69ef5271265c4d2b56e4652" kindref="member">y</ref>.<ref refid="classGecode_1_1ViewArray_1aa19fdfd766538312ff91e49735abec86" kindref="member">subscribe</ref>(home,<sp/>*</highlight><highlight class="keyword">this</highlight><highlight class="normal">,<sp/>PC_INT_BND);</highlight></codeline>
<codeline lineno="54"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1a5f30d61c4a4e318f0564442bf1422297" kindref="member">k</ref>.<ref refid="classGecode_1_1ViewArray_1aa19fdfd766538312ff91e49735abec86" kindref="member">subscribe</ref>(home,<sp/>*</highlight><highlight class="keyword">this</highlight><highlight class="normal">,<sp/>PC_INT_BND);</highlight></codeline>
<codeline lineno="55"><highlight class="normal"><sp/><sp/>}</highlight></codeline>
<codeline lineno="56"><highlight class="normal"></highlight></codeline>
<codeline lineno="57"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal">&lt;</highlight><highlight class="keyword">class</highlight><highlight class="normal"><sp/>Card&gt;</highlight></codeline>
<codeline lineno="58"><highlight class="normal"><sp/><sp/>forceinline</highlight></codeline>
<codeline lineno="59"><highlight class="normal"><sp/><sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1a6024398f86d20a2f893dd22d1656b5ec" kindref="member">Bnd&lt;Card&gt;::</ref></highlight></codeline>
<codeline lineno="60" refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1a6024398f86d20a2f893dd22d1656b5ec" refkind="member"><highlight class="normal"><ref refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1a6024398f86d20a2f893dd22d1656b5ec" kindref="member"> Bnd</ref>(<ref refid="classGecode_1_1Space" kindref="compound">Space</ref>&amp;<sp/>home,<sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>share,<sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1Bnd" kindref="compound">Bnd&lt;Card&gt;</ref>&amp;<sp/>p)</highlight></codeline>
<codeline lineno="61"><highlight class="normal"><sp/><sp/><sp/><sp/>:<sp/><ref refid="classGecode_1_1Propagator" kindref="compound">Propagator</ref>(home,<sp/>share,<sp/>p),</highlight></codeline>
<codeline lineno="62"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>card_fixed(p.card_fixed),<sp/>skip_lbc(p.skip_lbc)<sp/>{</highlight></codeline>
<codeline lineno="63"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1aaf4cd021be4713507906e4aa4260dac3" kindref="member">x</ref>.<ref refid="classGecode_1_1ViewArray_1afe55a31688f656ab0b114f2342e9e313" kindref="member">update</ref>(home,<sp/>share,<sp/>p.<ref refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1aaf4cd021be4713507906e4aa4260dac3" kindref="member">x</ref>);</highlight></codeline>
<codeline lineno="64"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1a91118d84a69ef5271265c4d2b56e4652" kindref="member">y</ref>.<ref refid="classGecode_1_1ViewArray_1afe55a31688f656ab0b114f2342e9e313" kindref="member">update</ref>(home,<sp/>share,<sp/>p.<ref refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1a91118d84a69ef5271265c4d2b56e4652" kindref="member">y</ref>);</highlight></codeline>
<codeline lineno="65"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1a5f30d61c4a4e318f0564442bf1422297" kindref="member">k</ref>.<ref refid="classGecode_1_1ViewArray_1afe55a31688f656ab0b114f2342e9e313" kindref="member">update</ref>(home,<sp/>share,<sp/>p.<ref refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1a5f30d61c4a4e318f0564442bf1422297" kindref="member">k</ref>);</highlight></codeline>
<codeline lineno="66"><highlight class="normal"><sp/><sp/>}</highlight></codeline>
<codeline lineno="67"><highlight class="normal"></highlight></codeline>
<codeline lineno="68"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal">&lt;</highlight><highlight class="keyword">class</highlight><highlight class="normal"><sp/>Card&gt;</highlight></codeline>
<codeline lineno="69"><highlight class="normal"><sp/><sp/>forceinline<sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="70" refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1ab6ce4ec66051c1287ad7b02c2be42f80" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1ab6ce4ec66051c1287ad7b02c2be42f80" kindref="member">Bnd&lt;Card&gt;::dispose</ref>(<ref refid="classGecode_1_1Space" kindref="compound">Space</ref>&amp;<sp/>home)<sp/>{</highlight></codeline>
<codeline lineno="71"><highlight class="normal"><sp/><sp/><sp/><sp/>y.cancel(home,*</highlight><highlight class="keyword">this</highlight><highlight class="normal">,<sp/>PC_INT_BND);</highlight></codeline>
<codeline lineno="72"><highlight class="normal"><sp/><sp/><sp/><sp/>k.cancel(home,*</highlight><highlight class="keyword">this</highlight><highlight class="normal">,<sp/>PC_INT_BND);</highlight></codeline>
<codeline lineno="73"><highlight class="normal"><sp/><sp/><sp/><sp/>(void)<sp/><ref refid="classGecode_1_1Actor_1a143253b3eceda40f36834e38c8ac05d9" kindref="member">Propagator::dispose</ref>(home);</highlight></codeline>
<codeline lineno="74"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">sizeof</highlight><highlight class="normal">(*this);</highlight></codeline>
<codeline lineno="75"><highlight class="normal"><sp/><sp/>}</highlight></codeline>
<codeline lineno="76"><highlight class="normal"></highlight></codeline>
<codeline lineno="77"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal">&lt;</highlight><highlight class="keyword">class</highlight><highlight class="normal"><sp/>Card&gt;</highlight></codeline>
<codeline lineno="78"><highlight class="normal"><sp/><sp/><ref refid="classGecode_1_1Actor" kindref="compound">Actor</ref>*</highlight></codeline>
<codeline lineno="79" refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1a855f5beb8def94aa8802260b9c302657" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1a855f5beb8def94aa8802260b9c302657" kindref="member">Bnd&lt;Card&gt;::copy</ref>(<ref refid="classGecode_1_1Space" kindref="compound">Space</ref>&amp;<sp/>home,<sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>share)<sp/>{</highlight></codeline>
<codeline lineno="80"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">new</highlight><highlight class="normal"><sp/>(home)<sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1Bnd" kindref="compound">Bnd&lt;Card&gt;</ref>(home,share,*</highlight><highlight class="keyword">this</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="81"><highlight class="normal"><sp/><sp/>}</highlight></codeline>
<codeline lineno="82"><highlight class="normal"></highlight></codeline>
<codeline lineno="83"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal">&lt;</highlight><highlight class="keyword">class</highlight><highlight class="normal"><sp/>Card&gt;</highlight></codeline>
<codeline lineno="84"><highlight class="normal"><sp/><sp/><ref refid="classGecode_1_1PropCost" kindref="compound">PropCost</ref></highlight></codeline>
<codeline lineno="85" refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1a59afa8b134de3349b185a72b5ecf4f7d" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1a59afa8b134de3349b185a72b5ecf4f7d" kindref="member">Bnd&lt;Card&gt;::cost</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="classGecode_1_1Space" kindref="compound">Space</ref>&amp;,</highlight></codeline>
<codeline lineno="86"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="namespaceGecode_1a129e41c1d037528010d7b6706495a560" kindref="member">ModEventDelta</ref>&amp;<sp/>med)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
<codeline lineno="87"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>n_k<sp/>=<sp/>Card::propagate<sp/>?<sp/>k.size()<sp/>:<sp/>0;</highlight></codeline>
<codeline lineno="88"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(<ref refid="classGecode_1_1VarImpView_1a6dced43c3bf8befaf8cd27dbd53bf24c" kindref="member">IntView::me</ref>(med)<sp/>==<sp/>ME_INT_VAL)</highlight></codeline>
<codeline lineno="89"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classGecode_1_1PropCost_1a4a383a3772df2c1e49341813edc19b34" kindref="member">PropCost::linear</ref>(<ref refid="classGecode_1_1PropCost_1ad1bebae59ea373495c5bf51ffc249dcda29f70a7d7f550f3822568ddce422d861" kindref="member">PropCost::LO</ref>,<sp/>y.size()<sp/>+<sp/>n_k);</highlight></codeline>
<codeline lineno="90"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="91"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classGecode_1_1PropCost_1ab9758f7a6301e1f3e1010762465b085a" kindref="member">PropCost::quadratic</ref>(<ref refid="classGecode_1_1PropCost_1ad1bebae59ea373495c5bf51ffc249dcda29f70a7d7f550f3822568ddce422d861" kindref="member">PropCost::LO</ref>,<sp/>x.size()<sp/>+<sp/>n_k);</highlight></codeline>
<codeline lineno="92"><highlight class="normal"><sp/><sp/>}</highlight></codeline>
<codeline lineno="93"><highlight class="normal"></highlight></codeline>
<codeline lineno="94"><highlight class="normal"></highlight></codeline>
<codeline lineno="95"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal">&lt;</highlight><highlight class="keyword">class</highlight><highlight class="normal"><sp/>Card&gt;</highlight></codeline>
<codeline lineno="96"><highlight class="normal"><sp/><sp/>forceinline<sp/><ref refid="namespaceGecode_1ab278aee34126d2f13c5429ee3c4ed3b5" kindref="member">ExecStatus</ref></highlight></codeline>
<codeline lineno="97" refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1ac2487266ab16fb7424b2712a1071f2f6" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1ac2487266ab16fb7424b2712a1071f2f6" kindref="member">Bnd&lt;Card&gt;::lbc</ref>(<ref refid="classGecode_1_1Space" kindref="compound">Space</ref>&amp;<sp/>home,<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal">&amp;<sp/>nb,</highlight></codeline>
<codeline lineno="98"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo" kindref="compound">HallInfo</ref><sp/>hall[],<sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1Rank" kindref="compound">Rank</ref><sp/>rank[],<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>mu[],<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>nu[])<sp/>{</highlight></codeline>
<codeline lineno="99"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>n<sp/>=<sp/>x.size();</highlight></codeline>
<codeline lineno="100"><highlight class="normal"></highlight></codeline>
<codeline lineno="101"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*</highlight></codeline>
<codeline lineno="102"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/>Let<sp/>I(S)<sp/>denote<sp/>the<sp/>number<sp/>of<sp/>variables<sp/>whose<sp/>domain<sp/>intersects</highlight></codeline>
<codeline lineno="103"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/>the<sp/>set<sp/>S<sp/>and<sp/>C(S)<sp/>the<sp/>number<sp/>of<sp/>variables<sp/>whose<sp/>domain<sp/>is<sp/>containded</highlight></codeline>
<codeline lineno="104"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/>in<sp/>S.<sp/>Let<sp/>further<sp/><sp/>min_cap(S)<sp/>be<sp/>the<sp/>minimal<sp/>number<sp/>of<sp/>variables</highlight></codeline>
<codeline lineno="105"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/>that<sp/>must<sp/>be<sp/>assigned<sp/>to<sp/>values,<sp/>that<sp/>is</highlight></codeline>
<codeline lineno="106"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/>min_cap(S)<sp/>is<sp/>the<sp/>sum<sp/>over<sp/>all<sp/>l[i]<sp/>for<sp/>a<sp/>value<sp/>v_i<sp/>that<sp/>is<sp/>an</highlight></codeline>
<codeline lineno="107"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/>element<sp/>of<sp/>S.</highlight></codeline>
<codeline lineno="108"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*</highlight></codeline>
<codeline lineno="109"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/>A<sp/>failure<sp/>set<sp/>is<sp/>a<sp/>set<sp/>F<sp/>if</highlight></codeline>
<codeline lineno="110"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/>I(F)<sp/>&lt;<sp/>min_cap(F)</highlight></codeline>
<codeline lineno="111"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/>An<sp/>unstable<sp/>set<sp/>is<sp/>a<sp/>set<sp/>U<sp/>if</highlight></codeline>
<codeline lineno="112"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/>I(U)<sp/>=<sp/>min_cap(U)</highlight></codeline>
<codeline lineno="113"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/>A<sp/>stable<sp/>set<sp/>is<sp/>a<sp/>set<sp/>S<sp/>if</highlight></codeline>
<codeline lineno="114"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/>C(S)<sp/>&gt;<sp/>min_cap(S)<sp/>and<sp/>S<sp/>intersetcs<sp/>nor</highlight></codeline>
<codeline lineno="115"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/>any<sp/>failure<sp/>set<sp/>nor<sp/>any<sp/>unstable<sp/>set</highlight></codeline>
<codeline lineno="116"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/>forall<sp/>unstable<sp/>and<sp/>failure<sp/>sets</highlight></codeline>
<codeline lineno="117"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*</highlight></codeline>
<codeline lineno="118"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/>failure<sp/>sets<sp/>determine<sp/>the<sp/>satisfiability<sp/>of<sp/>the<sp/>LBC</highlight></codeline>
<codeline lineno="119"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/>unstable<sp/>sets<sp/>have<sp/>to<sp/>be<sp/>pruned</highlight></codeline>
<codeline lineno="120"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/>stable<sp/>set<sp/>do<sp/>not<sp/>have<sp/>to<sp/>be<sp/>pruned</highlight></codeline>
<codeline lineno="121"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*</highlight></codeline>
<codeline lineno="122"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>hall[].ps<sp/>~<sp/>stores<sp/>the<sp/>unstable</highlight></codeline>
<codeline lineno="123"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sets<sp/>that<sp/>have<sp/>to<sp/>be<sp/>pruned</highlight></codeline>
<codeline lineno="124"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>hall[].s<sp/><sp/>~<sp/>stores<sp/>sets<sp/>that<sp/>must<sp/>not<sp/>be<sp/>pruned</highlight></codeline>
<codeline lineno="125"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>hall[].h<sp/><sp/>~<sp/>contains<sp/>stable<sp/>and<sp/>unstable<sp/>sets</highlight></codeline>
<codeline lineno="126"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>hall[].d<sp/><sp/>~<sp/>contains<sp/>the<sp/>difference<sp/>between<sp/>interval<sp/>bounds,<sp/>i.e.</highlight></codeline>
<codeline lineno="127"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>the<sp/>minimal<sp/>capacity<sp/>of<sp/>the<sp/>interval</highlight></codeline>
<codeline lineno="128"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>hall[].t<sp/><sp/>~<sp/>contains<sp/>the<sp/>critical<sp/>capacity<sp/>pointer,<sp/>pointing<sp/>to<sp/>the</highlight></codeline>
<codeline lineno="129"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>values</highlight></codeline>
<codeline lineno="130"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="131"><highlight class="normal"></highlight></codeline>
<codeline lineno="132"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>LBC<sp/>lower<sp/>bounds</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="133"><highlight class="normal"></highlight></codeline>
<codeline lineno="134"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="135"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>j<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="136"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>w<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="137"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>z<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="138"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>v<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="139"><highlight class="normal"></highlight></codeline>
<codeline lineno="140"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//initialization<sp/>of<sp/>the<sp/>tree<sp/>structure</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="141"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>rightmost<sp/>=<sp/>nb<sp/>+<sp/>1;<sp/></highlight><highlight class="comment">//<sp/>rightmost<sp/>accesible<sp/>value<sp/>in<sp/>bounds</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="142"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>bsize<sp/><sp/><sp/><sp/><sp/>=<sp/>nb<sp/>+<sp/>2;</highlight></codeline>
<codeline lineno="143"><highlight class="normal"><sp/><sp/><sp/><sp/>w<sp/>=<sp/>rightmost;</highlight></codeline>
<codeline lineno="144"><highlight class="normal"></highlight></codeline>
<codeline lineno="145"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>test</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="146"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>unused<sp/>but<sp/>uninitialized</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="147"><highlight class="normal"><sp/><sp/><sp/><sp/>hall[0].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1aeee43e1764cf8fa3fc7326a2eedecd5f" kindref="member">d</ref><sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="148"><highlight class="normal"><sp/><sp/><sp/><sp/>hall[0].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1ae3efbd2252d2c5a3d5eaab680ab2b2fc" kindref="member">s</ref><sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="149"><highlight class="normal"><sp/><sp/><sp/><sp/>hall[0].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1ae649d553c7835f6ac452d2ab1d922043" kindref="member">ps</ref><sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="150"><highlight class="normal"></highlight></codeline>
<codeline lineno="151"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(i<sp/>=<sp/>bsize;<sp/>--i;<sp/>)<sp/>{<sp/></highlight><highlight class="comment">//<sp/>i<sp/>must<sp/>not<sp/>be<sp/>zero</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="152"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>pred<sp/>=<sp/>i<sp/>-<sp/>1;</highlight></codeline>
<codeline lineno="153"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>hall[i].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1ae3efbd2252d2c5a3d5eaab680ab2b2fc" kindref="member">s</ref><sp/>=<sp/>pred;</highlight></codeline>
<codeline lineno="154"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>hall[i].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1ae649d553c7835f6ac452d2ab1d922043" kindref="member">ps</ref><sp/>=<sp/>pred;</highlight></codeline>
<codeline lineno="155"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>hall[i].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1aeee43e1764cf8fa3fc7326a2eedecd5f" kindref="member">d</ref><sp/>=<sp/>lps.sumup(hall[pred].bounds,<sp/>hall[i].bounds<sp/>-<sp/>1);</highlight></codeline>
<codeline lineno="156"><highlight class="normal"></highlight></codeline>
<codeline lineno="157"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Let<sp/>[hall[i].bounds,hall[i-1].bounds]=:I</highlight></codeline>
<codeline lineno="158"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>If<sp/>the<sp/>capacity<sp/>is<sp/>zero<sp/>=&gt;<sp/>min_cap(I)<sp/>=<sp/>0</highlight></codeline>
<codeline lineno="159"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>=&gt;<sp/>I<sp/>cannot<sp/>be<sp/>a<sp/>failure<sp/>set</highlight></codeline>
<codeline lineno="160"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>=&gt;<sp/>I<sp/>is<sp/>an<sp/>unstable<sp/>set</highlight></codeline>
<codeline lineno="161"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="162"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(hall[i].d<sp/>==<sp/>0)<sp/>{</highlight></codeline>
<codeline lineno="163"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[pred].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a90e14b6364a485058acf02e7a7781785" kindref="member">h</ref><sp/>=<sp/>w;</highlight></codeline>
<codeline lineno="164"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="165"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[w].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a90e14b6364a485058acf02e7a7781785" kindref="member">h</ref><sp/>=<sp/>pred;</highlight></codeline>
<codeline lineno="166"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>w<sp/>=<sp/>pred;</highlight></codeline>
<codeline lineno="167"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="168"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="169"><highlight class="normal"></highlight></codeline>
<codeline lineno="170"><highlight class="normal"><sp/><sp/><sp/><sp/>w<sp/>=<sp/>rightmost;</highlight></codeline>
<codeline lineno="171"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(i<sp/>=<sp/>bsize;<sp/>i--;<sp/>)<sp/>{<sp/></highlight><highlight class="comment">//<sp/>i<sp/>can<sp/>be<sp/>zero</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="172"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>hall[i].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a43fb06aa7473e2acde00e5f8f4af4461" kindref="member">t</ref><sp/>=<sp/>i<sp/>-<sp/>1;</highlight></codeline>
<codeline lineno="173"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(hall[i].d<sp/>==<sp/>0)<sp/>{</highlight></codeline>
<codeline lineno="174"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[i].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a43fb06aa7473e2acde00e5f8f4af4461" kindref="member">t</ref><sp/>=<sp/>w;</highlight></codeline>
<codeline lineno="175"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="176"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[w].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a43fb06aa7473e2acde00e5f8f4af4461" kindref="member">t</ref><sp/>=<sp/>i;</highlight></codeline>
<codeline lineno="177"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>w<sp/>=<sp/>i;</highlight></codeline>
<codeline lineno="178"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="179"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="180"><highlight class="normal"></highlight></codeline>
<codeline lineno="181"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*</highlight></codeline>
<codeline lineno="182"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>The<sp/>algorithm<sp/>assigns<sp/>to<sp/>each<sp/>value<sp/>v<sp/>in<sp/>bounds</highlight></codeline>
<codeline lineno="183"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>empty<sp/>buckets<sp/>corresponding<sp/>to<sp/>the<sp/>minimal<sp/>capacity<sp/>l[i]<sp/>to<sp/>be</highlight></codeline>
<codeline lineno="184"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>filled<sp/>for<sp/>v.<sp/>(the<sp/>buckets<sp/>correspond<sp/>to<sp/>hall[].d<sp/>containing<sp/>the</highlight></codeline>
<codeline lineno="185"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>difference<sp/>between<sp/>the<sp/>interval<sp/>bounds)<sp/>Processing<sp/>it</highlight></codeline>
<codeline lineno="186"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>searches<sp/>for<sp/>the<sp/>smallest<sp/>value<sp/>v<sp/>in<sp/>dom(x_i)<sp/>that<sp/>has<sp/>an</highlight></codeline>
<codeline lineno="187"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>empty<sp/>bucket,<sp/>i.e.<sp/>if<sp/>all<sp/>buckets<sp/>are<sp/>filled<sp/>it<sp/>is<sp/>guaranteed</highlight></codeline>
<codeline lineno="188"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>that<sp/>there<sp/>are<sp/>at<sp/>least<sp/>l[i]<sp/>variables<sp/>that<sp/>will<sp/>be</highlight></codeline>
<codeline lineno="189"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>instantiated<sp/>to<sp/>v.<sp/>Since<sp/>the<sp/>buckets<sp/>are<sp/>initially<sp/>empty,</highlight></codeline>
<codeline lineno="190"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>they<sp/>are<sp/>considered<sp/>as<sp/>FAILURE<sp/>SETS</highlight></codeline>
<codeline lineno="191"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="192"><highlight class="normal"></highlight></codeline>
<codeline lineno="193"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(i<sp/>=<sp/>0;<sp/>i<sp/>&lt;<sp/>n;<sp/>i++)<sp/>{</highlight></codeline>
<codeline lineno="194"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>visit<sp/>intervals<sp/>in<sp/>increasing<sp/>max<sp/>order</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="195"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>x0<sp/>=<sp/>rank[mu[i]].<ref refid="classGecode_1_1Int_1_1GCC_1_1Rank_1a6bd42edaac04d68f1ae5c6014bfbcf0c" kindref="member">min</ref>;</highlight></codeline>
<codeline lineno="196"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>y<sp/>=<sp/>rank[mu[i]].<ref refid="classGecode_1_1Int_1_1GCC_1_1Rank_1a6d064d0ef6cb52d77519fd3481a30253" kindref="member">max</ref>;</highlight></codeline>
<codeline lineno="197"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>succ<sp/>=<sp/>x0<sp/>+<sp/>1;</highlight></codeline>
<codeline lineno="198"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>z<sp/>=<sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1aa296d9ad2bdf36a55a127aa9ff151068" kindref="member">pathmax_t</ref>(hall,<sp/>succ);</highlight></codeline>
<codeline lineno="199"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>j<sp/>=<sp/>hall[z].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a43fb06aa7473e2acde00e5f8f4af4461" kindref="member">t</ref>;</highlight></codeline>
<codeline lineno="200"><highlight class="normal"></highlight></codeline>
<codeline lineno="201"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*</highlight></codeline>
<codeline lineno="202"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>POTENTIALLY<sp/>STABLE<sp/>SET:</highlight></codeline>
<codeline lineno="203"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/>z<sp/>\neq<sp/>succ<sp/>\Leftrigharrow<sp/>z&gt;succ,<sp/>i.e.</highlight></codeline>
<codeline lineno="204"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/>min(D_{\mu(i)})<sp/>is<sp/>guaranteed<sp/>to<sp/>occur<sp/>min(K_i)<sp/>times</highlight></codeline>
<codeline lineno="205"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/>\Rightarrow<sp/>[x0,<sp/>min(y,z)]<sp/>is<sp/>potentially<sp/>stable</highlight></codeline>
<codeline lineno="206"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="207"><highlight class="normal"></highlight></codeline>
<codeline lineno="208"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(z<sp/>!=<sp/>succ)<sp/>{</highlight></codeline>
<codeline lineno="209"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>w<sp/>=<sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1a88c6f155dfac7f5b0a39b5835dc81c11" kindref="member">pathmax_ps</ref>(hall,<sp/>succ);</highlight></codeline>
<codeline lineno="210"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>v<sp/>=<sp/>hall[w].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1ae649d553c7835f6ac452d2ab1d922043" kindref="member">ps</ref>;</highlight></codeline>
<codeline lineno="211"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1a0b6e944c7589352ee5396664da3c6ac5" kindref="member">pathset_ps</ref>(hall,<sp/>succ,<sp/>w,<sp/>w);</highlight></codeline>
<codeline lineno="212"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>w<sp/>=<sp/><ref refid="group__TaskModelFloatArith_1ga121700708772a60191be6256c3c0d151" kindref="member">std::min</ref>(y,<sp/>z);</highlight></codeline>
<codeline lineno="213"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1a0b6e944c7589352ee5396664da3c6ac5" kindref="member">pathset_ps</ref>(hall,<sp/>hall[w].ps,<sp/>v,<sp/>w);</highlight></codeline>
<codeline lineno="214"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[w].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1ae649d553c7835f6ac452d2ab1d922043" kindref="member">ps</ref><sp/>=<sp/>v;</highlight></codeline>
<codeline lineno="215"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="216"><highlight class="normal"></highlight></codeline>
<codeline lineno="217"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*</highlight></codeline>
<codeline lineno="218"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>STABLE<sp/>SET:</highlight></codeline>
<codeline lineno="219"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/>being<sp/>stable<sp/>implies<sp/>being<sp/>potentially<sp/>stable,<sp/>i.e.</highlight></codeline>
<codeline lineno="220"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/>[hall[y].ps,<sp/>hall[y].bounds-1]<sp/>is<sp/>the<sp/>largest<sp/>stable<sp/>subset<sp/>of</highlight></codeline>
<codeline lineno="221"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/>[hall[j].bounds,<sp/>hall[y].bounds-1].</highlight></codeline>
<codeline lineno="222"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="223"><highlight class="normal"></highlight></codeline>
<codeline lineno="224"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(hall[z].d<sp/>&lt;=<sp/>lps.sumup(hall[y].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1aaa393ea429beb3b5d95a06085176d5aa" kindref="member">bounds</ref>,<sp/>hall[z].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1aaa393ea429beb3b5d95a06085176d5aa" kindref="member">bounds</ref><sp/>-<sp/>1))<sp/>{</highlight></codeline>
<codeline lineno="225"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>w<sp/>=<sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1a17ce020ce4b00778ff2402cdc9c8794a" kindref="member">pathmax_s</ref>(hall,<sp/>hall[y].ps);</highlight></codeline>
<codeline lineno="226"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1a2e1d7a5a6260a66c9fd9d897aaf925a8" kindref="member">pathset_s</ref>(hall,<sp/>hall[y].ps,<sp/>w,<sp/>w);</highlight></codeline>
<codeline lineno="227"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>Path<sp/>compression</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="228"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>v<sp/>=<sp/>hall[w].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1ae3efbd2252d2c5a3d5eaab680ab2b2fc" kindref="member">s</ref>;</highlight></codeline>
<codeline lineno="229"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1a2e1d7a5a6260a66c9fd9d897aaf925a8" kindref="member">pathset_s</ref>(hall,<sp/>hall[y].s,<sp/>v,<sp/>y);</highlight></codeline>
<codeline lineno="230"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[y].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1ae3efbd2252d2c5a3d5eaab680ab2b2fc" kindref="member">s</ref><sp/>=<sp/>v;</highlight></codeline>
<codeline lineno="231"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="232"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*</highlight></codeline>
<codeline lineno="233"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>FAILURE<sp/>SET:</highlight></codeline>
<codeline lineno="234"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>If<sp/>the<sp/>considered<sp/>interval<sp/>[x0,y]<sp/>is<sp/>neither<sp/>POTENTIALLY<sp/>STABLE</highlight></codeline>
<codeline lineno="235"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>nor<sp/>STABLE<sp/>there<sp/>are<sp/>still<sp/>buckets<sp/>that<sp/>can<sp/>be<sp/>filled,</highlight></codeline>
<codeline lineno="236"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>therefore<sp/>d<sp/>can<sp/>be<sp/>decreased.<sp/>If<sp/>d<sp/>equals<sp/>zero<sp/>the<sp/>intervals</highlight></codeline>
<codeline lineno="237"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>minimum<sp/>capacity<sp/>is<sp/>met<sp/>and<sp/>thepath<sp/>can<sp/>be<sp/>compressed<sp/>to<sp/>the</highlight></codeline>
<codeline lineno="238"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>next<sp/>value<sp/>having<sp/>an<sp/>empty<sp/>bucket.</highlight></codeline>
<codeline lineno="239"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>see<sp/>DOMINATION<sp/>in<sp/>&quot;ubc&quot;</highlight></codeline>
<codeline lineno="240"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="241"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(--hall[z].d<sp/>==<sp/>0)<sp/>{</highlight></codeline>
<codeline lineno="242"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[z].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a43fb06aa7473e2acde00e5f8f4af4461" kindref="member">t</ref><sp/>=<sp/>z<sp/>+<sp/>1;</highlight></codeline>
<codeline lineno="243"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>z<sp/>=<sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1aa296d9ad2bdf36a55a127aa9ff151068" kindref="member">pathmax_t</ref>(hall,<sp/>hall[z].t);</highlight></codeline>
<codeline lineno="244"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[z].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a43fb06aa7473e2acde00e5f8f4af4461" kindref="member">t</ref><sp/>=<sp/>j;</highlight></codeline>
<codeline lineno="245"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="246"><highlight class="normal"></highlight></codeline>
<codeline lineno="247"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*</highlight></codeline>
<codeline lineno="248"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>FINDING<sp/>NEW<sp/>LOWER<sp/>BOUND:</highlight></codeline>
<codeline lineno="249"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>If<sp/>the<sp/>lower<sp/>bound<sp/>belongs<sp/>to<sp/>an<sp/>unstable<sp/>or<sp/>a<sp/>stable<sp/>set,</highlight></codeline>
<codeline lineno="250"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>remind<sp/>the<sp/>new<sp/>value<sp/>we<sp/>might<sp/>assigned<sp/>to<sp/>the<sp/>lower<sp/>bound</highlight></codeline>
<codeline lineno="251"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>in<sp/>case<sp/>the<sp/>variable<sp/>doesn&apos;t<sp/>belong<sp/>to<sp/>a<sp/>stable<sp/>set.</highlight></codeline>
<codeline lineno="252"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="253"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(hall[x0].h<sp/>&gt;<sp/>x0)<sp/>{</highlight></codeline>
<codeline lineno="254"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[i].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a7fe214a4381855fb5be5c70bb6aada8a" kindref="member">newBound</ref><sp/>=<sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1a848c81cb95c3414b6829961507195c9c" kindref="member">pathmax_h</ref>(hall,<sp/>x0);</highlight></codeline>
<codeline lineno="255"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>w<sp/>=<sp/>hall[i].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a7fe214a4381855fb5be5c70bb6aada8a" kindref="member">newBound</ref>;</highlight></codeline>
<codeline lineno="256"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1a6c06e3dec9ecee638271f2951b530b54" kindref="member">pathset_h</ref>(hall,<sp/>x0,<sp/>w,<sp/>w);<sp/></highlight><highlight class="comment">//<sp/>path<sp/>compression</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="257"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="258"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>Do<sp/>not<sp/>shrink<sp/>the<sp/>variable:<sp/>take<sp/>old<sp/>min<sp/>as<sp/>new<sp/>min</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="259"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[i].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a7fe214a4381855fb5be5c70bb6aada8a" kindref="member">newBound</ref><sp/>=<sp/>x0;</highlight></codeline>
<codeline lineno="260"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="261"><highlight class="normal"></highlight></codeline>
<codeline lineno="262"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>UNSTABLE<sp/>SET</highlight></codeline>
<codeline lineno="263"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>If<sp/>an<sp/>unstable<sp/>set<sp/>is<sp/>discovered</highlight></codeline>
<codeline lineno="264"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>the<sp/>difference<sp/>between<sp/>the<sp/>interval<sp/>bounds<sp/>is<sp/>equal<sp/>to<sp/>the</highlight></codeline>
<codeline lineno="265"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>number<sp/>of<sp/>variables<sp/>whose<sp/>domain<sp/>intersect<sp/>the<sp/>interval</highlight></codeline>
<codeline lineno="266"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>(see<sp/>ZEROTEST<sp/>in<sp/>&quot;gcc&quot;)</highlight></codeline>
<codeline lineno="267"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="268"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>CLEARLY<sp/>THIS<sp/>WAS<sp/>NOT<sp/>STABLE<sp/>==<sp/>UNSTABLE</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="269"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(hall[z].d<sp/>==<sp/>lps.sumup(hall[y].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1aaa393ea429beb3b5d95a06085176d5aa" kindref="member">bounds</ref>,<sp/>hall[z].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1aaa393ea429beb3b5d95a06085176d5aa" kindref="member">bounds</ref><sp/>-<sp/>1))<sp/>{</highlight></codeline>
<codeline lineno="270"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(hall[y].h<sp/>&gt;<sp/>y)</highlight></codeline>
<codeline lineno="271"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*</highlight></codeline>
<codeline lineno="272"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>y<sp/>is<sp/>not<sp/>the<sp/>end<sp/>of<sp/>the<sp/>potentially<sp/>stable<sp/>set</highlight></codeline>
<codeline lineno="273"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>thus<sp/>ensure<sp/>that<sp/>the<sp/>potentially<sp/>stable<sp/>superset<sp/>is<sp/>marked</highlight></codeline>
<codeline lineno="274"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="275"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>y<sp/>=<sp/>hall[y].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a90e14b6364a485058acf02e7a7781785" kindref="member">h</ref>;</highlight></codeline>
<codeline lineno="276"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>Equivalent<sp/>to<sp/>pathmax<sp/>since<sp/>the<sp/>path<sp/>is<sp/>fully<sp/>compressed</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="277"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1a6c06e3dec9ecee638271f2951b530b54" kindref="member">pathset_h</ref>(hall,<sp/>hall[y].h,<sp/>j-1,<sp/>y);</highlight></codeline>
<codeline lineno="278"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>mark<sp/>the<sp/>new<sp/>unstable<sp/>set<sp/>[j,y]</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="279"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[y].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a90e14b6364a485058acf02e7a7781785" kindref="member">h</ref><sp/>=<sp/>j-1;</highlight></codeline>
<codeline lineno="280"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="281"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="282"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1a57c9a2cb4ce59a003bb6771527acc425" kindref="member">pathset_t</ref>(hall,<sp/>succ,<sp/>z,<sp/>z);<sp/></highlight><highlight class="comment">//<sp/>path<sp/>compression</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="283"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="284"><highlight class="normal"></highlight></codeline>
<codeline lineno="285"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>If<sp/>there<sp/>is<sp/>a<sp/>FAILURE<sp/>SET<sp/>left<sp/>the<sp/>minimum<sp/>occurences<sp/>of<sp/>the<sp/>values</highlight></codeline>
<codeline lineno="286"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>are<sp/>not<sp/>guaranteed.<sp/>In<sp/>order<sp/>to<sp/>satisfy<sp/>the<sp/>LBC<sp/>the<sp/>last<sp/>value</highlight></codeline>
<codeline lineno="287"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>in<sp/>the<sp/>stable<sp/>and<sp/>unstable<sp/>datastructure<sp/>hall[].h<sp/>must<sp/>point<sp/>to</highlight></codeline>
<codeline lineno="288"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>the<sp/>sentinel<sp/>at<sp/>the<sp/>beginning<sp/>of<sp/>bounds.</highlight></codeline>
<codeline lineno="289"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="290"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(hall[nb].h<sp/>!=<sp/>0)</highlight></codeline>
<codeline lineno="291"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="namespaceGecode_1ab278aee34126d2f13c5429ee3c4ed3b5a839b40c2e7ccebb2e61e92e274833089" kindref="member">ES_FAILED</ref>;</highlight></codeline>
<codeline lineno="292"><highlight class="normal"></highlight></codeline>
<codeline lineno="293"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>Perform<sp/>path<sp/>compression<sp/>over<sp/>all<sp/>elements<sp/>in</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="294"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>the<sp/>stable<sp/>interval<sp/>data<sp/>structure.<sp/>This<sp/>data</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="295"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>structure<sp/>will<sp/>no<sp/>longer<sp/>be<sp/>modified<sp/>and<sp/>will<sp/>be</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="296"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>accessed<sp/>n<sp/>or<sp/>2n<sp/>times.<sp/>Therefore,<sp/>we<sp/>can<sp/>afford</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="297"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>a<sp/>linear<sp/>time<sp/>compression.</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="298"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(i<sp/>=<sp/>bsize;<sp/>--i;)</highlight></codeline>
<codeline lineno="299"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(hall[i].s<sp/>&gt;<sp/>i)</highlight></codeline>
<codeline lineno="300"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[i].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1ae3efbd2252d2c5a3d5eaab680ab2b2fc" kindref="member">s</ref><sp/>=<sp/>w;</highlight></codeline>
<codeline lineno="301"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="302"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>w<sp/>=<sp/>i;</highlight></codeline>
<codeline lineno="303"><highlight class="normal"></highlight></codeline>
<codeline lineno="304"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*</highlight></codeline>
<codeline lineno="305"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>UPDATING<sp/>LOWER<sp/>BOUND:</highlight></codeline>
<codeline lineno="306"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>For<sp/>all<sp/>variables<sp/>that<sp/>are<sp/>not<sp/>a<sp/>subset<sp/>of<sp/>a<sp/>stable<sp/>set,</highlight></codeline>
<codeline lineno="307"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>shrink<sp/>the<sp/>lower<sp/>bound,<sp/>i.e.<sp/>forall<sp/>stable<sp/>sets<sp/>S<sp/>we<sp/>have:</highlight></codeline>
<codeline lineno="308"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>x0<sp/>&lt;<sp/>S_min<sp/>&lt;=<sp/>y<sp/>&lt;=S_max<sp/><sp/>or<sp/>S_min<sp/>&lt;=<sp/>x0<sp/>&lt;=<sp/>S_max<sp/>&lt;<sp/>y</highlight></codeline>
<codeline lineno="309"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>that<sp/>is<sp/>[x0,y]<sp/>is<sp/>NOT<sp/>a<sp/>proper<sp/>subset<sp/>of<sp/>any<sp/>stable<sp/>set<sp/>S</highlight></codeline>
<codeline lineno="310"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="311"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(i<sp/>=<sp/>n;<sp/>i--;<sp/>)<sp/>{</highlight></codeline>
<codeline lineno="312"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>x0<sp/>=<sp/>rank[mu[i]].<ref refid="classGecode_1_1Int_1_1GCC_1_1Rank_1a6bd42edaac04d68f1ae5c6014bfbcf0c" kindref="member">min</ref>;</highlight></codeline>
<codeline lineno="313"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>y<sp/>=<sp/>rank[mu[i]].<ref refid="classGecode_1_1Int_1_1GCC_1_1Rank_1a6d064d0ef6cb52d77519fd3481a30253" kindref="member">max</ref>;</highlight></codeline>
<codeline lineno="314"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>update<sp/>only<sp/>those<sp/>variables<sp/>that<sp/>are<sp/>not<sp/>contained<sp/>in<sp/>a<sp/>stable<sp/>set</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="315"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>((hall[x0].s<sp/>&lt;=<sp/>x0)<sp/>||<sp/>(y<sp/>&gt;<sp/>hall[x0].s))<sp/>{</highlight></codeline>
<codeline lineno="316"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>still<sp/>have<sp/>to<sp/>check<sp/>this<sp/>out,<sp/>how<sp/>skipping<sp/>works<sp/>(consider<sp/>dominated<sp/>indices)</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="317"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>m<sp/>=<sp/>lps.skipNonNullElementsRight(hall[hall[i].newBound].bounds);</highlight></codeline>
<codeline lineno="318"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>GECODE_ME_CHECK(x[mu[i]].gq(home,<sp/>m));</highlight></codeline>
<codeline lineno="319"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="320"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="321"><highlight class="normal"></highlight></codeline>
<codeline lineno="322"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>LBC<sp/>narrow<sp/>upper<sp/>bounds</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="323"><highlight class="normal"><sp/><sp/><sp/><sp/>w<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="324"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(i<sp/>=<sp/>0;<sp/>i<sp/>&lt;=<sp/>nb;<sp/>i++)<sp/>{</highlight></codeline>
<codeline lineno="325"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>hall[i].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1aeee43e1764cf8fa3fc7326a2eedecd5f" kindref="member">d</ref><sp/>=<sp/>lps.sumup(hall[i].bounds,<sp/>hall[i<sp/>+<sp/>1].bounds<sp/>-<sp/>1);</highlight></codeline>
<codeline lineno="326"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(hall[i].d<sp/>==<sp/>0)<sp/>{</highlight></codeline>
<codeline lineno="327"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[i].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a43fb06aa7473e2acde00e5f8f4af4461" kindref="member">t</ref><sp/>=<sp/>w;</highlight></codeline>
<codeline lineno="328"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="329"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[w].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a43fb06aa7473e2acde00e5f8f4af4461" kindref="member">t</ref><sp/>=<sp/>i;</highlight></codeline>
<codeline lineno="330"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>w<sp/>=<sp/>i;</highlight></codeline>
<codeline lineno="331"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="332"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="333"><highlight class="normal"><sp/><sp/><sp/><sp/>hall[w].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a43fb06aa7473e2acde00e5f8f4af4461" kindref="member">t</ref><sp/>=<sp/>i;</highlight></codeline>
<codeline lineno="334"><highlight class="normal"></highlight></codeline>
<codeline lineno="335"><highlight class="normal"><sp/><sp/><sp/><sp/>w<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="336"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(i<sp/>=<sp/>1;<sp/>i<sp/>&lt;=<sp/>nb;<sp/>i++)</highlight></codeline>
<codeline lineno="337"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(hall[i<sp/>-<sp/>1].d<sp/>==<sp/>0)<sp/>{</highlight></codeline>
<codeline lineno="338"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[i].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a90e14b6364a485058acf02e7a7781785" kindref="member">h</ref><sp/>=<sp/>w;</highlight></codeline>
<codeline lineno="339"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="340"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[w].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a90e14b6364a485058acf02e7a7781785" kindref="member">h</ref><sp/>=<sp/>i;</highlight></codeline>
<codeline lineno="341"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>w<sp/>=<sp/>i;</highlight></codeline>
<codeline lineno="342"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="343"><highlight class="normal"><sp/><sp/><sp/><sp/>hall[w].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a90e14b6364a485058acf02e7a7781785" kindref="member">h</ref><sp/>=<sp/>i;</highlight></codeline>
<codeline lineno="344"><highlight class="normal"></highlight></codeline>
<codeline lineno="345"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(i<sp/>=<sp/>n;<sp/>i--;<sp/>)<sp/>{</highlight></codeline>
<codeline lineno="346"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>visit<sp/>intervals<sp/>in<sp/>decreasing<sp/>min<sp/>order</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="347"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>i.e.<sp/>minsorted<sp/>from<sp/>right<sp/>to<sp/>left</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="348"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>x0<sp/>=<sp/>rank[nu[i]].<ref refid="classGecode_1_1Int_1_1GCC_1_1Rank_1a6d064d0ef6cb52d77519fd3481a30253" kindref="member">max</ref>;</highlight></codeline>
<codeline lineno="349"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>y<sp/>=<sp/>rank[nu[i]].<ref refid="classGecode_1_1Int_1_1GCC_1_1Rank_1a6bd42edaac04d68f1ae5c6014bfbcf0c" kindref="member">min</ref>;</highlight></codeline>
<codeline lineno="350"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>pred<sp/>=<sp/>x0<sp/>-<sp/>1;<sp/></highlight><highlight class="comment">//<sp/>predecessor<sp/>of<sp/>x0<sp/>in<sp/>the<sp/>indices</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="351"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>z<sp/>=<sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1ab26288423b77c1919935cca59aa7c6c7" kindref="member">pathmin_t</ref>(hall,<sp/>pred);</highlight></codeline>
<codeline lineno="352"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>j<sp/>=<sp/>hall[z].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a43fb06aa7473e2acde00e5f8f4af4461" kindref="member">t</ref>;</highlight></codeline>
<codeline lineno="353"><highlight class="normal"></highlight></codeline>
<codeline lineno="354"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>If<sp/>the<sp/>variable<sp/>is<sp/>not<sp/>in<sp/>a<sp/>discovered<sp/>stable<sp/>set</highlight></codeline>
<codeline lineno="355"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>(see<sp/>above<sp/>condition<sp/>for<sp/>STABLE<sp/>SET)</highlight></codeline>
<codeline lineno="356"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="357"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(hall[z].d<sp/>&gt;<sp/>lps.sumup(hall[z].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1aaa393ea429beb3b5d95a06085176d5aa" kindref="member">bounds</ref>,<sp/>hall[y].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1aaa393ea429beb3b5d95a06085176d5aa" kindref="member">bounds</ref><sp/>-<sp/>1))<sp/>{</highlight></codeline>
<codeline lineno="358"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>FAILURE<sp/>SET</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="359"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(--hall[z].d<sp/>==<sp/>0)<sp/>{</highlight></codeline>
<codeline lineno="360"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[z].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a43fb06aa7473e2acde00e5f8f4af4461" kindref="member">t</ref><sp/>=<sp/>z<sp/>-<sp/>1;</highlight></codeline>
<codeline lineno="361"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>z<sp/>=<sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1ab26288423b77c1919935cca59aa7c6c7" kindref="member">pathmin_t</ref>(hall,<sp/>hall[z].t);</highlight></codeline>
<codeline lineno="362"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[z].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a43fb06aa7473e2acde00e5f8f4af4461" kindref="member">t</ref><sp/>=<sp/>j;</highlight></codeline>
<codeline lineno="363"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="364"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>FINDING<sp/>NEW<sp/>UPPER<sp/>BOUND</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="365"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(hall[x0].h<sp/>&lt;<sp/>x0)<sp/>{</highlight></codeline>
<codeline lineno="366"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>w<sp/>=<sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1ab6f6a0deb35b2f41191c850012a61a47" kindref="member">pathmin_h</ref>(hall,<sp/>hall[x0].h);</highlight></codeline>
<codeline lineno="367"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[i].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a7fe214a4381855fb5be5c70bb6aada8a" kindref="member">newBound</ref><sp/>=<sp/>w;</highlight></codeline>
<codeline lineno="368"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1a6c06e3dec9ecee638271f2951b530b54" kindref="member">pathset_h</ref>(hall,<sp/>x0,<sp/>w,<sp/>w);<sp/></highlight><highlight class="comment">//<sp/>path<sp/>compression</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="369"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="370"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[i].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a7fe214a4381855fb5be5c70bb6aada8a" kindref="member">newBound</ref><sp/>=<sp/>x0;</highlight></codeline>
<codeline lineno="371"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="372"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>UNSTABLE<sp/>SET</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="373"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(hall[z].d<sp/>==<sp/>lps.sumup(hall[z].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1aaa393ea429beb3b5d95a06085176d5aa" kindref="member">bounds</ref>,<sp/>hall[y].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1aaa393ea429beb3b5d95a06085176d5aa" kindref="member">bounds</ref><sp/>-<sp/>1))<sp/>{</highlight></codeline>
<codeline lineno="374"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(hall[y].h<sp/>&lt;<sp/>y)<sp/>{</highlight></codeline>
<codeline lineno="375"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>y<sp/>=<sp/>hall[y].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a90e14b6364a485058acf02e7a7781785" kindref="member">h</ref>;</highlight></codeline>
<codeline lineno="376"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="377"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>succj<sp/>=<sp/>j<sp/>+<sp/>1;</highlight></codeline>
<codeline lineno="378"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>mark<sp/>new<sp/>unstable<sp/>set<sp/>[y,j]</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="379"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1a6c06e3dec9ecee638271f2951b530b54" kindref="member">pathset_h</ref>(hall,<sp/>hall[y].h,<sp/>succj,<sp/>y);</highlight></codeline>
<codeline lineno="380"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[y].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a90e14b6364a485058acf02e7a7781785" kindref="member">h</ref><sp/>=<sp/>succj;</highlight></codeline>
<codeline lineno="381"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="382"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="383"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1a57c9a2cb4ce59a003bb6771527acc425" kindref="member">pathset_t</ref>(hall,<sp/>pred,<sp/>z,<sp/>z);</highlight></codeline>
<codeline lineno="384"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="385"><highlight class="normal"></highlight></codeline>
<codeline lineno="386"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>UPDATING<sp/>UPPER<sp/>BOUND</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="387"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(i<sp/>=<sp/>n;<sp/>i--;<sp/>)<sp/>{</highlight></codeline>
<codeline lineno="388"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>x0<sp/>=<sp/><sp/>rank[nu[i]].<ref refid="classGecode_1_1Int_1_1GCC_1_1Rank_1a6bd42edaac04d68f1ae5c6014bfbcf0c" kindref="member">min</ref>;</highlight></codeline>
<codeline lineno="389"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>y<sp/><sp/>=<sp/><sp/>rank[nu[i]].<ref refid="classGecode_1_1Int_1_1GCC_1_1Rank_1a6d064d0ef6cb52d77519fd3481a30253" kindref="member">max</ref>;</highlight></codeline>
<codeline lineno="390"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>((hall[x0].s<sp/>&lt;=<sp/>x0)<sp/>||<sp/>(y<sp/>&gt;<sp/>hall[x0].s))<sp/>{</highlight></codeline>
<codeline lineno="391"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>m<sp/>=<sp/>lps.skipNonNullElementsLeft(hall[hall[i].newBound].bounds<sp/>-<sp/>1);</highlight></codeline>
<codeline lineno="392"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>GECODE_ME_CHECK(x[nu[i]].lq(home,<sp/>m));</highlight></codeline>
<codeline lineno="393"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="394"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="395"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="namespaceGecode_1ab278aee34126d2f13c5429ee3c4ed3b5a01d6fb1ec70479e8e413d5ecfd63e303" kindref="member">ES_OK</ref>;</highlight></codeline>
<codeline lineno="396"><highlight class="normal"><sp/><sp/>}</highlight></codeline>
<codeline lineno="397"><highlight class="normal"></highlight></codeline>
<codeline lineno="398"><highlight class="normal"></highlight></codeline>
<codeline lineno="399"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal">&lt;</highlight><highlight class="keyword">class</highlight><highlight class="normal"><sp/>Card&gt;</highlight></codeline>
<codeline lineno="400"><highlight class="normal"><sp/><sp/>forceinline<sp/><ref refid="namespaceGecode_1ab278aee34126d2f13c5429ee3c4ed3b5" kindref="member">ExecStatus</ref></highlight></codeline>
<codeline lineno="401" refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1a6dee04590fdea4b03784bc8787018d46" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1a6dee04590fdea4b03784bc8787018d46" kindref="member">Bnd&lt;Card&gt;::ubc</ref>(<ref refid="classGecode_1_1Space" kindref="compound">Space</ref>&amp;<sp/>home,<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal">&amp;<sp/>nb,</highlight></codeline>
<codeline lineno="402"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo" kindref="compound">HallInfo</ref><sp/>hall[],<sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1Rank" kindref="compound">Rank</ref><sp/>rank[],<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>mu[],<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>nu[])<sp/>{</highlight></codeline>
<codeline lineno="403"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>rightmost<sp/>=<sp/>nb<sp/>+<sp/>1;<sp/></highlight><highlight class="comment">//<sp/>rightmost<sp/>accesible<sp/>value<sp/>in<sp/>bounds</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="404"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>bsize<sp/>=<sp/>nb<sp/>+<sp/>2;<sp/></highlight><highlight class="comment">//<sp/>number<sp/>of<sp/>unique<sp/>bounds<sp/>including<sp/>sentinels</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="405"><highlight class="normal"></highlight></codeline>
<codeline lineno="406"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//Narrow<sp/>lower<sp/>bounds<sp/>(UBC)</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="407"><highlight class="normal"></highlight></codeline>
<codeline lineno="408"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*</highlight></codeline>
<codeline lineno="409"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>Initializing<sp/>tree<sp/>structure<sp/>with<sp/>the<sp/>values<sp/>from<sp/>bounds</highlight></codeline>
<codeline lineno="410"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>and<sp/>the<sp/>interval<sp/>capacities<sp/>of<sp/>neighboured<sp/>values</highlight></codeline>
<codeline lineno="411"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>from<sp/>left<sp/>to<sp/>right</highlight></codeline>
<codeline lineno="412"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="413"><highlight class="normal"></highlight></codeline>
<codeline lineno="414"><highlight class="normal"></highlight></codeline>
<codeline lineno="415"><highlight class="normal"><sp/><sp/><sp/><sp/>hall[0].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a90e14b6364a485058acf02e7a7781785" kindref="member">h</ref><sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="416"><highlight class="normal"><sp/><sp/><sp/><sp/>hall[0].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a43fb06aa7473e2acde00e5f8f4af4461" kindref="member">t</ref><sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="417"><highlight class="normal"><sp/><sp/><sp/><sp/>hall[0].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1aeee43e1764cf8fa3fc7326a2eedecd5f" kindref="member">d</ref><sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="418"><highlight class="normal"></highlight></codeline>
<codeline lineno="419"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i<sp/>=<sp/>bsize;<sp/>--i;<sp/>)<sp/>{</highlight></codeline>
<codeline lineno="420"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>hall[i].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a90e14b6364a485058acf02e7a7781785" kindref="member">h</ref><sp/>=<sp/>hall[i].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a43fb06aa7473e2acde00e5f8f4af4461" kindref="member">t</ref><sp/>=<sp/>i-1;</highlight></codeline>
<codeline lineno="421"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>hall[i].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1aeee43e1764cf8fa3fc7326a2eedecd5f" kindref="member">d</ref><sp/>=<sp/>ups.sumup(hall[i-1].bounds,<sp/>hall[i].bounds<sp/>-<sp/>1);</highlight></codeline>
<codeline lineno="422"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="423"><highlight class="normal"></highlight></codeline>
<codeline lineno="424"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>n<sp/>=<sp/>x.size();</highlight></codeline>
<codeline lineno="425"><highlight class="normal"></highlight></codeline>
<codeline lineno="426"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i<sp/>=<sp/>0;<sp/>i<sp/>&lt;<sp/>n;<sp/>i++)<sp/>{</highlight></codeline>
<codeline lineno="427"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>visit<sp/>intervals<sp/>in<sp/>increasing<sp/>max<sp/>order</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="428"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>x0<sp/><sp/><sp/>=<sp/>rank[mu[i]].<ref refid="classGecode_1_1Int_1_1GCC_1_1Rank_1a6bd42edaac04d68f1ae5c6014bfbcf0c" kindref="member">min</ref>;</highlight></codeline>
<codeline lineno="429"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>succ<sp/>=<sp/>x0<sp/>+<sp/>1;</highlight></codeline>
<codeline lineno="430"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>y<sp/><sp/><sp/><sp/>=<sp/>rank[mu[i]].<ref refid="classGecode_1_1Int_1_1GCC_1_1Rank_1a6d064d0ef6cb52d77519fd3481a30253" kindref="member">max</ref>;</highlight></codeline>
<codeline lineno="431"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>z<sp/><sp/><sp/><sp/>=<sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1aa296d9ad2bdf36a55a127aa9ff151068" kindref="member">pathmax_t</ref>(hall,<sp/>succ);</highlight></codeline>
<codeline lineno="432"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>j<sp/><sp/><sp/><sp/>=<sp/>hall[z].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a43fb06aa7473e2acde00e5f8f4af4461" kindref="member">t</ref>;</highlight></codeline>
<codeline lineno="433"><highlight class="normal"></highlight></codeline>
<codeline lineno="434"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>DOMINATION:</highlight></codeline>
<codeline lineno="435"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/>v^i_j<sp/>denotes</highlight></codeline>
<codeline lineno="436"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/>unused<sp/>values<sp/>in<sp/>the<sp/>current<sp/>interval.<sp/>If<sp/>the<sp/>difference<sp/>d</highlight></codeline>
<codeline lineno="437"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/>between<sp/>to<sp/>critical<sp/>capacities<sp/>v^i_j<sp/>and<sp/>v^i_z</highlight></codeline>
<codeline lineno="438"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/>is<sp/>equal<sp/>to<sp/>zero,<sp/>j<sp/>dominates<sp/>z</highlight></codeline>
<codeline lineno="439"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*</highlight></codeline>
<codeline lineno="440"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/>i.e.<sp/>[hall[l].bounds,<sp/>hall[nb+1].bounds]<sp/>is<sp/>not<sp/>left-maximal<sp/>and</highlight></codeline>
<codeline lineno="441"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/>[hall[j].bounds,<sp/>hall[l].bounds]<sp/>is<sp/>a<sp/>Hall<sp/>set<sp/>iff</highlight></codeline>
<codeline lineno="442"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/>[hall[j].bounds,<sp/>hall[l].bounds]<sp/>processing<sp/>a<sp/>variable<sp/>x_i<sp/>uses<sp/>up<sp/>a<sp/>value<sp/>in<sp/>the<sp/>interval</highlight></codeline>
<codeline lineno="443"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/>[hall[z].bounds,hall[z+1].bounds]<sp/>according<sp/>to<sp/>the<sp/>intervals</highlight></codeline>
<codeline lineno="444"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/>capacity.<sp/>Therefore,<sp/>if<sp/>d<sp/>=<sp/>0</highlight></codeline>
<codeline lineno="445"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/>the<sp/>considered<sp/>value<sp/>has<sp/>already<sp/>been<sp/>used<sp/>by<sp/>processed<sp/>variables</highlight></codeline>
<codeline lineno="446"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/>m-times,<sp/>where<sp/>m<sp/>=<sp/>u[i]<sp/>for<sp/>value<sp/>v_i.<sp/>Since<sp/>this<sp/>value<sp/>must<sp/>not</highlight></codeline>
<codeline lineno="447"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/>be<sp/>reconsidered<sp/>the<sp/>path<sp/>can<sp/>be<sp/>compressed</highlight></codeline>
<codeline lineno="448"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="449"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(--hall[z].d<sp/>==<sp/>0)<sp/>{</highlight></codeline>
<codeline lineno="450"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[z].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a43fb06aa7473e2acde00e5f8f4af4461" kindref="member">t</ref><sp/>=<sp/>z<sp/>+<sp/>1;</highlight></codeline>
<codeline lineno="451"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>z<sp/>=<sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1aa296d9ad2bdf36a55a127aa9ff151068" kindref="member">pathmax_t</ref>(hall,<sp/>hall[z].t);</highlight></codeline>
<codeline lineno="452"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(z<sp/>&gt;=<sp/>bsize)</highlight></codeline>
<codeline lineno="453"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>z--;</highlight></codeline>
<codeline lineno="454"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[z].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a43fb06aa7473e2acde00e5f8f4af4461" kindref="member">t</ref><sp/>=<sp/>j;</highlight></codeline>
<codeline lineno="455"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="456"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1a57c9a2cb4ce59a003bb6771527acc425" kindref="member">pathset_t</ref>(hall,<sp/>succ,<sp/>z,<sp/>z);<sp/></highlight><highlight class="comment">//<sp/>path<sp/>compression</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="457"><highlight class="normal"></highlight></codeline>
<codeline lineno="458"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>NEGATIVE<sp/>CAPACITY:</highlight></codeline>
<codeline lineno="459"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/>A<sp/>negative<sp/>capacity<sp/>results<sp/>in<sp/>a<sp/>failure.Since<sp/>a</highlight></codeline>
<codeline lineno="460"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/>negative<sp/>capacity<sp/>signals<sp/>that<sp/>the<sp/>number<sp/>of<sp/>variables</highlight></codeline>
<codeline lineno="461"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/>whose<sp/>domain<sp/>is<sp/>contained<sp/>in<sp/>the<sp/>set<sp/>S<sp/>is<sp/>larger<sp/>than</highlight></codeline>
<codeline lineno="462"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/>the<sp/>maximum<sp/>capacity<sp/>of<sp/>S<sp/>=&gt;<sp/>UBC<sp/>is<sp/>not<sp/>satisfiable,</highlight></codeline>
<codeline lineno="463"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/>i.e.<sp/>there<sp/>are<sp/>more<sp/>variables<sp/>than<sp/>values<sp/>to<sp/>instantiate<sp/>them</highlight></codeline>
<codeline lineno="464"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="465"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(hall[z].d<sp/>&lt;<sp/>ups.sumup(hall[y].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1aaa393ea429beb3b5d95a06085176d5aa" kindref="member">bounds</ref>,<sp/>hall[z].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1aaa393ea429beb3b5d95a06085176d5aa" kindref="member">bounds</ref><sp/>-<sp/>1))</highlight></codeline>
<codeline lineno="466"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="namespaceGecode_1ab278aee34126d2f13c5429ee3c4ed3b5a839b40c2e7ccebb2e61e92e274833089" kindref="member">ES_FAILED</ref>;</highlight></codeline>
<codeline lineno="467"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline>
<codeline lineno="468"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>UPDATING<sp/>LOWER<sp/>BOUND:</highlight></codeline>
<codeline lineno="469"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/>If<sp/>the<sp/>lower<sp/>bound<sp/>min_i<sp/>lies<sp/>inside<sp/>a<sp/>Hall<sp/>interval<sp/>[a,b]</highlight></codeline>
<codeline lineno="470"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/>i.e.<sp/>a<sp/>&lt;=<sp/>min_i<sp/>&lt;=b<sp/>&lt;=<sp/>max_i</highlight></codeline>
<codeline lineno="471"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/>min_i<sp/>is<sp/>set<sp/>to<sp/><sp/>min_i<sp/>:=<sp/>b+1</highlight></codeline>
<codeline lineno="472"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="473"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(hall[x0].h<sp/>&gt;<sp/>x0)<sp/>{</highlight></codeline>
<codeline lineno="474"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>w<sp/>=<sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1a848c81cb95c3414b6829961507195c9c" kindref="member">pathmax_h</ref>(hall,<sp/>hall[x0].h);</highlight></codeline>
<codeline lineno="475"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>m<sp/>=<sp/>hall[w].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1aaa393ea429beb3b5d95a06085176d5aa" kindref="member">bounds</ref>;</highlight></codeline>
<codeline lineno="476"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>GECODE_ME_CHECK(x[mu[i]].gq(home,<sp/>m));</highlight></codeline>
<codeline lineno="477"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1a6c06e3dec9ecee638271f2951b530b54" kindref="member">pathset_h</ref>(hall,<sp/>x0,<sp/>w,<sp/>w);<sp/></highlight><highlight class="comment">//<sp/>path<sp/>compression</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="478"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="479"><highlight class="normal"></highlight></codeline>
<codeline lineno="480"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>ZEROTEST:</highlight></codeline>
<codeline lineno="481"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/>(using<sp/>the<sp/>difference<sp/>between<sp/>capacity<sp/>pointers)</highlight></codeline>
<codeline lineno="482"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/>zero<sp/>capacity<sp/>=&gt;<sp/>the<sp/>difference<sp/>between<sp/>critical<sp/>capacity</highlight></codeline>
<codeline lineno="483"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/>pointers<sp/>is<sp/>equal<sp/>to<sp/>the<sp/>maximum<sp/>capacity<sp/>of<sp/>the<sp/>interval,i.e.</highlight></codeline>
<codeline lineno="484"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/>the<sp/>number<sp/>of<sp/>variables<sp/>whose<sp/>domain<sp/>is<sp/>contained<sp/>in<sp/>the</highlight></codeline>
<codeline lineno="485"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/>interval<sp/>is<sp/>equal<sp/>to<sp/>the<sp/>sum<sp/>over<sp/>all<sp/>u[i]<sp/>for<sp/>a<sp/>value<sp/>v_i<sp/>that</highlight></codeline>
<codeline lineno="486"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/>lies<sp/>in<sp/>the<sp/>Hall-Intervall<sp/>which<sp/>can<sp/>also<sp/>be<sp/>thought<sp/>of<sp/>as<sp/>a</highlight></codeline>
<codeline lineno="487"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/>Hall-Set</highlight></codeline>
<codeline lineno="488"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*</highlight></codeline>
<codeline lineno="489"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/>ZeroTestLemma:<sp/>Let<sp/>k<sp/>and<sp/>l<sp/>be<sp/>succesive<sp/>critical<sp/>indices.</highlight></codeline>
<codeline lineno="490"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>v^i_k=0<sp/><sp/>=&gt;<sp/><sp/>v^i_k<sp/>=<sp/>max_i+1-l+d</highlight></codeline>
<codeline lineno="491"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>&lt;=&gt;<sp/>v^i_k<sp/>=<sp/>y<sp/>+<sp/>1<sp/>-<sp/>z<sp/>+<sp/>d</highlight></codeline>
<codeline lineno="492"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>&lt;=&gt;<sp/>d<sp/>=<sp/>z-1-y</highlight></codeline>
<codeline lineno="493"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/><sp/>if<sp/>this<sp/>equation<sp/>holds<sp/>the<sp/>interval<sp/>[j,z-1]<sp/>is<sp/>a<sp/>hall<sp/>intervall</highlight></codeline>
<codeline lineno="494"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="495"><highlight class="normal"></highlight></codeline>
<codeline lineno="496"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(hall[z].d<sp/>==<sp/>ups.sumup(hall[y].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1aaa393ea429beb3b5d95a06085176d5aa" kindref="member">bounds</ref>,<sp/>hall[z].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1aaa393ea429beb3b5d95a06085176d5aa" kindref="member">bounds</ref><sp/>-<sp/>1))<sp/>{</highlight></codeline>
<codeline lineno="497"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*</highlight></codeline>
<codeline lineno="498"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*mark<sp/>hall<sp/>interval<sp/>[j,z-1]</highlight></codeline>
<codeline lineno="499"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>hall<sp/>pointers<sp/>form<sp/>a<sp/>path<sp/>to<sp/>the<sp/>upper<sp/>bound<sp/>of<sp/>the<sp/>interval</highlight></codeline>
<codeline lineno="500"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="501"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>predj<sp/>=<sp/>j<sp/>-<sp/>1;</highlight></codeline>
<codeline lineno="502"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1a6c06e3dec9ecee638271f2951b530b54" kindref="member">pathset_h</ref>(hall,<sp/>hall[y].h,<sp/>predj,<sp/>y);</highlight></codeline>
<codeline lineno="503"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[y].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a90e14b6364a485058acf02e7a7781785" kindref="member">h</ref><sp/>=<sp/>predj;</highlight></codeline>
<codeline lineno="504"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="505"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="506"><highlight class="normal"></highlight></codeline>
<codeline lineno="507"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Narrow<sp/>upper<sp/>bounds<sp/>(UBC)</highlight></codeline>
<codeline lineno="508"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>symmetric<sp/>to<sp/>the<sp/>narrowing<sp/>of<sp/>the<sp/>lower<sp/>bounds</highlight></codeline>
<codeline lineno="509"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="510"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i<sp/>=<sp/>0;<sp/>i<sp/>&lt;<sp/>rightmost;<sp/>i++)<sp/>{</highlight></codeline>
<codeline lineno="511"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>hall[i].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a90e14b6364a485058acf02e7a7781785" kindref="member">h</ref><sp/>=<sp/>hall[i].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a43fb06aa7473e2acde00e5f8f4af4461" kindref="member">t</ref><sp/>=<sp/>i+1;</highlight></codeline>
<codeline lineno="512"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>hall[i].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1aeee43e1764cf8fa3fc7326a2eedecd5f" kindref="member">d</ref><sp/>=<sp/>ups.sumup(hall[i].bounds,<sp/>hall[i+1].bounds<sp/>-<sp/>1);</highlight></codeline>
<codeline lineno="513"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="514"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline>
<codeline lineno="515"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i<sp/>=<sp/>n;<sp/>i--;<sp/>)<sp/>{</highlight></codeline>
<codeline lineno="516"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>visit<sp/>intervals<sp/>in<sp/>decreasing<sp/>min<sp/>order</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="517"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>x0<sp/>=<sp/>rank[nu[i]].<ref refid="classGecode_1_1Int_1_1GCC_1_1Rank_1a6d064d0ef6cb52d77519fd3481a30253" kindref="member">max</ref>;</highlight></codeline>
<codeline lineno="518"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>pred<sp/>=<sp/>x0<sp/>-<sp/>1;</highlight></codeline>
<codeline lineno="519"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>y<sp/>=<sp/>rank[nu[i]].<ref refid="classGecode_1_1Int_1_1GCC_1_1Rank_1a6bd42edaac04d68f1ae5c6014bfbcf0c" kindref="member">min</ref>;</highlight></codeline>
<codeline lineno="520"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>z<sp/>=<sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1ab26288423b77c1919935cca59aa7c6c7" kindref="member">pathmin_t</ref>(hall,<sp/>pred);</highlight></codeline>
<codeline lineno="521"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>j<sp/>=<sp/>hall[z].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a43fb06aa7473e2acde00e5f8f4af4461" kindref="member">t</ref>;</highlight></codeline>
<codeline lineno="522"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline>
<codeline lineno="523"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>DOMINATION:</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="524"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(--hall[z].d<sp/>==<sp/>0)<sp/>{</highlight></codeline>
<codeline lineno="525"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[z].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a43fb06aa7473e2acde00e5f8f4af4461" kindref="member">t</ref><sp/>=<sp/>z<sp/>-<sp/>1;</highlight></codeline>
<codeline lineno="526"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>z<sp/>=<sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1ab26288423b77c1919935cca59aa7c6c7" kindref="member">pathmin_t</ref>(hall,<sp/>hall[z].t);</highlight></codeline>
<codeline lineno="527"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[z].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a43fb06aa7473e2acde00e5f8f4af4461" kindref="member">t</ref><sp/>=<sp/>j;</highlight></codeline>
<codeline lineno="528"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="529"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1a57c9a2cb4ce59a003bb6771527acc425" kindref="member">pathset_t</ref>(hall,<sp/>pred,<sp/>z,<sp/>z);</highlight></codeline>
<codeline lineno="530"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline>
<codeline lineno="531"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>NEGATIVE<sp/>CAPACITY:</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="532"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(hall[z].d<sp/>&lt;<sp/>ups.sumup(hall[z].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1aaa393ea429beb3b5d95a06085176d5aa" kindref="member">bounds</ref>,hall[y].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1aaa393ea429beb3b5d95a06085176d5aa" kindref="member">bounds</ref>-1))</highlight></codeline>
<codeline lineno="533"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="namespaceGecode_1ab278aee34126d2f13c5429ee3c4ed3b5a839b40c2e7ccebb2e61e92e274833089" kindref="member">ES_FAILED</ref>;</highlight></codeline>
<codeline lineno="534"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline>
<codeline lineno="535"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>UPDATING<sp/>UPPER<sp/>BOUND:</highlight></codeline>
<codeline lineno="536"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/>If<sp/>the<sp/>upper<sp/>bound<sp/>max_i<sp/>lies<sp/>inside<sp/>a<sp/>Hall<sp/>interval<sp/>[a,b]</highlight></codeline>
<codeline lineno="537"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/>i.e.<sp/>min_i<sp/>&lt;=<sp/>a<sp/>&lt;=<sp/>max_i<sp/>&lt;<sp/>b</highlight></codeline>
<codeline lineno="538"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/><sp/>max_i<sp/>is<sp/>set<sp/>to<sp/><sp/>max_i<sp/>:=<sp/>a-1</highlight></codeline>
<codeline lineno="539"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="540"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(hall[x0].h<sp/>&lt;<sp/>x0)<sp/>{</highlight></codeline>
<codeline lineno="541"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>w<sp/>=<sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1ab6f6a0deb35b2f41191c850012a61a47" kindref="member">pathmin_h</ref>(hall,<sp/>hall[x0].h);</highlight></codeline>
<codeline lineno="542"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>m<sp/>=<sp/>hall[w].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1aaa393ea429beb3b5d95a06085176d5aa" kindref="member">bounds</ref><sp/>-<sp/>1;</highlight></codeline>
<codeline lineno="543"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>GECODE_ME_CHECK(x[nu[i]].lq(home,<sp/>m));</highlight></codeline>
<codeline lineno="544"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1a6c06e3dec9ecee638271f2951b530b54" kindref="member">pathset_h</ref>(hall,<sp/>x0,<sp/>w,<sp/>w);</highlight></codeline>
<codeline lineno="545"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="546"><highlight class="normal"></highlight></codeline>
<codeline lineno="547"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>ZEROTEST</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="548"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(hall[z].d<sp/>==<sp/>ups.sumup(hall[z].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1aaa393ea429beb3b5d95a06085176d5aa" kindref="member">bounds</ref>,<sp/>hall[y].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1aaa393ea429beb3b5d95a06085176d5aa" kindref="member">bounds</ref><sp/>-<sp/>1))<sp/>{</highlight></codeline>
<codeline lineno="549"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//mark<sp/>hall<sp/>interval<sp/>[y,j]</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="550"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceGecode_1_1Int_1_1GCC_1a6c06e3dec9ecee638271f2951b530b54" kindref="member">pathset_h</ref>(hall,<sp/>hall[y].h,<sp/>j+1,<sp/>y);</highlight></codeline>
<codeline lineno="551"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[y].<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo_1a90e14b6364a485058acf02e7a7781785" kindref="member">h</ref><sp/>=<sp/>j+1;</highlight></codeline>
<codeline lineno="552"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="553"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="554"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="namespaceGecode_1ab278aee34126d2f13c5429ee3c4ed3b5a01d6fb1ec70479e8e413d5ecfd63e303" kindref="member">ES_OK</ref>;</highlight></codeline>
<codeline lineno="555"><highlight class="normal"><sp/><sp/>}</highlight></codeline>
<codeline lineno="556"><highlight class="normal"></highlight></codeline>
<codeline lineno="557"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal">&lt;</highlight><highlight class="keyword">class</highlight><highlight class="normal"><sp/>Card&gt;</highlight></codeline>
<codeline lineno="558"><highlight class="normal"><sp/><sp/><ref refid="namespaceGecode_1ab278aee34126d2f13c5429ee3c4ed3b5" kindref="member">ExecStatus</ref></highlight></codeline>
<codeline lineno="559" refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1a6c0260840b03a2160327e48801b6f4b0" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1a6c0260840b03a2160327e48801b6f4b0" kindref="member">Bnd&lt;Card&gt;::pruneCards</ref>(<ref refid="classGecode_1_1Space" kindref="compound">Space</ref>&amp;<sp/>home)<sp/>{</highlight></codeline>
<codeline lineno="560"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>Remove<sp/>all<sp/>values<sp/>with<sp/>0<sp/>max<sp/>occurrence</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="561"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>and<sp/>remove<sp/>corresponding<sp/>occurrence<sp/>variables<sp/>from<sp/>k</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="562"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline>
<codeline lineno="563"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>The<sp/>number<sp/>of<sp/>zeroes</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="564"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>n_z<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="565"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i=k.size();<sp/>i--;)</highlight></codeline>
<codeline lineno="566"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(k[i].max()<sp/>==<sp/>0)</highlight></codeline>
<codeline lineno="567"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>n_z++;</highlight></codeline>
<codeline lineno="568"><highlight class="normal"></highlight></codeline>
<codeline lineno="569"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(n_z<sp/>&gt;<sp/>0)<sp/>{</highlight></codeline>
<codeline lineno="570"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classGecode_1_1Region" kindref="compound">Region</ref><sp/>r(home);</highlight></codeline>
<codeline lineno="571"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal">*<sp/>z<sp/>=<sp/>r.<ref refid="classGecode_1_1Region_1a167cff2d16f08d890fff11f80e519233" kindref="member">alloc</ref>&lt;</highlight><highlight class="keywordtype">int</highlight><highlight class="normal">&gt;(n_z);</highlight></codeline>
<codeline lineno="572"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>n_z<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="573"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>n_k<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="574"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i=0;<sp/>i&lt;k.size();<sp/>i++)</highlight></codeline>
<codeline lineno="575"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(k[i].max()<sp/>==<sp/>0)<sp/>{</highlight></codeline>
<codeline lineno="576"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>z[n_z++]<sp/>=<sp/>k[i].card();<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline>
<codeline lineno="577"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="578"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>k[n_k++]<sp/>=<sp/>k[i];</highlight></codeline>
<codeline lineno="579"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="580"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k.size(n_k);</highlight></codeline>
<codeline lineno="581"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>Support::quicksort(z,n_z);</highlight></codeline>
<codeline lineno="582"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i=x.size();<sp/>i--;)<sp/>{</highlight></codeline>
<codeline lineno="583"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classGecode_1_1Iter_1_1Values_1_1Array" kindref="compound">Iter::Values::Array</ref><sp/>zi(z,n_z);</highlight></codeline>
<codeline lineno="584"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>GECODE_ME_CHECK(x[i].minus_v(home,zi,</highlight><highlight class="keyword">false</highlight><highlight class="normal">));</highlight></codeline>
<codeline lineno="585"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="586"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>lps.reinit();<sp/>ups.reinit();</highlight></codeline>
<codeline lineno="587"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="588"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="namespaceGecode_1ab278aee34126d2f13c5429ee3c4ed3b5a01d6fb1ec70479e8e413d5ecfd63e303" kindref="member">ES_OK</ref>;</highlight></codeline>
<codeline lineno="589"><highlight class="normal"><sp/><sp/>}</highlight></codeline>
<codeline lineno="590"><highlight class="normal"></highlight></codeline>
<codeline lineno="591"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal">&lt;</highlight><highlight class="keyword">class</highlight><highlight class="normal"><sp/>Card&gt;</highlight></codeline>
<codeline lineno="592"><highlight class="normal"><sp/><sp/><ref refid="namespaceGecode_1ab278aee34126d2f13c5429ee3c4ed3b5" kindref="member">ExecStatus</ref></highlight></codeline>
<codeline lineno="593" refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1a9a10f3515caa4cce2b1318a752989061" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1a9a10f3515caa4cce2b1318a752989061" kindref="member">Bnd&lt;Card&gt;::propagate</ref>(<ref refid="classGecode_1_1Space" kindref="compound">Space</ref>&amp;<sp/>home,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="namespaceGecode_1a129e41c1d037528010d7b6706495a560" kindref="member">ModEventDelta</ref>&amp;<sp/>med)<sp/>{</highlight></codeline>
<codeline lineno="594"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(<ref refid="classGecode_1_1VarImpView_1a6dced43c3bf8befaf8cd27dbd53bf24c" kindref="member">IntView::me</ref>(med)<sp/>==<sp/>ME_INT_VAL)<sp/>{</highlight></codeline>
<codeline lineno="595"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>GECODE_ES_CHECK(prop_val&lt;Card&gt;(home,*</highlight><highlight class="keyword">this</highlight><highlight class="normal">,y,k));</highlight></codeline>
<codeline lineno="596"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>home.<ref refid="group__TaskActorStatus_1ga1f9059933d5d03ecfe32a1df5c8d7e36" kindref="member">ES_NOFIX_PARTIAL</ref>(*</highlight><highlight class="keyword">this</highlight><highlight class="normal">,<ref refid="classGecode_1_1Int_1_1IntView_1a8844c2395ae6301319fdced12b920914" kindref="member">IntView::med</ref>(ME_INT_BND));</highlight></codeline>
<codeline lineno="597"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="598"><highlight class="normal"></highlight></codeline>
<codeline lineno="599"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(Card::propagate)</highlight></codeline>
<codeline lineno="600"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>GECODE_ES_CHECK(pruneCards(home));</highlight></codeline>
<codeline lineno="601"><highlight class="normal"></highlight></codeline>
<codeline lineno="602"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classGecode_1_1Region" kindref="compound">Region</ref><sp/>r(home);</highlight></codeline>
<codeline lineno="603"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal">*<sp/><ref refid="group__TaskModelIntCount_1ga1ed6f089699260b994a25197199337a4" kindref="member">count</ref><sp/>=<sp/>r.<ref refid="classGecode_1_1Region_1a167cff2d16f08d890fff11f80e519233" kindref="member">alloc</ref>&lt;</highlight><highlight class="keywordtype">int</highlight><highlight class="normal">&gt;(k.size());</highlight></codeline>
<codeline lineno="604"><highlight class="normal"></highlight></codeline>
<codeline lineno="605"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i<sp/>=<sp/>k.size();<sp/>i--;<sp/>)</highlight></codeline>
<codeline lineno="606"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>count[i]<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="607"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>all_assigned<sp/>=<sp/></highlight><highlight class="keyword">true</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="608"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>noa<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="609"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i<sp/>=<sp/>x.size();<sp/>i--;<sp/>)<sp/>{</highlight></codeline>
<codeline lineno="610"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(x[i].assigned())<sp/>{</highlight></codeline>
<codeline lineno="611"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>noa++;</highlight></codeline>
<codeline lineno="612"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>idx;</highlight></codeline>
<codeline lineno="613"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>reduction<sp/>is<sp/>essential<sp/>for<sp/>order<sp/>on<sp/>value<sp/>nodes<sp/>in<sp/>dom</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="614"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>hence<sp/>introduce<sp/>test<sp/>for<sp/>failed<sp/>lookup</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="615"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!<ref refid="namespaceGecode_1_1Int_1_1GCC_1a612204ff798bc68b0fc03c9135739d52" kindref="member">lookupValue</ref>(k,x[i].val(),idx))</highlight></codeline>
<codeline lineno="616"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="namespaceGecode_1ab278aee34126d2f13c5429ee3c4ed3b5a839b40c2e7ccebb2e61e92e274833089" kindref="member">ES_FAILED</ref>;</highlight></codeline>
<codeline lineno="617"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>count[idx]++;</highlight></codeline>
<codeline lineno="618"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="619"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>all_assigned<sp/>=<sp/></highlight><highlight class="keyword">false</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="620"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>We<sp/>only<sp/>need<sp/>the<sp/>counts<sp/>in<sp/>the<sp/>view<sp/>case<sp/>or<sp/>when<sp/>all</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="621"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>x<sp/>are<sp/>assigned</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="622"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!Card::propagate)</highlight></codeline>
<codeline lineno="623"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">break</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="624"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="625"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="626"><highlight class="normal"></highlight></codeline>
<codeline lineno="627"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(Card::propagate)<sp/>{</highlight></codeline>
<codeline lineno="628"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>before<sp/>propagation<sp/>performs<sp/>inferences<sp/>on<sp/>cardinality<sp/>variables:</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="629"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(noa<sp/>&gt;<sp/>0)</highlight></codeline>
<codeline lineno="630"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i<sp/>=<sp/>k.size();<sp/>i--;<sp/>)</highlight></codeline>
<codeline lineno="631"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!k[i].assigned())<sp/>{</highlight></codeline>
<codeline lineno="632"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>GECODE_ME_CHECK(k[i].lq(home,<sp/>x.size()<sp/>-<sp/>(noa<sp/>-<sp/>count[i])));</highlight></codeline>
<codeline lineno="633"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>GECODE_ME_CHECK(k[i].gq(home,<sp/>count[i]));</highlight></codeline>
<codeline lineno="634"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="635"><highlight class="normal"></highlight></codeline>
<codeline lineno="636"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!card_consistent&lt;Card&gt;(x,<sp/>k))</highlight></codeline>
<codeline lineno="637"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="namespaceGecode_1ab278aee34126d2f13c5429ee3c4ed3b5a839b40c2e7ccebb2e61e92e274833089" kindref="member">ES_FAILED</ref>;</highlight></codeline>
<codeline lineno="638"><highlight class="normal"></highlight></codeline>
<codeline lineno="639"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>GECODE_ES_CHECK(prop_card&lt;Card&gt;(home,<sp/>x,<sp/>k));</highlight></codeline>
<codeline lineno="640"><highlight class="normal"></highlight></codeline>
<codeline lineno="641"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>Cardinalities<sp/>may<sp/>have<sp/>been<sp/>modified,<sp/>so<sp/>recompute</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="642"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>count<sp/>and<sp/>all_assigned</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="643"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i<sp/>=<sp/>k.size();<sp/>i--;<sp/>)</highlight></codeline>
<codeline lineno="644"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>count[i]<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="645"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>all_assigned<sp/>=<sp/></highlight><highlight class="keyword">true</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="646"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i<sp/>=<sp/>x.size();<sp/>i--;<sp/>)<sp/>{</highlight></codeline>
<codeline lineno="647"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(x[i].assigned())<sp/>{</highlight></codeline>
<codeline lineno="648"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>idx;</highlight></codeline>
<codeline lineno="649"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>reduction<sp/>is<sp/>essential<sp/>for<sp/>order<sp/>on<sp/>value<sp/>nodes<sp/>in<sp/>dom</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="650"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>hence<sp/>introduce<sp/>test<sp/>for<sp/>failed<sp/>lookup</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="651"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!<ref refid="namespaceGecode_1_1Int_1_1GCC_1a612204ff798bc68b0fc03c9135739d52" kindref="member">lookupValue</ref>(k,x[i].val(),idx))</highlight></codeline>
<codeline lineno="652"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="namespaceGecode_1ab278aee34126d2f13c5429ee3c4ed3b5a839b40c2e7ccebb2e61e92e274833089" kindref="member">ES_FAILED</ref>;</highlight></codeline>
<codeline lineno="653"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>count[idx]++;</highlight></codeline>
<codeline lineno="654"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="655"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>We<sp/>won&apos;t<sp/>need<sp/>the<sp/>remaining<sp/>counts,<sp/>they&apos;re<sp/>only<sp/>used<sp/>when</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="656"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>all<sp/>x<sp/>are<sp/>assigned</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="657"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>all_assigned<sp/>=<sp/></highlight><highlight class="keyword">false</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="658"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">break</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="659"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="660"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="661"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="662"><highlight class="normal"></highlight></codeline>
<codeline lineno="663"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(all_assigned)<sp/>{</highlight></codeline>
<codeline lineno="664"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i<sp/>=<sp/>k.size();<sp/>i--;<sp/>)</highlight></codeline>
<codeline lineno="665"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>GECODE_ME_CHECK(k[i].eq(home,<sp/>count[i]));</highlight></codeline>
<codeline lineno="666"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>home.<ref refid="group__TaskActorStatus_1gafc19cbf71ed90a9e0b414b875103f4c7" kindref="member">ES_SUBSUMED</ref>(*</highlight><highlight class="keyword">this</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="667"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="668"><highlight class="normal"></highlight></codeline>
<codeline lineno="669"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(Card::propagate)</highlight></codeline>
<codeline lineno="670"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>GECODE_ES_CHECK(pruneCards(home));</highlight></codeline>
<codeline lineno="671"><highlight class="normal"></highlight></codeline>
<codeline lineno="672"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>n<sp/>=<sp/>x.size();</highlight></codeline>
<codeline lineno="673"><highlight class="normal"></highlight></codeline>
<codeline lineno="674"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal">*<sp/>mu<sp/>=<sp/>r.<ref refid="classGecode_1_1Region_1a167cff2d16f08d890fff11f80e519233" kindref="member">alloc</ref>&lt;</highlight><highlight class="keywordtype">int</highlight><highlight class="normal">&gt;(n);</highlight></codeline>
<codeline lineno="675"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal">*<sp/>nu<sp/>=<sp/>r.<ref refid="classGecode_1_1Region_1a167cff2d16f08d890fff11f80e519233" kindref="member">alloc</ref>&lt;</highlight><highlight class="keywordtype">int</highlight><highlight class="normal">&gt;(n);</highlight></codeline>
<codeline lineno="676"><highlight class="normal"></highlight></codeline>
<codeline lineno="677"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i<sp/>=<sp/>n;<sp/>i--;<sp/>)</highlight></codeline>
<codeline lineno="678"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>nu[i]<sp/>=<sp/>mu[i]<sp/>=<sp/>i;</highlight></codeline>
<codeline lineno="679"><highlight class="normal"></highlight></codeline>
<codeline lineno="680"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>Create<sp/>sorting<sp/>permutation<sp/>mu<sp/>according<sp/>to<sp/>the<sp/>variables<sp/>upper<sp/>bounds</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="681"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1MaxInc" kindref="compound">MaxInc&lt;IntView&gt;</ref><sp/>max_inc(x);</highlight></codeline>
<codeline lineno="682"><highlight class="normal"><sp/><sp/><sp/><sp/>Support::quicksort&lt;int,<sp/>MaxInc&lt;IntView&gt;<sp/>&gt;(mu,<sp/>n,<sp/>max_inc);</highlight></codeline>
<codeline lineno="683"><highlight class="normal"></highlight></codeline>
<codeline lineno="684"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>Create<sp/>sorting<sp/>permutation<sp/>nu<sp/>according<sp/>to<sp/>the<sp/>variables<sp/>lower<sp/>bounds</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="685"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1MinInc" kindref="compound">MinInc&lt;IntView&gt;</ref><sp/>min_inc(x);</highlight></codeline>
<codeline lineno="686"><highlight class="normal"><sp/><sp/><sp/><sp/>Support::quicksort&lt;int,<sp/>MinInc&lt;IntView&gt;<sp/>&gt;(nu,<sp/>n,<sp/>min_inc);</highlight></codeline>
<codeline lineno="687"><highlight class="normal"></highlight></codeline>
<codeline lineno="688"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>Sort<sp/>the<sp/>cardinality<sp/>bounds<sp/>by<sp/>index</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="689"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1MinIdx" kindref="compound">MinIdx&lt;Card&gt;</ref><sp/>min_idx;</highlight></codeline>
<codeline lineno="690"><highlight class="normal"><sp/><sp/><sp/><sp/>Support::quicksort&lt;Card,<sp/>MinIdx&lt;Card&gt;<sp/>&gt;(&amp;k[0],<sp/>k.size(),<sp/>min_idx);</highlight></codeline>
<codeline lineno="691"><highlight class="normal"></highlight></codeline>
<codeline lineno="692"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!lps.initialized())<sp/>{</highlight></codeline>
<codeline lineno="693"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>assert<sp/>(!ups.initialized());</highlight></codeline>
<codeline lineno="694"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>lps.init(home,<sp/>k,<sp/></highlight><highlight class="keyword">false</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="695"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>ups.init(home,<sp/>k,<sp/></highlight><highlight class="keyword">true</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="696"><highlight class="normal"><sp/><sp/><sp/><sp/>}<sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(Card::propagate)<sp/>{</highlight></codeline>
<codeline lineno="697"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>if<sp/>there<sp/>has<sp/>been<sp/>a<sp/>change<sp/>to<sp/>the<sp/>cardinality<sp/>variables</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="698"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>reconstruction<sp/>of<sp/>the<sp/>partial<sp/>sum<sp/>structure<sp/>is<sp/>necessary</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="699"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(lps.check_update_min(k))</highlight></codeline>
<codeline lineno="700"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>lps.init(home,<sp/>k,<sp/></highlight><highlight class="keyword">false</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="701"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(ups.check_update_max(k))</highlight></codeline>
<codeline lineno="702"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ups.init(home,<sp/>k,<sp/></highlight><highlight class="keyword">true</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="703"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="704"><highlight class="normal"></highlight></codeline>
<codeline lineno="705"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>assert<sp/>that<sp/>the<sp/>minimal<sp/>value<sp/>of<sp/>the<sp/>partial<sp/>sum<sp/>structure<sp/>for</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="706"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>LBC<sp/>is<sp/>consistent<sp/>with<sp/>the<sp/>smallest<sp/>value<sp/>a<sp/>variable<sp/>can<sp/>take</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="707"><highlight class="normal"><sp/><sp/><sp/><sp/>assert(lps.minValue()<sp/>&lt;=<sp/>x[nu[0]].min());</highlight></codeline>
<codeline lineno="708"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>assert<sp/>that<sp/>the<sp/>maximal<sp/>value<sp/>of<sp/>the<sp/>partial<sp/>sum<sp/>structure<sp/>for</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="709"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>UBC<sp/>is<sp/>consistent<sp/>with<sp/>the<sp/>largest<sp/>value<sp/>a<sp/>variable<sp/>can<sp/>take</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="710"><highlight class="normal"></highlight></codeline>
<codeline lineno="711"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*</highlight></codeline>
<codeline lineno="712"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/>Setup<sp/>rank<sp/>and<sp/>bounds<sp/>info</highlight></codeline>
<codeline lineno="713"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/>Since<sp/>this<sp/>implementation<sp/>is<sp/>based<sp/>on<sp/>the<sp/>theory<sp/>of<sp/>Hall<sp/>Intervals</highlight></codeline>
<codeline lineno="714"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/>additional<sp/>datastructures<sp/>are<sp/>needed<sp/>in<sp/>order<sp/>to<sp/>represent<sp/>these</highlight></codeline>
<codeline lineno="715"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/><sp/>intervals<sp/>and<sp/>the<sp/>&quot;partial-sum&quot;<sp/>data<sp/>structure<sp/>(cf.&quot;gcc/bnd-sup.hpp&quot;)</highlight></codeline>
<codeline lineno="716"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*</highlight></codeline>
<codeline lineno="717"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="718"><highlight class="normal"></highlight></codeline>
<codeline lineno="719"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo" kindref="compound">HallInfo</ref>*<sp/>hall<sp/>=<sp/>r.<ref refid="classGecode_1_1Region_1a167cff2d16f08d890fff11f80e519233" kindref="member">alloc</ref>&lt;<ref refid="classGecode_1_1Int_1_1GCC_1_1HallInfo" kindref="compound">HallInfo</ref>&gt;(2<sp/>*<sp/>n<sp/>+<sp/>2);</highlight></codeline>
<codeline lineno="720"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1Rank" kindref="compound">Rank</ref>*<sp/>rank<sp/>=<sp/>r.<ref refid="classGecode_1_1Region_1a167cff2d16f08d890fff11f80e519233" kindref="member">alloc</ref>&lt;<ref refid="classGecode_1_1Int_1_1GCC_1_1Rank" kindref="compound">Rank</ref>&gt;(n);</highlight></codeline>
<codeline lineno="721"><highlight class="normal"></highlight></codeline>
<codeline lineno="722"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>nb<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="723"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>setup<sp/>bounds<sp/>and<sp/>rank</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="724"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>min<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>=<sp/>x[nu[0]].min();</highlight></codeline>
<codeline lineno="725"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>max<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>=<sp/>x[mu[0]].max()<sp/>+<sp/>1;</highlight></codeline>
<codeline lineno="726"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>last<sp/><sp/><sp/><sp/><sp/><sp/><sp/>=<sp/>lps.firstValue<sp/>+<sp/>1;<sp/></highlight><highlight class="comment">//equivalent<sp/>to<sp/>last<sp/>=<sp/>min<sp/>-2</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="727"><highlight class="normal"><sp/><sp/><sp/><sp/>hall[0].bounds<sp/>=<sp/>last;</highlight></codeline>
<codeline lineno="728"><highlight class="normal"></highlight></codeline>
<codeline lineno="729"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*</highlight></codeline>
<codeline lineno="730"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>First<sp/>the<sp/>algorithm<sp/>merges<sp/>the<sp/>arrays<sp/>minsorted<sp/>and<sp/>maxsorted</highlight></codeline>
<codeline lineno="731"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>into<sp/>bounds<sp/>i.e.<sp/>hall[].bounds<sp/>contains<sp/>the<sp/>ordered<sp/>union</highlight></codeline>
<codeline lineno="732"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>of<sp/>the<sp/>lower<sp/>and<sp/>upper<sp/>domain<sp/>bounds<sp/>including<sp/>two<sp/>sentinels</highlight></codeline>
<codeline lineno="733"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>at<sp/>the<sp/>beginning<sp/>and<sp/>at<sp/>the<sp/>end<sp/>of<sp/>the<sp/>set</highlight></codeline>
<codeline lineno="734"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*<sp/>(<sp/>the<sp/>upper<sp/>variable<sp/>bounds<sp/>in<sp/>this<sp/>union<sp/>are<sp/>increased<sp/>by<sp/>1<sp/>)</highlight></codeline>
<codeline lineno="735"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="736"><highlight class="normal"></highlight></codeline>
<codeline lineno="737"><highlight class="normal"><sp/><sp/><sp/><sp/>{</highlight></codeline>
<codeline lineno="738"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="739"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>j<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="740"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">while</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keyword">true</highlight><highlight class="normal">)<sp/>{</highlight></codeline>
<codeline lineno="741"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(i<sp/>&lt;<sp/>n<sp/>&amp;&amp;<sp/>min<sp/>&lt;<sp/>max)<sp/>{</highlight></codeline>
<codeline lineno="742"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(min<sp/>!=<sp/>last)<sp/>{</highlight></codeline>
<codeline lineno="743"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>last<sp/>=<sp/>min;</highlight></codeline>
<codeline lineno="744"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[++nb].bounds<sp/>=<sp/>last;</highlight></codeline>
<codeline lineno="745"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="746"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>rank[nu[i]].min<sp/>=<sp/>nb;</highlight></codeline>
<codeline lineno="747"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(++i<sp/>&lt;<sp/>n)</highlight></codeline>
<codeline lineno="748"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>min<sp/>=<sp/>x[nu[i]].min();</highlight></codeline>
<codeline lineno="749"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="750"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(max<sp/>!=<sp/>last)<sp/>{</highlight></codeline>
<codeline lineno="751"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>last<sp/>=<sp/>max;</highlight></codeline>
<codeline lineno="752"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>hall[++nb].bounds<sp/>=<sp/>last;</highlight></codeline>
<codeline lineno="753"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="754"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>rank[mu[j]].max<sp/>=<sp/>nb;</highlight></codeline>
<codeline lineno="755"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(++j<sp/>==<sp/>n)</highlight></codeline>
<codeline lineno="756"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">break</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="757"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>max<sp/>=<sp/>x[mu[j]].max()<sp/>+<sp/>1;</highlight></codeline>
<codeline lineno="758"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="759"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="760"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="761"><highlight class="normal"></highlight></codeline>
<codeline lineno="762"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>rightmost<sp/>=<sp/>nb<sp/>+<sp/>1;<sp/></highlight><highlight class="comment">//<sp/>rightmost<sp/>accesible<sp/>value<sp/>in<sp/>bounds</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="763"><highlight class="normal"><sp/><sp/><sp/><sp/>hall[rightmost].bounds<sp/>=<sp/>ups.lastValue<sp/>+<sp/>1<sp/>;</highlight></codeline>
<codeline lineno="764"><highlight class="normal"></highlight></codeline>
<codeline lineno="765"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(Card::propagate)<sp/>{</highlight></codeline>
<codeline lineno="766"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>skip_lbc<sp/>=<sp/></highlight><highlight class="keyword">true</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="767"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i<sp/>=<sp/>k.size();<sp/>i--;<sp/>)</highlight></codeline>
<codeline lineno="768"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(k[i].min()<sp/>!=<sp/>0)<sp/>{</highlight></codeline>
<codeline lineno="769"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>skip_lbc<sp/>=<sp/></highlight><highlight class="keyword">false</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="770"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">break</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="771"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="772"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="773"><highlight class="normal"></highlight></codeline>
<codeline lineno="774"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!card_fixed<sp/>&amp;&amp;<sp/>!skip_lbc)</highlight></codeline>
<codeline lineno="775"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>GECODE_ES_CHECK((lbc(home,<sp/>nb,<sp/>hall,<sp/>rank,<sp/>mu,<sp/>nu)));</highlight></codeline>
<codeline lineno="776"><highlight class="normal"></highlight></codeline>
<codeline lineno="777"><highlight class="normal"><sp/><sp/><sp/><sp/>GECODE_ES_CHECK((ubc(home,<sp/>nb,<sp/>hall,<sp/>rank,<sp/>mu,<sp/>nu)));</highlight></codeline>
<codeline lineno="778"><highlight class="normal"></highlight></codeline>
<codeline lineno="779"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(Card::propagate)</highlight></codeline>
<codeline lineno="780"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>GECODE_ES_CHECK(prop_card&lt;Card&gt;(home,<sp/>x,<sp/>k));</highlight></codeline>
<codeline lineno="781"><highlight class="normal"></highlight></codeline>
<codeline lineno="782"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i<sp/>=<sp/>k.size();<sp/>i--;<sp/>)</highlight></codeline>
<codeline lineno="783"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>count[i]<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="784"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i<sp/>=<sp/>x.size();<sp/>i--;<sp/>)</highlight></codeline>
<codeline lineno="785"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(x[i].assigned())<sp/>{</highlight></codeline>
<codeline lineno="786"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>idx;</highlight></codeline>
<codeline lineno="787"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!<ref refid="namespaceGecode_1_1Int_1_1GCC_1a612204ff798bc68b0fc03c9135739d52" kindref="member">lookupValue</ref>(k,x[i].val(),idx))</highlight></codeline>
<codeline lineno="788"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="namespaceGecode_1ab278aee34126d2f13c5429ee3c4ed3b5a839b40c2e7ccebb2e61e92e274833089" kindref="member">ES_FAILED</ref>;</highlight></codeline>
<codeline lineno="789"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>count[idx]++;</highlight></codeline>
<codeline lineno="790"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="791"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>We<sp/>won&apos;t<sp/>need<sp/>the<sp/>remaining<sp/>counts,<sp/>they&apos;re<sp/>only<sp/>used<sp/>when</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="792"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>all<sp/>x<sp/>are<sp/>assigned</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="793"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="namespaceGecode_1ab278aee34126d2f13c5429ee3c4ed3b5ac32341b682bca52b8617a8ad004023ef" kindref="member">ES_NOFIX</ref>;</highlight></codeline>
<codeline lineno="794"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="795"><highlight class="normal"></highlight></codeline>
<codeline lineno="796"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i<sp/>=<sp/>k.size();<sp/>i--;<sp/>)</highlight></codeline>
<codeline lineno="797"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>GECODE_ME_CHECK(k[i].eq(home,<sp/>count[i]));</highlight></codeline>
<codeline lineno="798"><highlight class="normal"></highlight></codeline>
<codeline lineno="799"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>home.<ref refid="group__TaskActorStatus_1gafc19cbf71ed90a9e0b414b875103f4c7" kindref="member">ES_SUBSUMED</ref>(*</highlight><highlight class="keyword">this</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="800"><highlight class="normal"><sp/><sp/>}</highlight></codeline>
<codeline lineno="801"><highlight class="normal"></highlight></codeline>
<codeline lineno="802"><highlight class="normal"></highlight></codeline>
<codeline lineno="803"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal">&lt;</highlight><highlight class="keyword">class</highlight><highlight class="normal"><sp/>Card&gt;</highlight></codeline>
<codeline lineno="804"><highlight class="normal"><sp/><sp/><ref refid="namespaceGecode_1ab278aee34126d2f13c5429ee3c4ed3b5" kindref="member">ExecStatus</ref></highlight></codeline>
<codeline lineno="805" refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1a55e1635c46b7dcd9a65a3ccbdeaecaee" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1Bnd_1a55e1635c46b7dcd9a65a3ccbdeaecaee" kindref="member">Bnd&lt;Card&gt;::post</ref>(<ref refid="classGecode_1_1Home" kindref="compound">Home</ref><sp/>home,</highlight></codeline>
<codeline lineno="806"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classGecode_1_1ViewArray" kindref="compound">ViewArray&lt;IntView&gt;</ref>&amp;<sp/>x,<sp/><ref refid="classGecode_1_1ViewArray" kindref="compound">ViewArray&lt;Card&gt;</ref>&amp;<sp/>k)<sp/>{</highlight></codeline>
<codeline lineno="807"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>cardfix<sp/>=<sp/></highlight><highlight class="keyword">true</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="808"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i=k.<ref refid="classGecode_1_1ViewArray_1a65940b23e2457e97607475f8bd8f4ac6" kindref="member">size</ref>();<sp/>i--;<sp/>)</highlight></codeline>
<codeline lineno="809"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!k[i].assigned())<sp/>{</highlight></codeline>
<codeline lineno="810"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>cardfix<sp/>=<sp/></highlight><highlight class="keyword">false</highlight><highlight class="normal">;<sp/></highlight><highlight class="keywordflow">break</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="811"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="812"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>nolbc<sp/>=<sp/></highlight><highlight class="keyword">true</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="813"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i=k.<ref refid="classGecode_1_1ViewArray_1a65940b23e2457e97607475f8bd8f4ac6" kindref="member">size</ref>();<sp/>i--;<sp/>)</highlight></codeline>
<codeline lineno="814"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(k[i].min()<sp/>!=<sp/>0)<sp/>{</highlight></codeline>
<codeline lineno="815"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>nolbc<sp/>=<sp/></highlight><highlight class="keyword">false</highlight><highlight class="normal">;<sp/></highlight><highlight class="keywordflow">break</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="816"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="817"><highlight class="normal"></highlight></codeline>
<codeline lineno="818"><highlight class="normal"><sp/><sp/><sp/><sp/>GECODE_ES_CHECK(postSideConstraints&lt;Card&gt;(home,<sp/>x,<sp/>k));</highlight></codeline>
<codeline lineno="819"><highlight class="normal"></highlight></codeline>
<codeline lineno="820"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(isDistinct&lt;Card&gt;(home,x,k))</highlight></codeline>
<codeline lineno="821"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classGecode_1_1Int_1_1Distinct_1_1Bnd_1a4dc05ab2735e4cd39018f1375b07df05" kindref="member">Distinct::Bnd&lt;IntView&gt;::post</ref>(home,x);</highlight></codeline>
<codeline lineno="822"><highlight class="normal"></highlight></codeline>
<codeline lineno="823"><highlight class="normal"><sp/><sp/><sp/><sp/>(void)<sp/></highlight><highlight class="keyword">new</highlight><highlight class="normal"><sp/>(home)<sp/><ref refid="classGecode_1_1Int_1_1GCC_1_1Bnd" kindref="compound">Bnd&lt;Card&gt;</ref>(home,x,k,cardfix,nolbc);</highlight></codeline>
<codeline lineno="824"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="namespaceGecode_1ab278aee34126d2f13c5429ee3c4ed3b5a01d6fb1ec70479e8e413d5ecfd63e303" kindref="member">ES_OK</ref>;</highlight></codeline>
<codeline lineno="825"><highlight class="normal"><sp/><sp/>}</highlight></codeline>
<codeline lineno="826"><highlight class="normal"></highlight></codeline>
<codeline lineno="827"><highlight class="normal">}}}</highlight></codeline>
<codeline lineno="828"><highlight class="normal"></highlight></codeline>
<codeline lineno="829"><highlight class="normal"></highlight><highlight class="comment">//<sp/>STATISTICS:<sp/>int-prop</highlight><highlight class="normal"></highlight></codeline>
</programlisting>
<location file="/usr/include/gecode/int/gcc/bnd.hpp"/>
</compounddef>
</doxygen>