dep-selector-libgecode 1.0.0.alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (806) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +26 -0
  3. data/Gemfile +3 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +29 -0
  6. data/Rakefile +20 -0
  7. data/dep-selector-libgecode.gemspec +25 -0
  8. data/ext/libgecode3/Makefile +8 -0
  9. data/ext/libgecode3/extconf.rb +57 -0
  10. data/ext/libgecode3/vendor/gecode-3.7.3/LICENSE +25 -0
  11. data/ext/libgecode3/vendor/gecode-3.7.3/Makefile.contribs +88 -0
  12. data/ext/libgecode3/vendor/gecode-3.7.3/Makefile.dep +11307 -0
  13. data/ext/libgecode3/vendor/gecode-3.7.3/Makefile.in +1795 -0
  14. data/ext/libgecode3/vendor/gecode-3.7.3/changelog.in +6132 -0
  15. data/ext/libgecode3/vendor/gecode-3.7.3/configure +13054 -0
  16. data/ext/libgecode3/vendor/gecode-3.7.3/configure.ac +356 -0
  17. data/ext/libgecode3/vendor/gecode-3.7.3/configure.ac.in +352 -0
  18. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/README +26 -0
  19. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/AbstractWorker.hh +42 -0
  20. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Doxyfile +263 -0
  21. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Makefile.in.in +162 -0
  22. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/OptVar.cc +82 -0
  23. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/OptVar.hh +124 -0
  24. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCOPPlus.cc +306 -0
  25. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCOPPlus.hh +166 -0
  26. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCSPPlusUnblockable.cc +239 -0
  27. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCSPPlusUnblockable.hh +140 -0
  28. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/README +6 -0
  29. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Strategy.cc +253 -0
  30. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Strategy.hh +112 -0
  31. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/StrategyNode.cc +59 -0
  32. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/StrategyNode.hh +49 -0
  33. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/UnblockableBranching.hh +34 -0
  34. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/UnblockableViewValBranching.cc +61 -0
  35. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/UnblockableViewValBranching.hh +45 -0
  36. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Work.cc +48 -0
  37. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Work.hh +64 -0
  38. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/WorkComparators.hh +67 -0
  39. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/WorkManager.cc +376 -0
  40. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/WorkManager.hh +96 -0
  41. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Worker.cc +285 -0
  42. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Worker.hh +70 -0
  43. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/clean +5 -0
  44. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/configure +2637 -0
  45. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/configure.ac +44 -0
  46. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/myDom.cc +59 -0
  47. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/myspace.cc +119 -0
  48. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/myspace.hh +79 -0
  49. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qecode.hh +56 -0
  50. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_parallel.cc +41 -0
  51. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_parallel.hh +43 -0
  52. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcop.cc +268 -0
  53. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcop.hh +56 -0
  54. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcsp.cc +163 -0
  55. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcsp.hh +63 -0
  56. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_unblockable.cc +423 -0
  57. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_unblockable.hh +84 -0
  58. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/shortdesc.ac +1 -0
  59. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/vartype.hh +31 -0
  60. data/ext/libgecode3/vendor/gecode-3.7.3/doxygen/doxygen.conf.in +1245 -0
  61. data/ext/libgecode3/vendor/gecode-3.7.3/doxygen/doxygen.hh.in +594 -0
  62. data/ext/libgecode3/vendor/gecode-3.7.3/examples/all-interval.cpp +136 -0
  63. data/ext/libgecode3/vendor/gecode-3.7.3/examples/alpha.cpp +151 -0
  64. data/ext/libgecode3/vendor/gecode-3.7.3/examples/bacp.cpp +596 -0
  65. data/ext/libgecode3/vendor/gecode-3.7.3/examples/bibd.cpp +182 -0
  66. data/ext/libgecode3/vendor/gecode-3.7.3/examples/bin-packing.cpp +25363 -0
  67. data/ext/libgecode3/vendor/gecode-3.7.3/examples/black-hole.cpp +413 -0
  68. data/ext/libgecode3/vendor/gecode-3.7.3/examples/car-sequencing.cpp +653 -0
  69. data/ext/libgecode3/vendor/gecode-3.7.3/examples/crew.cpp +269 -0
  70. data/ext/libgecode3/vendor/gecode-3.7.3/examples/crossword.cpp +3954 -0
  71. data/ext/libgecode3/vendor/gecode-3.7.3/examples/crowded-chess.cpp +424 -0
  72. data/ext/libgecode3/vendor/gecode-3.7.3/examples/dominating-queens.cpp +170 -0
  73. data/ext/libgecode3/vendor/gecode-3.7.3/examples/domino.cpp +346 -0
  74. data/ext/libgecode3/vendor/gecode-3.7.3/examples/donald.cpp +135 -0
  75. data/ext/libgecode3/vendor/gecode-3.7.3/examples/efpa.cpp +323 -0
  76. data/ext/libgecode3/vendor/gecode-3.7.3/examples/eq20.cpp +128 -0
  77. data/ext/libgecode3/vendor/gecode-3.7.3/examples/golf.cpp +190 -0
  78. data/ext/libgecode3/vendor/gecode-3.7.3/examples/golomb-ruler.cpp +157 -0
  79. data/ext/libgecode3/vendor/gecode-3.7.3/examples/graph-color.cpp +425 -0
  80. data/ext/libgecode3/vendor/gecode-3.7.3/examples/grocery.cpp +116 -0
  81. data/ext/libgecode3/vendor/gecode-3.7.3/examples/hamming.cpp +144 -0
  82. data/ext/libgecode3/vendor/gecode-3.7.3/examples/ind-set.cpp +144 -0
  83. data/ext/libgecode3/vendor/gecode-3.7.3/examples/kakuro.cpp +627 -0
  84. data/ext/libgecode3/vendor/gecode-3.7.3/examples/knights.cpp +430 -0
  85. data/ext/libgecode3/vendor/gecode-3.7.3/examples/langford-number.cpp +218 -0
  86. data/ext/libgecode3/vendor/gecode-3.7.3/examples/magic-sequence.cpp +133 -0
  87. data/ext/libgecode3/vendor/gecode-3.7.3/examples/magic-square.cpp +141 -0
  88. data/ext/libgecode3/vendor/gecode-3.7.3/examples/minesweeper.cpp +311 -0
  89. data/ext/libgecode3/vendor/gecode-3.7.3/examples/money.cpp +132 -0
  90. data/ext/libgecode3/vendor/gecode-3.7.3/examples/nonogram.cpp +1215 -0
  91. data/ext/libgecode3/vendor/gecode-3.7.3/examples/open-shop.cpp +412 -0
  92. data/ext/libgecode3/vendor/gecode-3.7.3/examples/ortho-latin.cpp +183 -0
  93. data/ext/libgecode3/vendor/gecode-3.7.3/examples/partition.cpp +145 -0
  94. data/ext/libgecode3/vendor/gecode-3.7.3/examples/pentominoes.cpp +952 -0
  95. data/ext/libgecode3/vendor/gecode-3.7.3/examples/perfect-square.cpp +317 -0
  96. data/ext/libgecode3/vendor/gecode-3.7.3/examples/photo.cpp +166 -0
  97. data/ext/libgecode3/vendor/gecode-3.7.3/examples/queen-armies.cpp +335 -0
  98. data/ext/libgecode3/vendor/gecode-3.7.3/examples/queens.cpp +214 -0
  99. data/ext/libgecode3/vendor/gecode-3.7.3/examples/radiotherapy.cpp +943 -0
  100. data/ext/libgecode3/vendor/gecode-3.7.3/examples/sat.cpp +260 -0
  101. data/ext/libgecode3/vendor/gecode-3.7.3/examples/schurs-lemma.cpp +142 -0
  102. data/ext/libgecode3/vendor/gecode-3.7.3/examples/scowl.hpp +14149 -0
  103. data/ext/libgecode3/vendor/gecode-3.7.3/examples/sports-league.cpp +353 -0
  104. data/ext/libgecode3/vendor/gecode-3.7.3/examples/steel-mill.cpp +654 -0
  105. data/ext/libgecode3/vendor/gecode-3.7.3/examples/steiner.cpp +170 -0
  106. data/ext/libgecode3/vendor/gecode-3.7.3/examples/sudoku.cpp +2294 -0
  107. data/ext/libgecode3/vendor/gecode-3.7.3/examples/tsp.cpp +339 -0
  108. data/ext/libgecode3/vendor/gecode-3.7.3/examples/warehouses.cpp +185 -0
  109. data/ext/libgecode3/vendor/gecode-3.7.3/examples/word-square.cpp +168 -0
  110. data/ext/libgecode3/vendor/gecode-3.7.3/gecode.m4 +1272 -0
  111. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver.hh +602 -0
  112. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/options.cpp +435 -0
  113. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/options.hpp +418 -0
  114. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/script.cpp +104 -0
  115. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/script.hpp +388 -0
  116. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc.hh +417 -0
  117. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/CHANGES +63 -0
  118. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/ast.hh +492 -0
  119. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/conexpr.hh +82 -0
  120. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/myplugin.cpp +49 -0
  121. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/myplugin.hh +47 -0
  122. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/myplugin.pro +51 -0
  123. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/test_myplugin.fzn +1 -0
  124. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/flatzinc.cpp +1056 -0
  125. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/lexer.lxx +137 -0
  126. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/lexer.yy.cpp +2458 -0
  127. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/all_different_int.mzn +37 -0
  128. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/all_equal_int.mzn +37 -0
  129. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/among.mzn +37 -0
  130. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_least_int.mzn +37 -0
  131. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_least_set.mzn +38 -0
  132. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_most_int.mzn +37 -0
  133. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_most_set.mzn +38 -0
  134. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/bin_packing.mzn +44 -0
  135. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/bin_packing_capa.mzn +45 -0
  136. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/bin_packing_load.mzn +45 -0
  137. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/circuit.mzn +40 -0
  138. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/count.mzn +37 -0
  139. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/cumulative.mzn +53 -0
  140. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/decreasing_bool.mzn +37 -0
  141. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/decreasing_int.mzn +37 -0
  142. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/diffn.mzn +44 -0
  143. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/disjoint.mzn +37 -0
  144. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/distribute.mzn +46 -0
  145. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/exactly_int.mzn +40 -0
  146. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/exactly_set.mzn +38 -0
  147. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/gecode.mzn +98 -0
  148. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality.mzn +43 -0
  149. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality_closed.mzn +39 -0
  150. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality_low_up.mzn +40 -0
  151. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality_low_up_closed.mzn +40 -0
  152. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/increasing_bool.mzn +37 -0
  153. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/increasing_int.mzn +37 -0
  154. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/int_set_channel.mzn +49 -0
  155. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/inverse.mzn +42 -0
  156. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/lex_less_int.mzn +42 -0
  157. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/lex_lesseq_int.mzn +42 -0
  158. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/link_set_to_booleans.mzn +47 -0
  159. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/maximum_int.mzn +37 -0
  160. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/member_bool.mzn +41 -0
  161. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/member_int.mzn +41 -0
  162. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/minimum_int.mzn +37 -0
  163. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/nvalue.mzn +37 -0
  164. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/partition_set.mzn +42 -0
  165. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/precedence.mzn +41 -0
  166. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/range.mzn +51 -0
  167. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/redefinitions.mzn +62 -0
  168. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/regular.mzn +38 -0
  169. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/roots.mzn +63 -0
  170. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/sort.mzn +37 -0
  171. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/sum_pred.mzn +42 -0
  172. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/table_bool.mzn +37 -0
  173. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/table_int.mzn +37 -0
  174. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/option.hh +70 -0
  175. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.hh +265 -0
  176. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.tab.cpp +3571 -0
  177. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.tab.hh +164 -0
  178. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.yxx +1604 -0
  179. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/plugin.hh +83 -0
  180. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/registry.cpp +1812 -0
  181. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/registry.hh +71 -0
  182. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/symboltable.hh +96 -0
  183. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/varspec.hh +163 -0
  184. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist.hh +298 -0
  185. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/drawingcursor.cpp +288 -0
  186. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/drawingcursor.hh +110 -0
  187. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/drawingcursor.hpp +84 -0
  188. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gecodelogo.cpp +673 -0
  189. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gecodelogo.hh +65 -0
  190. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gist.cpp +120 -0
  191. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gist.hpp +207 -0
  192. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/layoutcursor.hh +69 -0
  193. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/layoutcursor.hpp +70 -0
  194. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/mainwindow.cpp +341 -0
  195. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/mainwindow.hh +129 -0
  196. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/node.cpp +82 -0
  197. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/node.hh +160 -0
  198. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/node.hpp +210 -0
  199. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodecursor.hh +215 -0
  200. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodecursor.hpp +271 -0
  201. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodestats.cpp +138 -0
  202. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodestats.hh +81 -0
  203. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodevisitor.hh +96 -0
  204. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodevisitor.hpp +126 -0
  205. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodewidget.cpp +90 -0
  206. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodewidget.hh +59 -0
  207. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/preferences.cpp +190 -0
  208. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/preferences.hh +96 -0
  209. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/qtgist.cpp +809 -0
  210. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/qtgist.hh +294 -0
  211. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/spacenode.cpp +369 -0
  212. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/spacenode.hh +221 -0
  213. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/spacenode.hpp +191 -0
  214. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/standalone-example/mygist.cpp +80 -0
  215. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/standalone-example/standalone_example.pro +18 -0
  216. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/stopbrancher.cpp +90 -0
  217. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/stopbrancher.hh +82 -0
  218. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/textoutput.cpp +175 -0
  219. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/textoutput.hh +75 -0
  220. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/treecanvas.cpp +1430 -0
  221. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/treecanvas.hh +369 -0
  222. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/visualnode.cpp +473 -0
  223. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/visualnode.hh +237 -0
  224. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/visualnode.hpp +220 -0
  225. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/zoomToFitIcon.hpp +114 -0
  226. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int.hh +3477 -0
  227. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic.cpp +185 -0
  228. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic.hh +666 -0
  229. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/abs.hpp +236 -0
  230. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/divmod.hpp +350 -0
  231. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/max.hpp +398 -0
  232. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/mult.hpp +750 -0
  233. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/sqr.hpp +377 -0
  234. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/sqrt.hpp +217 -0
  235. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/array-traits.hpp +147 -0
  236. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/array.cpp +113 -0
  237. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/array.hpp +111 -0
  238. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing.cpp +71 -0
  239. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing.hh +184 -0
  240. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing/propagate.cpp +388 -0
  241. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing/propagate.hpp +219 -0
  242. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool.cpp +755 -0
  243. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool.hh +581 -0
  244. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/base.hpp +137 -0
  245. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/clause.hpp +353 -0
  246. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/eq.hpp +196 -0
  247. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/eqv.cpp +104 -0
  248. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/eqv.hpp +202 -0
  249. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/lq.hpp +241 -0
  250. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/or.hpp +850 -0
  251. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch.cpp +152 -0
  252. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch.hh +607 -0
  253. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-val-bool.hpp +81 -0
  254. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-val-int.hpp +107 -0
  255. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-bool.bs +121 -0
  256. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-bool.cpp +438 -0
  257. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-int.bs +121 -0
  258. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-int.cpp +438 -0
  259. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/select-val.hpp +229 -0
  260. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/select-values.hpp +213 -0
  261. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/select-view.hpp +364 -0
  262. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel.cpp +172 -0
  263. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel.hh +249 -0
  264. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/base.hpp +78 -0
  265. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/dom.hpp +332 -0
  266. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-multi.cpp +241 -0
  267. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-multi.hpp +84 -0
  268. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-single.cpp +77 -0
  269. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-single.hpp +71 -0
  270. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/val.hpp +256 -0
  271. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit.cpp +229 -0
  272. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit.hh +160 -0
  273. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit/base.hpp +270 -0
  274. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit/dom.hpp +128 -0
  275. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit/val.hpp +105 -0
  276. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count.cpp +417 -0
  277. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count.hh +410 -0
  278. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-base.hpp +80 -0
  279. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-eq.hpp +143 -0
  280. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-gq.hpp +137 -0
  281. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-lq.hpp +136 -0
  282. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/rel.hpp +281 -0
  283. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-base.hpp +131 -0
  284. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-eq.hpp +117 -0
  285. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-gq.hpp +109 -0
  286. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-lq.hpp +96 -0
  287. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative.cpp +432 -0
  288. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative.hh +745 -0
  289. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/basic.hpp +211 -0
  290. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/edge-finding.hpp +185 -0
  291. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/man-prop.hpp +127 -0
  292. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/opt-prop.hpp +171 -0
  293. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/overload.hpp +63 -0
  294. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/task-view.hpp +84 -0
  295. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/task.hpp +256 -0
  296. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/tree.hpp +272 -0
  297. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulatives.cpp +187 -0
  298. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulatives.hh +133 -0
  299. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulatives/val.hpp +380 -0
  300. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct.cpp +97 -0
  301. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct.hh +314 -0
  302. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/bnd.hpp +444 -0
  303. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/dom-ctrl.hpp +81 -0
  304. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/dom.hpp +123 -0
  305. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/graph.hpp +266 -0
  306. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/ter-dom.hpp +113 -0
  307. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/val.hpp +185 -0
  308. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom.cpp +135 -0
  309. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom.hh +118 -0
  310. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom/range.hpp +105 -0
  311. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom/spec.hpp +124 -0
  312. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element.cpp +190 -0
  313. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element.hh +384 -0
  314. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/int.hpp +443 -0
  315. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/pair.cpp +151 -0
  316. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/pair.hpp +74 -0
  317. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/view.hpp +559 -0
  318. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exception.hpp +196 -0
  319. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec.cpp +83 -0
  320. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec.hh +87 -0
  321. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec/when.cpp +77 -0
  322. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec/when.hpp +51 -0
  323. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional.cpp +124 -0
  324. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional.hh +508 -0
  325. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/base.hpp +163 -0
  326. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/basic.hpp +148 -0
  327. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/dfa.cpp +535 -0
  328. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/dfa.hpp +282 -0
  329. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/incremental.hpp +454 -0
  330. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/layered-graph.hpp +982 -0
  331. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/tuple-set.cpp +222 -0
  332. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/tuple-set.hpp +184 -0
  333. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc.cpp +172 -0
  334. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc.hh +268 -0
  335. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/bnd-sup.hpp +608 -0
  336. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/bnd.hpp +829 -0
  337. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/dom-sup.hpp +1777 -0
  338. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/dom.hpp +315 -0
  339. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/post.hpp +169 -0
  340. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/val.hpp +299 -0
  341. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/view.hpp +410 -0
  342. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/int-set-1.hpp +249 -0
  343. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/int-set-2.hpp +51 -0
  344. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/int-set.cpp +167 -0
  345. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/limits.hpp +94 -0
  346. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear-bool.cpp +196 -0
  347. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear-int.cpp +194 -0
  348. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear.hh +1560 -0
  349. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-int.hpp +743 -0
  350. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-post.cpp +602 -0
  351. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-scale.hpp +695 -0
  352. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-view.hpp +319 -0
  353. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-bin.hpp +439 -0
  354. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-dom.hpp +484 -0
  355. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-nary.hpp +864 -0
  356. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-noview.hpp +251 -0
  357. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-post.cpp +561 -0
  358. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-ter.hpp +273 -0
  359. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/post.hpp +152 -0
  360. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member.cpp +85 -0
  361. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member.hh +125 -0
  362. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member/prop.hpp +175 -0
  363. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member/re-prop.hpp +178 -0
  364. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap.cpp +226 -0
  365. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap.hh +318 -0
  366. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/base.hpp +88 -0
  367. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/box.hpp +198 -0
  368. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/dim.hpp +197 -0
  369. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/man.hpp +119 -0
  370. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/opt.hpp +153 -0
  371. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues.cpp +244 -0
  372. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues.hh +429 -0
  373. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-base.hpp +98 -0
  374. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-eq.hpp +174 -0
  375. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-gq.hpp +149 -0
  376. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-lq.hpp +151 -0
  377. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/graph.hpp +283 -0
  378. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-base.hpp +347 -0
  379. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-eq.hpp +167 -0
  380. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-gq.hpp +130 -0
  381. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-lq.hpp +154 -0
  382. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/range-event.hpp +51 -0
  383. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/sym-bit-matrix.hpp +69 -0
  384. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/precede.cpp +73 -0
  385. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/precede.hh +113 -0
  386. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/precede/single.hpp +232 -0
  387. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/propagator.hpp +311 -0
  388. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel.cpp +381 -0
  389. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel.hh +665 -0
  390. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/eq.hpp +676 -0
  391. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/lex.hpp +414 -0
  392. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/lq-le.hpp +537 -0
  393. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/nq.hpp +196 -0
  394. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence.cpp +197 -0
  395. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence.hh +154 -0
  396. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/int.hpp +168 -0
  397. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/set-op.hpp +154 -0
  398. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/view.hpp +499 -0
  399. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/violations.hpp +101 -0
  400. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted.cpp +82 -0
  401. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted.hh +107 -0
  402. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/matching.hpp +173 -0
  403. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/narrowing.hpp +250 -0
  404. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/order.hpp +213 -0
  405. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/propagate.hpp +646 -0
  406. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/sortsup.hpp +564 -0
  407. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/support-values.hh +154 -0
  408. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/support-values.hpp +187 -0
  409. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task.hh +454 -0
  410. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/array.hpp +179 -0
  411. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/fwd-to-bwd.hpp +102 -0
  412. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/iter.hpp +92 -0
  413. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/man-to-opt.hpp +100 -0
  414. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/prop.hpp +70 -0
  415. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/purge.hpp +74 -0
  416. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/sort.hpp +234 -0
  417. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/tree.hpp +189 -0
  418. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary.cpp +258 -0
  419. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary.hh +839 -0
  420. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/detectable.hpp +116 -0
  421. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/edge-finding.hpp +78 -0
  422. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/man-prop.hpp +78 -0
  423. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/not-first-not-last.hpp +133 -0
  424. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/opt-prop.hpp +116 -0
  425. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/overload.hpp +93 -0
  426. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/subsumption.hpp +55 -0
  427. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/task-view.hpp +105 -0
  428. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/task.hpp +532 -0
  429. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/tree.hpp +229 -0
  430. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unshare.cpp +146 -0
  431. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/val-set.hh +118 -0
  432. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/val-set.hpp +186 -0
  433. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp.hpp +710 -0
  434. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/bool.cpp +65 -0
  435. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/bool.hpp +431 -0
  436. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/bool.vis +75 -0
  437. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/delta.hpp +64 -0
  438. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/int.cpp +361 -0
  439. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/int.hpp +1029 -0
  440. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/int.vis +117 -0
  441. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/bool.cpp +53 -0
  442. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/bool.hpp +121 -0
  443. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/int.cpp +61 -0
  444. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/int.hpp +145 -0
  445. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/print.hpp +56 -0
  446. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph.hh +334 -0
  447. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/bi-link.hpp +89 -0
  448. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/comb-ptr-flag.hpp +78 -0
  449. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/edge.hpp +124 -0
  450. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/graph.hpp +202 -0
  451. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/iter-prune-val.hpp +70 -0
  452. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/node.hpp +171 -0
  453. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view.hpp +1690 -0
  454. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/bool-test.hpp +64 -0
  455. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/bool.hpp +314 -0
  456. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/cached.hpp +402 -0
  457. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/constint.hpp +324 -0
  458. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/int.hpp +264 -0
  459. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/iter.hpp +65 -0
  460. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/minus.hpp +300 -0
  461. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/neg-bool.hpp +177 -0
  462. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/offset.hpp +303 -0
  463. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/print.hpp +162 -0
  464. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/rel-test.hpp +231 -0
  465. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/scale.hpp +368 -0
  466. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/zero.hpp +305 -0
  467. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter.hh +96 -0
  468. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-add.hpp +144 -0
  469. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-append.hpp +222 -0
  470. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-array.hpp +139 -0
  471. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-cache.hpp +106 -0
  472. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-compl.hpp +220 -0
  473. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-diff.hpp +142 -0
  474. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-empty.hpp +111 -0
  475. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-inter.hpp +309 -0
  476. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-list.hpp +263 -0
  477. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-map.hpp +260 -0
  478. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-minmax.hpp +118 -0
  479. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-minus.hpp +107 -0
  480. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-negative.hpp +137 -0
  481. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-offset.hpp +127 -0
  482. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-operations.hpp +157 -0
  483. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-positive.hpp +139 -0
  484. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-rangelist.hpp +115 -0
  485. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-scale.hpp +238 -0
  486. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-singleton-append.hpp +111 -0
  487. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-singleton.hpp +86 -0
  488. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-size.hpp +146 -0
  489. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-union.hpp +361 -0
  490. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-values.hpp +140 -0
  491. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-array.hpp +120 -0
  492. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-bitset.hpp +114 -0
  493. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-inter.hpp +130 -0
  494. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-list.hpp +186 -0
  495. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-map.hpp +136 -0
  496. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-minus.hpp +105 -0
  497. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-negative.hpp +116 -0
  498. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-offset.hpp +113 -0
  499. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-positive.hpp +123 -0
  500. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-ranges.hpp +106 -0
  501. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-singleton.hpp +109 -0
  502. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-union.hpp +137 -0
  503. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-unique.hpp +118 -0
  504. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel.hh +194 -0
  505. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/advisor.hpp +102 -0
  506. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/allocators.hpp +476 -0
  507. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/archive.cpp +70 -0
  508. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/archive.hpp +298 -0
  509. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/array.hpp +2133 -0
  510. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/branch.cpp +121 -0
  511. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/branch.hpp +254 -0
  512. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher-tiebreak.hpp +615 -0
  513. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher-val.hpp +126 -0
  514. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher-view.hpp +455 -0
  515. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher.hpp +431 -0
  516. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/core.cpp +563 -0
  517. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/core.hpp +3668 -0
  518. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/exception.hpp +124 -0
  519. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/global-prop-info.hpp +258 -0
  520. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/macros.hpp +118 -0
  521. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/memory-config.hpp +154 -0
  522. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/memory-manager.cpp +53 -0
  523. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/memory-manager.hpp +511 -0
  524. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/modevent.hpp +69 -0
  525. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/propagator.hpp +699 -0
  526. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/range-list.hpp +184 -0
  527. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/region.cpp +85 -0
  528. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/region.hpp +459 -0
  529. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/shared-array.hpp +345 -0
  530. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/var-imp.hpp +332 -0
  531. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/var-type.hpp +767 -0
  532. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/var.hpp +144 -0
  533. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/view.hpp +715 -0
  534. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/wait.hh +244 -0
  535. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel.hh +1870 -0
  536. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/arithmetic.cpp +408 -0
  537. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/bool-expr.cpp +522 -0
  538. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/bool-expr.hpp +87 -0
  539. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/exception.hpp +84 -0
  540. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-expr.cpp +594 -0
  541. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-expr.hpp +297 -0
  542. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-rel.cpp +414 -0
  543. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-rel.hpp +85 -0
  544. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/matrix.hpp +247 -0
  545. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/optimize.hpp +62 -0
  546. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/reg.cpp +817 -0
  547. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/reg.hpp +94 -0
  548. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-expr.cpp +704 -0
  549. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-expr.hpp +96 -0
  550. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-rel.cpp +81 -0
  551. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-rel.hpp +84 -0
  552. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search.hh +458 -0
  553. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/bab.cpp +62 -0
  554. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/bab.hpp +91 -0
  555. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/dfs.cpp +62 -0
  556. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/dfs.hpp +84 -0
  557. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/options.cpp +72 -0
  558. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/options.hpp +49 -0
  559. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/bab.cpp +178 -0
  560. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/bab.hh +203 -0
  561. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/dfs.cpp +176 -0
  562. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/dfs.hh +195 -0
  563. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/engine.cpp +118 -0
  564. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/engine.hh +418 -0
  565. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/path.hh +477 -0
  566. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/restart.cpp +167 -0
  567. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/restart.hh +73 -0
  568. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/restart.cpp +62 -0
  569. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/restart.hpp +88 -0
  570. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/bab.hh +177 -0
  571. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/dfs.hh +176 -0
  572. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/path.hh +411 -0
  573. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/restart.hh +89 -0
  574. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/statistics.hpp +70 -0
  575. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/stop.cpp +83 -0
  576. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/stop.hpp +137 -0
  577. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/support.hh +91 -0
  578. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/worker.hh +202 -0
  579. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set.hh +1144 -0
  580. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/array-traits.hpp +86 -0
  581. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/array.cpp +219 -0
  582. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/array.hpp +64 -0
  583. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch.cpp +128 -0
  584. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch.hh +438 -0
  585. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/post-val.hpp +107 -0
  586. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/post-view.bs +109 -0
  587. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/post-view.cpp +370 -0
  588. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/select-val.hpp +204 -0
  589. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/select-view.hpp +306 -0
  590. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/cardinality.cpp +65 -0
  591. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex.cpp +60 -0
  592. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex.hh +107 -0
  593. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/conv.cpp +97 -0
  594. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/conv.hpp +67 -0
  595. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/hull.cpp +116 -0
  596. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/hull.hpp +68 -0
  597. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct.cpp +56 -0
  598. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct.hh +79 -0
  599. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct/atmostOne.cpp +162 -0
  600. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct/atmostOne.hpp +66 -0
  601. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/dom.cpp +300 -0
  602. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element.cpp +255 -0
  603. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element.hh +218 -0
  604. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/disjoint.hpp +324 -0
  605. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/inter.hpp +308 -0
  606. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/union.hpp +342 -0
  607. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/unionConst.hpp +293 -0
  608. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/exception.hpp +146 -0
  609. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/exec.cpp +58 -0
  610. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int.cpp +191 -0
  611. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int.hh +459 -0
  612. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/card.hpp +93 -0
  613. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/channel-bool.hpp +282 -0
  614. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/channel-int.hpp +158 -0
  615. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/match.hpp +199 -0
  616. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/minmax.hpp +645 -0
  617. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/weights.hpp +353 -0
  618. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/limits.hpp +62 -0
  619. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/precede.cpp +74 -0
  620. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/precede.hh +115 -0
  621. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/precede/single.hpp +255 -0
  622. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-cvc.cpp +66 -0
  623. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-cvv.cpp +65 -0
  624. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-vcc.cpp +168 -0
  625. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-vcv.cpp +166 -0
  626. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-vvc.cpp +63 -0
  627. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-singleton.cpp +115 -0
  628. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-ternary.cpp +60 -0
  629. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op.cpp +105 -0
  630. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op.hh +297 -0
  631. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/common.hpp +619 -0
  632. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/inter.hpp +389 -0
  633. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/partition.hpp +164 -0
  634. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl-cvc.cpp +58 -0
  635. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl-cvv.cpp +54 -0
  636. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl-vvc.cpp +57 -0
  637. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl.cpp +54 -0
  638. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl-cvc.cpp +55 -0
  639. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl-cvv.cpp +54 -0
  640. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl-vvc.cpp +54 -0
  641. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl.cpp +54 -0
  642. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post.hpp +266 -0
  643. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/subofunion.hpp +166 -0
  644. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/superofinter.hpp +167 -0
  645. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/union.hpp +319 -0
  646. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel.cpp +232 -0
  647. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel.hh +322 -0
  648. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/common.hpp +125 -0
  649. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/eq.hpp +116 -0
  650. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/lq.hpp +417 -0
  651. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/nosubset.hpp +104 -0
  652. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/nq.hpp +160 -0
  653. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/re-eq.hpp +152 -0
  654. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/re-lq.hpp +182 -0
  655. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/re-subset.hpp +146 -0
  656. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/subset.hpp +96 -0
  657. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence.cpp +64 -0
  658. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence.hh +115 -0
  659. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/common.hpp +100 -0
  660. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq-u.cpp +145 -0
  661. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq-u.hpp +79 -0
  662. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq.cpp +76 -0
  663. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq.hpp +69 -0
  664. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp.hpp +634 -0
  665. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/delta.hpp +78 -0
  666. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/integerset.cpp +348 -0
  667. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/integerset.hpp +426 -0
  668. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/iter.hpp +63 -0
  669. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/set.cpp +142 -0
  670. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/set.hpp +531 -0
  671. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/set.vis +197 -0
  672. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var/print.hpp +49 -0
  673. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var/set.cpp +111 -0
  674. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var/set.hpp +254 -0
  675. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view.hpp +1142 -0
  676. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/cached.hpp +399 -0
  677. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/complement.hpp +556 -0
  678. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/const.hpp +723 -0
  679. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/print.hpp +140 -0
  680. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/set.hpp +263 -0
  681. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/singleton.hpp +402 -0
  682. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support.hh +135 -0
  683. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/auto-link.hpp +73 -0
  684. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/bitset-base.hpp +379 -0
  685. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/bitset.hpp +81 -0
  686. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/block-allocator.hpp +169 -0
  687. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/cast.hpp +52 -0
  688. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/config.hpp.in +109 -0
  689. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/dynamic-array.hpp +140 -0
  690. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/dynamic-queue.hpp +156 -0
  691. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/dynamic-stack.hpp +186 -0
  692. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/exception.cpp +65 -0
  693. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/exception.hpp +102 -0
  694. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/heap.cpp +49 -0
  695. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/heap.hpp +593 -0
  696. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/int-type.hpp +172 -0
  697. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/macros.hpp +103 -0
  698. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/marked-pointer.hpp +79 -0
  699. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/random.hpp +128 -0
  700. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/sort.hpp +268 -0
  701. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/static-stack.hpp +148 -0
  702. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread.hpp +272 -0
  703. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/none.hpp +87 -0
  704. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/pthreads.cpp +66 -0
  705. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/pthreads.hpp +142 -0
  706. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/thread.cpp +72 -0
  707. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/thread.hpp +114 -0
  708. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/windows.cpp +68 -0
  709. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/windows.hpp +108 -0
  710. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/timer.hpp +103 -0
  711. data/ext/libgecode3/vendor/gecode-3.7.3/install-sh +323 -0
  712. data/ext/libgecode3/vendor/gecode-3.7.3/misc/allexamples.perl +60 -0
  713. data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/back.png +0 -0
  714. data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/footer.html +3 -0
  715. data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/gecode-logo-100.png +0 -0
  716. data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/header.html +66 -0
  717. data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/stylesheet.css +468 -0
  718. data/ext/libgecode3/vendor/gecode-3.7.3/misc/fixautoheader.perl +55 -0
  719. data/ext/libgecode3/vendor/gecode-3.7.3/misc/fixmanifest.perl +84 -0
  720. data/ext/libgecode3/vendor/gecode-3.7.3/misc/fixproperties.sh +98 -0
  721. data/ext/libgecode3/vendor/gecode-3.7.3/misc/gecode-logo.ico +0 -0
  722. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genbranch.perl +310 -0
  723. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genchangelog.perl +249 -0
  724. data/ext/libgecode3/vendor/gecode-3.7.3/misc/gencurrentchangelog.perl +191 -0
  725. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genlcovmakefile.perl +148 -0
  726. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genlicense.perl +121 -0
  727. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genrc.perl +236 -0
  728. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genstatistics.perl +178 -0
  729. data/ext/libgecode3/vendor/gecode-3.7.3/misc/gentxtchangelog.perl +198 -0
  730. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genvarimp.perl +877 -0
  731. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genxcodeproj.perl +144 -0
  732. data/ext/libgecode3/vendor/gecode-3.7.3/misc/getrevision.perl +47 -0
  733. data/ext/libgecode3/vendor/gecode-3.7.3/misc/makedepend.perl +85 -0
  734. data/ext/libgecode3/vendor/gecode-3.7.3/misc/svn-ignore-root.txt +43 -0
  735. data/ext/libgecode3/vendor/gecode-3.7.3/misc/svn-ignore.txt +18 -0
  736. data/ext/libgecode3/vendor/gecode-3.7.3/test/afc.cpp +143 -0
  737. data/ext/libgecode3/vendor/gecode-3.7.3/test/array.cpp +277 -0
  738. data/ext/libgecode3/vendor/gecode-3.7.3/test/assign.cpp +278 -0
  739. data/ext/libgecode3/vendor/gecode-3.7.3/test/assign.hh +119 -0
  740. data/ext/libgecode3/vendor/gecode-3.7.3/test/assign/bool.cpp +61 -0
  741. data/ext/libgecode3/vendor/gecode-3.7.3/test/assign/int.cpp +70 -0
  742. data/ext/libgecode3/vendor/gecode-3.7.3/test/assign/set.cpp +72 -0
  743. data/ext/libgecode3/vendor/gecode-3.7.3/test/branch.cpp +504 -0
  744. data/ext/libgecode3/vendor/gecode-3.7.3/test/branch.hh +119 -0
  745. data/ext/libgecode3/vendor/gecode-3.7.3/test/branch/bool.cpp +61 -0
  746. data/ext/libgecode3/vendor/gecode-3.7.3/test/branch/int.cpp +70 -0
  747. data/ext/libgecode3/vendor/gecode-3.7.3/test/branch/set.cpp +72 -0
  748. data/ext/libgecode3/vendor/gecode-3.7.3/test/int.cpp +655 -0
  749. data/ext/libgecode3/vendor/gecode-3.7.3/test/int.hh +353 -0
  750. data/ext/libgecode3/vendor/gecode-3.7.3/test/int.hpp +314 -0
  751. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/arithmetic.cpp +772 -0
  752. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/basic.cpp +82 -0
  753. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/bin-packing.cpp +237 -0
  754. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/bool.cpp +500 -0
  755. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/channel.cpp +234 -0
  756. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/circuit.cpp +359 -0
  757. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/count.cpp +410 -0
  758. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/cumulative.cpp +560 -0
  759. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/cumulatives.cpp +276 -0
  760. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/distinct.cpp +248 -0
  761. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/dom.cpp +174 -0
  762. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/element.cpp +602 -0
  763. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/exec.cpp +150 -0
  764. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/extensional.cpp +571 -0
  765. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/gcc.cpp +320 -0
  766. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/linear.cpp +394 -0
  767. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/member.cpp +138 -0
  768. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-arithmetic.cpp +368 -0
  769. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-bool.cpp +4344 -0
  770. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-count.cpp +295 -0
  771. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-lin.cpp +2179 -0
  772. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-rel.cpp +136 -0
  773. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/no-overlap.cpp +259 -0
  774. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/nvalues.cpp +241 -0
  775. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/precede.cpp +115 -0
  776. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/rel.cpp +568 -0
  777. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/sequence.cpp +168 -0
  778. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/sorted.cpp +165 -0
  779. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/unary.cpp +327 -0
  780. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/unshare.cpp +109 -0
  781. data/ext/libgecode3/vendor/gecode-3.7.3/test/search.cpp +487 -0
  782. data/ext/libgecode3/vendor/gecode-3.7.3/test/set.cpp +638 -0
  783. data/ext/libgecode3/vendor/gecode-3.7.3/test/set.hh +362 -0
  784. data/ext/libgecode3/vendor/gecode-3.7.3/test/set.hpp +121 -0
  785. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/construct.cpp +225 -0
  786. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/convex.cpp +139 -0
  787. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/distinct.cpp +116 -0
  788. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/dom.cpp +346 -0
  789. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/element.cpp +397 -0
  790. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/exec.cpp +86 -0
  791. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/int.cpp +532 -0
  792. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/mm-set.cpp +4532 -0
  793. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/precede.cpp +136 -0
  794. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/rel-op-const.cpp +368 -0
  795. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/rel-op.cpp +504 -0
  796. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/rel.cpp +157 -0
  797. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/sequence.cpp +133 -0
  798. data/ext/libgecode3/vendor/gecode-3.7.3/test/test.cpp +281 -0
  799. data/ext/libgecode3/vendor/gecode-3.7.3/test/test.hh +161 -0
  800. data/ext/libgecode3/vendor/gecode-3.7.3/test/test.hpp +76 -0
  801. data/ext/libgecode3/vendor/gecode-3.7.3/tools/flatzinc/fz.cpp +93 -0
  802. data/ext/libgecode3/vendor/gecode-3.7.3/tools/flatzinc/mzn-gecode.bat.in +41 -0
  803. data/ext/libgecode3/vendor/gecode-3.7.3/tools/flatzinc/mzn-gecode.in +41 -0
  804. data/lib/dep-selector-libgecode.rb +15 -0
  805. data/lib/dep-selector-libgecode/version.rb +3 -0
  806. metadata +878 -0
@@ -0,0 +1,1560 @@
1
+ /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Main authors:
4
+ * Christian Schulte <schulte@gecode.org>
5
+ * Guido Tack <tack@gecode.org>
6
+ * Tias Guns <tias.guns@cs.kuleuven.be>
7
+ *
8
+ * Copyright:
9
+ * Christian Schulte, 2002
10
+ * Guido Tack, 2004
11
+ * Tias Guns, 2009
12
+ *
13
+ * Last modified:
14
+ * $Date: 2009-12-04 23:57:33 +1100 (Fri, 04 Dec 2009) $ by $Author: schulte $
15
+ * $Revision: 10188 $
16
+ *
17
+ * This file is part of Gecode, the generic constraint
18
+ * development environment:
19
+ * http://www.gecode.org
20
+ *
21
+ * Permission is hereby granted, free of charge, to any person obtaining
22
+ * a copy of this software and associated documentation files (the
23
+ * "Software"), to deal in the Software without restriction, including
24
+ * without limitation the rights to use, copy, modify, merge, publish,
25
+ * distribute, sublicense, and/or sell copies of the Software, and to
26
+ * permit persons to whom the Software is furnished to do so, subject to
27
+ * the following conditions:
28
+ *
29
+ * The above copyright notice and this permission notice shall be
30
+ * included in all copies or substantial portions of the Software.
31
+ *
32
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
33
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
34
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
35
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
36
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
37
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
38
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
39
+ *
40
+ */
41
+
42
+ #ifndef __GECODE_INT_LINEAR_HH__
43
+ #define __GECODE_INT_LINEAR_HH__
44
+
45
+ #include <gecode/int.hh>
46
+
47
+ /**
48
+ * \namespace Gecode::Int::Linear
49
+ * \brief %Linear propagators
50
+ */
51
+
52
+ namespace Gecode { namespace Int { namespace Linear {
53
+
54
+ /*
55
+ * Binary propagators
56
+ *
57
+ */
58
+
59
+ /**
60
+ * \brief Base-class for binary linear propagators
61
+ *
62
+ * The type \a Val can be either \c double or \c int, defining the
63
+ * numerical precision during propagation. The types \a A and \a B
64
+ * give the types of the views.
65
+ *
66
+ * The propagation condition \a pc refers to both views.
67
+ */
68
+ template<class Val, class A, class B, PropCond pc>
69
+ class LinBin : public Propagator {
70
+ protected:
71
+ /// View of type \a A
72
+ A x0;
73
+ /// View of type \a B
74
+ B x1;
75
+ /// Value of type \a Val
76
+ Val c;
77
+ /// Constructor for cloning \a p
78
+ LinBin(Space& home, bool share, LinBin& p);
79
+ /// Constructor for rewriting \a p during cloning
80
+ LinBin(Space& home, bool share, Propagator& p, A x0, B x1, Val c);
81
+ /// Constructor for creation
82
+ LinBin(Home home, A x0, B x1, Val c);
83
+ public:
84
+ /// Cost function (defined as low binary)
85
+ virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
86
+ /// Delete propagator and return its size
87
+ virtual size_t dispose(Space& home);
88
+ };
89
+
90
+ /**
91
+ * \brief Base-class for reified binary linear propagators
92
+ *
93
+ * The type \a Val can be either \c double or \c int, defining the
94
+ * numerical precision during propagation. The types \a A and \a B
95
+ * give the types of the views.
96
+ *
97
+ * The propagation condition \a pc refers to both views.
98
+ */
99
+ template<class Val, class A, class B, PropCond pc, class Ctrl>
100
+ class ReLinBin : public Propagator {
101
+ protected:
102
+ /// View of type \a A
103
+ A x0;
104
+ /// View of type \a B
105
+ B x1;
106
+ /// Value of type \a Val
107
+ Val c;
108
+ /// Control view for reification
109
+ Ctrl b;
110
+ /// Constructor for cloning \a p
111
+ ReLinBin(Space& home, bool share, ReLinBin& p);
112
+ /// Constructor for creation
113
+ ReLinBin(Home home, A x0, B x1, Val c, Ctrl b);
114
+ public:
115
+ /// Cost function (defined as low binary)
116
+ virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
117
+ /// Delete propagator and return its size
118
+ virtual size_t dispose(Space& home);
119
+ };
120
+
121
+ /**
122
+ * \brief %Propagator for bounds consistent binary linear equality
123
+ *
124
+ * The type \a Val can be either \c double or \c int, defining the
125
+ * numerical precision during propagation. The types \a A and \a B
126
+ * give the types of the views.
127
+ *
128
+ * The propagation condition \a pc refers to both views.
129
+ *
130
+ * Requires \code #include <gecode/int/linear.hh> \endcode
131
+ * \ingroup FuncIntProp
132
+ */
133
+ template<class Val, class A, class B>
134
+ class EqBin : public LinBin<Val,A,B,PC_INT_BND> {
135
+ protected:
136
+ using LinBin<Val,A,B,PC_INT_BND>::x0;
137
+ using LinBin<Val,A,B,PC_INT_BND>::x1;
138
+ using LinBin<Val,A,B,PC_INT_BND>::c;
139
+
140
+ /// Constructor for cloning \a p
141
+ EqBin(Space& home, bool share, EqBin& p);
142
+ /// Constructor for creation
143
+ EqBin(Home home, A x0, B x1, Val c);
144
+ public:
145
+ /// Constructor for rewriting \a p during cloning
146
+ EqBin(Space& home, bool share, Propagator& p, A x0, B x1, Val c);
147
+ /// Create copy during cloning
148
+ virtual Actor* copy(Space& home, bool share);
149
+ /// Perform propagation
150
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
151
+ /// Post propagator for \f$x_0+x_1 = c\f$
152
+ static ExecStatus post(Home home, A x0, B x1, Val c);
153
+ };
154
+
155
+ /**
156
+ * \brief %Propagator for reified bounds consistent binary linear equality
157
+ *
158
+ * The type \a Val can be either \c double or \c int, defining the
159
+ * numerical precision during propagation. The types \a A and \a B
160
+ * give the types of the views.
161
+ *
162
+ * The propagation condition \a pc refers to both views.
163
+ *
164
+ * Requires \code #include <gecode/int/linear.hh> \endcode
165
+ * \ingroup FuncIntProp
166
+ */
167
+ template<class Val, class A, class B, class Ctrl>
168
+ class ReEqBin : public ReLinBin<Val,A,B,PC_INT_BND,Ctrl> {
169
+ protected:
170
+ using ReLinBin<Val,A,B,PC_INT_BND,Ctrl>::x0;
171
+ using ReLinBin<Val,A,B,PC_INT_BND,Ctrl>::x1;
172
+ using ReLinBin<Val,A,B,PC_INT_BND,Ctrl>::c;
173
+ using ReLinBin<Val,A,B,PC_INT_BND,Ctrl>::b;
174
+
175
+ /// Constructor for cloning \a p
176
+ ReEqBin(Space& home, bool share, ReEqBin& p);
177
+ /// Constructor for creation
178
+ ReEqBin(Home home,A,B,Val,Ctrl);
179
+ public:
180
+ /// Create copy during cloning
181
+ virtual Actor* copy(Space& home, bool share);
182
+ /// Perform propagation
183
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
184
+ /// Post propagator for \f$(x_0+x_1 = c)\Leftrightarrow b\f$
185
+ static ExecStatus post(Home home, A x0, B x1, Val c, Ctrl b);
186
+ };
187
+
188
+ /**
189
+ * \brief %Propagator for bounds consistent binary linear disequality
190
+ *
191
+ * The type \a Val can be either \c double or \c int, defining the
192
+ * numerical precision during propagation. The types \a A and \a B
193
+ * give the types of the views.
194
+ *
195
+ * The propagation condition \a pc refers to both views.
196
+ *
197
+ * Requires \code #include <gecode/int/linear.hh> \endcode
198
+ * \ingroup FuncIntProp
199
+ */
200
+ template<class Val, class A, class B>
201
+ class NqBin : public LinBin<Val,A,B,PC_INT_VAL> {
202
+ protected:
203
+ using LinBin<Val,A,B,PC_INT_VAL>::x0;
204
+ using LinBin<Val,A,B,PC_INT_VAL>::x1;
205
+ using LinBin<Val,A,B,PC_INT_VAL>::c;
206
+
207
+ /// Constructor for cloning \a p
208
+ NqBin(Space& home, bool share, NqBin& p);
209
+ /// Constructor for creation
210
+ NqBin(Home home, A x0, B x1, Val c);
211
+ public:
212
+ /// Constructor for rewriting \a p during cloning
213
+ NqBin(Space& home, bool share, Propagator& p, A x0, B x1, Val c);
214
+ /// Create copy during cloning
215
+ virtual Actor* copy(Space& home, bool share);
216
+ /// Perform propagation
217
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
218
+ /// Cost function (defined as low unary)
219
+ virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
220
+ /// Post propagator for \f$x_0+x_1 \neq c\f$
221
+ static ExecStatus post(Home home, A x0, B x1, Val c);
222
+ };
223
+
224
+ /**
225
+ * \brief %Propagator for bounds consistent binary linear less or equal
226
+ *
227
+ * The type \a Val can be either \c double or \c int, defining the
228
+ * numerical precision during propagation. The types \a A and \a B
229
+ * give the types of the views.
230
+ *
231
+ * The propagation condition \a pc refers to both views.
232
+ *
233
+ * Requires \code #include <gecode/int/linear.hh> \endcode
234
+ * \ingroup FuncIntProp
235
+ */
236
+ template<class Val, class A, class B>
237
+ class LqBin : public LinBin<Val,A,B,PC_INT_BND> {
238
+ protected:
239
+ using LinBin<Val,A,B,PC_INT_BND>::x0;
240
+ using LinBin<Val,A,B,PC_INT_BND>::x1;
241
+ using LinBin<Val,A,B,PC_INT_BND>::c;
242
+
243
+ /// Constructor for cloning \a p
244
+ LqBin(Space& home, bool share, LqBin& p);
245
+ /// Constructor for creation
246
+ LqBin(Home home, A x0, B x1, Val c);
247
+ public:
248
+ /// Constructor for rewriting \a p during cloning
249
+ LqBin(Space& home, bool share, Propagator& p, A x0, B x1, Val c);
250
+ /// Create copy during cloning
251
+ virtual Actor* copy(Space& home, bool share);
252
+ /// Perform propagation
253
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
254
+ /// Post propagator for \f$x_0+x_1 \leq c\f$
255
+ static ExecStatus post(Home home, A x0, B x1, Val c);
256
+ };
257
+
258
+ /**
259
+ * \brief %Propagator for bounds consistent binary linear greater or equal
260
+ *
261
+ * The type \a Val can be either \c double or \c int, defining the
262
+ * numerical precision during propagation. The types \a A and \a B
263
+ * give the types of the views.
264
+ *
265
+ * The propagation condition \a pc refers to both views.
266
+ *
267
+ * Requires \code #include <gecode/int/linear.hh> \endcode
268
+ * \ingroup FuncIntProp
269
+ */
270
+ template<class Val, class A, class B>
271
+ class GqBin : public LinBin<Val,A,B,PC_INT_BND> {
272
+ protected:
273
+ using LinBin<Val,A,B,PC_INT_BND>::x0;
274
+ using LinBin<Val,A,B,PC_INT_BND>::x1;
275
+ using LinBin<Val,A,B,PC_INT_BND>::c;
276
+
277
+ /// Constructor for cloning \a p
278
+ GqBin(Space& home, bool share, GqBin& p);
279
+ /// Constructor for creation
280
+ GqBin(Home home, A x0, B x1, Val c);
281
+ public:
282
+ /// Constructor for rewriting \a p during cloning
283
+ GqBin(Space& home, bool share, Propagator& p, A x0, B x1, Val c);
284
+ /// Create copy during cloning
285
+ virtual Actor* copy(Space& home, bool share);
286
+ /// Perform propagation
287
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
288
+ /// Post propagator for \f$x_0+x_1 \geq c\f$
289
+ static ExecStatus post(Home home, A x0, B x1, Val c);
290
+ };
291
+
292
+ /**
293
+ * \brief %Propagator for reified bounds consistent binary linear less or equal
294
+ *
295
+ * The type \a Val can be either \c double or \c int, defining the
296
+ * numerical precision during propagation. The types \a A and \a B
297
+ * give the types of the views.
298
+ *
299
+ * The propagation condition \a pc refers to both views.
300
+ *
301
+ * Requires \code #include <gecode/int/linear.hh> \endcode
302
+ * \ingroup FuncIntProp
303
+ */
304
+ template<class Val, class A, class B>
305
+ class ReLqBin : public ReLinBin<Val,A,B,PC_INT_BND,BoolView> {
306
+ protected:
307
+ using ReLinBin<Val,A,B,PC_INT_BND,BoolView>::x0;
308
+ using ReLinBin<Val,A,B,PC_INT_BND,BoolView>::x1;
309
+ using ReLinBin<Val,A,B,PC_INT_BND,BoolView>::c;
310
+ using ReLinBin<Val,A,B,PC_INT_BND,BoolView>::b;
311
+
312
+ /// Constructor for cloning \a p
313
+ ReLqBin(Space& home, bool share, ReLqBin& p);
314
+ /// Constructor for creation
315
+ ReLqBin(Home home, A x0, B x1, Val c, BoolView b);
316
+ public:
317
+ /// Create copy during cloning
318
+ virtual Actor* copy(Space& home, bool share);
319
+ /// Perform propagation
320
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
321
+ /// Post propagator for \f$(x_0+x_1 \leq c)\Leftrightarrow b\f$
322
+ static ExecStatus post(Home home, A x0, B x1, Val c, BoolView b);
323
+ };
324
+
325
+ }}}
326
+
327
+ #include <gecode/int/linear/int-bin.hpp>
328
+
329
+ namespace Gecode { namespace Int { namespace Linear {
330
+
331
+ /*
332
+ * Ternary propagators
333
+ *
334
+ */
335
+
336
+ /**
337
+ * \brief Base-class for ternary linear propagators
338
+ *
339
+ * The type \a Val can be either \c double or \c int, defining the
340
+ * numerical precision during propagation. The types \a A, \a B,
341
+ * and \a C give the types of the views.
342
+ *
343
+ * The propagation condition \a pc refers to all three views.
344
+ */
345
+ template<class Val, class A, class B, class C, PropCond pc>
346
+ class LinTer : public Propagator {
347
+ protected:
348
+ /// View of type \a A
349
+ A x0;
350
+ /// View of type \a B
351
+ B x1;
352
+ /// View of type \a C
353
+ C x2;
354
+ /// Value of type \a Val
355
+ Val c;
356
+ /// Constructor for cloning \a p
357
+ LinTer(Space& home, bool share, LinTer& p);
358
+ /// Constructor for creation
359
+ LinTer(Home home, A x0, B x1, C x2, Val c);
360
+ /// Constructor for rewriting \a p during cloning
361
+ LinTer(Space& home, bool share, Propagator& p, A x0, B x1, C x2, Val c);
362
+ public:
363
+ /// Cost function (defined as low ternary)
364
+ virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
365
+ /// Delete propagator and return its size
366
+ virtual size_t dispose(Space& home);
367
+ };
368
+
369
+ /**
370
+ * \brief %Propagator for bounds consistent ternary linear equality
371
+ *
372
+ * The type \a Val can be either \c double or \c int, defining the
373
+ * numerical precision during propagation. The types \a A, \a B,
374
+ * and \a C give the types of the views.
375
+ *
376
+ * The propagation condition \a pc refers to all three views.
377
+ *
378
+ * Requires \code #include <gecode/int/linear.hh> \endcode
379
+ * \ingroup FuncIntProp
380
+ */
381
+ template<class Val, class A, class B, class C>
382
+ class EqTer : public LinTer<Val,A,B,C,PC_INT_BND> {
383
+ protected:
384
+ using LinTer<Val,A,B,C,PC_INT_BND>::x0;
385
+ using LinTer<Val,A,B,C,PC_INT_BND>::x1;
386
+ using LinTer<Val,A,B,C,PC_INT_BND>::x2;
387
+ using LinTer<Val,A,B,C,PC_INT_BND>::c;
388
+
389
+ /// Constructor for cloning \a p
390
+ EqTer(Space& home, bool share, EqTer& p);
391
+ /// Constructor for creation
392
+ EqTer(Home home, A x0, B x1, C x2, Val c);
393
+ public:
394
+ /// Constructor for rewriting \a p during cloning
395
+ EqTer(Space& home, bool share, Propagator& p, A x0, B x1, C x2, Val c);
396
+ /// Create copy during cloning
397
+ virtual Actor* copy(Space& home, bool share);
398
+ /// Perform propagation
399
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
400
+ /// Post propagator for \f$x_0+x_1+x_2 = c\f$
401
+ static ExecStatus post(Home home, A x0, B x1, C x2, Val c);
402
+ };
403
+
404
+ /**
405
+ * \brief %Propagator for bounds consistent ternary linear disquality
406
+ *
407
+ * The type \a Val can be either \c double or \c int, defining the
408
+ * numerical precision during propagation. The types \a A, \a B,
409
+ * and \a C give the types of the views.
410
+ *
411
+ * The propagation condition \a pc refers to all three views.
412
+ *
413
+ * Requires \code #include <gecode/int/linear.hh> \endcode
414
+ * \ingroup FuncIntProp
415
+ */
416
+ template<class Val, class A, class B, class C>
417
+ class NqTer : public LinTer<Val,A,B,C,PC_INT_VAL> {
418
+ protected:
419
+ using LinTer<Val,A,B,C,PC_INT_VAL>::x0;
420
+ using LinTer<Val,A,B,C,PC_INT_VAL>::x1;
421
+ using LinTer<Val,A,B,C,PC_INT_VAL>::x2;
422
+ using LinTer<Val,A,B,C,PC_INT_VAL>::c;
423
+
424
+ /// Constructor for cloning \a p
425
+ NqTer(Space& home, bool share, NqTer& p);
426
+ /// Constructor for creation
427
+ NqTer(Home home, A x0, B x1, C x2, Val c);
428
+ public:
429
+ /// Constructor for rewriting \a p during cloning
430
+ NqTer(Space& home, bool share, Propagator& p, A x0, B x1, C x2, Val c);
431
+ /// Create copy during cloning
432
+ virtual Actor* copy(Space& home, bool share);
433
+ /// Perform propagation
434
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
435
+ /// Post propagator for \f$x_0+x_1+x_2 \neq c\f$
436
+ static ExecStatus post(Home home, A x0, B x1, C x2, Val c);
437
+ };
438
+
439
+ /**
440
+ * \brief %Propagator for bounds consistent ternary linear less or equal
441
+ *
442
+ * The type \a Val can be either \c double or \c int, defining the
443
+ * numerical precision during propagation. The types \a A, \a B,
444
+ * and \a C give the types of the views.
445
+ *
446
+ * The propagation condition \a pc refers to all three views.
447
+ *
448
+ * Requires \code #include <gecode/int/linear.hh> \endcode
449
+ * \ingroup FuncIntProp
450
+ */
451
+ template<class Val, class A, class B, class C>
452
+ class LqTer : public LinTer<Val,A,B,C,PC_INT_BND> {
453
+ protected:
454
+ using LinTer<Val,A,B,C,PC_INT_BND>::x0;
455
+ using LinTer<Val,A,B,C,PC_INT_BND>::x1;
456
+ using LinTer<Val,A,B,C,PC_INT_BND>::x2;
457
+ using LinTer<Val,A,B,C,PC_INT_BND>::c;
458
+
459
+ /// Constructor for cloning \a p
460
+ LqTer(Space& home, bool share, LqTer& p);
461
+ /// Constructor for creation
462
+ LqTer(Home home, A x0, B x1, C x2, Val c);
463
+ public:
464
+ /// Constructor for rewriting \a p during cloning
465
+ LqTer(Space& home, bool share, Propagator& p, A x0, B x1, C x2, Val c);
466
+ /// Create copy during cloning
467
+ virtual Actor* copy(Space& home, bool share);
468
+ /// Perform propagation
469
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
470
+ /// Post propagator for \f$x_0+x_1+x_2 \leq c\f$
471
+ static ExecStatus post(Home home, A x0, B x1, C x2, Val c);
472
+ };
473
+
474
+ }}}
475
+
476
+ #include <gecode/int/linear/int-ter.hpp>
477
+
478
+ namespace Gecode { namespace Int { namespace Linear {
479
+
480
+ /*
481
+ * n-ary propagators
482
+ *
483
+ */
484
+
485
+ /**
486
+ * \brief Base-class for n-ary linear propagators
487
+ *
488
+ * The type \a Val can be either \c double or \c int, defining the
489
+ * numerical precision during propagation. Positive views are of
490
+ * type \a P whereas negative views are of type \a N.
491
+ *
492
+ * The propagation condition \a pc refers to all views.
493
+ */
494
+ template<class Val, class P, class N, PropCond pc>
495
+ class Lin : public Propagator {
496
+ protected:
497
+ /// Array of positive views
498
+ ViewArray<P> x;
499
+ /// Array of negative views
500
+ ViewArray<N> y;
501
+ /// Constant value
502
+ Val c;
503
+
504
+ /// Constructor for cloning \a p
505
+ Lin(Space& home, bool share, Lin<Val,P,N,pc>& p);
506
+ /// Constructor for creation
507
+ Lin(Home home, ViewArray<P>& x, ViewArray<N>& y, Val c);
508
+ public:
509
+ /// Cost function (defined as low linear)
510
+ virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
511
+ /// Delete propagator and return its size
512
+ virtual size_t dispose(Space& home);
513
+ };
514
+
515
+ /**
516
+ * \brief Base-class for reified n-ary linear propagators
517
+ *
518
+ * The type \a Val can be either \c double or \c int, defining the
519
+ * numerical precision during propagation. Positive views are of
520
+ * type \a P whereas negative views are of type \a N.
521
+ *
522
+ * The propagation condition \a pc refers to all views.
523
+ */
524
+ template<class Val, class P, class N, PropCond pc, class Ctrl>
525
+ class ReLin : public Lin<Val,P,N,pc> {
526
+ protected:
527
+ /// Control view for reification
528
+ Ctrl b;
529
+ /// Constructor for cloning \a p
530
+ ReLin(Space& home, bool share, ReLin& p);
531
+ /// Constructor for creation
532
+ ReLin(Home home, ViewArray<P>& x, ViewArray<N>& y, Val c, Ctrl b);
533
+ public:
534
+ /// Delete propagator and return its size
535
+ virtual size_t dispose(Space& home);
536
+ };
537
+
538
+ /**
539
+ * \brief Compute bounds information for positive views
540
+ *
541
+ * \relates Lin
542
+ */
543
+ template<class Val, class View>
544
+ void bounds_p(ModEventDelta med, ViewArray<View>& x,
545
+ Val& c, Val& sl, Val& su);
546
+
547
+ /**
548
+ * \brief Compute bounds information for negative views
549
+ *
550
+ * \relates Lin
551
+ */
552
+ template<class Val, class View>
553
+ void bounds_n(ModEventDelta med, ViewArray<View>& y,
554
+ Val& c, Val& sl, Val& su);
555
+
556
+ /**
557
+ * \brief %Propagator for bounds consistent n-ary linear equality
558
+ *
559
+ * The type \a Val can be either \c double or \c int, defining the
560
+ * numerical precision during propagation. The types \a P and \a N
561
+ * give the types of the views.
562
+ *
563
+ * The propagation condition \a pc refers to both views.
564
+ *
565
+ * Requires \code #include <gecode/int/linear.hh> \endcode
566
+ * \ingroup FuncIntProp
567
+ */
568
+ template<class Val, class P, class N>
569
+ class Eq : public Lin<Val,P,N,PC_INT_BND> {
570
+ protected:
571
+ using Lin<Val,P,N,PC_INT_BND>::x;
572
+ using Lin<Val,P,N,PC_INT_BND>::y;
573
+ using Lin<Val,P,N,PC_INT_BND>::c;
574
+
575
+ /// Constructor for cloning \a p
576
+ Eq(Space& home, bool share, Eq& p);
577
+ public:
578
+ /// Constructor for creation
579
+ Eq(Home home, ViewArray<P>& x, ViewArray<N>& y, Val c);
580
+ /// Create copy during cloning
581
+ virtual Actor* copy(Space& home, bool share);
582
+ /// Perform propagation
583
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
584
+ /// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i-\sum_{i=0}^{|y|-1}y_i=c\f$
585
+ static ExecStatus
586
+ post(Home home, ViewArray<P>& x, ViewArray<N>& y, Val c);
587
+ };
588
+
589
+ /**
590
+ * \brief %Propagator for domain consistent n-ary linear equality
591
+ *
592
+ * The type \a Val can be either \c double or \c int, defining the
593
+ * numerical precision during propagation. The types \a View
594
+ * give the type of the view.
595
+ *
596
+ * Requires \code #include <gecode/int/linear.hh> \endcode
597
+ * \ingroup FuncIntProp
598
+ */
599
+ template<class Val, class View>
600
+ class DomEq
601
+ : public Lin<Val,View,View,PC_INT_DOM> {
602
+ protected:
603
+ using Lin<Val,View,View,PC_INT_DOM>::x;
604
+ using Lin<Val,View,View,PC_INT_DOM>::y;
605
+ using Lin<Val,View,View,PC_INT_DOM>::c;
606
+
607
+ /// Constructor for cloning \a p
608
+ DomEq(Space& home, bool share, DomEq& p);
609
+ public:
610
+ /// Constructor for creation
611
+ DomEq(Home home, ViewArray<View>& x, ViewArray<View>& y, Val c);
612
+ /// Create copy during cloning
613
+ virtual Actor* copy(Space& home, bool share);
614
+ /**
615
+ * \brief Cost function
616
+ *
617
+ * If in stage for bounds propagation, the cost is
618
+ * low linear. Otherwise it is high crazy.
619
+ */
620
+ virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
621
+ /// Perform propagation
622
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
623
+ /// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i-\sum_{i=0}^{|y|-1}y_i=c\f$
624
+ static ExecStatus
625
+ post(Home home, ViewArray<View>& x, ViewArray<View>& y, Val c);
626
+ };
627
+
628
+ /**
629
+ * \brief %Propagator for reified bounds consistent n-ary linear equality
630
+ *
631
+ * The type \a Val can be either \c double or \c int, defining the
632
+ * numerical precision during propagation. The types \a P and \a N
633
+ * give the types of the views.
634
+ *
635
+ * The propagation condition \a pc refers to both views.
636
+ *
637
+ * Requires \code #include <gecode/int/linear.hh> \endcode
638
+ * \ingroup FuncIntProp
639
+ */
640
+ template<class Val, class P, class N, class Ctrl>
641
+ class ReEq : public ReLin<Val,P,N,PC_INT_BND,Ctrl> {
642
+ protected:
643
+ using ReLin<Val,P,N,PC_INT_BND,Ctrl>::x;
644
+ using ReLin<Val,P,N,PC_INT_BND,Ctrl>::y;
645
+ using ReLin<Val,P,N,PC_INT_BND,Ctrl>::c;
646
+ using ReLin<Val,P,N,PC_INT_BND,Ctrl>::b;
647
+
648
+ /// Constructor for cloning \a p
649
+ ReEq(Space& home, bool share, ReEq& p);
650
+ public:
651
+ /// Constructor for creation
652
+ ReEq(Home home, ViewArray<P>& x, ViewArray<N>& y, Val c, Ctrl b);
653
+ /// Create copy during cloning
654
+ virtual Actor* copy(Space& home, bool share);
655
+ /// Perform propagation
656
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
657
+ /// Post propagator for \f$\left(\sum_{i=0}^{|x|-1}x_i-\sum_{i=0}^{|y|-1}y_i=c\right)\Leftrightarrow b\f$
658
+ static ExecStatus
659
+ post(Home home, ViewArray<P>& x, ViewArray<N>& y, Val c, Ctrl b);
660
+ };
661
+
662
+ /**
663
+ * \brief %Propagator for bounds consistent n-ary linear disequality
664
+ *
665
+ * The type \a Val can be either \c double or \c int, defining the
666
+ * numerical precision during propagation. The types \a P and \a N
667
+ * give the types of the views.
668
+ *
669
+ * The propagation condition \a pc refers to both views.
670
+ *
671
+ * Requires \code #include <gecode/int/linear.hh> \endcode
672
+ * \ingroup FuncIntProp
673
+ */
674
+ template<class Val, class P, class N>
675
+ class Nq : public Lin<Val,P,N,PC_INT_VAL> {
676
+ protected:
677
+ using Lin<Val,P,N,PC_INT_VAL>::x;
678
+ using Lin<Val,P,N,PC_INT_VAL>::y;
679
+ using Lin<Val,P,N,PC_INT_VAL>::c;
680
+
681
+ /// Constructor for cloning \a p
682
+ Nq(Space& home, bool share, Nq& p);
683
+ public:
684
+ /// Constructor for creation
685
+ Nq(Home home, ViewArray<P>& x, ViewArray<N>& y, Val c);
686
+ /// Create copy during cloning
687
+ virtual Actor* copy(Space& home, bool share);
688
+ /// Perform propagation
689
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
690
+ /// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i-\sum_{i=0}^{|y|-1}y_i\neq c\f$
691
+ static ExecStatus
692
+ post(Home home, ViewArray<P>& x, ViewArray<N>& y, Val c);
693
+ };
694
+
695
+ /**
696
+ * \brief %Propagator for bounds consistent n-ary linear less or equal
697
+ *
698
+ * The type \a Val can be either \c double or \c int, defining the
699
+ * numerical precision during propagation. The types \a P and \a N
700
+ * give the types of the views.
701
+ *
702
+ * The propagation condition \a pc refers to both views.
703
+ *
704
+ * Requires \code #include <gecode/int/linear.hh> \endcode
705
+ * \ingroup FuncIntProp
706
+ */
707
+ template<class Val, class P, class N>
708
+ class Lq : public Lin<Val,P,N,PC_INT_BND> {
709
+ protected:
710
+ using Lin<Val,P,N,PC_INT_BND>::x;
711
+ using Lin<Val,P,N,PC_INT_BND>::y;
712
+ using Lin<Val,P,N,PC_INT_BND>::c;
713
+
714
+ /// Constructor for cloning \a p
715
+ Lq(Space& home, bool share, Lq& p);
716
+ public:
717
+ /// Constructor for creation
718
+ Lq(Home home, ViewArray<P>& x, ViewArray<N>& y, Val c);
719
+ /// Create copy during cloning
720
+ virtual Actor* copy(Space& home, bool share);
721
+ /// Perform propagation
722
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
723
+ /// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i-\sum_{i=0}^{|y|-1}y_i\leq c\f$
724
+ static ExecStatus
725
+ post(Home home, ViewArray<P>& x, ViewArray<N>& y, Val c);
726
+ };
727
+
728
+ /**
729
+ * \brief %Propagator for reified bounds consistent n-ary linear less or equal
730
+ *
731
+ * The type \a Val can be either \c double or \c int, defining the
732
+ * numerical precision during propagation. The types \a P and \a N
733
+ * give the types of the views.
734
+ *
735
+ * The propagation condition \a pc refers to both views.
736
+ *
737
+ * Requires \code #include <gecode/int/linear.hh> \endcode
738
+ * \ingroup FuncIntProp
739
+ */
740
+ template<class Val, class P, class N>
741
+ class ReLq : public ReLin<Val,P,N,PC_INT_BND,BoolView> {
742
+ protected:
743
+ using ReLin<Val,P,N,PC_INT_BND,BoolView>::x;
744
+ using ReLin<Val,P,N,PC_INT_BND,BoolView>::y;
745
+ using ReLin<Val,P,N,PC_INT_BND,BoolView>::c;
746
+ using ReLin<Val,P,N,PC_INT_BND,BoolView>::b;
747
+
748
+ /// Constructor for cloning \a p
749
+ ReLq(Space& home, bool share, ReLq& p);
750
+ public:
751
+ /// Constructor for creation
752
+ ReLq(Home home, ViewArray<P>& x, ViewArray<N>& y, Val c, BoolView b);
753
+ /// Create copy during cloning
754
+ virtual Actor* copy(Space& home, bool share);
755
+ /// Perform propagation
756
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
757
+ /// Post propagator for \f$\left(\sum_{i=0}^{|x|-1}x_i-\sum_{i=0}^{|y|-1}y_i\leq c\right)\Leftrightarrow b\f$
758
+ static ExecStatus
759
+ post(Home home, ViewArray<P>& x, ViewArray<N>& y, Val c, BoolView b);
760
+ };
761
+
762
+ }}}
763
+
764
+ #include <gecode/int/linear/int-nary.hpp>
765
+ #include <gecode/int/linear/int-dom.hpp>
766
+
767
+ namespace Gecode { namespace Int { namespace Linear {
768
+
769
+ /*
770
+ * Boolean linear propagators
771
+ *
772
+ */
773
+
774
+ /**
775
+ * \brief Baseclass for integer Boolean sum
776
+ *
777
+ */
778
+ template<class VX>
779
+ class LinBoolInt : public Propagator {
780
+ protected:
781
+ /// Council for managing single advisor
782
+ Council<Advisor> co;
783
+ /// Boolean views
784
+ ViewArray<VX> x;
785
+ /// Number of active subscriptions
786
+ int n_as;
787
+ /// Number of views that have or had subscriptions
788
+ int n_hs;
789
+ /// Righthandside
790
+ int c;
791
+ /// Normalize by removing unused views
792
+ void normalize(void);
793
+ /// Constructor for cloning \a p
794
+ LinBoolInt(Space& home, bool share, LinBoolInt& p);
795
+ /// Constructor for creation
796
+ LinBoolInt(Home home, ViewArray<VX>& x, int n_s, int c);
797
+ public:
798
+ /// Cost function (defined as high unary)
799
+ virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
800
+ /// Delete propagator and return its size
801
+ virtual size_t dispose(Space& home);
802
+ };
803
+
804
+ /**
805
+ * \brief %Propagator for integer equal to Boolean sum (cardinality)
806
+ *
807
+ * Requires \code #include <gecode/int/linear.hh> \endcode
808
+ * \ingroup FuncIntProp
809
+ */
810
+ template<class VX>
811
+ class EqBoolInt : public LinBoolInt<VX> {
812
+ protected:
813
+ using LinBoolInt<VX>::co;
814
+ using LinBoolInt<VX>::x;
815
+ using LinBoolInt<VX>::n_as;
816
+ using LinBoolInt<VX>::n_hs;
817
+ using LinBoolInt<VX>::c;
818
+ /// Constructor for cloning \a p
819
+ EqBoolInt(Space& home, bool share, EqBoolInt& p);
820
+ /// Constructor for creation
821
+ EqBoolInt(Home home, ViewArray<VX>& x, int c);
822
+ public:
823
+ /// Create copy during cloning
824
+ virtual Actor* copy(Space& home, bool share);
825
+ /// Give advice to propagator
826
+ virtual ExecStatus advise(Space& home, Advisor& a, const Delta& d);
827
+ /// Perform propagation
828
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
829
+ /// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i = c\f$
830
+ static ExecStatus post(Home home, ViewArray<VX>& x, int c);
831
+ };
832
+
833
+ /**
834
+ * \brief %Propagator for integer less or equal to Boolean sum (cardinality)
835
+ *
836
+ * Requires \code #include <gecode/int/linear.hh> \endcode
837
+ * \ingroup FuncIntProp
838
+ */
839
+ template<class VX>
840
+ class GqBoolInt : public LinBoolInt<VX> {
841
+ protected:
842
+ using LinBoolInt<VX>::co;
843
+ using LinBoolInt<VX>::x;
844
+ using LinBoolInt<VX>::n_as;
845
+ using LinBoolInt<VX>::n_hs;
846
+ using LinBoolInt<VX>::c;
847
+ /// Constructor for cloning \a p
848
+ GqBoolInt(Space& home, bool share, GqBoolInt& p);
849
+ /// Constructor for creation
850
+ GqBoolInt(Home home, ViewArray<VX>& x, int c);
851
+ public:
852
+ /// Create copy during cloning
853
+ virtual Actor* copy(Space& home, bool share);
854
+ /// Give advice to propagator
855
+ virtual ExecStatus advise(Space& home, Advisor& a, const Delta& d);
856
+ /// Perform propagation
857
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
858
+ /// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i \geq c\f$
859
+ static ExecStatus post(Home home, ViewArray<VX>& x, int c);
860
+ };
861
+
862
+ /**
863
+ * \brief %Propagator for integer disequal to Boolean sum (cardinality)
864
+ *
865
+ * Requires \code #include <gecode/int/linear.hh> \endcode
866
+ * \ingroup FuncIntProp
867
+ */
868
+ template<class VX>
869
+ class NqBoolInt : public BinaryPropagator<VX,PC_INT_VAL> {
870
+ protected:
871
+ using BinaryPropagator<VX,PC_INT_VAL>::x0;
872
+ using BinaryPropagator<VX,PC_INT_VAL>::x1;
873
+ /// Views not yet subscribed to
874
+ ViewArray<VX> x;
875
+ /// Righthandside
876
+ int c;
877
+ /// Update subscription
878
+ bool resubscribe(Space& home, VX& y);
879
+ /// Constructor for posting
880
+ NqBoolInt(Home home, ViewArray<VX>& b, int c);
881
+ /// Constructor for cloning \a p
882
+ NqBoolInt(Space& home, bool share, NqBoolInt<VX>& p);
883
+ public:
884
+ /// Copy propagator during cloning
885
+ virtual Actor* copy(Space& home, bool share);
886
+ /// Cost function (defined as low linear)
887
+ virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
888
+ /// Perform propagation
889
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
890
+ /// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i \neq c\f$
891
+ static ExecStatus post(Home home, ViewArray<VX>& b, int c);
892
+ /// Delete propagator and return its size
893
+ virtual size_t dispose(Space& home);
894
+ };
895
+
896
+
897
+ /**
898
+ * \brief Baseclass for reified integer Boolean sum
899
+ *
900
+ */
901
+ template<class VX, class VB>
902
+ class ReLinBoolInt : public Propagator {
903
+ protected:
904
+ /// Council for single advisor
905
+ Council<Advisor> co;
906
+ /// Views
907
+ ViewArray<VX> x;
908
+ /// Number of subscriptions
909
+ int n_s;
910
+ /// Righthandside
911
+ int c;
912
+ /// Control variable
913
+ VB b;
914
+ /// Normalize by removing unused views
915
+ void normalize(void);
916
+ /// Constructor for cloning \a p
917
+ ReLinBoolInt(Space& home, bool share, ReLinBoolInt& p);
918
+ /// Constructor for creation
919
+ ReLinBoolInt(Home home, ViewArray<VX>& x, int c, VB b);
920
+ public:
921
+ /// Cost function (defined as high unary)
922
+ virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
923
+ /// Delete propagator and return its size
924
+ virtual size_t dispose(Space& home);
925
+ };
926
+
927
+
928
+ /**
929
+ * \brief Traits for Boolean negation view
930
+ */
931
+ template<class BV>
932
+ class BoolNegTraits {};
933
+
934
+ /**
935
+ * \brief %Propagator for reified integer less or equal to Boolean sum (cardinality)
936
+ *
937
+ * Requires \code #include "gecode/int/linear.hh" \endcode
938
+ * \ingroup FuncIntProp
939
+ */
940
+ template<class VX, class VB>
941
+ class ReGqBoolInt : public ReLinBoolInt<VX,VB> {
942
+ protected:
943
+ using ReLinBoolInt<VX,VB>::co;
944
+ using ReLinBoolInt<VX,VB>::x;
945
+ using ReLinBoolInt<VX,VB>::c;
946
+ using ReLinBoolInt<VX,VB>::b;
947
+ using ReLinBoolInt<VX,VB>::n_s;
948
+ using ReLinBoolInt<VX,VB>::normalize;
949
+ /// Constructor for cloning \a p
950
+ ReGqBoolInt(Space& home, bool share, ReGqBoolInt& p);
951
+ /// Constructor for creation
952
+ ReGqBoolInt(Home home, ViewArray<VX>& x, int c, VB b);
953
+ public:
954
+ /// Create copy during cloning
955
+ virtual Actor* copy(Space& home, bool share);
956
+ /// Give advice to propagator
957
+ virtual ExecStatus advise(Space& home, Advisor& a, const Delta& d);
958
+ /// Perform propagation
959
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
960
+ /// Post propagator for \f$\left(\sum_{i=0}^{|x|-1}x_i \geq\right) c \Leftrightarrow b\f$
961
+ static ExecStatus post(Home home, ViewArray<VX>& x, int c, VB b);
962
+ };
963
+
964
+ /**
965
+ * \brief %Propagator for reified integer equal to Boolean sum (cardinality)
966
+ *
967
+ * Requires \code #include <gecode/int/linear.hh> \endcode
968
+ * \ingroup FuncIntProp
969
+ */
970
+ template<class VX, class VB>
971
+ class ReEqBoolInt : public ReLinBoolInt<VX,VB> {
972
+ protected:
973
+ using ReLinBoolInt<VX,VB>::co;
974
+ using ReLinBoolInt<VX,VB>::x;
975
+ using ReLinBoolInt<VX,VB>::c;
976
+ using ReLinBoolInt<VX,VB>::b;
977
+ using ReLinBoolInt<VX,VB>::n_s;
978
+ using ReLinBoolInt<VX,VB>::normalize;
979
+ /// Constructor for cloning \a p
980
+ ReEqBoolInt(Space& home, bool share, ReEqBoolInt& p);
981
+ /// Constructor for creation
982
+ ReEqBoolInt(Home home, ViewArray<VX>& x, int c, VB b);
983
+ public:
984
+ /// Create copy during cloning
985
+ virtual Actor* copy(Space& home, bool share);
986
+ /// Give advice to propagator
987
+ virtual ExecStatus advise(Space& home, Advisor& a, const Delta& d);
988
+ /// Perform propagation
989
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
990
+ /// Post propagator for \f$\left(\sum_{i=0}^{|x|-1}x_i = c\right)\Leftrightarrow b\f$
991
+ static ExecStatus post(Home home, ViewArray<VX>& x, int c, VB b);
992
+ };
993
+
994
+ }}}
995
+
996
+ #include <gecode/int/linear/bool-int.hpp>
997
+
998
+ namespace Gecode { namespace Int { namespace Linear {
999
+
1000
+ /**
1001
+ * \brief Base-class for Boolean linear propagators
1002
+ *
1003
+ */
1004
+ template<class XV, class YV>
1005
+ class LinBoolView : public Propagator {
1006
+ protected:
1007
+ /// Boolean views
1008
+ ViewArray<XV> x;
1009
+ /// View to compare number of assigned Boolean views to
1010
+ YV y;
1011
+ /// Righthandside (constant part from Boolean views assigned to 1)
1012
+ int c;
1013
+ /// Constructor for cloning \a p
1014
+ LinBoolView(Space& home, bool share, LinBoolView& p);
1015
+ /// Constructor for creation
1016
+ LinBoolView(Home home, ViewArray<XV>& x, YV y, int c);
1017
+ public:
1018
+ /// Cost function (defined as low linear)
1019
+ virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
1020
+ /// Delete propagator and return its size
1021
+ virtual size_t dispose(Space& home);
1022
+ };
1023
+
1024
+
1025
+ /**
1026
+ * \brief %Propagator for equality to Boolean sum (cardinality)
1027
+ *
1028
+ * Requires \code #include <gecode/int/linear.hh> \endcode
1029
+ * \ingroup FuncIntProp
1030
+ */
1031
+ template<class XV, class YV>
1032
+ class EqBoolView : public LinBoolView<XV,YV> {
1033
+ protected:
1034
+ using LinBoolView<XV,YV>::x;
1035
+ using LinBoolView<XV,YV>::y;
1036
+ using LinBoolView<XV,YV>::c;
1037
+
1038
+ /// Constructor for cloning \a p
1039
+ EqBoolView(Space& home, bool share, EqBoolView& p);
1040
+ /// Constructor for creation
1041
+ EqBoolView(Home home, ViewArray<XV>& x, YV y, int c);
1042
+ public:
1043
+ /// Create copy during cloning
1044
+ virtual Actor* copy(Space& home, bool share);
1045
+ /// Perform propagation
1046
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
1047
+ /// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i = y+c\f$
1048
+ static ExecStatus post(Home home, ViewArray<XV>& x, YV y, int c);
1049
+ };
1050
+
1051
+ /**
1052
+ * \brief %Propagator for disequality to Boolean sum (cardinality)
1053
+ *
1054
+ * Requires \code #include <gecode/int/linear.hh> \endcode
1055
+ * \ingroup FuncIntProp
1056
+ */
1057
+ template<class XV, class YV>
1058
+ class NqBoolView : public LinBoolView<XV,YV> {
1059
+ protected:
1060
+ using LinBoolView<XV,YV>::x;
1061
+ using LinBoolView<XV,YV>::y;
1062
+ using LinBoolView<XV,YV>::c;
1063
+
1064
+ /// Constructor for cloning \a p
1065
+ NqBoolView(Space& home, bool share, NqBoolView& p);
1066
+ /// Constructor for creation
1067
+ NqBoolView(Home home, ViewArray<XV>& x, YV y, int c);
1068
+ public:
1069
+ /// Create copy during cloning
1070
+ virtual Actor* copy(Space& home, bool share);
1071
+ /// Perform propagation
1072
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
1073
+ /// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i \neq y+c\f$
1074
+ static ExecStatus post(Home home, ViewArray<XV>& x, YV y, int c);
1075
+ };
1076
+
1077
+ /**
1078
+ * \brief %Propagator for greater or equal to Boolean sum (cardinality)
1079
+ *
1080
+ * Requires \code #include <gecode/int/linear.hh> \endcode
1081
+ * \ingroup FuncIntProp
1082
+ */
1083
+ template<class XV, class YV>
1084
+ class GqBoolView : public LinBoolView<XV,YV> {
1085
+ protected:
1086
+ using LinBoolView<XV,YV>::x;
1087
+ using LinBoolView<XV,YV>::y;
1088
+ using LinBoolView<XV,YV>::c;
1089
+
1090
+ /// Constructor for cloning \a p
1091
+ GqBoolView(Space& home, bool share, GqBoolView& p);
1092
+ /// Constructor for creation
1093
+ GqBoolView(Home home, ViewArray<XV>& x, YV y, int c);
1094
+ public:
1095
+ /// Create copy during cloning
1096
+ virtual Actor* copy(Space& home, bool share);
1097
+ /// Perform propagation
1098
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
1099
+ /// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i \geq y+c\f$
1100
+ static ExecStatus post(Home home, ViewArray<XV>& x, YV y, int c);
1101
+ };
1102
+
1103
+ }}}
1104
+
1105
+ #include <gecode/int/linear/bool-view.hpp>
1106
+
1107
+ namespace Gecode { namespace Int { namespace Linear {
1108
+
1109
+ /// Coefficient and Boolean view
1110
+ class ScaleBool {
1111
+ public:
1112
+ /// Integer coefficient
1113
+ int a;
1114
+ /// Boolean view
1115
+ BoolView x;
1116
+ };
1117
+
1118
+ /// Array of scale Boolean views
1119
+ class ScaleBoolArray {
1120
+ private:
1121
+ /// First entry in array
1122
+ ScaleBool* _fst;
1123
+ /// One after last entry in array
1124
+ ScaleBool* _lst;
1125
+ public:
1126
+ /// Default constructor
1127
+ ScaleBoolArray(void);
1128
+ /// Create array with \a n elements
1129
+ ScaleBoolArray(Space& home, int n);
1130
+ /// Subscribe propagator \a p
1131
+ void subscribe(Space& home, Propagator& p);
1132
+ /// Cancel propagator \a p
1133
+ void cancel(Space& home, Propagator& p);
1134
+ /// Update \a sba during copying
1135
+ void update(Space& home, bool share, ScaleBoolArray& sba);
1136
+ /// Return pointer to first element
1137
+ ScaleBool* fst(void) const;
1138
+ /// Return pointer after last element
1139
+ ScaleBool* lst(void) const;
1140
+ /// Set pointer to first element
1141
+ void fst(ScaleBool* f);
1142
+ /// Set pointer after last element
1143
+ void lst(ScaleBool* l);
1144
+ /// Test whether array is empty
1145
+ bool empty(void) const;
1146
+ /// Return number of elements
1147
+ int size(void) const;
1148
+ private:
1149
+ /// For sorting array in decreasing order of coefficients
1150
+ class ScaleDec {
1151
+ public:
1152
+ bool
1153
+ operator ()(const ScaleBool& x, const ScaleBool& y);
1154
+ };
1155
+ public:
1156
+ /// Sort array in decreasing order of coefficients
1157
+ void sort(void);
1158
+ };
1159
+
1160
+
1161
+ /// Empty array of scale Boolean views
1162
+ class EmptyScaleBoolArray {
1163
+ public:
1164
+ /// Default constructor
1165
+ EmptyScaleBoolArray(void);
1166
+ /// Create array with \a n elements
1167
+ EmptyScaleBoolArray(Space& home, int n);
1168
+ /// Subscribe propagator \a p
1169
+ void subscribe(Space& home, Propagator& p);
1170
+ /// Cancel propagator \a p
1171
+ void cancel(Space& home, Propagator& p);
1172
+ /// Update \a sba during copying
1173
+ void update(Space& home, bool share, EmptyScaleBoolArray& esba);
1174
+ /// Return pointer to first element
1175
+ ScaleBool* fst(void) const;
1176
+ /// Return pointer after last element
1177
+ ScaleBool* lst(void) const;
1178
+ /// Set pointer to first element
1179
+ void fst(ScaleBool* f);
1180
+ /// Set pointer after last element
1181
+ void lst(ScaleBool* l);
1182
+ /// Test whether array is empty
1183
+ bool empty(void) const;
1184
+ /// Return number of elements
1185
+ int size(void) const;
1186
+ /// Sort array in decreasing order of coefficients
1187
+ void sort(void);
1188
+ };
1189
+
1190
+
1191
+ /**
1192
+ * \brief Base class for linear Boolean constraints with coefficients
1193
+ *
1194
+ */
1195
+ template<class SBAP, class SBAN, class VX, PropCond pcx>
1196
+ class LinBoolScale : public Propagator {
1197
+ protected:
1198
+ /// Positive Boolean views with coefficients on left-hand side
1199
+ SBAP p;
1200
+ /// Negative Boolean views with coefficients on left-hand side
1201
+ SBAN n;
1202
+ /// Integer view on right-hand side
1203
+ VX x;
1204
+ /// Integer constant on right-hand side
1205
+ int c;
1206
+ public:
1207
+ /// Constructor for creation
1208
+ LinBoolScale(Home home, SBAP& p, SBAN& n, VX x, int c);
1209
+ /// Constructor for cloning \a pr
1210
+ LinBoolScale(Space& home, bool share, Propagator& pr,
1211
+ SBAP& p, SBAN& n, VX x, int c);
1212
+ /// Cost function (defined as low linear)
1213
+ virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
1214
+ /// Delete propagator and return its size
1215
+ virtual size_t dispose(Space& home);
1216
+ };
1217
+
1218
+ /**
1219
+ * \brief %Propagator for equality to Boolean sum with coefficients
1220
+ *
1221
+ * Requires \code #include <gecode/int/linear.hh> \endcode
1222
+ * \ingroup FuncIntProp
1223
+ */
1224
+ template<class SBAP, class SBAN, class VX>
1225
+ class EqBoolScale : public LinBoolScale<SBAP,SBAN,VX,PC_INT_BND> {
1226
+ protected:
1227
+ using LinBoolScale<SBAP,SBAN,VX,PC_INT_BND>::p;
1228
+ using LinBoolScale<SBAP,SBAN,VX,PC_INT_BND>::n;
1229
+ using LinBoolScale<SBAP,SBAN,VX,PC_INT_BND>::x;
1230
+ using LinBoolScale<SBAP,SBAN,VX,PC_INT_BND>::c;
1231
+ public:
1232
+ /// Constructor for creation
1233
+ EqBoolScale(Home home, SBAP& p, SBAN& n, VX x, int c);
1234
+ /// Constructor for cloning \a pr
1235
+ EqBoolScale(Space& home, bool share, Propagator& pr,
1236
+ SBAP& p, SBAN& n, VX x, int c);
1237
+ /// Create copy during cloning
1238
+ virtual Actor* copy(Space& home, bool share);
1239
+ /// Perform propagation
1240
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
1241
+ /// Post propagator
1242
+ static ExecStatus post(Home home, SBAP& p, SBAN& n, VX x, int c);
1243
+ };
1244
+
1245
+ /**
1246
+ * \brief %Propagator for inequality to Boolean sum with coefficients
1247
+ *
1248
+ * Requires \code #include <gecode/int/linear.hh> \endcode
1249
+ * \ingroup FuncIntProp
1250
+ */
1251
+ template<class SBAP, class SBAN, class VX>
1252
+ class LqBoolScale : public LinBoolScale<SBAP,SBAN,VX,PC_INT_BND> {
1253
+ protected:
1254
+ using LinBoolScale<SBAP,SBAN,VX,PC_INT_BND>::p;
1255
+ using LinBoolScale<SBAP,SBAN,VX,PC_INT_BND>::n;
1256
+ using LinBoolScale<SBAP,SBAN,VX,PC_INT_BND>::x;
1257
+ using LinBoolScale<SBAP,SBAN,VX,PC_INT_BND>::c;
1258
+ public:
1259
+ /// Constructor for creation
1260
+ LqBoolScale(Home home, SBAP& p, SBAN& n, VX x, int c);
1261
+ /// Constructor for cloning \a pr
1262
+ LqBoolScale(Space& home, bool share, Propagator& pr,
1263
+ SBAP& p, SBAN& n, VX x, int c);
1264
+ /// Create copy during cloning
1265
+ virtual Actor* copy(Space& home, bool share);
1266
+ /// Perform propagation
1267
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
1268
+ /// Post propagator
1269
+ static ExecStatus post(Home home, SBAP& p, SBAN& n, VX x, int c);
1270
+ };
1271
+
1272
+ /**
1273
+ * \brief %Propagator for disequality to Boolean sum with coefficients
1274
+ *
1275
+ * Requires \code #include <gecode/int/linear.hh> \endcode
1276
+ * \ingroup FuncIntProp
1277
+ */
1278
+ template<class SBAP, class SBAN, class VX>
1279
+ class NqBoolScale : public LinBoolScale<SBAP,SBAN,VX,PC_INT_VAL> {
1280
+ protected:
1281
+ using LinBoolScale<SBAP,SBAN,VX,PC_INT_VAL>::p;
1282
+ using LinBoolScale<SBAP,SBAN,VX,PC_INT_VAL>::n;
1283
+ using LinBoolScale<SBAP,SBAN,VX,PC_INT_VAL>::x;
1284
+ using LinBoolScale<SBAP,SBAN,VX,PC_INT_VAL>::c;
1285
+ public:
1286
+ /// Constructor for creation
1287
+ NqBoolScale(Home home, SBAP& p, SBAN& n, VX x, int c);
1288
+ /// Constructor for cloning \a pr
1289
+ NqBoolScale(Space& home, bool share, Propagator& pr,
1290
+ SBAP& p, SBAN& n, VX x, int c);
1291
+ /// Create copy during cloning
1292
+ virtual Actor* copy(Space& home, bool share);
1293
+ /// Perform propagation
1294
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
1295
+ /// Post propagator
1296
+ static ExecStatus post(Home home, SBAP& p, SBAN& n, VX x, int c);
1297
+ };
1298
+
1299
+ }}}
1300
+
1301
+ #include <gecode/int/linear/bool-scale.hpp>
1302
+
1303
+ namespace Gecode { namespace Int { namespace Linear {
1304
+
1305
+ /**
1306
+ * \brief Class for describing linear term \f$a\cdot x\f$
1307
+ *
1308
+ */
1309
+ template<class View>
1310
+ class Term {
1311
+ public:
1312
+ /// Coefficient
1313
+ int a;
1314
+ /// View
1315
+ View x;
1316
+ };
1317
+
1318
+ /** \brief Estimate lower and upper bounds
1319
+ *
1320
+ * Estimates the boundaries for a linear expression
1321
+ * \f$\sum_{i=0}^{n-1}t_i + c\f$. If the boundaries exceed
1322
+ * the limits as defined in Limits::Int, these boundaries
1323
+ * are returned.
1324
+ *
1325
+ * \param t array of linear terms
1326
+ * \param n size of array
1327
+ * \param c constant
1328
+ * \param l lower bound
1329
+ * \param u upper bound
1330
+ *
1331
+ */
1332
+ template<class View>
1333
+ void estimate(Term<View>* t, int n, int c,
1334
+ int& l, int& u);
1335
+
1336
+ /** \brief Normalize linear integer constraints
1337
+ *
1338
+ * \param t array of linear terms
1339
+ * \param n size of array
1340
+ * \param t_p array of linear terms over integers with positive coefficients
1341
+ * \param n_p number of postive terms
1342
+ * \param t_n array of linear terms over integers with negative coefficients
1343
+ * \param n_n number of negative terms
1344
+ *
1345
+ * Replaces all negative coefficients by positive coefficients.
1346
+ *
1347
+ * - Variables occuring multiply in the term array are replaced
1348
+ * by a single occurence: for example, \f$ax+bx\f$ becomes
1349
+ * \f$(a+b)x\f$.
1350
+ * - If in the above simplification the value for \f$(a+b)\f$ (or for
1351
+ * \f$a\f$ and \f$b\f$) exceeds the limits for integers as
1352
+ * defined in Limits::Int, an exception of type
1353
+ * Int::NumericalOverflow is thrown.
1354
+ *
1355
+ * Returns true, if all coefficients are unit coefficients
1356
+ */
1357
+ template<class View>
1358
+ bool normalize(Term<View>* t, int &n,
1359
+ Term<View>* &t_p, int &n_p,
1360
+ Term<View>* &t_n, int &n_n);
1361
+
1362
+
1363
+ /**
1364
+ * \brief Post propagator for linear constraint over integers
1365
+ * \param home current space
1366
+ * \param t array of linear terms over integers
1367
+ * \param n size of array
1368
+ * \param r type of relation
1369
+ * \param c result of linear constraint
1370
+ *
1371
+ * All variants for linear constraints share the following properties:
1372
+ * - Variables occuring multiply in the term array are replaced
1373
+ * by a single occurence: for example, \f$ax+bx\f$ becomes
1374
+ * \f$(a+b)x\f$.
1375
+ * - If in the above simplification the value for \f$(a+b)\f$ (or for
1376
+ * \f$a\f$ and \f$b\f$) exceeds the limits for integers as
1377
+ * defined in Limits::Int, an exception of type
1378
+ * Int::NumericalOverflow is thrown.
1379
+ * - Assume linear terms for the constraint
1380
+ * \f$\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_r c\f$.
1381
+ * If \f$|c|+\sum_{i=0}^{|x|-1}a_i\cdot x_i\f$ exceeds the limits
1382
+ * for doubles as defined in Limits::Int, an exception of
1383
+ * type Int::NumericalOverflow is thrown.
1384
+ * - In all other cases, the created propagators are accurate (that
1385
+ * is, they will not silently overflow during propagation).
1386
+ *
1387
+ * Requires \code #include <gecode/int/linear.hh> \endcode
1388
+ * \ingroup FuncIntProp
1389
+ */
1390
+ GECODE_INT_EXPORT void
1391
+ post(Home home, Term<IntView>* t, int n, IntRelType r, int c,
1392
+ IntConLevel=ICL_DEF);
1393
+
1394
+ /**
1395
+ * \brief Post reified propagator for linear constraint
1396
+ * \param home current space
1397
+ * \param t array of linear terms
1398
+ * \param n size of array
1399
+ * \param r type of relation
1400
+ * \param c result of linear constraint
1401
+ * \param b Boolean control view
1402
+ *
1403
+ * All variants for linear constraints share the following properties:
1404
+ * - Only bounds consistency is supported.
1405
+ * - Variables occuring multiply in the term array are replaced
1406
+ * by a single occurence: for example, \f$ax+bx\f$ becomes
1407
+ * \f$(a+b)x\f$.
1408
+ * - If in the above simplification the value for \f$(a+b)\f$ (or for
1409
+ * \f$a\f$ and \f$b\f$) exceeds the limits for integers as
1410
+ * defined in Limits::Int, an exception of type
1411
+ * Int::NumericalOverflow is thrown.
1412
+ * - Assume linear terms for the constraint
1413
+ * \f$\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_r c\f$.
1414
+ * If \f$|c|+\sum_{i=0}^{|x|-1}a_i\cdot x_i\f$ exceeds the limits
1415
+ * for doubles as defined in Limits::Int, an exception of
1416
+ * type Int::NumericalOverflow is thrown.
1417
+ * - In all other cases, the created propagators are accurate (that
1418
+ * is, they will not silently overflow during propagation).
1419
+ *
1420
+ * Requires \code #include <gecode/int/linear.hh> \endcode
1421
+ * \ingroup FuncIntProp
1422
+ */
1423
+ GECODE_INT_EXPORT void
1424
+ post(Home home, Term<IntView>* t, int n, IntRelType r, int c, BoolView b,
1425
+ IntConLevel=ICL_DEF);
1426
+
1427
+ /**
1428
+ * \brief Post propagator for linear constraint over Booleans
1429
+ * \param home current space
1430
+ * \param t array of linear terms over Booleans
1431
+ * \param n size of array
1432
+ * \param r type of relation
1433
+ * \param c result of linear constraint
1434
+ *
1435
+ * All variants for linear constraints share the following properties:
1436
+ * - Variables occuring multiply in the term array are replaced
1437
+ * by a single occurence: for example, \f$ax+bx\f$ becomes
1438
+ * \f$(a+b)x\f$.
1439
+ * - If in the above simplification the value for \f$(a+b)\f$ (or for
1440
+ * \f$a\f$ and \f$b\f$) exceeds the limits for integers as
1441
+ * defined in Limits::Int, an exception of type
1442
+ * Int::NumericalOverflow is thrown.
1443
+ * - Assume linear terms for the constraint
1444
+ * \f$\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_r c\f$.
1445
+ * If \f$|c|+\sum_{i=0}^{|x|-1}a_i\cdot x_i\f$ exceeds the limits
1446
+ * for integers as defined in Limits::Int, an exception of
1447
+ * type Int::NumericalOverflow is thrown.
1448
+ * - In all other cases, the created propagators are accurate (that
1449
+ * is, they will not silently overflow during propagation).
1450
+ *
1451
+ * Requires \code #include <gecode/int/linear.hh> \endcode
1452
+ * \ingroup FuncIntProp
1453
+ */
1454
+ GECODE_INT_EXPORT void
1455
+ post(Home home, Term<BoolView>* t, int n, IntRelType r, int c,
1456
+ IntConLevel=ICL_DEF);
1457
+
1458
+ /**
1459
+ * \brief Post propagator for reified linear constraint over Booleans
1460
+ * \param home current space
1461
+ * \param t array of linear terms over Booleans
1462
+ * \param n size of array
1463
+ * \param r type of relation
1464
+ * \param c result of linear constraint
1465
+ * \param b Boolean control varaible
1466
+ *
1467
+ * All variants for linear constraints share the following properties:
1468
+ * - Variables occuring multiply in the term array are replaced
1469
+ * by a single occurence: for example, \f$ax+bx\f$ becomes
1470
+ * \f$(a+b)x\f$.
1471
+ * - If in the above simplification the value for \f$(a+b)\f$ (or for
1472
+ * \f$a\f$ and \f$b\f$) exceeds the limits for integers as
1473
+ * defined in Limits::Int, an exception of type
1474
+ * Int::NumericalOverflow is thrown.
1475
+ * - Assume linear terms for the constraint
1476
+ * \f$\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_r c\f$.
1477
+ * If \f$|c|+\sum_{i=0}^{|x|-1}a_i\cdot x_i\f$ exceeds the limits
1478
+ * for integers as defined in Limits::Int, an exception of
1479
+ * type Int::NumericalOverflow is thrown.
1480
+ * - In all other cases, the created propagators are accurate (that
1481
+ * is, they will not silently overflow during propagation).
1482
+ *
1483
+ * Requires \code #include <gecode/int/linear.hh> \endcode
1484
+ * \ingroup FuncIntProp
1485
+ */
1486
+ GECODE_INT_EXPORT void
1487
+ post(Home home, Term<BoolView>* t, int n, IntRelType r, int c, BoolView b,
1488
+ IntConLevel=ICL_DEF);
1489
+
1490
+ /**
1491
+ * \brief Post propagator for linear constraint over Booleans
1492
+ * \param home current space
1493
+ * \param t array of linear terms over Booleans
1494
+ * \param n size of array
1495
+ * \param r type of relation
1496
+ * \param y variable right hand side of linear constraint
1497
+ * \param c constant right hand side of linear constraint
1498
+ *
1499
+ * All variants for linear constraints share the following properties:
1500
+ * - Variables occuring multiply in the term array are replaced
1501
+ * by a single occurence: for example, \f$ax+bx\f$ becomes
1502
+ * \f$(a+b)x\f$.
1503
+ * - If in the above simplification the value for \f$(a+b)\f$ (or for
1504
+ * \f$a\f$ and \f$b\f$) exceeds the limits for integers as
1505
+ * defined in Limits::Int, an exception of type
1506
+ * Int::NumericalOverflow is thrown.
1507
+ * - Assume linear terms for the constraint
1508
+ * \f$\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_r c\f$.
1509
+ * If \f$|c|+\sum_{i=0}^{|x|-1}a_i\cdot x_i\f$ exceeds the limits
1510
+ * for integers as defined in Limits::Int, an exception of
1511
+ * type Int::NumericalOverflow is thrown.
1512
+ * - In all other cases, the created propagators are accurate (that
1513
+ * is, they will not silently overflow during propagation).
1514
+ *
1515
+ * Requires \code #include <gecode/int/linear.hh> \endcode
1516
+ * \ingroup FuncIntProp
1517
+ */
1518
+ GECODE_INT_EXPORT void
1519
+ post(Home home, Term<BoolView>* t, int n, IntRelType r, IntView y, int c=0,
1520
+ IntConLevel=ICL_DEF);
1521
+
1522
+ /**
1523
+ * \brief Post propagator for reified linear constraint over Booleans
1524
+ * \param home current space
1525
+ * \param t array of linear terms over Booleans
1526
+ * \param n size of array
1527
+ * \param r type of relation
1528
+ * \param y variable right hand side of linear constraint
1529
+ * \param b Boolean control variable
1530
+ *
1531
+ * All variants for linear constraints share the following properties:
1532
+ * - Variables occuring multiply in the term array are replaced
1533
+ * by a single occurence: for example, \f$ax+bx\f$ becomes
1534
+ * \f$(a+b)x\f$.
1535
+ * - If in the above simplification the value for \f$(a+b)\f$ (or for
1536
+ * \f$a\f$ and \f$b\f$) exceeds the limits for integers as
1537
+ * defined in Limits::Int, an exception of type
1538
+ * Int::NumericalOverflow is thrown.
1539
+ * - Assume linear terms for the constraint
1540
+ * \f$\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_r c\f$.
1541
+ * If \f$|c|+\sum_{i=0}^{|x|-1}a_i\cdot x_i\f$ exceeds the limits
1542
+ * for integers as defined in Limits::Int, an exception of
1543
+ * type Int::NumericalOverflow is thrown.
1544
+ * - In all other cases, the created propagators are accurate (that
1545
+ * is, they will not silently overflow during propagation).
1546
+ *
1547
+ * Requires \code #include <gecode/int/linear.hh> \endcode
1548
+ * \ingroup FuncIntProp
1549
+ */
1550
+ GECODE_INT_EXPORT void
1551
+ post(Home home, Term<BoolView>* t, int n, IntRelType r, IntView y,
1552
+ BoolView b, IntConLevel=ICL_DEF);
1553
+
1554
+ }}}
1555
+
1556
+ #include <gecode/int/linear/post.hpp>
1557
+
1558
+ #endif
1559
+
1560
+ // STATISTICS: int-prop