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,241 @@
1
+ /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Main authors:
4
+ * Christian Schulte <schulte@gecode.org>
5
+ *
6
+ * Copyright:
7
+ * Christian Schulte, 2006
8
+ *
9
+ * Last modified:
10
+ * $Date: 2011-06-20 19:16:03 +1000 (Mon, 20 Jun 2011) $ by $Author: schulte $
11
+ * $Revision: 12058 $
12
+ *
13
+ * This file is part of Gecode, the generic constraint
14
+ * development environment:
15
+ * http://www.gecode.org
16
+ *
17
+ * Permission is hereby granted, free of charge, to any person obtaining
18
+ * a copy of this software and associated documentation files (the
19
+ * "Software"), to deal in the Software without restriction, including
20
+ * without limitation the rights to use, copy, modify, merge, publish,
21
+ * distribute, sublicense, and/or sell copies of the Software, and to
22
+ * permit persons to whom the Software is furnished to do so, subject to
23
+ * the following conditions:
24
+ *
25
+ * The above copyright notice and this permission notice shall be
26
+ * included in all copies or substantial portions of the Software.
27
+ *
28
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
29
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
30
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
31
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
32
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
33
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
34
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
35
+ *
36
+ */
37
+
38
+ namespace Gecode { namespace Int { namespace Bool {
39
+
40
+ /*
41
+ * Less or equal propagator
42
+ *
43
+ */
44
+
45
+ template<class BV>
46
+ forceinline
47
+ Lq<BV>::Lq(Home home, BV b0, BV b1)
48
+ : BoolBinary<BV,BV>(home,b0,b1) {}
49
+
50
+ template<class BV>
51
+ forceinline
52
+ Lq<BV>::Lq(Space& home, bool share, Lq<BV>& p)
53
+ : BoolBinary<BV,BV>(home,share,p) {}
54
+
55
+ template<class BV>
56
+ Actor*
57
+ Lq<BV>::copy(Space& home, bool share) {
58
+ return new (home) Lq<BV>(home,share,*this);
59
+ }
60
+
61
+ template<class BV>
62
+ inline ExecStatus
63
+ Lq<BV>::post(Home home, BV b0, BV b1) {
64
+ if (b0.zero()) {
65
+ return ES_OK;
66
+ } else if (b0.one()) {
67
+ GECODE_ME_CHECK(b1.one(home));
68
+ } else if (b1.zero()) {
69
+ GECODE_ME_CHECK(b0.zero(home));
70
+ } else if (b1.one()) {
71
+ return ES_OK;
72
+ } else {
73
+ (void) new (home) Lq<BV>(home,b0,b1);
74
+ }
75
+ return ES_OK;
76
+ }
77
+
78
+ template<class BV>
79
+ ExecStatus
80
+ Lq<BV>::propagate(Space& home, const ModEventDelta&) {
81
+ #define GECODE_INT_STATUS(S0,S1) \
82
+ ((BV::S0<<(1*BV::BITS))|(BV::S1<<(0*BV::BITS)))
83
+ switch ((x0.status()<<(1*BV::BITS)) | (x1.status()<<(0*BV::BITS))) {
84
+ case GECODE_INT_STATUS(NONE,NONE):
85
+ GECODE_NEVER;
86
+ case GECODE_INT_STATUS(NONE,ZERO):
87
+ GECODE_ME_CHECK(x0.zero_none(home)); break;
88
+ case GECODE_INT_STATUS(NONE,ONE):
89
+ case GECODE_INT_STATUS(ZERO,NONE):
90
+ case GECODE_INT_STATUS(ZERO,ZERO):
91
+ case GECODE_INT_STATUS(ZERO,ONE):
92
+ break;
93
+ case GECODE_INT_STATUS(ONE,NONE):
94
+ GECODE_ME_CHECK(x1.one_none(home)); break;
95
+ case GECODE_INT_STATUS(ONE,ZERO):
96
+ return ES_FAILED;
97
+ case GECODE_INT_STATUS(ONE,ONE):
98
+ break;
99
+ default:
100
+ GECODE_NEVER;
101
+ }
102
+ return home.ES_SUBSUMED(*this);
103
+ #undef GECODE_INT_STATUS
104
+ }
105
+
106
+
107
+ /*
108
+ * N-ary Boolean less or equal propagator
109
+ *
110
+ */
111
+
112
+ template<class VX>
113
+ forceinline
114
+ NaryLq<VX>::NaryLq(Home home, ViewArray<VX>& x)
115
+ : NaryPropagator<VX,PC_BOOL_NONE>(home,x),
116
+ run(false), n_zero(0), n_one(0), c(home) {
117
+ x.subscribe(home,*new (home) Advisor(home,*this,c));
118
+ }
119
+
120
+ template<class VX>
121
+ forceinline
122
+ NaryLq<VX>::NaryLq(Space& home, bool share, NaryLq<VX>& p)
123
+ : NaryPropagator<VX,PC_BOOL_NONE>(home,share,p),
124
+ run(false), n_zero(0), n_one(0) {
125
+ c.update(home,share,p.c);
126
+ }
127
+
128
+ template<class VX>
129
+ Actor*
130
+ NaryLq<VX>::copy(Space& home, bool share) {
131
+ return new (home) NaryLq<VX>(home,share,*this);
132
+ }
133
+
134
+ template<class VX>
135
+ inline ExecStatus
136
+ NaryLq<VX>::post(Home home, ViewArray<VX>& x) {
137
+ int i = 0;
138
+ while (i < x.size())
139
+ if (x[i].zero()) {
140
+ // All x[j] left of i must be zero as well
141
+ for (int j=i; j--; )
142
+ GECODE_ME_CHECK(x[j].zero_none(home));
143
+ x.drop_fst(i+1); i=0;
144
+ } else if (x[i].one()) {
145
+ // All x[j] right of i must be one as well
146
+ for (int j=i+1; j<x.size(); j++)
147
+ GECODE_ME_CHECK(x[j].one(home));
148
+ x.drop_lst(i-1); break;
149
+ } else {
150
+ i++;
151
+ }
152
+
153
+ if (x.size() == 2)
154
+ return Lq<VX>::post(home,x[0],x[1]);
155
+ if (x.size() > 2)
156
+ (void) new (home) NaryLq(home,x);
157
+ return ES_OK;
158
+ }
159
+
160
+ template<class VX>
161
+ PropCost
162
+ NaryLq<VX>::cost(const Space&, const ModEventDelta&) const {
163
+ return PropCost::binary(PropCost::LO);
164
+ }
165
+
166
+ template<class VX>
167
+ ExecStatus
168
+ NaryLq<VX>::advise(Space&, Advisor&, const Delta& d) {
169
+ if (VX::zero(d))
170
+ n_zero++;
171
+ else
172
+ n_one++;
173
+ return run ? ES_FIX : ES_NOFIX;
174
+ }
175
+
176
+ template<class VX>
177
+ forceinline size_t
178
+ NaryLq<VX>::dispose(Space& home) {
179
+ Advisors<Advisor> as(c);
180
+ x.cancel(home,as.advisor());
181
+ c.dispose(home);
182
+ (void) NaryPropagator<VX,PC_BOOL_NONE>::dispose(home);
183
+ return sizeof(*this);
184
+ }
185
+
186
+ template<class VX>
187
+ ExecStatus
188
+ NaryLq<VX>::propagate(Space& home, const ModEventDelta&) {
189
+ run = true;
190
+ while (n_zero > 0) {
191
+ int i = 0;
192
+ while (x[i].none())
193
+ i++;
194
+ if (x[i].one())
195
+ return ES_FAILED;
196
+ // As the x[j] might be shared, only zero() but not zero_none()
197
+ for (int j=i; j--; )
198
+ GECODE_ME_CHECK(x[j].zero(home));
199
+ n_zero -= i + 1;
200
+ assert(n_zero >= 0);
201
+ x.drop_fst(i+1);
202
+ }
203
+
204
+ while (n_one > 0) {
205
+ int i = x.size() - 1;
206
+ while (x[i].none())
207
+ i--;
208
+ assert(x[i].one());
209
+ // As the x[j] might be shared, only one() but not one_none()
210
+ for (int j=i+1; j<x.size(); j++)
211
+ GECODE_ME_CHECK(x[j].one(home));
212
+ n_one -= x.size() - i;
213
+ assert(n_one >= 0);
214
+ x.drop_lst(i-1);
215
+ }
216
+
217
+ if (x.size() < 2)
218
+ return home.ES_SUBSUMED(*this);
219
+
220
+ run = false;
221
+ return ES_FIX;
222
+ }
223
+
224
+
225
+ /*
226
+ * Less posting
227
+ *
228
+ */
229
+
230
+ template<class BV>
231
+ forceinline ExecStatus
232
+ Le<BV>::post(Home home, BV b0, BV b1) {
233
+ GECODE_ME_CHECK(b0.zero(home));
234
+ GECODE_ME_CHECK(b1.one(home));
235
+ return ES_OK;
236
+ }
237
+
238
+ }}}
239
+
240
+ // STATISTICS: int-prop
241
+
@@ -0,0 +1,850 @@
1
+ /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Main authors:
4
+ * Christian Schulte <schulte@gecode.org>
5
+ *
6
+ * Copyright:
7
+ * Christian Schulte, 2004
8
+ *
9
+ * Last modified:
10
+ * $Date: 2011-07-07 22:43:42 +1000 (Thu, 07 Jul 2011) $ by $Author: schulte $
11
+ * $Revision: 12161 $
12
+ *
13
+ * This file is part of Gecode, the generic constraint
14
+ * development environment:
15
+ * http://www.gecode.org
16
+ *
17
+ * Permission is hereby granted, free of charge, to any person obtaining
18
+ * a copy of this software and associated documentation files (the
19
+ * "Software"), to deal in the Software without restriction, including
20
+ * without limitation the rights to use, copy, modify, merge, publish,
21
+ * distribute, sublicense, and/or sell copies of the Software, and to
22
+ * permit persons to whom the Software is furnished to do so, subject to
23
+ * the following conditions:
24
+ *
25
+ * The above copyright notice and this permission notice shall be
26
+ * included in all copies or substantial portions of the Software.
27
+ *
28
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
29
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
30
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
31
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
32
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
33
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
34
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
35
+ *
36
+ */
37
+
38
+ namespace Gecode { namespace Int { namespace Bool {
39
+
40
+ /// Binary Boolean disjunction propagator (subsumed)
41
+ template<class BV>
42
+ class OrTrueSubsumed : public BoolBinary<BV,BV> {
43
+ protected:
44
+ using BoolBinary<BV,BV>::x0;
45
+ using BoolBinary<BV,BV>::x1;
46
+ /// Constructor for cloning \a p
47
+ OrTrueSubsumed(Space& home, bool share, OrTrueSubsumed& p);
48
+ /// Post propagator
49
+ static ExecStatus post(Home home, BV b0, BV b1);
50
+ public:
51
+ /// Constructor
52
+ OrTrueSubsumed(Home home, BV b0, BV b1);
53
+ /// Constructor for rewriting \a p during cloning
54
+ OrTrueSubsumed(Space& home, bool share, Propagator& p,
55
+ BV b0, BV b1);
56
+ /// Copy propagator during cloning
57
+ virtual Actor* copy(Space& home, bool share);
58
+ /// Perform propagation
59
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
60
+ };
61
+
62
+ template<class BV>
63
+ forceinline
64
+ OrTrueSubsumed<BV>::OrTrueSubsumed
65
+ (Home home, BV b0, BV b1)
66
+ : BoolBinary<BV,BV>(home,b0,b1) {}
67
+
68
+ template<class BV>
69
+ forceinline ExecStatus
70
+ OrTrueSubsumed<BV>::post(Home home, BV b0, BV b1) {
71
+ (void) new (home) OrTrueSubsumed(home,b0,b1);
72
+ return ES_OK;
73
+ }
74
+
75
+ template<class BV>
76
+ forceinline
77
+ OrTrueSubsumed<BV>::OrTrueSubsumed
78
+ (Space& home, bool share, OrTrueSubsumed<BV>& p)
79
+ : BoolBinary<BV,BV>(home,share,p) {}
80
+
81
+ template<class BV>
82
+ forceinline
83
+ OrTrueSubsumed<BV>::OrTrueSubsumed(Space& home, bool share, Propagator& p,
84
+ BV b0, BV b1)
85
+ : BoolBinary<BV,BV>(home,share,p,b0,b1) {}
86
+
87
+ template<class BV>
88
+ Actor*
89
+ OrTrueSubsumed<BV>::copy(Space& home, bool share) {
90
+ return new (home) OrTrueSubsumed<BV>(home,share,*this);
91
+ }
92
+
93
+ template<class BV>
94
+ ExecStatus
95
+ OrTrueSubsumed<BV>::propagate(Space& home, const ModEventDelta&) {
96
+ return home.ES_SUBSUMED(*this);
97
+ }
98
+
99
+
100
+ /*
101
+ * Binary Boolean disjunction propagator (true)
102
+ *
103
+ */
104
+
105
+ template<class BVA, class BVB>
106
+ forceinline
107
+ BinOrTrue<BVA,BVB>::BinOrTrue(Home home, BVA b0, BVB b1)
108
+ : BoolBinary<BVA,BVB>(home,b0,b1) {}
109
+
110
+ template<class BVA, class BVB>
111
+ forceinline
112
+ BinOrTrue<BVA,BVB>::BinOrTrue(Space& home, bool share, BinOrTrue<BVA,BVB>& p)
113
+ : BoolBinary<BVA,BVB>(home,share,p) {}
114
+
115
+ template<class BVA, class BVB>
116
+ forceinline
117
+ BinOrTrue<BVA,BVB>::BinOrTrue(Space& home, bool share, Propagator& p,
118
+ BVA b0, BVB b1)
119
+ : BoolBinary<BVA,BVB>(home,share,p,b0,b1) {}
120
+
121
+ template<class BVA, class BVB>
122
+ Actor*
123
+ BinOrTrue<BVA,BVB>::copy(Space& home, bool share) {
124
+ return new (home) BinOrTrue<BVA,BVB>(home,share,*this);
125
+ }
126
+
127
+ template<class BVA, class BVB>
128
+ inline ExecStatus
129
+ BinOrTrue<BVA,BVB>::post(Home home, BVA b0, BVB b1) {
130
+ switch (bool_test(b0,b1)) {
131
+ case BT_SAME:
132
+ GECODE_ME_CHECK(b0.one(home));
133
+ break;
134
+ case BT_COMP:
135
+ break;
136
+ case BT_NONE:
137
+ if (b0.zero()) {
138
+ GECODE_ME_CHECK(b1.one(home));
139
+ } else if (b1.zero()) {
140
+ GECODE_ME_CHECK(b0.one(home));
141
+ } else if (!b0.one() && !b1.one()) {
142
+ (void) new (home) BinOrTrue<BVA,BVB>(home,b0,b1);
143
+ }
144
+ break;
145
+ default: GECODE_NEVER;
146
+ }
147
+ return ES_OK;
148
+ }
149
+
150
+ template<class BVA, class BVB>
151
+ ExecStatus
152
+ BinOrTrue<BVA,BVB>::propagate(Space& home, const ModEventDelta&) {
153
+ #define GECODE_INT_STATUS(S0,S1) \
154
+ ((BVA::S0<<(1*BVA::BITS))|(BVB::S1<<(0*BVB::BITS)))
155
+ switch ((x0.status() << (1*BVA::BITS)) | (x1.status() << (0*BVB::BITS))) {
156
+ case GECODE_INT_STATUS(NONE,NONE):
157
+ GECODE_NEVER;
158
+ case GECODE_INT_STATUS(NONE,ZERO):
159
+ GECODE_ME_CHECK(x0.one_none(home)); break;
160
+ case GECODE_INT_STATUS(NONE,ONE):
161
+ break;
162
+ case GECODE_INT_STATUS(ZERO,NONE):
163
+ GECODE_ME_CHECK(x1.one_none(home)); break;
164
+ case GECODE_INT_STATUS(ZERO,ZERO):
165
+ return ES_FAILED;
166
+ case GECODE_INT_STATUS(ZERO,ONE):
167
+ case GECODE_INT_STATUS(ONE,NONE):
168
+ case GECODE_INT_STATUS(ONE,ZERO):
169
+ case GECODE_INT_STATUS(ONE,ONE):
170
+ break;
171
+ default:
172
+ GECODE_NEVER;
173
+ }
174
+ return home.ES_SUBSUMED(*this);
175
+ #undef GECODE_INT_STATUS
176
+ }
177
+
178
+ /*
179
+ * Boolean disjunction propagator (true)
180
+ *
181
+ */
182
+
183
+ template<class BV>
184
+ forceinline
185
+ TerOrTrue<BV>::TerOrTrue(Home home, BV b0, BV b1, BV b2)
186
+ : BoolBinary<BV,BV>(home,b0,b1), x2(b2) {}
187
+
188
+ template<class BV>
189
+ forceinline size_t
190
+ TerOrTrue<BV>::dispose(Space& home) {
191
+ (void) BoolBinary<BV,BV>::dispose(home);
192
+ return sizeof(*this);
193
+ }
194
+
195
+ template<class BV>
196
+ forceinline
197
+ TerOrTrue<BV>::TerOrTrue(Space& home, bool share, TerOrTrue<BV>& p)
198
+ : BoolBinary<BV,BV>(home,share,p) {
199
+ x2.update(home,share,p.x2);
200
+ }
201
+
202
+ template<class BV>
203
+ forceinline
204
+ TerOrTrue<BV>::TerOrTrue(Space& home, bool share, Propagator& p,
205
+ BV b0, BV b1, BV b2)
206
+ : BoolBinary<BV,BV>(home,share,p,b0,b1) {
207
+ x2.update(home,share,b2);
208
+ }
209
+
210
+ template<class BV>
211
+ Actor*
212
+ TerOrTrue<BV>::copy(Space& home, bool share) {
213
+ assert(x0.none() && x1.none());
214
+ if (x2.one())
215
+ return new (home) OrTrueSubsumed<BV>(home,share,*this,x0,x1);
216
+ else if (x2.zero())
217
+ return new (home) BinOrTrue<BV,BV>(home,share,*this,x0,x1);
218
+ else
219
+ return new (home) TerOrTrue<BV>(home,share,*this);
220
+ }
221
+
222
+ template<class BV>
223
+ forceinline ExecStatus
224
+ TerOrTrue<BV>::post(Home home, BV b0, BV b1, BV b2) {
225
+ (void) new (home) TerOrTrue<BV>(home,b0,b1,b2);
226
+ return ES_OK;
227
+ }
228
+
229
+ template<class BV>
230
+ ExecStatus
231
+ TerOrTrue<BV>::propagate(Space& home, const ModEventDelta&) {
232
+ #define GECODE_INT_STATUS(S0,S1,S2) \
233
+ ((BV::S0<<(2*BV::BITS))|(BV::S1<<(1*BV::BITS))|(BV::S2<<(0*BV::BITS)))
234
+ switch ((x0.status() << (2*BV::BITS)) | (x1.status() << (1*BV::BITS)) |
235
+ (x2.status() << (0*BV::BITS))) {
236
+ case GECODE_INT_STATUS(NONE,NONE,NONE):
237
+ case GECODE_INT_STATUS(NONE,NONE,ZERO):
238
+ case GECODE_INT_STATUS(NONE,NONE,ONE):
239
+ GECODE_NEVER;
240
+ case GECODE_INT_STATUS(NONE,ZERO,NONE):
241
+ std::swap(x1,x2); x1.subscribe(home,*this,PC_BOOL_VAL);
242
+ return ES_FIX;
243
+ case GECODE_INT_STATUS(NONE,ZERO,ZERO):
244
+ GECODE_ME_CHECK(x0.one_none(home)); break;
245
+ case GECODE_INT_STATUS(NONE,ZERO,ONE):
246
+ case GECODE_INT_STATUS(NONE,ONE,NONE):
247
+ case GECODE_INT_STATUS(NONE,ONE,ZERO):
248
+ case GECODE_INT_STATUS(NONE,ONE,ONE):
249
+ break;
250
+ case GECODE_INT_STATUS(ZERO,NONE,NONE):
251
+ std::swap(x0,x2); x0.subscribe(home,*this,PC_BOOL_VAL);
252
+ return ES_FIX;
253
+ case GECODE_INT_STATUS(ZERO,NONE,ZERO):
254
+ GECODE_ME_CHECK(x1.one_none(home)); break;
255
+ case GECODE_INT_STATUS(ZERO,NONE,ONE):
256
+ break;
257
+ case GECODE_INT_STATUS(ZERO,ZERO,NONE):
258
+ GECODE_ME_CHECK(x2.one_none(home)); break;
259
+ case GECODE_INT_STATUS(ZERO,ZERO,ZERO):
260
+ return ES_FAILED;
261
+ case GECODE_INT_STATUS(ZERO,ZERO,ONE):
262
+ case GECODE_INT_STATUS(ZERO,ONE,NONE):
263
+ case GECODE_INT_STATUS(ZERO,ONE,ZERO):
264
+ case GECODE_INT_STATUS(ZERO,ONE,ONE):
265
+ case GECODE_INT_STATUS(ONE,NONE,NONE):
266
+ case GECODE_INT_STATUS(ONE,NONE,ZERO):
267
+ case GECODE_INT_STATUS(ONE,NONE,ONE):
268
+ case GECODE_INT_STATUS(ONE,ZERO,NONE):
269
+ case GECODE_INT_STATUS(ONE,ZERO,ZERO):
270
+ case GECODE_INT_STATUS(ONE,ZERO,ONE):
271
+ case GECODE_INT_STATUS(ONE,ONE,NONE):
272
+ case GECODE_INT_STATUS(ONE,ONE,ZERO):
273
+ case GECODE_INT_STATUS(ONE,ONE,ONE):
274
+ break;
275
+ default:
276
+ GECODE_NEVER;
277
+ }
278
+ return home.ES_SUBSUMED(*this);
279
+ #undef GECODE_INT_STATUS
280
+ }
281
+
282
+ /*
283
+ * Boolean disjunction propagator (true)
284
+ *
285
+ */
286
+
287
+ template<class BV>
288
+ forceinline
289
+ QuadOrTrue<BV>::QuadOrTrue(Home home, BV b0, BV b1, BV b2, BV b3)
290
+ : BoolBinary<BV,BV>(home,b0,b1), x2(b2), x3(b3) {}
291
+
292
+ template<class BV>
293
+ forceinline size_t
294
+ QuadOrTrue<BV>::dispose(Space& home) {
295
+ (void) BoolBinary<BV,BV>::dispose(home);
296
+ return sizeof(*this);
297
+ }
298
+
299
+ template<class BV>
300
+ forceinline
301
+ QuadOrTrue<BV>::QuadOrTrue(Space& home, bool share, QuadOrTrue<BV>& p)
302
+ : BoolBinary<BV,BV>(home,share,p) {
303
+ x2.update(home,share,p.x2);
304
+ x3.update(home,share,p.x3);
305
+ }
306
+
307
+ template<class BV>
308
+ forceinline
309
+ QuadOrTrue<BV>::QuadOrTrue(Space& home, bool share, Propagator& p,
310
+ BV b0, BV b1, BV b2, BV b3)
311
+ : BoolBinary<BV,BV>(home,share,p,b0,b1) {
312
+ x2.update(home,share,b2);
313
+ x3.update(home,share,b3);
314
+ }
315
+
316
+ template<class BV>
317
+ Actor*
318
+ QuadOrTrue<BV>::copy(Space& home, bool share) {
319
+ assert(x0.none() && x1.none());
320
+ if (x2.one() || x3.one())
321
+ return new (home) OrTrueSubsumed<BV>(home,share,*this,x0,x1);
322
+ else if (x2.zero() && x3.zero())
323
+ return new (home) BinOrTrue<BV,BV>(home,share,*this,x0,x1);
324
+ else if (x2.zero())
325
+ return new (home) TerOrTrue<BV>(home,share,*this,x0,x1,x3);
326
+ else if (x3.zero())
327
+ return new (home) TerOrTrue<BV>(home,share,*this,x0,x1,x2);
328
+ else
329
+ return new (home) QuadOrTrue<BV>(home,share,*this);
330
+ }
331
+
332
+ template<class BV>
333
+ forceinline ExecStatus
334
+ QuadOrTrue<BV>::post(Home home, BV b0, BV b1, BV b2, BV b3) {
335
+ (void) new (home) QuadOrTrue<BV>(home,b0,b1,b2,b3);
336
+ return ES_OK;
337
+ }
338
+
339
+ template<class BV>
340
+ ExecStatus
341
+ QuadOrTrue<BV>::propagate(Space& home, const ModEventDelta&) {
342
+ #define GECODE_INT_STATUS(S0,S1,S2,S3) \
343
+ ((BV::S0 << (3*BV::BITS)) | (BV::S1 << (2*BV::BITS)) | \
344
+ (BV::S2 << (1*BV::BITS)) | (BV::S3 << (0*BV::BITS)))
345
+ switch ((x0.status() << (3*BV::BITS)) | (x1.status() << (2*BV::BITS)) |
346
+ (x2.status() << (1*BV::BITS)) | (x3.status() << (0*BV::BITS))) {
347
+ case GECODE_INT_STATUS(NONE,NONE,NONE,NONE):
348
+ case GECODE_INT_STATUS(NONE,NONE,NONE,ZERO):
349
+ case GECODE_INT_STATUS(NONE,NONE,NONE,ONE):
350
+ case GECODE_INT_STATUS(NONE,NONE,ZERO,NONE):
351
+ case GECODE_INT_STATUS(NONE,NONE,ZERO,ZERO):
352
+ case GECODE_INT_STATUS(NONE,NONE,ZERO,ONE):
353
+ case GECODE_INT_STATUS(NONE,NONE,ONE,NONE):
354
+ case GECODE_INT_STATUS(NONE,NONE,ONE,ZERO):
355
+ case GECODE_INT_STATUS(NONE,NONE,ONE,ONE):
356
+ GECODE_NEVER;
357
+ case GECODE_INT_STATUS(NONE,ZERO,NONE,NONE):
358
+ case GECODE_INT_STATUS(NONE,ZERO,NONE,ZERO):
359
+ std::swap(x1,x2); x1.subscribe(home,*this,PC_BOOL_VAL,false);
360
+ return ES_FIX;
361
+ case GECODE_INT_STATUS(NONE,ZERO,NONE,ONE):
362
+ break;
363
+ case GECODE_INT_STATUS(NONE,ZERO,ZERO,NONE):
364
+ std::swap(x1,x3); x1.subscribe(home,*this,PC_BOOL_VAL,false);
365
+ return ES_FIX;
366
+ case GECODE_INT_STATUS(NONE,ZERO,ZERO,ZERO):
367
+ GECODE_ME_CHECK(x0.one_none(home)); break;
368
+ case GECODE_INT_STATUS(NONE,ZERO,ZERO,ONE):
369
+ case GECODE_INT_STATUS(NONE,ZERO,ONE,NONE):
370
+ case GECODE_INT_STATUS(NONE,ZERO,ONE,ZERO):
371
+ case GECODE_INT_STATUS(NONE,ZERO,ONE,ONE):
372
+ case GECODE_INT_STATUS(NONE,ONE,NONE,NONE):
373
+ case GECODE_INT_STATUS(NONE,ONE,NONE,ZERO):
374
+ case GECODE_INT_STATUS(NONE,ONE,NONE,ONE):
375
+ case GECODE_INT_STATUS(NONE,ONE,ZERO,NONE):
376
+ case GECODE_INT_STATUS(NONE,ONE,ZERO,ZERO):
377
+ case GECODE_INT_STATUS(NONE,ONE,ZERO,ONE):
378
+ case GECODE_INT_STATUS(NONE,ONE,ONE,NONE):
379
+ case GECODE_INT_STATUS(NONE,ONE,ONE,ZERO):
380
+ case GECODE_INT_STATUS(NONE,ONE,ONE,ONE):
381
+ break;
382
+ case GECODE_INT_STATUS(ZERO,NONE,NONE,NONE):
383
+ case GECODE_INT_STATUS(ZERO,NONE,NONE,ZERO):
384
+ std::swap(x0,x2); x0.subscribe(home,*this,PC_BOOL_VAL,false);
385
+ return ES_FIX;
386
+ case GECODE_INT_STATUS(ZERO,NONE,NONE,ONE):
387
+ break;
388
+ case GECODE_INT_STATUS(ZERO,NONE,ZERO,NONE):
389
+ std::swap(x0,x3); x0.subscribe(home,*this,PC_BOOL_VAL,false);
390
+ return ES_FIX;
391
+ case GECODE_INT_STATUS(ZERO,NONE,ZERO,ZERO):
392
+ GECODE_ME_CHECK(x1.one_none(home)); break;
393
+ case GECODE_INT_STATUS(ZERO,NONE,ZERO,ONE):
394
+ case GECODE_INT_STATUS(ZERO,NONE,ONE,NONE):
395
+ case GECODE_INT_STATUS(ZERO,NONE,ONE,ZERO):
396
+ case GECODE_INT_STATUS(ZERO,NONE,ONE,ONE):
397
+ break;
398
+ case GECODE_INT_STATUS(ZERO,ZERO,NONE,NONE):
399
+ std::swap(x0,x2); x0.subscribe(home,*this,PC_BOOL_VAL,false);
400
+ std::swap(x1,x3); x1.subscribe(home,*this,PC_BOOL_VAL,false);
401
+ return ES_FIX;
402
+ case GECODE_INT_STATUS(ZERO,ZERO,NONE,ZERO):
403
+ GECODE_ME_CHECK(x2.one_none(home)); break;
404
+ case GECODE_INT_STATUS(ZERO,ZERO,NONE,ONE):
405
+ break;
406
+ case GECODE_INT_STATUS(ZERO,ZERO,ZERO,NONE):
407
+ GECODE_ME_CHECK(x3.one_none(home)); break;
408
+ case GECODE_INT_STATUS(ZERO,ZERO,ZERO,ZERO):
409
+ return ES_FAILED;
410
+ case GECODE_INT_STATUS(ZERO,ZERO,ZERO,ONE):
411
+ case GECODE_INT_STATUS(ZERO,ZERO,ONE,NONE):
412
+ case GECODE_INT_STATUS(ZERO,ZERO,ONE,ZERO):
413
+ case GECODE_INT_STATUS(ZERO,ZERO,ONE,ONE):
414
+ case GECODE_INT_STATUS(ZERO,ONE,NONE,NONE):
415
+ case GECODE_INT_STATUS(ZERO,ONE,NONE,ZERO):
416
+ case GECODE_INT_STATUS(ZERO,ONE,NONE,ONE):
417
+ case GECODE_INT_STATUS(ZERO,ONE,ZERO,NONE):
418
+ case GECODE_INT_STATUS(ZERO,ONE,ZERO,ZERO):
419
+ case GECODE_INT_STATUS(ZERO,ONE,ZERO,ONE):
420
+ case GECODE_INT_STATUS(ZERO,ONE,ONE,NONE):
421
+ case GECODE_INT_STATUS(ZERO,ONE,ONE,ZERO):
422
+ case GECODE_INT_STATUS(ZERO,ONE,ONE,ONE):
423
+ case GECODE_INT_STATUS(ONE,NONE,NONE,NONE):
424
+ case GECODE_INT_STATUS(ONE,NONE,NONE,ZERO):
425
+ case GECODE_INT_STATUS(ONE,NONE,NONE,ONE):
426
+ case GECODE_INT_STATUS(ONE,NONE,ZERO,NONE):
427
+ case GECODE_INT_STATUS(ONE,NONE,ZERO,ZERO):
428
+ case GECODE_INT_STATUS(ONE,NONE,ZERO,ONE):
429
+ case GECODE_INT_STATUS(ONE,NONE,ONE,NONE):
430
+ case GECODE_INT_STATUS(ONE,NONE,ONE,ZERO):
431
+ case GECODE_INT_STATUS(ONE,NONE,ONE,ONE):
432
+ case GECODE_INT_STATUS(ONE,ZERO,NONE,NONE):
433
+ case GECODE_INT_STATUS(ONE,ZERO,NONE,ZERO):
434
+ case GECODE_INT_STATUS(ONE,ZERO,NONE,ONE):
435
+ case GECODE_INT_STATUS(ONE,ZERO,ZERO,NONE):
436
+ case GECODE_INT_STATUS(ONE,ZERO,ZERO,ZERO):
437
+ case GECODE_INT_STATUS(ONE,ZERO,ZERO,ONE):
438
+ case GECODE_INT_STATUS(ONE,ZERO,ONE,NONE):
439
+ case GECODE_INT_STATUS(ONE,ZERO,ONE,ZERO):
440
+ case GECODE_INT_STATUS(ONE,ZERO,ONE,ONE):
441
+ case GECODE_INT_STATUS(ONE,ONE,NONE,NONE):
442
+ case GECODE_INT_STATUS(ONE,ONE,NONE,ZERO):
443
+ case GECODE_INT_STATUS(ONE,ONE,NONE,ONE):
444
+ case GECODE_INT_STATUS(ONE,ONE,ZERO,NONE):
445
+ case GECODE_INT_STATUS(ONE,ONE,ZERO,ZERO):
446
+ case GECODE_INT_STATUS(ONE,ONE,ZERO,ONE):
447
+ case GECODE_INT_STATUS(ONE,ONE,ONE,NONE):
448
+ case GECODE_INT_STATUS(ONE,ONE,ONE,ZERO):
449
+ case GECODE_INT_STATUS(ONE,ONE,ONE,ONE):
450
+ break;
451
+ default:
452
+ GECODE_NEVER;
453
+ }
454
+ return home.ES_SUBSUMED(*this);
455
+ #undef GECODE_INT_STATUS
456
+ }
457
+
458
+ /*
459
+ * Boolean disjunction propagator
460
+ *
461
+ */
462
+
463
+ template<class BVA, class BVB, class BVC>
464
+ forceinline
465
+ Or<BVA,BVB,BVC>::Or(Home home, BVA b0, BVB b1, BVC b2)
466
+ : BoolTernary<BVA,BVB,BVC>(home,b0,b1,b2) {}
467
+
468
+ template<class BVA, class BVB, class BVC>
469
+ forceinline
470
+ Or<BVA,BVB,BVC>::Or(Space& home, bool share, Or<BVA,BVB,BVC>& p)
471
+ : BoolTernary<BVA,BVB,BVC>(home,share,p) {}
472
+
473
+ template<class BVA, class BVB, class BVC>
474
+ forceinline
475
+ Or<BVA,BVB,BVC>::Or(Space& home, bool share, Propagator& p,
476
+ BVA b0, BVB b1, BVC b2)
477
+ : BoolTernary<BVA,BVB,BVC>(home,share,p,b0,b1,b2) {}
478
+
479
+ template<class BVA, class BVB, class BVC>
480
+ Actor*
481
+ Or<BVA,BVB,BVC>::copy(Space& home, bool share) {
482
+ if (x2.one()) {
483
+ assert(x0.none() && x1.none());
484
+ return new (home) BinOrTrue<BVA,BVB>(home,share,*this,x0,x1);
485
+ } else if (x0.zero()) {
486
+ assert(x1.none() && x2.none());
487
+ return new (home) Eq<BVB,BVC>(home,share,*this,x1,x2);
488
+ } else if (x1.zero()) {
489
+ assert(x0.none() && x2.none());
490
+ return new (home) Eq<BVA,BVC>(home,share,*this,x0,x2);
491
+ } else {
492
+ return new (home) Or<BVA,BVB,BVC>(home,share,*this);
493
+ }
494
+ }
495
+
496
+ template<class BVA, class BVB, class BVC>
497
+ inline ExecStatus
498
+ Or<BVA,BVB,BVC>::post(Home home, BVA b0, BVB b1, BVC b2) {
499
+ if (b2.zero()) {
500
+ GECODE_ME_CHECK(b0.zero(home));
501
+ GECODE_ME_CHECK(b1.zero(home));
502
+ } else if (b2.one()) {
503
+ return BinOrTrue<BVA,BVB>::post(home,b0,b1);
504
+ } else {
505
+ switch (bool_test(b0,b1)) {
506
+ case BT_SAME:
507
+ return Eq<BVA,BVC>::post(home,b0,b2);
508
+ case BT_COMP:
509
+ GECODE_ME_CHECK(b2.one(home));
510
+ break;
511
+ case BT_NONE:
512
+ if (b0.one() || b1.one()) {
513
+ GECODE_ME_CHECK(b2.one(home));
514
+ } else if (b0.zero()) {
515
+ return Eq<BVB,BVC>::post(home,b1,b2);
516
+ } else if (b1.zero()) {
517
+ return Eq<BVA,BVC>::post(home,b0,b2);
518
+ } else {
519
+ (void) new (home) Or<BVA,BVB,BVC>(home,b0,b1,b2);
520
+ }
521
+ break;
522
+ default: GECODE_NEVER;
523
+ }
524
+ }
525
+ return ES_OK;
526
+ }
527
+
528
+ template<class BVA, class BVB, class BVC>
529
+ ExecStatus
530
+ Or<BVA,BVB,BVC>::propagate(Space& home, const ModEventDelta&) {
531
+ #define GECODE_INT_STATUS(S0,S1,S2) \
532
+ ((BVA::S0<<(2*BVA::BITS))|(BVB::S1<<(1*BVB::BITS))|(BVC::S2<<(0*BVC::BITS)))
533
+ switch ((x0.status() << (2*BVA::BITS)) | (x1.status() << (1*BVB::BITS)) |
534
+ (x2.status() << (0*BVC::BITS))) {
535
+ case GECODE_INT_STATUS(NONE,NONE,NONE):
536
+ GECODE_NEVER;
537
+ case GECODE_INT_STATUS(NONE,NONE,ZERO):
538
+ GECODE_ME_CHECK(x0.zero_none(home));
539
+ GECODE_ME_CHECK(x1.zero_none(home));
540
+ break;
541
+ case GECODE_INT_STATUS(NONE,NONE,ONE):
542
+ return ES_FIX;
543
+ case GECODE_INT_STATUS(NONE,ZERO,NONE):
544
+ switch (bool_test(x0,x2)) {
545
+ case BT_SAME: return home.ES_SUBSUMED(*this);
546
+ case BT_COMP: return ES_FAILED;
547
+ case BT_NONE: return ES_FIX;
548
+ default: GECODE_NEVER;
549
+ }
550
+ GECODE_NEVER;
551
+ case GECODE_INT_STATUS(NONE,ZERO,ZERO):
552
+ GECODE_ME_CHECK(x0.zero_none(home)); break;
553
+ case GECODE_INT_STATUS(NONE,ZERO,ONE):
554
+ GECODE_ME_CHECK(x0.one_none(home)); break;
555
+ case GECODE_INT_STATUS(NONE,ONE,NONE):
556
+ GECODE_ME_CHECK(x2.one_none(home)); break;
557
+ case GECODE_INT_STATUS(NONE,ONE,ZERO):
558
+ return ES_FAILED;
559
+ case GECODE_INT_STATUS(NONE,ONE,ONE):
560
+ break;
561
+ case GECODE_INT_STATUS(ZERO,NONE,NONE):
562
+ switch (bool_test(x1,x2)) {
563
+ case BT_SAME: return home.ES_SUBSUMED(*this);
564
+ case BT_COMP: return ES_FAILED;
565
+ case BT_NONE: return ES_FIX;
566
+ default: GECODE_NEVER;
567
+ }
568
+ GECODE_NEVER;
569
+ case GECODE_INT_STATUS(ZERO,NONE,ZERO):
570
+ GECODE_ME_CHECK(x1.zero_none(home)); break;
571
+ case GECODE_INT_STATUS(ZERO,NONE,ONE):
572
+ GECODE_ME_CHECK(x1.one_none(home)); break;
573
+ case GECODE_INT_STATUS(ZERO,ZERO,NONE):
574
+ GECODE_ME_CHECK(x2.zero_none(home)); break;
575
+ case GECODE_INT_STATUS(ZERO,ZERO,ZERO):
576
+ break;
577
+ case GECODE_INT_STATUS(ZERO,ZERO,ONE):
578
+ return ES_FAILED;
579
+ case GECODE_INT_STATUS(ZERO,ONE,NONE):
580
+ GECODE_ME_CHECK(x2.one_none(home)); break;
581
+ case GECODE_INT_STATUS(ZERO,ONE,ZERO):
582
+ return ES_FAILED;
583
+ case GECODE_INT_STATUS(ZERO,ONE,ONE):
584
+ break;
585
+ case GECODE_INT_STATUS(ONE,NONE,NONE):
586
+ GECODE_ME_CHECK(x2.one_none(home)); break;
587
+ case GECODE_INT_STATUS(ONE,NONE,ZERO):
588
+ return ES_FAILED;
589
+ case GECODE_INT_STATUS(ONE,NONE,ONE):
590
+ break;
591
+ case GECODE_INT_STATUS(ONE,ZERO,NONE):
592
+ GECODE_ME_CHECK(x2.one_none(home)); break;
593
+ case GECODE_INT_STATUS(ONE,ZERO,ZERO):
594
+ return ES_FAILED;
595
+ case GECODE_INT_STATUS(ONE,ZERO,ONE):
596
+ break;
597
+ case GECODE_INT_STATUS(ONE,ONE,NONE):
598
+ GECODE_ME_CHECK(x2.one_none(home)); break;
599
+ case GECODE_INT_STATUS(ONE,ONE,ZERO):
600
+ return ES_FAILED;
601
+ case GECODE_INT_STATUS(ONE,ONE,ONE):
602
+ break;
603
+ default:
604
+ GECODE_NEVER;
605
+ }
606
+ return home.ES_SUBSUMED(*this);
607
+ #undef GECODE_INT_STATUS
608
+ }
609
+
610
+ /*
611
+ * N-ary Boolean disjunction propagator (true)
612
+ *
613
+ */
614
+
615
+ template<class BV>
616
+ forceinline
617
+ NaryOrTrue<BV>::NaryOrTrue(Home home, ViewArray<BV>& b)
618
+ : BinaryPropagator<BV,PC_BOOL_VAL>(home,b[0],b[1]), x(b) {
619
+ assert(x.size() > 2);
620
+ x.drop_fst(2);
621
+ }
622
+
623
+ template<class BV>
624
+ PropCost
625
+ NaryOrTrue<BV>::cost(const Space&, const ModEventDelta&) const {
626
+ return PropCost::binary(PropCost::LO);
627
+ }
628
+
629
+ template<class BV>
630
+ forceinline
631
+ NaryOrTrue<BV>::NaryOrTrue(Space& home, bool share, NaryOrTrue<BV>& p)
632
+ : BinaryPropagator<BV,PC_BOOL_VAL>(home,share,p) {
633
+ x.update(home,share,p.x);
634
+ }
635
+
636
+ template<class BV>
637
+ Actor*
638
+ NaryOrTrue<BV>::copy(Space& home, bool share) {
639
+ int n = x.size();
640
+ if (n > 0) {
641
+ // Eliminate all zeros and find a one
642
+ for (int i=n; i--; )
643
+ if (x[i].one()) {
644
+ // Only keep the one
645
+ x[0]=x[i]; x.size(1);
646
+ return new (home) OrTrueSubsumed<BV>(home,share,*this,x0,x1);
647
+ } else if (x[i].zero()) {
648
+ // Eliminate the zero
649
+ x[i]=x[--n];
650
+ }
651
+ x.size(n);
652
+ }
653
+ switch (n) {
654
+ case 0:
655
+ return new (home) BinOrTrue<BV,BV>(home,share,*this,x0,x1);
656
+ case 1:
657
+ return new (home) TerOrTrue<BV>(home,share,*this,x0,x1,x[0]);
658
+ case 2:
659
+ return new (home) QuadOrTrue<BV>(home,share,*this,x0,x1,x[0],x[1]);
660
+ default:
661
+ return new (home) NaryOrTrue<BV>(home,share,*this);
662
+ }
663
+ }
664
+
665
+ template<class BV>
666
+ inline ExecStatus
667
+ NaryOrTrue<BV>::post(Home home, ViewArray<BV>& b) {
668
+ for (int i=b.size(); i--; )
669
+ if (b[i].one())
670
+ return ES_OK;
671
+ else if (b[i].zero())
672
+ b.move_lst(i);
673
+ if (b.size() == 0)
674
+ return ES_FAILED;
675
+ if (b.size() == 1) {
676
+ GECODE_ME_CHECK(b[0].one(home));
677
+ } else if (b.size() == 2) {
678
+ return BinOrTrue<BV,BV>::post(home,b[0],b[1]);
679
+ } else if (b.size() == 3) {
680
+ return TerOrTrue<BV>::post(home,b[0],b[1],b[2]);
681
+ } else if (b.size() == 4) {
682
+ return QuadOrTrue<BV>::post(home,b[0],b[1],b[2],b[3]);
683
+ } else {
684
+ (void) new (home) NaryOrTrue(home,b);
685
+ }
686
+ return ES_OK;
687
+ }
688
+
689
+ template<class BV>
690
+ forceinline size_t
691
+ NaryOrTrue<BV>::dispose(Space& home) {
692
+ (void) BinaryPropagator<BV,PC_BOOL_VAL>::dispose(home);
693
+ return sizeof(*this);
694
+ }
695
+
696
+ template<class BV>
697
+ forceinline ExecStatus
698
+ NaryOrTrue<BV>::resubscribe(Space& home, BV& x0, BV x1) {
699
+ if (x0.zero()) {
700
+ int n = x.size();
701
+ for (int i=n; i--; )
702
+ if (x[i].one()) {
703
+ return home.ES_SUBSUMED(*this);
704
+ } else if (x[i].zero()) {
705
+ x[i] = x[--n];
706
+ } else {
707
+ // Move to x0 and subscribe
708
+ x0=x[i]; x[i]=x[--n];
709
+ x.size(n);
710
+ x0.subscribe(home,*this,PC_BOOL_VAL,false);
711
+ return ES_FIX;
712
+ }
713
+ // All views have been assigned!
714
+ GECODE_ME_CHECK(x1.one(home));
715
+ return home.ES_SUBSUMED(*this);
716
+ }
717
+ return ES_FIX;
718
+ }
719
+
720
+ template<class BV>
721
+ ExecStatus
722
+ NaryOrTrue<BV>::propagate(Space& home, const ModEventDelta&) {
723
+ if (x0.one())
724
+ return home.ES_SUBSUMED(*this);
725
+ if (x1.one())
726
+ return home.ES_SUBSUMED(*this);
727
+ GECODE_ES_CHECK(resubscribe(home,x0,x1));
728
+ GECODE_ES_CHECK(resubscribe(home,x1,x0));
729
+ return ES_FIX;
730
+ }
731
+
732
+
733
+ /*
734
+ * N-ary Boolean disjunction propagator
735
+ *
736
+ */
737
+
738
+ template<class VX, class VY>
739
+ forceinline
740
+ NaryOr<VX,VY>::NaryOr(Home home, ViewArray<VX>& x, VY y)
741
+ : MixNaryOnePropagator<VX,PC_BOOL_NONE,VY,PC_BOOL_VAL>(home,x,y),
742
+ n_zero(0), c(home) {
743
+ x.subscribe(home,*new (home) Advisor(home,*this,c));
744
+ }
745
+
746
+ template<class VX, class VY>
747
+ forceinline
748
+ NaryOr<VX,VY>::NaryOr(Space& home, bool share, NaryOr<VX,VY>& p)
749
+ : MixNaryOnePropagator<VX,PC_BOOL_NONE,VY,PC_BOOL_VAL>(home,share,p),
750
+ n_zero(p.n_zero) {
751
+ c.update(home,share,p.c);
752
+ }
753
+
754
+ template<class VX, class VY>
755
+ Actor*
756
+ NaryOr<VX,VY>::copy(Space& home, bool share) {
757
+ assert(n_zero < x.size());
758
+ if (n_zero > 0) {
759
+ int n=x.size();
760
+ // Eliminate all zeros
761
+ for (int i=n; i--; )
762
+ if (x[i].zero())
763
+ x[i]=x[--n];
764
+ x.size(n);
765
+ n_zero = 0;
766
+ }
767
+ assert(n_zero < x.size());
768
+ return new (home) NaryOr<VX,VY>(home,share,*this);
769
+ }
770
+
771
+ template<class VX, class VY>
772
+ inline ExecStatus
773
+ NaryOr<VX,VY>::post(Home home, ViewArray<VX>& x, VY y) {
774
+ assert(!x.shared(home));
775
+ if (y.one())
776
+ return NaryOrTrue<VX>::post(home,x);
777
+ if (y.zero()) {
778
+ for (int i=x.size(); i--; )
779
+ GECODE_ME_CHECK(x[i].zero(home));
780
+ return ES_OK;
781
+ }
782
+ for (int i=x.size(); i--; )
783
+ if (x[i].one()) {
784
+ GECODE_ME_CHECK(y.one_none(home));
785
+ return ES_OK;
786
+ } else if (x[i].zero()) {
787
+ x.move_lst(i);
788
+ }
789
+ if (x.size() == 0) {
790
+ GECODE_ME_CHECK(y.zero_none(home));
791
+ } else if (x.size() == 1) {
792
+ return Eq<VX,VY>::post(home,x[0],y);
793
+ } else if (x.size() == 2) {
794
+ return Or<VX,VX,VY>::post(home,x[0],x[1],y);
795
+ } else {
796
+ (void) new (home) NaryOr(home,x,y);
797
+ }
798
+ return ES_OK;
799
+ }
800
+
801
+ template<class VX, class VY>
802
+ PropCost
803
+ NaryOr<VX,VY>::cost(const Space&, const ModEventDelta&) const {
804
+ return PropCost::unary(PropCost::LO);
805
+ }
806
+
807
+ template<class VX, class VY>
808
+ ExecStatus
809
+ NaryOr<VX,VY>::advise(Space&, Advisor&, const Delta& d) {
810
+ // Decides whether the propagator must be run
811
+ if (VX::zero(d) && (++n_zero < x.size()))
812
+ return ES_FIX;
813
+ else
814
+ return ES_NOFIX;
815
+ }
816
+
817
+ template<class VX, class VY>
818
+ forceinline size_t
819
+ NaryOr<VX,VY>::dispose(Space& home) {
820
+ Advisors<Advisor> as(c);
821
+ x.cancel(home,as.advisor());
822
+ c.dispose(home);
823
+ (void) MixNaryOnePropagator<VX,PC_BOOL_NONE,VY,PC_BOOL_VAL>
824
+ ::dispose(home);
825
+ return sizeof(*this);
826
+ }
827
+
828
+ template<class VX, class VY>
829
+ ExecStatus
830
+ NaryOr<VX,VY>::propagate(Space& home, const ModEventDelta&) {
831
+ if (y.one())
832
+ GECODE_REWRITE(*this,NaryOrTrue<VX>::post(home(*this),x));
833
+ if (y.zero()) {
834
+ // Note that this might trigger the advisor of this propagator!
835
+ for (int i = x.size(); i--; )
836
+ GECODE_ME_CHECK(x[i].zero(home));
837
+ } else if (n_zero == x.size()) {
838
+ // All views are zero
839
+ GECODE_ME_CHECK(y.zero_none(home));
840
+ } else {
841
+ // There is exactly one view which is one
842
+ GECODE_ME_CHECK(y.one_none(home));
843
+ }
844
+ return home.ES_SUBSUMED(*this);
845
+ }
846
+
847
+ }}}
848
+
849
+ // STATISTICS: int-prop
850
+