<divclass="textblock"><p>We call <em>domain</em> any subset of Int64 = [kint64min, kint64max]. </p>
<p>This class can be used to represent such set efficiently as a sorted and non-adjacent list of intervals. This is efficient as long as the size of such list stays reasonable.</p>
<p>In the comments below, the domain of *this will always be written 'D'. Note that all the functions are safe with respect to integer overflow. </p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8h_source.html#l00081">81</a> of file <aclass="el"href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Allows to iterate over all values of a domain in order with for (const int64_t v : domain.Values()) { ... }. <ahref="classoperations__research_1_1_domain_1_1_domain_iterator.html#details">More...</a><br/></td></tr>
<trclass="memdesc:a9f9601f2f55637f70394aa8eea61345a"><tdclass="mdescLeft"> </td><tdclass="mdescRight">By default, <aclass="el"href="classoperations__research_1_1_domain.html"title="We call domain any subset of Int64 = [kint64min, kint64max].">Domain</a> will be empty. <ahref="classoperations__research_1_1_domain.html#a9f9601f2f55637f70394aa8eea61345a">More...</a><br/></td></tr>
<trclass="memdesc:aa293fd5002b6b472c7a6d6a5ea145506"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Copy constructor (mandatory as we define the move constructor). <ahref="classoperations__research_1_1_domain.html#aa293fd5002b6b472c7a6d6a5ea145506">More...</a><br/></td></tr>
<trclass="memdesc:a933201e44113f3b11e464ea9daa85f0a"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Copy operator (mandatory as we define the move operator). <ahref="classoperations__research_1_1_domain.html#a933201e44113f3b11e464ea9daa85f0a">More...</a><br/></td></tr>
<trclass="memdesc:ac7074192daff073a42730e5453f5b697"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Constructor for the common case of a singleton domain. <ahref="classoperations__research_1_1_domain.html#ac7074192daff073a42730e5453f5b697">More...</a><br/></td></tr>
<trclass="memdesc:ad79741f48ae54ee61f26c8241f40c045"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Constructor for the common case of a single interval [left, right]. <ahref="classoperations__research_1_1_domain.html#ad79741f48ae54ee61f26c8241f40c045">More...</a><br/></td></tr>
<trclass="memdesc:a818f990750b705242723d2e5b9958223"><tdclass="mdescLeft"> </td><tdclass="mdescRight">This method returns the flattened list of interval bounds of the domain. <ahref="classoperations__research_1_1_domain.html#a818f990750b705242723d2e5b9958223">More...</a><br/></td></tr>
<trclass="memdesc:a8e12342fc420701fbffd97025421575a"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns true if this is the empty set. <ahref="classoperations__research_1_1_domain.html#a8e12342fc420701fbffd97025421575a">More...</a><br/></td></tr>
<trclass="memdesc:a572bd92c25ebc67c72137fd59e53f6d6"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns the number of elements in the domain. <ahref="classoperations__research_1_1_domain.html#a572bd92c25ebc67c72137fd59e53f6d6">More...</a><br/></td></tr>
<trclass="memdesc:a8cf21a67f7d81a800ff912239bb2db64"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns the min value of the domain. <ahref="classoperations__research_1_1_domain.html#a8cf21a67f7d81a800ff912239bb2db64">More...</a><br/></td></tr>
<trclass="memdesc:aa74ea8cd1b0767659f704b482d07c103"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns the max value of the domain. <ahref="classoperations__research_1_1_domain.html#aa74ea8cd1b0767659f704b482d07c103">More...</a><br/></td></tr>
<trclass="memdesc:aa070cf76ca3ef43a3b8db17c77d35669"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns the value closest to zero. <ahref="classoperations__research_1_1_domain.html#aa070cf76ca3ef43a3b8db17c77d35669">More...</a><br/></td></tr>
<trclass="memdesc:a826a01cb8175850ff6e5b833e4689959"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns true iff the domain is reduced to a single value. <ahref="classoperations__research_1_1_domain.html#a826a01cb8175850ff6e5b833e4689959">More...</a><br/></td></tr>
<trclass="memdesc:a46d31d56136315d2894193c3ac74ec66"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns the value of a fixed domain. <ahref="classoperations__research_1_1_domain.html#a46d31d56136315d2894193c3ac74ec66">More...</a><br/></td></tr>
<trclass="memdesc:a22c6c2f121586b5d76feb4b0e536dfde"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns true iff value is in <aclass="el"href="classoperations__research_1_1_domain.html"title="We call domain any subset of Int64 = [kint64min, kint64max].">Domain</a>. <ahref="classoperations__research_1_1_domain.html#a22c6c2f121586b5d76feb4b0e536dfde">More...</a><br/></td></tr>
<trclass="memdesc:a1f922def1b57974333f228818cd04e68"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns true iff D is included in the given domain. <ahref="classoperations__research_1_1_domain.html#a1f922def1b57974333f228818cd04e68">More...</a><br/></td></tr>
<trclass="memdesc:a1f1de3874966a137f140748498f43e0c"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns the set Int64 ∖ D. <ahref="classoperations__research_1_1_domain.html#a1f1de3874966a137f140748498f43e0c">More...</a><br/></td></tr>
<trclass="memdesc:a835826c4c5129b74553042a357a721ff"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns the intersection of D and domain. <ahref="classoperations__research_1_1_domain.html#a835826c4c5129b74553042a357a721ff">More...</a><br/></td></tr>
<trclass="memdesc:a5919f86aede74172b7fea05ebdb58975"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns the union of D and domain. <ahref="classoperations__research_1_1_domain.html#a5919f86aede74172b7fea05ebdb58975">More...</a><br/></td></tr>
<trclass="memdesc:a4f9af4a46ee07931e3e5e50f6ddfb8ad"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns {x ∈ Int64, ∃ a ∈ D, ∃ b ∈ domain, x = a + b}. <ahref="classoperations__research_1_1_domain.html#a4f9af4a46ee07931e3e5e50f6ddfb8ad">More...</a><br/></td></tr>
<trclass="memdesc:a63a708c626b59b4504ddb879496c894e"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns {x ∈ Int64, ∃ e ∈ D, x = e * coeff}. <ahref="classoperations__research_1_1_domain.html#a63a708c626b59b4504ddb879496c894e">More...</a><br/></td></tr>
<trclass="memdesc:abd2c59687cc53dda333d0f18c457389b"><tdclass="mdescLeft"> </td><tdclass="mdescRight">If <aclass="el"href="classoperations__research_1_1_domain.html#a3dcbf23ccbed61ee64ec08a934f57a9c"title="Basic read-only std::vector<> wrapping to view a Domain as a sorted list of non-adjacent intervals.">NumIntervals()</a> is too large, this return a superset of the domain. <ahref="classoperations__research_1_1_domain.html#abd2c59687cc53dda333d0f18c457389b">More...</a><br/></td></tr>
<trclass="memdesc:a2fe0f92e6c1681f46239c1b14d091dea"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns a superset of <aclass="el"href="classoperations__research_1_1_domain.html#a63a708c626b59b4504ddb879496c894e"title="Returns {x ∈ Int64, ∃ e ∈ D, x = e * coeff}.">MultiplicationBy()</a> to avoid the explosion in the representation size. <ahref="classoperations__research_1_1_domain.html#a2fe0f92e6c1681f46239c1b14d091dea">More...</a><br/></td></tr>
<trclass="memdesc:a4a8f8efa14efbcdf58803c1c26568ba7"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns a superset of <aclass="el"href="classoperations__research_1_1_domain.html#a63a708c626b59b4504ddb879496c894e"title="Returns {x ∈ Int64, ∃ e ∈ D, x = e * coeff}.">MultiplicationBy()</a> to avoid the explosion in the representation size. <ahref="classoperations__research_1_1_domain.html#a4a8f8efa14efbcdf58803c1c26568ba7">More...</a><br/></td></tr>
<trclass="memdesc:acecac80bcaa379f4d37af5a0f0b48d02"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns {x ∈ Int64, ∃ e ∈ D, x = e / coeff}. <ahref="classoperations__research_1_1_domain.html#acecac80bcaa379f4d37af5a0f0b48d02">More...</a><br/></td></tr>
<trclass="memdesc:ae4bddf829edf1817ecffe94dcc2c6260"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns a superset of {x ∈ Int64, ∃ e ∈ D, ∃ m ∈ modulo, x = e % m }. <ahref="classoperations__research_1_1_domain.html#ae4bddf829edf1817ecffe94dcc2c6260">More...</a><br/></td></tr>
<trclass="memdesc:a93b23d6d33373e9a7067445d43389bad"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns a superset of {x ∈ Int64, ∃ e ∈ D, ∃ d ∈ divisor, x = e / d }. <ahref="classoperations__research_1_1_domain.html#a93b23d6d33373e9a7067445d43389bad">More...</a><br/></td></tr>
<trclass="memdesc:ac90f7cc5e58926631a01fd122af44cab"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns a superset of {x ∈ Int64, ∃ y ∈ D, x = y * y }. <ahref="classoperations__research_1_1_domain.html#ac90f7cc5e58926631a01fd122af44cab">More...</a><br/></td></tr>
<trclass="memdesc:a19c380b03cea21d7ac7325136a131ff0"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns a compact string of a vector of intervals like "[1,4][6][10,20]". <ahref="classoperations__research_1_1_domain.html#a19c380b03cea21d7ac7325136a131ff0">More...</a><br/></td></tr>
<trclass="memdesc:a4e5a75821e16c8a560b487d3b1528a14"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Lexicographic order on the <aclass="el"href="classoperations__research_1_1_domain.html#a9743d7273fb28e7fff6ed810c90a43f1">intervals()</a> representation. <ahref="classoperations__research_1_1_domain.html#a4e5a75821e16c8a560b487d3b1528a14">More...</a><br/></td></tr>
<trclass="memdesc:a3dcbf23ccbed61ee64ec08a934f57a9c"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Basic read-only std::vector<> wrapping to view a <aclass="el"href="classoperations__research_1_1_domain.html"title="We call domain any subset of Int64 = [kint64min, kint64max].">Domain</a> as a sorted list of non-adjacent intervals. <ahref="classoperations__research_1_1_domain.html#a3dcbf23ccbed61ee64ec08a934f57a9c">More...</a><br/></td></tr>
<trclass="memdesc:a03a595b90f43d02186eb660424c6ca1b"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns the full domain Int64. <ahref="classoperations__research_1_1_domain.html#a03a595b90f43d02186eb660424c6ca1b">More...</a><br/></td></tr>
<trclass="memdesc:ac2d88de67793063ad5f5e923ffd1c0eb"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Creates a domain from the union of an unsorted list of integer values. <ahref="classoperations__research_1_1_domain.html#ac2d88de67793063ad5f5e923ffd1c0eb">More...</a><br/></td></tr>
<trclass="memdesc:a99f2a0dc67792cdc74b4792055b083d3"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Creates a domain from the union of an unsorted list of intervals. <ahref="classoperations__research_1_1_domain.html#a99f2a0dc67792cdc74b4792055b083d3">More...</a><br/></td></tr>
<trclass="memdesc:a32f2f5802ae5b535d979303ef1b7fc48"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Same as <aclass="el"href="classoperations__research_1_1_domain.html#a99f2a0dc67792cdc74b4792055b083d3"title="Creates a domain from the union of an unsorted list of intervals.">FromIntervals()</a> for a flattened representation (start, end, start, end, ...). <ahref="classoperations__research_1_1_domain.html#a32f2f5802ae5b535d979303ef1b7fc48">More...</a><br/></td></tr>
<trclass="memdesc:a836e47cf167914557e5140fbccbc652c"><tdclass="mdescLeft"> </td><tdclass="mdescRight">This method is available in Python, Java and .NET. <ahref="classoperations__research_1_1_domain.html#a836e47cf167914557e5140fbccbc652c">More...</a><br/></td></tr>
<trclass="memdesc:a647e4a17d1c9be74dede4116d0877d1d"><tdclass="mdescLeft"> </td><tdclass="mdescRight">This method is available in Python, Java and .NET. <ahref="classoperations__research_1_1_domain.html#a647e4a17d1c9be74dede4116d0877d1d">More...</a><br/></td></tr>
<p>By default, <aclass="el"href="classoperations__research_1_1_domain.html"title="We call domain any subset of Int64 = [kint64min, kint64max].">Domain</a> will be empty. </p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8h_source.html#l00084">84</a> of file <aclass="el"href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
<p>Copy constructor (mandatory as we define the move constructor). </p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8h_source.html#l00088">88</a> of file <aclass="el"href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8h_source.html#l00097">97</a> of file <aclass="el"href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00120">120</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00137">137</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00353">353</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00142">142</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8h_source.html#l00427">427</a> of file <aclass="el"href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
<tdclass="memname">absl::InlinedVector<<aclass="el"href="structoperations__research_1_1_closed_interval.html">ClosedInterval</a>, 1 >::const_iterator begin </td>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8h_source.html#l00429">429</a> of file <aclass="el"href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00266">266</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<p>Returns true iff value is in <aclass="el"href="classoperations__research_1_1_domain.html"title="We call domain any subset of Int64 = [kint64min, kint64max].">Domain</a>. </p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00242">242</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<p>Returns a superset of <aclass="el"href="classoperations__research_1_1_domain.html#a63a708c626b59b4504ddb879496c894e"title="Returns {x ∈ Int64, ∃ e ∈ D, x = e * coeff}.">MultiplicationBy()</a> to avoid the explosion in the representation size. </p>
<p>This behaves as if we replace the set D of non-adjacent integer intervals by the set of floating-point elements in the same intervals.</p>
<p>For instance, [1, 100] * 2 will be transformed in [2, 200] and not in [2][4][6]...[200] like in <aclass="el"href="classoperations__research_1_1_domain.html#a63a708c626b59b4504ddb879496c894e"title="Returns {x ∈ Int64, ∃ e ∈ D, x = e * coeff}.">MultiplicationBy()</a>. Note that this would be similar to a InverseDivisionBy(), but not quite the same because if we look for {x ∈ Int64, ∃ e ∈ D, x / coeff = e}, then we will get [2, 201] in the case above. </p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00431">431</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<p>Returns a superset of <aclass="el"href="classoperations__research_1_1_domain.html#a63a708c626b59b4504ddb879496c894e"title="Returns {x ∈ Int64, ∃ e ∈ D, x = e * coeff}.">MultiplicationBy()</a> to avoid the explosion in the representation size. </p>
<p>This behaves as if we replace the set D of non-adjacent integer intervals by the set of floating-point elements in the same intervals.</p>
<p>For instance, [1, 100] * 2 will be transformed in [2, 200] and not in [2][4][6]...[200] like in <aclass="el"href="classoperations__research_1_1_domain.html#a63a708c626b59b4504ddb879496c894e"title="Returns {x ∈ Int64, ∃ e ∈ D, x = e * coeff}.">MultiplicationBy()</a>. Note that this would be similar to a InverseDivisionBy(), but not quite the same because if we look for {x ∈ Int64, ∃ e ∈ D, x / coeff = e}, then we will get [2, 201] in the case above. </p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00419">419</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00450">450</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<tdclass="memname">absl::InlinedVector<<aclass="el"href="structoperations__research_1_1_closed_interval.html">ClosedInterval</a>, 1 >::const_iterator end </td>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8h_source.html#l00432">432</a> of file <aclass="el"href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
<p><aclass="el"href="classoperations__research_1_1_domain.html#a826a01cb8175850ff6e5b833e4689959"title="Returns true iff the domain is reduced to a single value.">IsFixed()</a> must be true. This is the same as <aclass="el"href="classoperations__research_1_1_domain.html#a8cf21a67f7d81a800ff912239bb2db64"title="Returns the min value of the domain.">Min()</a> or <aclass="el"href="classoperations__research_1_1_domain.html#aa74ea8cd1b0767659f704b482d07c103"title="Returns the max value of the domain.">Max()</a> but allows for a more readable code and also crash in debug mode if called on a non fixed domain. </p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00237">237</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<p>Thus the domain {0, 1, 2, 5, 8, 9, 10} will return [0, 2, 5, 5, 8, 10] (as a C++ std::vector<int64_t>, as a java or C# long[], as a python list of integers). </p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00606">606</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<p>It allows building a <aclass="el"href="classoperations__research_1_1_domain.html"title="We call domain any subset of Int64 = [kint64min, kint64max].">Domain</a> object from a flattened list of intervals (long[] in Java and .NET, [0, 2, 5, 5, 8, 10] in python). </p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00178">178</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<p>Same as <aclass="el"href="classoperations__research_1_1_domain.html#a99f2a0dc67792cdc74b4792055b083d3"title="Creates a domain from the union of an unsorted list of intervals.">FromIntervals()</a> for a flattened representation (start, end, start, end, ...). </p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00165">165</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00157">157</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00144">144</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<p>It allows building a <aclass="el"href="classoperations__research_1_1_domain.html"title="We call domain any subset of Int64 = [kint64min, kint64max].">Domain</a> object from a list of intervals (long[][] in Java and .NET, [[0, 2], [5, 5], [8, 10]] in python). </p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00182">182</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8h_source.html#l00426">426</a> of file <aclass="el"href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00303">303</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8h_source.html#l00440">440</a> of file <aclass="el"href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00463">463</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00198">198</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00200">200</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00253">253</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00219">219</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00214">214</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<p>Note that because the resulting domain will only contains multiple of coeff, the size of intervals.size() can become really large. If it is larger than a fixed constant, exact will be set to false and the result will be set to ContinuousMultiplicationBy(coeff).</p>
<p>Note that if you multiply by a negative coeff, kint64min will be dropped from the result even if it was here due to how this is implemented. </p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00382">382</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00282">282</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<p>Basic read-only std::vector<> wrapping to view a <aclass="el"href="classoperations__research_1_1_domain.html"title="We call domain any subset of Int64 = [kint64min, kint64max].">Domain</a> as a sorted list of non-adjacent intervals. </p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8h_source.html#l00425">425</a> of file <aclass="el"href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8h_source.html#l00416">416</a> of file <aclass="el"href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
<p>Lexicographic order on the <aclass="el"href="classoperations__research_1_1_domain.html#a9743d7273fb28e7fff6ed810c90a43f1">intervals()</a> representation. </p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00615">615</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<p>Copy operator (mandatory as we define the move operator). </p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8h_source.html#l00091">91</a> of file <aclass="el"href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8h_source.html#l00100">100</a> of file <aclass="el"href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8h_source.html#l00412">412</a> of file <aclass="el"href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8h_source.html#l00428">428</a> of file <aclass="el"href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00521">521</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<p>We check that modulo is strictly positive. The sign of the modulo depends on the sign of e. We compute the exact min/max if the modulo is fixed, otherwise we will just return a superset. </p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00507">507</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<p>If <aclass="el"href="classoperations__research_1_1_domain.html#a3dcbf23ccbed61ee64ec08a934f57a9c"title="Basic read-only std::vector<> wrapping to view a Domain as a sorted list of non-adjacent intervals.">NumIntervals()</a> is too large, this return a superset of the domain. </p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00374">374</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<p>Given some <em>implied</em> information on this domain that is assumed to be always true (i.e. only values in the intersection with implied domain matter), this function will simplify the current domain without changing the set of "possible values".</p>
<li>Take the intersection with implied_domain.</li>
<li>Minimize the number of intervals. For example, if the domain is [1,2][4] and implied is [1][4], then the domain can be relaxed to [1, 4] to simplify its complexity without changing the set of admissible value assuming only implied values can be seen.</li>
<li>Restrict as much as possible the bounds of the remaining intervals. For example, if the input is [1,2] and implied is [0,4], then the domain will not be changed.</li>
<p>Note that <b>domain.SimplifyUsingImpliedDomain(domain)</b> will just return [domain.Min(), domain.Max()]. This is meant to be applied to the right-hand side of a constraint to make its propagation more efficient. </p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00558">558</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00202">202</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00224">224</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<p>Returns a superset of {x ∈ Int64, ∃ y ∈ D, x = y * y }. </p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00528">528</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00630">630</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8cc_source.html#l00342">342</a> of file <aclass="el"href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8h_source.html#l00213">213</a> of file <aclass="el"href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="sorted__interval__list_8h_source.html#l00214">214</a> of file <aclass="el"href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>