gecoder-with-gecode 0.9.0 → 0.9.1

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 (919) hide show
  1. data/CHANGES +6 -0
  2. data/README +1 -1
  3. data/THANKS +18 -0
  4. data/example/equation_system.rb +3 -1
  5. data/example/magic_sequence.rb +3 -1
  6. data/example/queens.rb +3 -1
  7. data/example/send_more_money.rb +24 -30
  8. data/example/send_most_money.rb +15 -26
  9. data/example/square_tiling.rb +3 -1
  10. data/example/sudoku-set.rb +3 -1
  11. data/ext/{gecode-2.1.1 → gecode-2.2.0}/LICENSE +0 -0
  12. data/ext/{gecode-2.1.1 → gecode-2.2.0}/Makefile.contribs +0 -0
  13. data/ext/gecode-2.2.0/Makefile.dep +8056 -0
  14. data/ext/gecode-2.2.0/Makefile.in +1590 -0
  15. data/ext/gecode-2.2.0/changelog.in +2698 -0
  16. data/ext/gecode-2.2.0/configure +13112 -0
  17. data/ext/gecode-2.2.0/configure.ac +273 -0
  18. data/ext/gecode-2.2.0/configure.ac.in +269 -0
  19. data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/README +0 -0
  20. data/ext/gecode-2.2.0/contribs/qecode/Doxyfile +263 -0
  21. data/ext/gecode-2.2.0/contribs/qecode/Implicative.cc +267 -0
  22. data/ext/gecode-2.2.0/contribs/qecode/Implicative.hh +164 -0
  23. data/ext/gecode-2.2.0/contribs/qecode/Makefile.in.in +163 -0
  24. data/ext/gecode-2.2.0/contribs/qecode/OptVar.cc +82 -0
  25. data/ext/gecode-2.2.0/contribs/qecode/OptVar.hh +123 -0
  26. data/ext/gecode-2.2.0/contribs/qecode/Strategy.cc +131 -0
  27. data/ext/gecode-2.2.0/contribs/qecode/Strategy.hh +91 -0
  28. data/ext/gecode-2.2.0/contribs/qecode/StrategyNode.cc +62 -0
  29. data/ext/gecode-2.2.0/contribs/qecode/StrategyNode.hh +47 -0
  30. data/ext/gecode-2.2.0/contribs/qecode/autom4te.cache/output.0 +2264 -0
  31. data/ext/gecode-2.2.0/contribs/qecode/autom4te.cache/requests +115 -0
  32. data/ext/gecode-2.2.0/contribs/qecode/autom4te.cache/traces.0 +57 -0
  33. data/ext/gecode-2.2.0/contribs/qecode/config.log +147 -0
  34. data/ext/gecode-2.2.0/contribs/qecode/config.status +817 -0
  35. data/ext/gecode-2.2.0/contribs/qecode/configure +2264 -0
  36. data/ext/gecode-2.2.0/contribs/qecode/configure.ac +23 -0
  37. data/ext/gecode-2.2.0/contribs/qecode/examples/COMPILING +13 -0
  38. data/ext/gecode-2.2.0/contribs/qecode/examples/MatrixGame.cpp +140 -0
  39. data/ext/gecode-2.2.0/contribs/qecode/examples/NimFibo.cpp +73 -0
  40. data/ext/gecode-2.2.0/contribs/qecode/examples/connect-5-3-3-3.cpp +842 -0
  41. data/ext/gecode-2.2.0/contribs/qecode/examples/network-pricing.cc +146 -0
  42. data/ext/gecode-2.2.0/contribs/qecode/examples/optim2.cc +149 -0
  43. data/ext/gecode-2.2.0/contribs/qecode/examples/stress_test.cpp +240 -0
  44. data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/qecode/heap.cc +0 -0
  45. data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/qecode/myDom.cc +0 -0
  46. data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/qecode/myspace.cc +0 -0
  47. data/ext/gecode-2.2.0/contribs/qecode/myspace.hh +68 -0
  48. data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/qecode/qecode.hh +0 -0
  49. data/ext/gecode-2.2.0/contribs/qecode/qsolver.cc +268 -0
  50. data/ext/gecode-2.2.0/contribs/qecode/qsolver.hh +46 -0
  51. data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/qecode/shortdesc.ac +0 -0
  52. data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/qecode/vartype.hh +0 -0
  53. data/ext/{gecode-2.1.1 → gecode-2.2.0}/doxygen/doxygen.conf.in +0 -0
  54. data/ext/gecode-2.2.0/doxygen/doxygen.hh.in +1112 -0
  55. data/ext/gecode-2.2.0/doxygen/reflection.hh +417 -0
  56. data/ext/gecode-2.2.0/examples/all-interval.cc +133 -0
  57. data/ext/gecode-2.2.0/examples/alpha.cc +137 -0
  58. data/ext/gecode-2.2.0/examples/bacp.cc +521 -0
  59. data/ext/gecode-2.2.0/examples/baseline.cc +87 -0
  60. data/ext/gecode-2.2.0/examples/bibd.cc +203 -0
  61. data/ext/gecode-2.2.0/examples/black-hole.cc +389 -0
  62. data/ext/gecode-2.2.0/examples/crew.cc +286 -0
  63. data/ext/gecode-2.2.0/examples/crowded-chess.cc +424 -0
  64. data/ext/gecode-2.2.0/examples/domino.cc +297 -0
  65. data/ext/gecode-2.2.0/examples/donald.cc +107 -0
  66. data/ext/gecode-2.2.0/examples/eq20.cc +125 -0
  67. data/ext/gecode-2.2.0/examples/golf.cc +297 -0
  68. data/ext/gecode-2.2.0/examples/golomb-ruler.cc +199 -0
  69. data/ext/gecode-2.2.0/examples/graph-color.cc +407 -0
  70. data/ext/gecode-2.2.0/examples/grocery.cc +113 -0
  71. data/ext/gecode-2.2.0/examples/hamming.cc +129 -0
  72. data/ext/gecode-2.2.0/examples/ind-set.cc +143 -0
  73. data/ext/gecode-2.2.0/examples/javascript.cc +163 -0
  74. data/ext/gecode-2.2.0/examples/kakuro.cc +686 -0
  75. data/ext/gecode-2.2.0/examples/knights.cc +220 -0
  76. data/ext/gecode-2.2.0/examples/langford-number.cc +225 -0
  77. data/ext/gecode-2.2.0/examples/magic-sequence.cc +146 -0
  78. data/ext/gecode-2.2.0/examples/magic-square.cc +138 -0
  79. data/ext/gecode-2.2.0/examples/minesweeper.cc +304 -0
  80. data/ext/gecode-2.2.0/examples/money.cc +105 -0
  81. data/ext/gecode-2.2.0/examples/nonogram.cc +492 -0
  82. data/ext/gecode-2.2.0/examples/ortho-latin.cc +172 -0
  83. data/ext/gecode-2.2.0/examples/partition.cc +141 -0
  84. data/ext/gecode-2.2.0/examples/pentominoes.cc +949 -0
  85. data/ext/gecode-2.2.0/examples/perfect-square.cc +311 -0
  86. data/ext/gecode-2.2.0/examples/photo.cc +170 -0
  87. data/ext/gecode-2.2.0/examples/queen-armies.cc +284 -0
  88. data/ext/gecode-2.2.0/examples/queens.cc +147 -0
  89. data/ext/gecode-2.2.0/examples/queens.js +57 -0
  90. data/ext/gecode-2.2.0/examples/sports-league.cc +342 -0
  91. data/ext/gecode-2.2.0/examples/steiner.cc +192 -0
  92. data/ext/gecode-2.2.0/examples/stress-distinct.cc +90 -0
  93. data/ext/gecode-2.2.0/examples/stress-domain.cc +99 -0
  94. data/ext/gecode-2.2.0/examples/stress-element.cc +112 -0
  95. data/ext/gecode-2.2.0/examples/stress-exec.cc +97 -0
  96. data/ext/gecode-2.2.0/examples/stress-extensional.cc +134 -0
  97. data/ext/gecode-2.2.0/examples/stress-linear-bool.cc +97 -0
  98. data/ext/gecode-2.2.0/examples/stress-min.cc +98 -0
  99. data/ext/gecode-2.2.0/examples/stress-search.cc +88 -0
  100. data/ext/gecode-2.2.0/examples/sudoku.cc +2341 -0
  101. data/ext/gecode-2.2.0/examples/support.hh +338 -0
  102. data/ext/gecode-2.2.0/examples/support/example.cc +64 -0
  103. data/ext/gecode-2.2.0/examples/support/example.icc +321 -0
  104. data/ext/gecode-2.2.0/examples/support/options.cc +226 -0
  105. data/ext/gecode-2.2.0/examples/support/options.icc +276 -0
  106. data/ext/gecode-2.2.0/examples/tsp.cc +317 -0
  107. data/ext/gecode-2.2.0/examples/warehouses.cc +191 -0
  108. data/ext/gecode-2.2.0/gecode.m4 +1046 -0
  109. data/ext/gecode-2.2.0/gecode/cpltset.hh +797 -0
  110. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/array.cc +0 -0
  111. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/array.icc +0 -0
  112. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/bddmanager.cc +0 -0
  113. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/bddmanager.icc +0 -0
  114. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/branch.cc +0 -0
  115. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/branch.hh +0 -0
  116. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/branch/select-val.icc +0 -0
  117. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/branch/select-view.icc +0 -0
  118. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/atmost.cc +0 -0
  119. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/cardinality.cc +0 -0
  120. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/distinct.cc +0 -0
  121. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/dom.cc +0 -0
  122. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/partition.cc +0 -0
  123. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/rangeroots.cc +0 -0
  124. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/rel.cc +0 -0
  125. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/select.cc +0 -0
  126. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/singleton.cc +0 -0
  127. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/exception.icc +0 -0
  128. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators.hh +0 -0
  129. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators/binary.icc +0 -0
  130. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators/nary.icc +0 -0
  131. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators/naryone.icc +0 -0
  132. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators/narytwo.icc +0 -0
  133. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators/singleton.icc +0 -0
  134. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators/unary.icc +0 -0
  135. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/support.cc +0 -0
  136. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/support.icc +0 -0
  137. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/var-imp.icc +0 -0
  138. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/var-imp/cpltset.cc +0 -0
  139. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/var-imp/cpltset.icc +0 -0
  140. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/var-imp/cpltset.vis +0 -0
  141. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/var/cpltset.cc +0 -0
  142. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/var/cpltset.icc +0 -0
  143. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/view.icc +0 -0
  144. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/view/cpltset.icc +0 -0
  145. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/view/print.cc +0 -0
  146. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist.hh +0 -0
  147. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/addchild.cc +0 -0
  148. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/addchild.hh +0 -0
  149. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/addvisualisationdialog.cc +0 -0
  150. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/addvisualisationdialog.hh +0 -0
  151. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/better.hh +0 -0
  152. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/config.cc +0 -0
  153. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/config.hh +0 -0
  154. data/ext/gecode-2.2.0/gecode/gist/drawingcursor.cc +281 -0
  155. data/ext/gecode-2.2.0/gecode/gist/drawingcursor.hh +103 -0
  156. data/ext/gecode-2.2.0/gecode/gist/drawingcursor.icc +70 -0
  157. data/ext/gecode-2.2.0/gecode/gist/gecodelogo.cc +672 -0
  158. data/ext/gecode-2.2.0/gecode/gist/gecodelogo.hh +64 -0
  159. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/gist.cc +0 -0
  160. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/gist.icc +0 -0
  161. data/ext/gecode-2.2.0/gecode/gist/layoutcursor.cc +115 -0
  162. data/ext/gecode-2.2.0/gecode/gist/layoutcursor.hh +75 -0
  163. data/ext/gecode-2.2.0/gecode/gist/layoutcursor.icc +48 -0
  164. data/ext/gecode-2.2.0/gecode/gist/mainwindow.cc +274 -0
  165. data/ext/gecode-2.2.0/gecode/gist/mainwindow.hh +86 -0
  166. data/ext/gecode-2.2.0/gecode/gist/node.cc +148 -0
  167. data/ext/gecode-2.2.0/gecode/gist/node.hh +117 -0
  168. data/ext/gecode-2.2.0/gecode/gist/node.icc +99 -0
  169. data/ext/gecode-2.2.0/gecode/gist/nodecursor.cc +123 -0
  170. data/ext/gecode-2.2.0/gecode/gist/nodecursor.hh +147 -0
  171. data/ext/gecode-2.2.0/gecode/gist/nodecursor.icc +122 -0
  172. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/nodevisitor.hh +0 -0
  173. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/nodevisitor.icc +0 -0
  174. data/ext/gecode-2.2.0/gecode/gist/preferences.cc +120 -0
  175. data/ext/gecode-2.2.0/gecode/gist/preferences.hh +79 -0
  176. data/ext/gecode-2.2.0/gecode/gist/spacenode.cc +468 -0
  177. data/ext/gecode-2.2.0/gecode/gist/spacenode.hh +227 -0
  178. data/ext/gecode-2.2.0/gecode/gist/spacenode.icc +170 -0
  179. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/test.cc +0 -0
  180. data/ext/gecode-2.2.0/gecode/gist/textoutput.cc +134 -0
  181. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/textoutput.hh +0 -0
  182. data/ext/gecode-2.2.0/gecode/gist/treecanvas.cc +1343 -0
  183. data/ext/gecode-2.2.0/gecode/gist/treecanvas.hh +361 -0
  184. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/ui_addchild.hh +0 -0
  185. data/ext/gecode-2.2.0/gecode/gist/ui_addvisualisationdialog.hh +165 -0
  186. data/ext/gecode-2.2.0/gecode/gist/visualisation/intvaritem.cc +192 -0
  187. data/ext/gecode-2.2.0/gecode/gist/visualisation/intvaritem.hh +75 -0
  188. data/ext/gecode-2.2.0/gecode/gist/visualisation/setvaritem.cc +235 -0
  189. data/ext/gecode-2.2.0/gecode/gist/visualisation/setvaritem.hh +77 -0
  190. data/ext/gecode-2.2.0/gecode/gist/visualisation/vararrayitem.hh +125 -0
  191. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/visualisation/vararrayview.cc +0 -0
  192. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/visualisation/vararrayview.hh +0 -0
  193. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/visualisation/vararrayviewt.hh +0 -0
  194. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/visualisation/varitem.cc +0 -0
  195. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/visualisation/varitem.hh +0 -0
  196. data/ext/gecode-2.2.0/gecode/gist/visualnode.cc +474 -0
  197. data/ext/gecode-2.2.0/gecode/gist/visualnode.hh +226 -0
  198. data/ext/gecode-2.2.0/gecode/gist/visualnode.icc +198 -0
  199. data/ext/gecode-2.2.0/gecode/gist/zoomToFitIcon.icc +113 -0
  200. data/ext/gecode-2.2.0/gecode/int.hh +2116 -0
  201. data/ext/gecode-2.2.0/gecode/int/arithmetic.cc +237 -0
  202. data/ext/gecode-2.2.0/gecode/int/arithmetic.hh +827 -0
  203. data/ext/gecode-2.2.0/gecode/int/arithmetic/abs.icc +278 -0
  204. data/ext/gecode-2.2.0/gecode/int/arithmetic/divmod.icc +496 -0
  205. data/ext/gecode-2.2.0/gecode/int/arithmetic/max.icc +474 -0
  206. data/ext/gecode-2.2.0/gecode/int/arithmetic/mult.icc +858 -0
  207. data/ext/gecode-2.2.0/gecode/int/arithmetic/sqr.icc +464 -0
  208. data/ext/gecode-2.2.0/gecode/int/arithmetic/sqrt.icc +260 -0
  209. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/array.cc +0 -0
  210. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/array.icc +0 -0
  211. data/ext/gecode-2.2.0/gecode/int/bool.cc +734 -0
  212. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/bool.hh +0 -0
  213. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/bool/base.icc +0 -0
  214. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/bool/eq.icc +0 -0
  215. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/bool/eqv.icc +0 -0
  216. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/bool/lq.icc +0 -0
  217. data/ext/gecode-2.2.0/gecode/int/bool/or.icc +1000 -0
  218. data/ext/gecode-2.2.0/gecode/int/branch.cc +167 -0
  219. data/ext/gecode-2.2.0/gecode/int/branch.hh +587 -0
  220. data/ext/gecode-2.2.0/gecode/int/branch/create-branch.icc +190 -0
  221. data/ext/gecode-2.2.0/gecode/int/branch/select-val.icc +340 -0
  222. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/branch/select-view.icc +0 -0
  223. data/ext/gecode-2.2.0/gecode/int/channel.cc +165 -0
  224. data/ext/gecode-2.2.0/gecode/int/channel.hh +259 -0
  225. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/channel/base.icc +0 -0
  226. data/ext/gecode-2.2.0/gecode/int/channel/dom.icc +348 -0
  227. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/channel/link-multi.cc +0 -0
  228. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/channel/link-multi.icc +0 -0
  229. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/channel/link-single.cc +0 -0
  230. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/channel/link-single.icc +0 -0
  231. data/ext/gecode-2.2.0/gecode/int/channel/val.icc +278 -0
  232. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/circuit.cc +0 -0
  233. data/ext/gecode-2.2.0/gecode/int/circuit.hh +175 -0
  234. data/ext/gecode-2.2.0/gecode/int/circuit/base.icc +266 -0
  235. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/circuit/dom.icc +0 -0
  236. data/ext/gecode-2.2.0/gecode/int/circuit/val.icc +126 -0
  237. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/count.cc +0 -0
  238. data/ext/gecode-2.2.0/gecode/int/count.hh +487 -0
  239. data/ext/gecode-2.2.0/gecode/int/count/int.icc +620 -0
  240. data/ext/gecode-2.2.0/gecode/int/count/rel.icc +144 -0
  241. data/ext/gecode-2.2.0/gecode/int/count/view.icc +449 -0
  242. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/cumulatives.cc +0 -0
  243. data/ext/gecode-2.2.0/gecode/int/cumulatives.hh +138 -0
  244. data/ext/gecode-2.2.0/gecode/int/cumulatives/val.icc +455 -0
  245. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct.cc +0 -0
  246. data/ext/gecode-2.2.0/gecode/int/distinct.hh +341 -0
  247. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct/bilink.icc +0 -0
  248. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct/bnd.icc +0 -0
  249. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct/combptr.icc +0 -0
  250. data/ext/gecode-2.2.0/gecode/int/distinct/dom.icc +752 -0
  251. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct/edge.icc +0 -0
  252. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct/node.icc +0 -0
  253. data/ext/gecode-2.2.0/gecode/int/distinct/ter-dom.icc +136 -0
  254. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct/val.icc +0 -0
  255. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/dom.cc +0 -0
  256. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/dom.hh +0 -0
  257. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/dom/range.icc +0 -0
  258. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/dom/spec.icc +0 -0
  259. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/element.cc +0 -0
  260. data/ext/gecode-2.2.0/gecode/int/element.hh +239 -0
  261. data/ext/gecode-2.2.0/gecode/int/element/int.icc +444 -0
  262. data/ext/gecode-2.2.0/gecode/int/element/view.icc +584 -0
  263. data/ext/gecode-2.2.0/gecode/int/exception.icc +174 -0
  264. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional.cc +0 -0
  265. data/ext/gecode-2.2.0/gecode/int/extensional.hh +415 -0
  266. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/base.icc +0 -0
  267. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/basic.icc +0 -0
  268. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/bitset.icc +0 -0
  269. data/ext/gecode-2.2.0/gecode/int/extensional/dfa.cc +565 -0
  270. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/dfa.icc +0 -0
  271. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/incremental.icc +0 -0
  272. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/layered-graph.icc +0 -0
  273. data/ext/gecode-2.2.0/gecode/int/extensional/tuple-set.cc +285 -0
  274. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/tuple-set.icc +0 -0
  275. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/gcc.cc +0 -0
  276. data/ext/gecode-2.2.0/gecode/int/gcc.hh +329 -0
  277. data/ext/gecode-2.2.0/gecode/int/gcc/bnd.icc +660 -0
  278. data/ext/gecode-2.2.0/gecode/int/gcc/dom.icc +531 -0
  279. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/gcc/gccbndsup.icc +0 -0
  280. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/gcc/graphsup.icc +0 -0
  281. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/gcc/lbc.icc +0 -0
  282. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/gcc/occur.icc +0 -0
  283. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/gcc/ubc.icc +0 -0
  284. data/ext/gecode-2.2.0/gecode/int/gcc/val.icc +400 -0
  285. data/ext/gecode-2.2.0/gecode/int/int-set.cc +157 -0
  286. data/ext/gecode-2.2.0/gecode/int/int-set.icc +195 -0
  287. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/limits.icc +0 -0
  288. data/ext/gecode-2.2.0/gecode/int/linear-bool.cc +235 -0
  289. data/ext/gecode-2.2.0/gecode/int/linear-int.cc +272 -0
  290. data/ext/gecode-2.2.0/gecode/int/linear.hh +1849 -0
  291. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/bool-int.icc +0 -0
  292. data/ext/gecode-2.2.0/gecode/int/linear/bool-post.cc +433 -0
  293. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/bool-scale.icc +0 -0
  294. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/bool-view.icc +0 -0
  295. data/ext/gecode-2.2.0/gecode/int/linear/int-bin.icc +605 -0
  296. data/ext/gecode-2.2.0/gecode/int/linear/int-dom.icc +539 -0
  297. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/int-nary.icc +0 -0
  298. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/int-noview.icc +0 -0
  299. data/ext/gecode-2.2.0/gecode/int/linear/int-post.cc +493 -0
  300. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/int-ter.icc +0 -0
  301. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/post.icc +0 -0
  302. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/propagator.icc +0 -0
  303. data/ext/gecode-2.2.0/gecode/int/rel.cc +420 -0
  304. data/ext/gecode-2.2.0/gecode/int/rel.hh +627 -0
  305. data/ext/gecode-2.2.0/gecode/int/rel/eq.icc +885 -0
  306. data/ext/gecode-2.2.0/gecode/int/rel/lex.icc +275 -0
  307. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/rel/lq-le.icc +0 -0
  308. data/ext/gecode-2.2.0/gecode/int/rel/nq.icc +118 -0
  309. data/ext/gecode-2.2.0/gecode/int/sorted.cc +81 -0
  310. data/ext/gecode-2.2.0/gecode/int/sorted.hh +118 -0
  311. data/ext/gecode-2.2.0/gecode/int/sorted/matching.icc +173 -0
  312. data/ext/gecode-2.2.0/gecode/int/sorted/narrowing.icc +249 -0
  313. data/ext/gecode-2.2.0/gecode/int/sorted/order.icc +212 -0
  314. data/ext/gecode-2.2.0/gecode/int/sorted/propagate.icc +702 -0
  315. data/ext/gecode-2.2.0/gecode/int/sorted/sortsup.icc +563 -0
  316. data/ext/gecode-2.2.0/gecode/int/support-values.hh +158 -0
  317. data/ext/gecode-2.2.0/gecode/int/support-values.icc +203 -0
  318. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/unshare.cc +0 -0
  319. data/ext/gecode-2.2.0/gecode/int/var-imp.icc +745 -0
  320. data/ext/gecode-2.2.0/gecode/int/var-imp/bool.cc +105 -0
  321. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var-imp/bool.icc +0 -0
  322. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var-imp/bool.vis +0 -0
  323. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var-imp/delta.icc +0 -0
  324. data/ext/gecode-2.2.0/gecode/int/var-imp/int.cc +408 -0
  325. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var-imp/int.icc +0 -0
  326. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var-imp/int.vis +0 -0
  327. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var/bool.cc +0 -0
  328. data/ext/gecode-2.2.0/gecode/int/var/bool.icc +128 -0
  329. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var/int.cc +0 -0
  330. data/ext/gecode-2.2.0/gecode/int/var/int.icc +153 -0
  331. data/ext/gecode-2.2.0/gecode/int/view.icc +1918 -0
  332. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/bool.icc +0 -0
  333. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/constint.icc +0 -0
  334. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/int.icc +0 -0
  335. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/iter.icc +0 -0
  336. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/minus.icc +0 -0
  337. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/offset.icc +0 -0
  338. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/print.cc +0 -0
  339. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/rtest.icc +0 -0
  340. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/scale.icc +0 -0
  341. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/zero.icc +0 -0
  342. data/ext/gecode-2.2.0/gecode/iter.hh +98 -0
  343. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-add.icc +0 -0
  344. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-append.icc +0 -0
  345. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-array.icc +0 -0
  346. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-cache.icc +0 -0
  347. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-compl.icc +0 -0
  348. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-diff.icc +0 -0
  349. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-empty.icc +0 -0
  350. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-inter.icc +0 -0
  351. data/ext/gecode-2.2.0/gecode/iter/ranges-map.icc +260 -0
  352. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-minmax.icc +0 -0
  353. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-minus.icc +0 -0
  354. data/ext/gecode-2.2.0/gecode/iter/ranges-negative.icc +137 -0
  355. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-offset.icc +0 -0
  356. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-operations.icc +0 -0
  357. data/ext/gecode-2.2.0/gecode/iter/ranges-positive.icc +139 -0
  358. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-scale.icc +0 -0
  359. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-singleton-append.icc +0 -0
  360. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-singleton.icc +0 -0
  361. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-size.icc +0 -0
  362. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-union.icc +0 -0
  363. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-values.icc +0 -0
  364. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/values-array.icc +0 -0
  365. data/ext/gecode-2.2.0/gecode/iter/values-inter.icc +130 -0
  366. data/ext/gecode-2.2.0/gecode/iter/values-map.icc +136 -0
  367. data/ext/gecode-2.2.0/gecode/iter/values-minus.icc +130 -0
  368. data/ext/gecode-2.2.0/gecode/iter/values-negative.icc +116 -0
  369. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/values-offset.icc +0 -0
  370. data/ext/gecode-2.2.0/gecode/iter/values-positive.icc +123 -0
  371. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/values-ranges.icc +0 -0
  372. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/values-singleton.icc +0 -0
  373. data/ext/gecode-2.2.0/gecode/iter/values-union.icc +137 -0
  374. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/values-unique.icc +0 -0
  375. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/virtual-ranges-compl.icc +0 -0
  376. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/virtual-ranges-inter.icc +0 -0
  377. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/virtual-ranges-union.icc +0 -0
  378. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/virtual-ranges.icc +0 -0
  379. data/ext/gecode-2.2.0/gecode/kernel.hh +188 -0
  380. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/advisor.icc +0 -0
  381. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/array.icc +0 -0
  382. data/ext/gecode-2.2.0/gecode/kernel/branching.icc +433 -0
  383. data/ext/gecode-2.2.0/gecode/kernel/core.cc +474 -0
  384. data/ext/gecode-2.2.0/gecode/kernel/core.icc +2311 -0
  385. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/exception.icc +0 -0
  386. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/macros.icc +0 -0
  387. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/memory-manager.cc +0 -0
  388. data/ext/gecode-2.2.0/gecode/kernel/memory-manager.icc +454 -0
  389. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/modevent.icc +0 -0
  390. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/propagator.icc +0 -0
  391. data/ext/gecode-2.2.0/gecode/kernel/reflection.cc +951 -0
  392. data/ext/gecode-2.2.0/gecode/kernel/reflection.icc +1213 -0
  393. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/shared-array.icc +0 -0
  394. data/ext/gecode-2.2.0/gecode/kernel/var-imp.icc +433 -0
  395. data/ext/gecode-2.2.0/gecode/kernel/var-map.cc +269 -0
  396. data/ext/gecode-2.2.0/gecode/kernel/var-map.icc +230 -0
  397. data/ext/gecode-2.2.0/gecode/kernel/var-traits.icc +79 -0
  398. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/var-type.cc +0 -0
  399. data/ext/gecode-2.2.0/gecode/kernel/var-type.icc +915 -0
  400. data/ext/gecode-2.2.0/gecode/kernel/var.icc +114 -0
  401. data/ext/gecode-2.2.0/gecode/kernel/view.icc +413 -0
  402. data/ext/gecode-2.2.0/gecode/minimodel.hh +1206 -0
  403. data/ext/gecode-2.2.0/gecode/minimodel/arithmetic.icc +118 -0
  404. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/bool-expr.cc +0 -0
  405. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/bool-expr.icc +0 -0
  406. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/bool-rel.icc +0 -0
  407. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/exception.icc +0 -0
  408. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/lin-expr.icc +0 -0
  409. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/lin-rel.icc +0 -0
  410. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/matrix.icc +0 -0
  411. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/reg.cc +0 -0
  412. data/ext/gecode-2.2.0/gecode/search.hh +759 -0
  413. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/bab.cc +0 -0
  414. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/bab.icc +0 -0
  415. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/dfs.cc +0 -0
  416. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/dfs.icc +0 -0
  417. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/engine-ctrl.icc +0 -0
  418. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/lds.cc +0 -0
  419. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/lds.icc +0 -0
  420. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/options.cc +0 -0
  421. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/options.icc +0 -0
  422. data/ext/gecode-2.2.0/gecode/search/reco-stack.icc +277 -0
  423. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/restart.icc +0 -0
  424. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/statistics.icc +0 -0
  425. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/stop.cc +0 -0
  426. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/stop.icc +0 -0
  427. data/ext/gecode-2.2.0/gecode/serialization.hh +149 -0
  428. data/ext/gecode-2.2.0/gecode/serialization/boost.cc +78 -0
  429. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/serialization/boost.icc +0 -0
  430. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/serialization/flatzinc.cc +0 -0
  431. data/ext/gecode-2.2.0/gecode/serialization/javascript.cc +343 -0
  432. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/serialization/javascript.hh +0 -0
  433. data/ext/gecode-2.2.0/gecode/serialization/register.cc +8498 -0
  434. data/ext/gecode-2.2.0/gecode/set.hh +970 -0
  435. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/array.cc +0 -0
  436. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/array.icc +0 -0
  437. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/branch.cc +0 -0
  438. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/branch.hh +0 -0
  439. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/branch/select-val.icc +0 -0
  440. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/branch/select-view.icc +0 -0
  441. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/cardinality.cc +0 -0
  442. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/convex.cc +0 -0
  443. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/convex.hh +0 -0
  444. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/convex/conv.cc +0 -0
  445. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/convex/conv.icc +0 -0
  446. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/convex/hull.cc +0 -0
  447. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/convex/hull.icc +0 -0
  448. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/distinct.cc +0 -0
  449. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/distinct.hh +0 -0
  450. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/distinct/atmostOne.cc +0 -0
  451. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/distinct/atmostOne.icc +0 -0
  452. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/dom.cc +0 -0
  453. data/ext/gecode-2.2.0/gecode/set/element.cc +135 -0
  454. data/ext/gecode-2.2.0/gecode/set/element.hh +233 -0
  455. data/ext/gecode-2.2.0/gecode/set/element/disjoint.cc +308 -0
  456. data/ext/gecode-2.2.0/gecode/set/element/disjoint.icc +75 -0
  457. data/ext/gecode-2.2.0/gecode/set/element/idxarray.hh +113 -0
  458. data/ext/gecode-2.2.0/gecode/set/element/idxarray.icc +155 -0
  459. data/ext/gecode-2.2.0/gecode/set/element/inter.icc +348 -0
  460. data/ext/gecode-2.2.0/gecode/set/element/union.icc +371 -0
  461. data/ext/gecode-2.2.0/gecode/set/element/unionConst.icc +334 -0
  462. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/exception.icc +0 -0
  463. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int.cc +0 -0
  464. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int.hh +0 -0
  465. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int/card.icc +0 -0
  466. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int/channel-bool.icc +0 -0
  467. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int/channel-int.icc +0 -0
  468. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int/match.icc +0 -0
  469. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int/minmax.icc +0 -0
  470. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int/weights.icc +0 -0
  471. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/limits.icc +0 -0
  472. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors-compiler.hh +0 -0
  473. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors.cc +0 -0
  474. data/ext/gecode-2.2.0/gecode/set/projectors.hh +438 -0
  475. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/compiler.cc +0 -0
  476. data/ext/gecode-2.2.0/gecode/set/projectors/formula.cc +312 -0
  477. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/formula.icc +0 -0
  478. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/projector-set.cc +0 -0
  479. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/projector-set.icc +0 -0
  480. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/projector.cc +0 -0
  481. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/projector.icc +0 -0
  482. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/propagator.hh +0 -0
  483. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/propagator/card.icc +0 -0
  484. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/propagator/nary.icc +0 -0
  485. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/propagator/re-nary.cc +0 -0
  486. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/propagator/re-nary.icc +0 -0
  487. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/set-expr.cc +0 -0
  488. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/set-expr.icc +0 -0
  489. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/propagator.icc +0 -0
  490. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op-const.cc +0 -0
  491. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op.cc +0 -0
  492. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op.hh +0 -0
  493. data/ext/gecode-2.2.0/gecode/set/rel-op/common.icc +613 -0
  494. data/ext/gecode-2.2.0/gecode/set/rel-op/inter.icc +452 -0
  495. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op/partition.icc +0 -0
  496. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op/post.icc +0 -0
  497. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op/subofunion.icc +0 -0
  498. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op/superofinter.icc +0 -0
  499. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op/union.icc +0 -0
  500. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel.cc +0 -0
  501. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel.hh +0 -0
  502. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel/common.icc +0 -0
  503. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel/eq.icc +0 -0
  504. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel/nosubset.icc +0 -0
  505. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel/nq.icc +0 -0
  506. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel/re-eq.icc +0 -0
  507. data/ext/gecode-2.2.0/gecode/set/rel/re-subset.icc +174 -0
  508. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel/subset.icc +0 -0
  509. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence.cc +0 -0
  510. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence.hh +0 -0
  511. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence/common.icc +0 -0
  512. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence/seq-u.cc +0 -0
  513. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence/seq-u.icc +0 -0
  514. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence/seq.cc +0 -0
  515. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence/seq.icc +0 -0
  516. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp.icc +0 -0
  517. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp/delta.icc +0 -0
  518. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp/integerset.cc +0 -0
  519. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp/integerset.icc +0 -0
  520. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp/iter.icc +0 -0
  521. data/ext/gecode-2.2.0/gecode/set/var-imp/set.cc +215 -0
  522. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp/set.icc +0 -0
  523. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp/set.vis +0 -0
  524. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var/set.cc +0 -0
  525. data/ext/gecode-2.2.0/gecode/set/var/set.icc +303 -0
  526. data/ext/gecode-2.2.0/gecode/set/view.icc +1451 -0
  527. data/ext/gecode-2.2.0/gecode/set/view/complement.icc +614 -0
  528. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/view/const.icc +0 -0
  529. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/view/offset.icc +0 -0
  530. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/view/print.cc +0 -0
  531. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/view/set.icc +0 -0
  532. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/view/singleton.icc +0 -0
  533. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support.hh +0 -0
  534. data/ext/gecode-2.2.0/gecode/support/block-allocator.icc +159 -0
  535. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/AUTHORS +0 -0
  536. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/ChangeLog +0 -0
  537. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/NEWS +0 -0
  538. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/README +0 -0
  539. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/bdd.h +0 -0
  540. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/bddio.c +0 -0
  541. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/bddop.c +0 -0
  542. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/bddtree.h +0 -0
  543. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/bvec.c +0 -0
  544. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/bvec.h +0 -0
  545. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/cache.c +0 -0
  546. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/cache.h +0 -0
  547. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/config.h +0 -0
  548. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/cppext.cc +0 -0
  549. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/fdd.c +0 -0
  550. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/fdd.h +0 -0
  551. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/imatrix.c +0 -0
  552. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/imatrix.h +0 -0
  553. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/kernel.c +0 -0
  554. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/kernel.h +0 -0
  555. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/pairs.c +0 -0
  556. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/prime.c +0 -0
  557. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/prime.h +0 -0
  558. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/reorder.c +0 -0
  559. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/tree.c +0 -0
  560. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/cast.icc +0 -0
  561. data/ext/gecode-2.2.0/gecode/support/config.icc.in +83 -0
  562. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/dynamic-array.icc +0 -0
  563. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/dynamic-stack.icc +0 -0
  564. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/exception.cc +0 -0
  565. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/exception.icc +0 -0
  566. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/macros.icc +0 -0
  567. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/map.icc +0 -0
  568. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/marked-pointer.icc +0 -0
  569. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/memory.icc +0 -0
  570. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/random.icc +0 -0
  571. data/ext/gecode-2.2.0/gecode/support/sentinel-stack.icc +138 -0
  572. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/sort.icc +0 -0
  573. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/static-pqueue.icc +0 -0
  574. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/static-stack.icc +0 -0
  575. data/ext/gecode-2.2.0/gecode/support/symbol.cc +241 -0
  576. data/ext/gecode-2.2.0/gecode/support/symbol.icc +134 -0
  577. data/ext/{gecode-2.1.1 → gecode-2.2.0}/install-sh +0 -0
  578. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/AppleHelpbookInfo.plist +0 -0
  579. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/allexamples.perl +0 -0
  580. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/Makefile.am +0 -0
  581. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/changelog +0 -0
  582. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/control +0 -0
  583. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/copyright +0 -0
  584. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/gecode.info +0 -0
  585. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/gecode.install +0 -0
  586. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/gecode.spec +0 -0
  587. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/rules +0 -0
  588. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/doxygen/back.png +0 -0
  589. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/doxygen/footer.html +0 -0
  590. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/doxygen/gecode-logo-100.png +0 -0
  591. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/doxygen/header.html +0 -0
  592. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/doxygen/stylesheet.css +0 -0
  593. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/fixproperties.sh +0 -0
  594. data/ext/gecode-2.2.0/misc/gecode-gist.pc.in +45 -0
  595. data/ext/gecode-2.2.0/misc/gecode-minimodel.pc.in +45 -0
  596. data/ext/gecode-2.2.0/misc/gecode-search.pc.in +45 -0
  597. data/ext/gecode-2.2.0/misc/gecode-serialization.pc.in +45 -0
  598. data/ext/gecode-2.2.0/misc/gecode.pc.in +45 -0
  599. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/genchangelog.perl +0 -0
  600. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/genlcovmakefile.perl +0 -0
  601. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/genlicense.perl +0 -0
  602. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/genregistry.perl +0 -0
  603. data/ext/gecode-2.2.0/misc/genstatistics.perl +179 -0
  604. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/gentxtchangelog.perl +0 -0
  605. data/ext/gecode-2.2.0/misc/genvariables.perl +905 -0
  606. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/getrevision.perl +0 -0
  607. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/makedepend.perl +0 -0
  608. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/svn-ignore.txt +0 -0
  609. data/ext/gecode-2.2.0/test/assign.cc +181 -0
  610. data/ext/gecode-2.2.0/test/assign.hh +93 -0
  611. data/ext/gecode-2.2.0/test/assign/bool.cc +61 -0
  612. data/ext/gecode-2.2.0/test/assign/int.cc +70 -0
  613. data/ext/gecode-2.2.0/test/branch.cc +563 -0
  614. data/ext/gecode-2.2.0/test/branch.hh +144 -0
  615. data/ext/gecode-2.2.0/test/branch/bool.cc +61 -0
  616. data/ext/gecode-2.2.0/test/branch/cpltset.cc +71 -0
  617. data/ext/gecode-2.2.0/test/branch/int.cc +70 -0
  618. data/ext/gecode-2.2.0/test/branch/set.cc +74 -0
  619. data/ext/gecode-2.2.0/test/cpltset.cc +568 -0
  620. data/ext/gecode-2.2.0/test/cpltset.hh +125 -0
  621. data/ext/gecode-2.2.0/test/cpltset/atmost.cc +155 -0
  622. data/ext/gecode-2.2.0/test/cpltset/cardinality.cc +138 -0
  623. data/ext/gecode-2.2.0/test/cpltset/dom.cc +137 -0
  624. data/ext/gecode-2.2.0/test/cpltset/partition.cc +210 -0
  625. data/ext/gecode-2.2.0/test/cpltset/rel.cc +158 -0
  626. data/ext/gecode-2.2.0/test/cpltset/select.cc +216 -0
  627. data/ext/gecode-2.2.0/test/int.cc +688 -0
  628. data/ext/gecode-2.2.0/test/int.hh +267 -0
  629. data/ext/gecode-2.2.0/test/int.icc +266 -0
  630. data/ext/gecode-2.2.0/test/int/arithmetic.cc +766 -0
  631. data/ext/gecode-2.2.0/test/int/basic.cc +77 -0
  632. data/ext/gecode-2.2.0/test/int/bool.cc +340 -0
  633. data/ext/gecode-2.2.0/test/int/channel.cc +238 -0
  634. data/ext/gecode-2.2.0/test/int/circuit.cc +100 -0
  635. data/ext/gecode-2.2.0/test/int/count.cc +357 -0
  636. data/ext/gecode-2.2.0/test/int/distinct.cc +248 -0
  637. data/ext/gecode-2.2.0/test/int/dom.cc +123 -0
  638. data/ext/gecode-2.2.0/test/int/element.cc +333 -0
  639. data/ext/gecode-2.2.0/test/int/extensional.cc +475 -0
  640. data/ext/gecode-2.2.0/test/int/gcc.cc +293 -0
  641. data/ext/gecode-2.2.0/test/int/linear.cc +383 -0
  642. data/ext/gecode-2.2.0/test/int/mm-arithmetic.cc +302 -0
  643. data/ext/gecode-2.2.0/test/int/mm-bool.cc +4342 -0
  644. data/ext/gecode-2.2.0/test/int/mm-count.cc +295 -0
  645. data/ext/gecode-2.2.0/test/int/mm-lin.cc +2035 -0
  646. data/ext/gecode-2.2.0/test/int/mm-rel.cc +136 -0
  647. data/ext/gecode-2.2.0/test/int/rel.cc +416 -0
  648. data/ext/gecode-2.2.0/test/int/scheduling.cc +276 -0
  649. data/ext/gecode-2.2.0/test/int/sorted.cc +165 -0
  650. data/ext/gecode-2.2.0/test/int/unshare.cc +109 -0
  651. data/ext/gecode-2.2.0/test/search.cc +618 -0
  652. data/ext/gecode-2.2.0/test/set.cc +753 -0
  653. data/ext/gecode-2.2.0/test/set.hh +286 -0
  654. data/ext/gecode-2.2.0/test/set.icc +108 -0
  655. data/ext/gecode-2.2.0/test/set/convex.cc +139 -0
  656. data/ext/gecode-2.2.0/test/set/distinct.cc +116 -0
  657. data/ext/gecode-2.2.0/test/set/dom.cc +292 -0
  658. data/ext/gecode-2.2.0/test/set/int.cc +473 -0
  659. data/ext/gecode-2.2.0/test/set/projection.cc +436 -0
  660. data/ext/gecode-2.2.0/test/set/rel-op-const.cc +368 -0
  661. data/ext/gecode-2.2.0/test/set/rel-op.cc +465 -0
  662. data/ext/gecode-2.2.0/test/set/rel.cc +125 -0
  663. data/ext/gecode-2.2.0/test/set/select.cc +299 -0
  664. data/ext/gecode-2.2.0/test/set/sequence.cc +125 -0
  665. data/ext/gecode-2.2.0/test/test.cc +287 -0
  666. data/ext/gecode-2.2.0/test/test.hh +175 -0
  667. data/ext/gecode-2.2.0/test/test.icc +93 -0
  668. data/ext/{gecode-2.1.1 → gecode-2.2.0}/variables.vsl +0 -0
  669. data/lib/gecoder/bindings.rb +7 -5
  670. data/lib/gecoder/bindings/bindings.rb +8 -8
  671. data/lib/gecoder/interface.rb +4 -2
  672. data/lib/gecoder/interface/binding_changes.rb +1 -1
  673. data/lib/gecoder/interface/branch.rb +1 -1
  674. data/lib/gecoder/interface/constraints/bool_enum_constraints.rb +4 -4
  675. data/lib/gecoder/interface/constraints/bool_var_constraints.rb +2 -2
  676. data/lib/gecoder/interface/constraints/extensional_regexp.rb +1 -1
  677. data/lib/gecoder/interface/constraints/fixnum_enum_constraints.rb +2 -2
  678. data/lib/gecoder/interface/constraints/int_enum/extensional.rb +5 -5
  679. data/lib/gecoder/interface/constraints/int_enum_constraints.rb +4 -4
  680. data/lib/gecoder/interface/constraints/int_var_constraints.rb +2 -2
  681. data/lib/gecoder/interface/constraints/selected_set/select.rb +8 -8
  682. data/lib/gecoder/interface/constraints/set_enum/element.rb +79 -0
  683. data/lib/gecoder/interface/constraints/set_enum_constraints.rb +5 -5
  684. data/lib/gecoder/interface/constraints/set_var_constraints.rb +2 -2
  685. data/lib/gecoder/interface/convenience.rb +99 -0
  686. data/lib/gecoder/interface/enum_wrapper.rb +1 -1
  687. data/lib/gecoder/interface/mixin.rb +486 -0
  688. data/lib/gecoder/interface/search.rb +23 -22
  689. data/lib/gecoder/version.rb +1 -1
  690. data/specs/branch.rb +5 -3
  691. data/specs/constraints/bool/boolean.rb +3 -1
  692. data/specs/constraints/bool/linear.rb +3 -1
  693. data/specs/constraints/bool_enum/bool_enum_relation.rb +3 -1
  694. data/specs/constraints/bool_enum/channel.rb +3 -1
  695. data/specs/constraints/fixnum_enum/element.rb +3 -1
  696. data/specs/constraints/int/arithmetic.rb +3 -1
  697. data/specs/constraints/int/channel.rb +3 -1
  698. data/specs/constraints/int/linear.rb +3 -1
  699. data/specs/constraints/int/linear_properties.rb +3 -1
  700. data/specs/constraints/int_enum/arithmetic.rb +3 -1
  701. data/specs/constraints/int_enum/channel.rb +3 -1
  702. data/specs/constraints/int_enum/count.rb +3 -1
  703. data/specs/constraints/int_enum/distinct.rb +3 -1
  704. data/specs/constraints/int_enum/element.rb +3 -1
  705. data/specs/constraints/int_enum/sort.rb +3 -1
  706. data/specs/constraints/property_helper.rb +10 -10
  707. data/specs/constraints/reification_sugar.rb +3 -1
  708. data/specs/constraints/selected_set/select.rb +6 -5
  709. data/specs/constraints/selected_set/select_properties.rb +12 -10
  710. data/specs/constraints/set/channel.rb +3 -1
  711. data/specs/constraints/set/domain.rb +4 -4
  712. data/specs/constraints/set/relation.rb +4 -4
  713. data/specs/constraints/set_enum/channel.rb +3 -1
  714. data/specs/constraints/set_enum/distinct.rb +3 -1
  715. data/specs/constraints/set_enum/element.rb +77 -0
  716. data/specs/enum_wrapper.rb +1 -1
  717. data/specs/mixin.rb +78 -0
  718. data/specs/model.rb +5 -5
  719. data/specs/search.rb +20 -14
  720. data/specs/selected_set.rb +3 -3
  721. data/specs/set_elements.rb +2 -2
  722. data/tasks/distribution.rake +25 -4
  723. metadata +739 -602
  724. data/example/money.rb +0 -36
  725. data/ext/gecode-2.1.1/Makefile.dep +0 -7622
  726. data/ext/gecode-2.1.1/Makefile.in +0 -1568
  727. data/ext/gecode-2.1.1/changelog.in +0 -2459
  728. data/ext/gecode-2.1.1/configure +0 -11631
  729. data/ext/gecode-2.1.1/configure.ac +0 -249
  730. data/ext/gecode-2.1.1/configure.ac.in +0 -245
  731. data/ext/gecode-2.1.1/contribs/qecode/Doxyfile +0 -263
  732. data/ext/gecode-2.1.1/contribs/qecode/FirstFailValueHeuristic.cc +0 -82
  733. data/ext/gecode-2.1.1/contribs/qecode/FirstFailValueHeuristic.hh +0 -37
  734. data/ext/gecode-2.1.1/contribs/qecode/Makefile.in.in +0 -162
  735. data/ext/gecode-2.1.1/contribs/qecode/NaiveValueHeuristics.cc +0 -172
  736. data/ext/gecode-2.1.1/contribs/qecode/NaiveValueHeuristics.hh +0 -63
  737. data/ext/gecode-2.1.1/contribs/qecode/SDFVariableHeuristic.cc +0 -37
  738. data/ext/gecode-2.1.1/contribs/qecode/SDFVariableHeuristic.hh +0 -35
  739. data/ext/gecode-2.1.1/contribs/qecode/configure +0 -2264
  740. data/ext/gecode-2.1.1/contribs/qecode/configure.ac +0 -23
  741. data/ext/gecode-2.1.1/contribs/qecode/examples/COMPILING +0 -13
  742. data/ext/gecode-2.1.1/contribs/qecode/examples/MatrixGame.cpp +0 -144
  743. data/ext/gecode-2.1.1/contribs/qecode/examples/NimFibo.cpp +0 -73
  744. data/ext/gecode-2.1.1/contribs/qecode/examples/stress_test.cpp +0 -179
  745. data/ext/gecode-2.1.1/contribs/qecode/extensivecomparator.cc +0 -34
  746. data/ext/gecode-2.1.1/contribs/qecode/extensivecomparator.hh +0 -46
  747. data/ext/gecode-2.1.1/contribs/qecode/implicative.cc +0 -595
  748. data/ext/gecode-2.1.1/contribs/qecode/implicative.hh +0 -184
  749. data/ext/gecode-2.1.1/contribs/qecode/myspace.hh +0 -69
  750. data/ext/gecode-2.1.1/contribs/qecode/qecore.cc +0 -145
  751. data/ext/gecode-2.1.1/contribs/qecode/qecore.hh +0 -247
  752. data/ext/gecode-2.1.1/contribs/qecode/qsolver.cc +0 -168
  753. data/ext/gecode-2.1.1/contribs/qecode/qsolver.hh +0 -73
  754. data/ext/gecode-2.1.1/contribs/qecode/valueHeuristic.hh +0 -91
  755. data/ext/gecode-2.1.1/contribs/qecode/warner.cc +0 -101
  756. data/ext/gecode-2.1.1/contribs/qecode/warner.hh +0 -83
  757. data/ext/gecode-2.1.1/doxygen/doxygen.hh.in +0 -1111
  758. data/ext/gecode-2.1.1/doxygen/reflection.hh +0 -417
  759. data/ext/gecode-2.1.1/gecode.m4 +0 -956
  760. data/ext/gecode-2.1.1/gecode/cpltset.hh +0 -797
  761. data/ext/gecode-2.1.1/gecode/gist/analysiscursor.cc +0 -115
  762. data/ext/gecode-2.1.1/gecode/gist/analysiscursor.hh +0 -77
  763. data/ext/gecode-2.1.1/gecode/gist/drawingcursor.cc +0 -245
  764. data/ext/gecode-2.1.1/gecode/gist/drawingcursor.hh +0 -101
  765. data/ext/gecode-2.1.1/gecode/gist/gecodelogo.icc +0 -522
  766. data/ext/gecode-2.1.1/gecode/gist/mainwindow.cc +0 -254
  767. data/ext/gecode-2.1.1/gecode/gist/mainwindow.hh +0 -86
  768. data/ext/gecode-2.1.1/gecode/gist/node.cc +0 -100
  769. data/ext/gecode-2.1.1/gecode/gist/node.hh +0 -89
  770. data/ext/gecode-2.1.1/gecode/gist/nodecursor.cc +0 -124
  771. data/ext/gecode-2.1.1/gecode/gist/nodecursor.hh +0 -122
  772. data/ext/gecode-2.1.1/gecode/gist/nodecursor.icc +0 -79
  773. data/ext/gecode-2.1.1/gecode/gist/postscript.cc +0 -543
  774. data/ext/gecode-2.1.1/gecode/gist/postscript.hh +0 -56
  775. data/ext/gecode-2.1.1/gecode/gist/preferences.cc +0 -110
  776. data/ext/gecode-2.1.1/gecode/gist/preferences.hh +0 -76
  777. data/ext/gecode-2.1.1/gecode/gist/reflectionhelpers.cc +0 -55
  778. data/ext/gecode-2.1.1/gecode/gist/reflectionhelpers.hh +0 -58
  779. data/ext/gecode-2.1.1/gecode/gist/shapelist.cc +0 -331
  780. data/ext/gecode-2.1.1/gecode/gist/shapelist.hh +0 -140
  781. data/ext/gecode-2.1.1/gecode/gist/spacenode.cc +0 -531
  782. data/ext/gecode-2.1.1/gecode/gist/spacenode.hh +0 -224
  783. data/ext/gecode-2.1.1/gecode/gist/textoutput.cc +0 -114
  784. data/ext/gecode-2.1.1/gecode/gist/treecanvas.cc +0 -1140
  785. data/ext/gecode-2.1.1/gecode/gist/treecanvas.hh +0 -324
  786. data/ext/gecode-2.1.1/gecode/gist/ui_addvisualisationdialog.hh +0 -163
  787. data/ext/gecode-2.1.1/gecode/gist/visualisation/intvaritem.cc +0 -175
  788. data/ext/gecode-2.1.1/gecode/gist/visualisation/intvaritem.hh +0 -71
  789. data/ext/gecode-2.1.1/gecode/gist/visualisation/setvaritem.cc +0 -219
  790. data/ext/gecode-2.1.1/gecode/gist/visualisation/setvaritem.hh +0 -73
  791. data/ext/gecode-2.1.1/gecode/gist/visualisation/vararrayitem.hh +0 -123
  792. data/ext/gecode-2.1.1/gecode/gist/visualnode.cc +0 -303
  793. data/ext/gecode-2.1.1/gecode/gist/visualnode.hh +0 -166
  794. data/ext/gecode-2.1.1/gecode/int.hh +0 -2035
  795. data/ext/gecode-2.1.1/gecode/int/arithmetic.cc +0 -136
  796. data/ext/gecode-2.1.1/gecode/int/arithmetic.hh +0 -440
  797. data/ext/gecode-2.1.1/gecode/int/arithmetic/abs.icc +0 -279
  798. data/ext/gecode-2.1.1/gecode/int/arithmetic/max.icc +0 -253
  799. data/ext/gecode-2.1.1/gecode/int/arithmetic/mult.icc +0 -522
  800. data/ext/gecode-2.1.1/gecode/int/arithmetic/sqr.icc +0 -218
  801. data/ext/gecode-2.1.1/gecode/int/arithmetic/sqrt.icc +0 -138
  802. data/ext/gecode-2.1.1/gecode/int/bool.cc +0 -642
  803. data/ext/gecode-2.1.1/gecode/int/bool/or.icc +0 -1000
  804. data/ext/gecode-2.1.1/gecode/int/branch.cc +0 -301
  805. data/ext/gecode-2.1.1/gecode/int/branch.hh +0 -576
  806. data/ext/gecode-2.1.1/gecode/int/branch/select-val.icc +0 -338
  807. data/ext/gecode-2.1.1/gecode/int/channel.cc +0 -114
  808. data/ext/gecode-2.1.1/gecode/int/channel.hh +0 -259
  809. data/ext/gecode-2.1.1/gecode/int/channel/dom.icc +0 -347
  810. data/ext/gecode-2.1.1/gecode/int/channel/val.icc +0 -276
  811. data/ext/gecode-2.1.1/gecode/int/circuit.hh +0 -175
  812. data/ext/gecode-2.1.1/gecode/int/circuit/base.icc +0 -271
  813. data/ext/gecode-2.1.1/gecode/int/circuit/val.icc +0 -122
  814. data/ext/gecode-2.1.1/gecode/int/count.hh +0 -487
  815. data/ext/gecode-2.1.1/gecode/int/count/int.icc +0 -619
  816. data/ext/gecode-2.1.1/gecode/int/count/rel.icc +0 -144
  817. data/ext/gecode-2.1.1/gecode/int/count/view.icc +0 -449
  818. data/ext/gecode-2.1.1/gecode/int/cumulatives.hh +0 -141
  819. data/ext/gecode-2.1.1/gecode/int/cumulatives/val.icc +0 -429
  820. data/ext/gecode-2.1.1/gecode/int/distinct.hh +0 -341
  821. data/ext/gecode-2.1.1/gecode/int/distinct/dom.icc +0 -750
  822. data/ext/gecode-2.1.1/gecode/int/distinct/ter-dom.icc +0 -136
  823. data/ext/gecode-2.1.1/gecode/int/element.hh +0 -239
  824. data/ext/gecode-2.1.1/gecode/int/element/int.icc +0 -441
  825. data/ext/gecode-2.1.1/gecode/int/element/view.icc +0 -584
  826. data/ext/gecode-2.1.1/gecode/int/exception.icc +0 -163
  827. data/ext/gecode-2.1.1/gecode/int/extensional.hh +0 -415
  828. data/ext/gecode-2.1.1/gecode/int/extensional/dfa.cc +0 -565
  829. data/ext/gecode-2.1.1/gecode/int/extensional/tuple-set.cc +0 -311
  830. data/ext/gecode-2.1.1/gecode/int/gcc.hh +0 -329
  831. data/ext/gecode-2.1.1/gecode/int/gcc/bnd.icc +0 -660
  832. data/ext/gecode-2.1.1/gecode/int/gcc/dom.icc +0 -531
  833. data/ext/gecode-2.1.1/gecode/int/gcc/val.icc +0 -400
  834. data/ext/gecode-2.1.1/gecode/int/int-set.cc +0 -153
  835. data/ext/gecode-2.1.1/gecode/int/int-set.icc +0 -191
  836. data/ext/gecode-2.1.1/gecode/int/linear-bool.cc +0 -220
  837. data/ext/gecode-2.1.1/gecode/int/linear-int.cc +0 -240
  838. data/ext/gecode-2.1.1/gecode/int/linear.hh +0 -1849
  839. data/ext/gecode-2.1.1/gecode/int/linear/bool-post.cc +0 -433
  840. data/ext/gecode-2.1.1/gecode/int/linear/int-bin.icc +0 -605
  841. data/ext/gecode-2.1.1/gecode/int/linear/int-dom.icc +0 -539
  842. data/ext/gecode-2.1.1/gecode/int/linear/int-post.cc +0 -493
  843. data/ext/gecode-2.1.1/gecode/int/rel.cc +0 -431
  844. data/ext/gecode-2.1.1/gecode/int/rel.hh +0 -657
  845. data/ext/gecode-2.1.1/gecode/int/rel/eq.icc +0 -848
  846. data/ext/gecode-2.1.1/gecode/int/rel/lex.icc +0 -248
  847. data/ext/gecode-2.1.1/gecode/int/rel/nq.icc +0 -269
  848. data/ext/gecode-2.1.1/gecode/int/sorted.cc +0 -91
  849. data/ext/gecode-2.1.1/gecode/int/sorted.hh +0 -117
  850. data/ext/gecode-2.1.1/gecode/int/sorted/matching.icc +0 -182
  851. data/ext/gecode-2.1.1/gecode/int/sorted/narrowing.icc +0 -257
  852. data/ext/gecode-2.1.1/gecode/int/sorted/order.icc +0 -208
  853. data/ext/gecode-2.1.1/gecode/int/sorted/propagate.icc +0 -669
  854. data/ext/gecode-2.1.1/gecode/int/sorted/sortsup.icc +0 -596
  855. data/ext/gecode-2.1.1/gecode/int/var-imp.icc +0 -745
  856. data/ext/gecode-2.1.1/gecode/int/var-imp/bool.cc +0 -104
  857. data/ext/gecode-2.1.1/gecode/int/var-imp/int.cc +0 -407
  858. data/ext/gecode-2.1.1/gecode/int/var/bool.icc +0 -126
  859. data/ext/gecode-2.1.1/gecode/int/var/int.icc +0 -151
  860. data/ext/gecode-2.1.1/gecode/int/view.icc +0 -1894
  861. data/ext/gecode-2.1.1/gecode/iter.hh +0 -90
  862. data/ext/gecode-2.1.1/gecode/iter/values-minus.icc +0 -130
  863. data/ext/gecode-2.1.1/gecode/kernel.hh +0 -182
  864. data/ext/gecode-2.1.1/gecode/kernel/branching.icc +0 -447
  865. data/ext/gecode-2.1.1/gecode/kernel/core.cc +0 -473
  866. data/ext/gecode-2.1.1/gecode/kernel/core.icc +0 -2295
  867. data/ext/gecode-2.1.1/gecode/kernel/memory-manager.icc +0 -458
  868. data/ext/gecode-2.1.1/gecode/kernel/reflection.cc +0 -921
  869. data/ext/gecode-2.1.1/gecode/kernel/reflection.icc +0 -1012
  870. data/ext/gecode-2.1.1/gecode/kernel/var-imp.icc +0 -433
  871. data/ext/gecode-2.1.1/gecode/kernel/var-map.cc +0 -269
  872. data/ext/gecode-2.1.1/gecode/kernel/var-map.icc +0 -227
  873. data/ext/gecode-2.1.1/gecode/kernel/var-traits.icc +0 -72
  874. data/ext/gecode-2.1.1/gecode/kernel/var-type.icc +0 -915
  875. data/ext/gecode-2.1.1/gecode/kernel/var.icc +0 -120
  876. data/ext/gecode-2.1.1/gecode/kernel/view.icc +0 -611
  877. data/ext/gecode-2.1.1/gecode/minimodel.hh +0 -1165
  878. data/ext/gecode-2.1.1/gecode/minimodel/arithmetic.cc +0 -179
  879. data/ext/gecode-2.1.1/gecode/search.hh +0 -752
  880. data/ext/gecode-2.1.1/gecode/search/reco-stack.icc +0 -237
  881. data/ext/gecode-2.1.1/gecode/serialization.hh +0 -149
  882. data/ext/gecode-2.1.1/gecode/serialization/boost.cc +0 -78
  883. data/ext/gecode-2.1.1/gecode/serialization/javascript.cc +0 -340
  884. data/ext/gecode-2.1.1/gecode/serialization/register.cc +0 -8142
  885. data/ext/gecode-2.1.1/gecode/set.hh +0 -970
  886. data/ext/gecode-2.1.1/gecode/set/projectors.hh +0 -438
  887. data/ext/gecode-2.1.1/gecode/set/projectors/formula.cc +0 -312
  888. data/ext/gecode-2.1.1/gecode/set/rel-op/common.icc +0 -557
  889. data/ext/gecode-2.1.1/gecode/set/rel-op/inter.icc +0 -409
  890. data/ext/gecode-2.1.1/gecode/set/rel/re-subset.icc +0 -172
  891. data/ext/gecode-2.1.1/gecode/set/select.cc +0 -135
  892. data/ext/gecode-2.1.1/gecode/set/select.hh +0 -233
  893. data/ext/gecode-2.1.1/gecode/set/select/disjoint.cc +0 -308
  894. data/ext/gecode-2.1.1/gecode/set/select/disjoint.icc +0 -75
  895. data/ext/gecode-2.1.1/gecode/set/select/idxarray.hh +0 -113
  896. data/ext/gecode-2.1.1/gecode/set/select/idxarray.icc +0 -155
  897. data/ext/gecode-2.1.1/gecode/set/select/inter.icc +0 -349
  898. data/ext/gecode-2.1.1/gecode/set/select/union.icc +0 -371
  899. data/ext/gecode-2.1.1/gecode/set/select/unionConst.icc +0 -334
  900. data/ext/gecode-2.1.1/gecode/set/var-imp/set.cc +0 -214
  901. data/ext/gecode-2.1.1/gecode/set/var/set.icc +0 -303
  902. data/ext/gecode-2.1.1/gecode/set/view.icc +0 -1503
  903. data/ext/gecode-2.1.1/gecode/set/view/complement.icc +0 -629
  904. data/ext/gecode-2.1.1/gecode/support/block-allocator.icc +0 -158
  905. data/ext/gecode-2.1.1/gecode/support/config.icc.in +0 -80
  906. data/ext/gecode-2.1.1/gecode/support/sentinel-stack.icc +0 -122
  907. data/ext/gecode-2.1.1/gecode/support/symbol.cc +0 -226
  908. data/ext/gecode-2.1.1/gecode/support/symbol.icc +0 -130
  909. data/ext/gecode-2.1.1/misc/gecode-gist.pc.in +0 -45
  910. data/ext/gecode-2.1.1/misc/gecode-minimodel.pc.in +0 -45
  911. data/ext/gecode-2.1.1/misc/gecode-search.pc.in +0 -45
  912. data/ext/gecode-2.1.1/misc/gecode-serialization.pc.in +0 -45
  913. data/ext/gecode-2.1.1/misc/gecode.pc.in +0 -45
  914. data/ext/gecode-2.1.1/misc/genstatistics.perl +0 -178
  915. data/ext/gecode-2.1.1/misc/genvariables.perl +0 -905
  916. data/lib/gecoder/interface/constraints/set_enum/select.rb +0 -79
  917. data/lib/gecoder/interface/model.rb +0 -453
  918. data/lib/gecoder/interface/model_sugar.rb +0 -84
  919. data/specs/constraints/set_enum/select.rb +0 -73
@@ -0,0 +1,237 @@
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, 2002
8
+ *
9
+ * Last modified:
10
+ * $Date: 2008-07-11 10:52:51 +0200 (Fri, 11 Jul 2008) $ by $Author: tack $
11
+ * $Revision: 7352 $
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
+ #include "gecode/int/arithmetic.hh"
39
+
40
+ namespace Gecode {
41
+
42
+ using namespace Int;
43
+
44
+ void
45
+ abs(Space* home, IntVar x0, IntVar x1, IntConLevel icl, PropKind) {
46
+ if (home->failed()) return;
47
+ if (icl == ICL_DOM) {
48
+ GECODE_ES_FAIL(home,Arithmetic::AbsDom<IntView>::post(home,x0,x1));
49
+ } else {
50
+ GECODE_ES_FAIL(home,Arithmetic::AbsBnd<IntView>::post(home,x0,x1));
51
+ }
52
+ }
53
+
54
+
55
+ void
56
+ max(Space* home, IntVar x0, IntVar x1, IntVar x2,
57
+ IntConLevel icl, PropKind) {
58
+ if (home->failed()) return;
59
+ if (icl == ICL_DOM) {
60
+ GECODE_ES_FAIL(home,Arithmetic::MaxDom<IntView>::post(home,x0,x1,x2));
61
+ } else {
62
+ GECODE_ES_FAIL(home,Arithmetic::MaxBnd<IntView>::post(home,x0,x1,x2));
63
+ }
64
+ }
65
+
66
+ void
67
+ max(Space* home, const IntVarArgs& x, IntVar y,
68
+ IntConLevel icl, PropKind) {
69
+ if (x.size() == 0)
70
+ throw TooFewArguments("Int::max");
71
+ if (home->failed()) return;
72
+ ViewArray<IntView> xv(home,x);
73
+ if (icl == ICL_DOM) {
74
+ GECODE_ES_FAIL(home,Arithmetic::NaryMaxDom<IntView>::post(home,xv,y));
75
+ } else {
76
+ GECODE_ES_FAIL(home,Arithmetic::NaryMaxBnd<IntView>::post(home,xv,y));
77
+ }
78
+ }
79
+
80
+
81
+ void
82
+ min(Space* home, IntVar x0, IntVar x1, IntVar x2,
83
+ IntConLevel icl, PropKind) {
84
+ if (home->failed()) return;
85
+ MinusView m0(x0); MinusView m1(x1); MinusView m2(x2);
86
+ if (icl == ICL_DOM) {
87
+ GECODE_ES_FAIL(home,Arithmetic::MaxDom<MinusView>::post(home,m0,m1,m2));
88
+ } else {
89
+ GECODE_ES_FAIL(home,Arithmetic::MaxBnd<MinusView>::post(home,m0,m1,m2));
90
+ }
91
+ }
92
+
93
+ void
94
+ min(Space* home, const IntVarArgs& x, IntVar y,
95
+ IntConLevel icl, PropKind) {
96
+ if (x.size() == 0)
97
+ throw TooFewArguments("Int::min");
98
+ if (home->failed()) return;
99
+ ViewArray<MinusView> m(home,x.size());
100
+ for (int i=x.size(); i--; )
101
+ m[i].init(x[i]);
102
+ MinusView my(y);
103
+ if (icl == ICL_DOM) {
104
+ GECODE_ES_FAIL(home,Arithmetic::NaryMaxDom<MinusView>::post(home,m,my));
105
+ } else {
106
+ GECODE_ES_FAIL(home,Arithmetic::NaryMaxBnd<MinusView>::post(home,m,my));
107
+ }
108
+ }
109
+
110
+
111
+ void
112
+ mult(Space* home, IntVar x0, IntVar x1, IntVar x2,
113
+ IntConLevel icl, PropKind) {
114
+ if (home->failed()) return;
115
+ if (icl == ICL_DOM) {
116
+ GECODE_ES_FAIL(home,Arithmetic::MultDom<IntView>::post(home,x0,x1,x2));
117
+ } else {
118
+ GECODE_ES_FAIL(home,Arithmetic::MultBnd<IntView>::post(home,x0,x1,x2));
119
+ }
120
+ }
121
+
122
+
123
+ void
124
+ sqr(Space* home, IntVar x0, IntVar x1, IntConLevel icl, PropKind) {
125
+ if (home->failed()) return;
126
+ if (icl == ICL_DOM) {
127
+ GECODE_ES_FAIL(home,Arithmetic::SqrDom<IntView>::post(home,x0,x1));
128
+ } else {
129
+ GECODE_ES_FAIL(home,Arithmetic::SqrBnd<IntView>::post(home,x0,x1));
130
+ }
131
+ }
132
+
133
+ void
134
+ sqrt(Space* home, IntVar x0, IntVar x1, IntConLevel icl, PropKind) {
135
+ if (home->failed()) return;
136
+ if (icl == ICL_DOM) {
137
+ GECODE_ES_FAIL(home,Arithmetic::SqrtDom<IntView>::post(home,x0,x1));
138
+ } else {
139
+ GECODE_ES_FAIL(home,Arithmetic::SqrtBnd<IntView>::post(home,x0,x1));
140
+ }
141
+ }
142
+
143
+ void
144
+ divmod(Space* home, IntVar x0, IntVar x1, IntVar x2, IntVar x3,
145
+ IntConLevel, PropKind) {
146
+ if (home->failed()) return;
147
+
148
+ IntVar prod(home, Int::Limits::min, Int::Limits::max);
149
+ GECODE_ES_FAIL(home,
150
+ Arithmetic::MultBnd<IntView>::post(home,x1,x2,prod));
151
+ Linear::Term<IntView> t[3];
152
+ t[0].a = 1; t[0].x = prod;
153
+ t[1].a = 1; t[1].x = x3;
154
+ int min, max;
155
+ Linear::estimate(t,2,0,min,max);
156
+ IntView x0v(x0);
157
+ GECODE_ME_FAIL(home, x0v.gq(home,min));
158
+ GECODE_ME_FAIL(home, x0v.lq(home,max));
159
+ t[2].a=-1; t[2].x=x0;
160
+ Linear::post(home,t,3,IRT_EQ,0);
161
+ if (home->failed()) return;
162
+ IntView x1v(x1);
163
+ GECODE_ES_FAIL(home,
164
+ Arithmetic::DivMod<IntView>::post(home,x1,x3));
165
+ }
166
+
167
+ void
168
+ div(Space* home, IntVar x0, IntVar x1, IntVar x2,
169
+ IntConLevel, PropKind) {
170
+ if (home->failed()) return;
171
+ GECODE_ES_FAIL(home,
172
+ (Arithmetic::DivBnd<IntView>::post(home,x0,x1,x2)));
173
+ }
174
+
175
+ void
176
+ mod(Space* home, IntVar x0, IntVar x1, IntVar x2,
177
+ IntConLevel icl, PropKind pk) {
178
+ if (home->failed()) return;
179
+ IntVar _div(home, Int::Limits::min, Int::Limits::max);
180
+ divmod(home, x0, x1, _div, x2, icl, pk);
181
+ }
182
+
183
+ namespace {
184
+ GECODE_REGISTER1(Arithmetic::AbsBnd<IntView>);
185
+ GECODE_REGISTER1(Arithmetic::AbsDom<IntView>);
186
+
187
+ GECODE_REGISTER1(Arithmetic::MaxBnd<IntView>);
188
+ GECODE_REGISTER1(Arithmetic::MaxDom<IntView>);
189
+ GECODE_REGISTER1(Arithmetic::MaxBnd<MinusView>);
190
+ GECODE_REGISTER1(Arithmetic::MaxDom<MinusView>);
191
+ GECODE_REGISTER1(Arithmetic::NaryMaxBnd<IntView>);
192
+ GECODE_REGISTER1(Arithmetic::NaryMaxDom<IntView>);
193
+ GECODE_REGISTER1(Arithmetic::NaryMaxBnd<MinusView>);
194
+ GECODE_REGISTER1(Arithmetic::NaryMaxDom<MinusView>);
195
+
196
+ GECODE_REGISTER2(Arithmetic::MultZeroOne<IntView,PC_INT_BND>);
197
+ GECODE_REGISTER2(Arithmetic::MultZeroOne<IntView,PC_INT_DOM>);
198
+ GECODE_REGISTER4(Arithmetic::MultPlusBnd<double,IntView,IntView,IntView>);
199
+ GECODE_REGISTER4(Arithmetic::MultPlusBnd<double,MinusView,IntView,MinusView>);
200
+ GECODE_REGISTER4(Arithmetic::MultPlusBnd<double,MinusView,MinusView,IntView>);
201
+ GECODE_REGISTER4(Arithmetic::MultPlusBnd<int,IntView,IntView,IntView>);
202
+ GECODE_REGISTER4(Arithmetic::MultPlusBnd<int,MinusView,IntView,MinusView>);
203
+ GECODE_REGISTER4(Arithmetic::MultPlusBnd<int,MinusView,MinusView,IntView>);
204
+ GECODE_REGISTER1(Arithmetic::MultBnd<IntView>);
205
+ GECODE_REGISTER4(Arithmetic::MultPlusDom<double,IntView,IntView,IntView>);
206
+ GECODE_REGISTER4(Arithmetic::MultPlusDom<double,MinusView,IntView,MinusView>);
207
+ GECODE_REGISTER4(Arithmetic::MultPlusDom<double,MinusView,MinusView,IntView>);
208
+ GECODE_REGISTER4(Arithmetic::MultPlusDom<int,IntView,IntView,IntView>);
209
+ GECODE_REGISTER4(Arithmetic::MultPlusDom<int,MinusView,IntView,MinusView>);
210
+ GECODE_REGISTER4(Arithmetic::MultPlusDom<int,MinusView,MinusView,IntView>);
211
+ GECODE_REGISTER1(Arithmetic::MultDom<IntView>);
212
+
213
+ GECODE_REGISTER1(Arithmetic::SqrBnd<IntView>);
214
+ GECODE_REGISTER2(Arithmetic::SqrPlusBnd<IntView,IntView>);
215
+ GECODE_REGISTER2(Arithmetic::SqrPlusBnd<MinusView,IntView>);
216
+ GECODE_REGISTER1(Arithmetic::SqrDom<IntView>);
217
+ GECODE_REGISTER2(Arithmetic::SqrPlusDom<IntView,IntView>);
218
+ GECODE_REGISTER2(Arithmetic::SqrPlusDom<MinusView,IntView>);
219
+
220
+ GECODE_REGISTER1(Arithmetic::SqrtBnd<IntView>);
221
+ GECODE_REGISTER1(Arithmetic::SqrtDom<IntView>);
222
+ GECODE_REGISTER1(Arithmetic::DivMod<IntView>);
223
+
224
+ GECODE_REGISTER4(Arithmetic::DivPlusBnd<int,IntView,IntView,IntView>);
225
+ GECODE_REGISTER4(Arithmetic::DivPlusBnd<double,IntView,IntView,IntView>);
226
+ GECODE_REGISTER4(Arithmetic::DivPlusBnd<double,MinusView,
227
+ MinusView,IntView>);
228
+ GECODE_REGISTER5(Arithmetic::DivPlusBnd<double,IntView,MinusView,
229
+ MinusView,false>);
230
+ GECODE_REGISTER5(Arithmetic::DivPlusBnd<double,MinusView,IntView,
231
+ MinusView,false>);
232
+ GECODE_REGISTER1(Arithmetic::DivBnd<IntView>);
233
+ }
234
+ }
235
+
236
+ // STATISTICS: int-post
237
+
@@ -0,0 +1,827 @@
1
+ /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Main authors:
4
+ * Christian Schulte <schulte@gecode.org>
5
+ * Guido Tack <tack@gecode.org>
6
+ *
7
+ * Copyright:
8
+ * Christian Schulte, 2002
9
+ * Guido Tack, 2004
10
+ *
11
+ * Last modified:
12
+ * $Date: 2008-07-11 10:52:51 +0200 (Fri, 11 Jul 2008) $ by $Author: tack $
13
+ * $Revision: 7352 $
14
+ *
15
+ * This file is part of Gecode, the generic constraint
16
+ * development environment:
17
+ * http://www.gecode.org
18
+ *
19
+ * Permission is hereby granted, free of charge, to any person obtaining
20
+ * a copy of this software and associated documentation files (the
21
+ * "Software"), to deal in the Software without restriction, including
22
+ * without limitation the rights to use, copy, modify, merge, publish,
23
+ * distribute, sublicense, and/or sell copies of the Software, and to
24
+ * permit persons to whom the Software is furnished to do so, subject to
25
+ * the following conditions:
26
+ *
27
+ * The above copyright notice and this permission notice shall be
28
+ * included in all copies or substantial portions of the Software.
29
+ *
30
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
31
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
32
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
33
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
34
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
35
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
36
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
37
+ *
38
+ */
39
+
40
+ #ifndef __GECODE_INT_ARITHMETIC_HH__
41
+ #define __GECODE_INT_ARITHMETIC_HH__
42
+
43
+ #include "gecode/int.hh"
44
+
45
+ #include "gecode/int/rel.hh"
46
+ #include "gecode/int/linear.hh"
47
+
48
+ /**
49
+ * \namespace Gecode::Int::Arithmetic
50
+ * \brief Numerical (arithmetic) propagators
51
+ */
52
+
53
+ namespace Gecode { namespace Int { namespace Arithmetic {
54
+
55
+ /**
56
+ * \brief Bounds consistent absolute value propagator
57
+ *
58
+ * Requires \code #include "gecode/int/arithmetic.hh" \endcode
59
+ * \ingroup FuncIntProp
60
+ */
61
+ template <class View>
62
+ class AbsBnd : public BinaryPropagator<View,PC_INT_BND> {
63
+ protected:
64
+ using BinaryPropagator<View,PC_INT_BND>::x0;
65
+ using BinaryPropagator<View,PC_INT_BND>::x1;
66
+
67
+ /// Constructor for cloning \a p
68
+ AbsBnd(Space* home, bool share, AbsBnd& p);
69
+ /// Constructor for posting
70
+ AbsBnd(Space* home, View x0, View x1);
71
+ public:
72
+
73
+ /// Copy propagator during cloning
74
+ virtual Actor* copy(Space* home, bool share);
75
+ /**
76
+ * \brief Cost function
77
+ *
78
+ * If a view has been assigned, the cost is PC_UNARY_LO.
79
+ * Otherwise it is PC_BINARY_LO.
80
+ */
81
+ virtual PropCost cost(ModEventDelta med) const;
82
+ /// Perform propagation
83
+ virtual ExecStatus propagate(Space* home, ModEventDelta med);
84
+ /// Post bounds consistent propagator \f$ |x_0|=x_1\f$
85
+ static ExecStatus post(Space* home, View x0, View x1);
86
+ /// Post propagator for specification
87
+ static void post(Space* home, Reflection::VarMap& vars,
88
+ const Reflection::ActorSpec& spec);
89
+ /// Specification for this propagator
90
+ virtual Reflection::ActorSpec spec(const Space* home,
91
+ Reflection::VarMap& m) const;
92
+ /// Name of this propagator
93
+ static Support::Symbol ati(void);
94
+ };
95
+
96
+ /**
97
+ * \brief Domain consistent absolute value propagator
98
+ *
99
+ * Requires \code #include "gecode/int/arithmetic.hh" \endcode
100
+ * \ingroup FuncIntProp
101
+ */
102
+ template <class View>
103
+ class AbsDom : public BinaryPropagator<View,PC_INT_DOM> {
104
+ protected:
105
+ using BinaryPropagator<View,PC_INT_DOM>::x0;
106
+ using BinaryPropagator<View,PC_INT_DOM>::x1;
107
+
108
+ /// Constructor for cloning \a p
109
+ AbsDom(Space* home, bool share, AbsDom& p);
110
+ /// Constructor for posting
111
+ AbsDom(Space* home, View x0, View x1);
112
+ public:
113
+ /// Copy propagator during cloning
114
+ virtual Actor* copy(Space* home, bool share);
115
+ /**
116
+ * \brief Cost function
117
+ *
118
+ * If a view has been assigned, the cost is PC_UNARY_LO.
119
+ * If in stage for bounds propagation, the cost is
120
+ * PC_BINARY_LO. Otherwise it is PC_BINARY_HI.
121
+ */
122
+ virtual PropCost cost(ModEventDelta med) const;
123
+ /// Perform propagation
124
+ virtual ExecStatus propagate(Space* home, ModEventDelta med);
125
+ /// Post domain consistent propagator \f$ |x_0|=x_1\f$
126
+ static ExecStatus post(Space* home, View x0, View x1);
127
+ /// Post propagator for specification
128
+ static void post(Space* home, Reflection::VarMap& vars,
129
+ const Reflection::ActorSpec& spec);
130
+ /// Specification for this propagator
131
+ virtual Reflection::ActorSpec spec(const Space* home,
132
+ Reflection::VarMap& m) const;
133
+ /// Name of this propagator
134
+ static Support::Symbol ati(void);
135
+ };
136
+
137
+
138
+
139
+ /**
140
+ * \brief Bounds consistent ternary maximum propagator
141
+ *
142
+ * Requires \code #include "gecode/int/arithmetic.hh" \endcode
143
+ * \ingroup FuncIntProp
144
+ */
145
+ template <class View>
146
+ class MaxBnd : public TernaryPropagator<View,PC_INT_BND> {
147
+ protected:
148
+ using TernaryPropagator<View,PC_INT_BND>::x0;
149
+ using TernaryPropagator<View,PC_INT_BND>::x1;
150
+ using TernaryPropagator<View,PC_INT_BND>::x2;
151
+
152
+ /// Constructor for cloning \a p
153
+ MaxBnd(Space* home, bool share, MaxBnd& p);
154
+ /// Constructor for posting
155
+ MaxBnd(Space* home, View x0, View x1, View x2);
156
+ public:
157
+ /// Constructor for rewriting \a p during cloning
158
+ MaxBnd(Space* home, bool share, Propagator& p, View x0, View x1, View x2);
159
+ /// Copy propagator during cloning
160
+ virtual Actor* copy(Space* home, bool share);
161
+ /// Perform propagation
162
+ virtual ExecStatus propagate(Space* home, ModEventDelta med);
163
+ /// Post propagator \f$ \max\{x_0,x_1\}=x_2\f$
164
+ static ExecStatus post(Space* home, View x0, View x1, View x2);
165
+ /// Post propagator for specification
166
+ static void post(Space* home, Reflection::VarMap& vars,
167
+ const Reflection::ActorSpec& spec);
168
+ /// Specification for this propagator
169
+ virtual Reflection::ActorSpec spec(const Space* home,
170
+ Reflection::VarMap& m) const;
171
+ /// Name of this propagator
172
+ static Support::Symbol ati(void);
173
+ };
174
+
175
+ /**
176
+ * \brief Bounds consistent n-ary maximum propagator
177
+ *
178
+ * Requires \code #include "gecode/int/arithmetic.hh" \endcode
179
+ * \ingroup FuncIntProp
180
+ */
181
+ template <class View>
182
+ class NaryMaxBnd : public NaryOnePropagator<View,PC_INT_BND> {
183
+ protected:
184
+ using NaryOnePropagator<View,PC_INT_BND>::x;
185
+ using NaryOnePropagator<View,PC_INT_BND>::y;
186
+
187
+ /// Constructor for cloning \a p
188
+ NaryMaxBnd(Space* home, bool share, NaryMaxBnd& p);
189
+ /// Constructor for posting
190
+ NaryMaxBnd(Space* home, ViewArray<View>& x, View y);
191
+ public:
192
+ /// Copy propagator during cloning
193
+ virtual Actor* copy(Space* home, bool share);
194
+ /// Perform propagation
195
+ virtual ExecStatus propagate(Space* home, ModEventDelta med);
196
+ /// Post propagator \f$ \max x=y\f$
197
+ static ExecStatus post(Space* home, ViewArray<View>& x, View y);
198
+ /// Post propagator for specification
199
+ static void post(Space* home, Reflection::VarMap& vars,
200
+ const Reflection::ActorSpec& spec);
201
+ /// Specification for this propagator
202
+ virtual Reflection::ActorSpec spec(const Space* home,
203
+ Reflection::VarMap& m) const;
204
+ /// Name of this propagator
205
+ static Support::Symbol ati(void);
206
+ };
207
+
208
+ /**
209
+ * \brief Domain consistent ternary maximum propagator
210
+ *
211
+ * Requires \code #include "gecode/int/arithmetic.hh" \endcode
212
+ * \ingroup FuncIntProp
213
+ */
214
+ template <class View>
215
+ class MaxDom : public
216
+ MixTernaryPropagator<View,PC_INT_DOM,View,PC_INT_DOM,View,PC_INT_BND> {
217
+ protected:
218
+ using MixTernaryPropagator<View,PC_INT_DOM,View,PC_INT_DOM,View,PC_INT_BND>::x0;
219
+ using MixTernaryPropagator<View,PC_INT_DOM,View,PC_INT_DOM,View,PC_INT_BND>::x1;
220
+ using MixTernaryPropagator<View,PC_INT_DOM,View,PC_INT_DOM,View,PC_INT_BND>::x2;
221
+
222
+ /// Constructor for cloning \a p
223
+ MaxDom(Space* home, bool share, MaxDom& p);
224
+ /// Constructor for posting
225
+ MaxDom(Space* home, View x0, View x1, View x2);
226
+ public:
227
+ /// Constructor for rewriting \a p during cloning
228
+ MaxDom(Space* home, bool share, Propagator& p, View x0, View x1, View x2);
229
+ /// Copy propagator during cloning
230
+ virtual Actor* copy(Space* home, bool share);
231
+ /**
232
+ * \brief Cost function
233
+ *
234
+ * If in stage for bounds propagation, the cost is
235
+ * PC_TERNARY_LO. Otherwise it is PC_TERNARY_HI.
236
+ */
237
+ virtual PropCost cost(ModEventDelta med) const;
238
+ /// Perform propagation
239
+ virtual ExecStatus propagate(Space* home, ModEventDelta med);
240
+ /// Post propagator \f$ \max\{x_0,x_1\}=x_2\f$
241
+ static ExecStatus post(Space* home, View x0, View x1, View x2);
242
+ /// Post propagator for specification
243
+ static void post(Space* home, Reflection::VarMap& vars,
244
+ const Reflection::ActorSpec& spec);
245
+ /// Specification for this propagator
246
+ virtual Reflection::ActorSpec spec(const Space* home,
247
+ Reflection::VarMap& m) const;
248
+ /// Name of this propagator
249
+ static Support::Symbol ati(void);
250
+ };
251
+
252
+ /**
253
+ * \brief Domain consistent n-ary maximum propagator
254
+ *
255
+ * Requires \code #include "gecode/int/arithmetic.hh" \endcode
256
+ * \ingroup FuncIntProp
257
+ */
258
+ template <class View>
259
+ class NaryMaxDom
260
+ : public MixNaryOnePropagator<View,PC_INT_DOM,View,PC_INT_BND> {
261
+ protected:
262
+ using MixNaryOnePropagator<View,PC_INT_DOM,View,PC_INT_BND>::x;
263
+ using MixNaryOnePropagator<View,PC_INT_DOM,View,PC_INT_BND>::y;
264
+
265
+ /// Constructor for cloning \a p
266
+ NaryMaxDom(Space* home, bool share, NaryMaxDom& p);
267
+ /// Constructor for posting
268
+ NaryMaxDom(Space* home, ViewArray<View>& x, View y);
269
+ public:
270
+ /// Copy propagator during cloning
271
+ virtual Actor* copy(Space* home, bool share);
272
+ /**
273
+ * \brief Cost function
274
+ *
275
+ * If in stage for bounds propagation, the cost is dynamic
276
+ * PC_LINEAR_LO. Otherwise it is dynamic PC_LINEAR_HI.
277
+ */
278
+ virtual PropCost cost(ModEventDelta med) const;
279
+ /// Perform propagation
280
+ virtual ExecStatus propagate(Space* home, ModEventDelta med);
281
+ /// Post propagator \f$ \max x=y\f$
282
+ static ExecStatus post(Space* home, ViewArray<View>& x, View y);
283
+ /// Post propagator for specification
284
+ static void post(Space* home, Reflection::VarMap& vars,
285
+ const Reflection::ActorSpec& spec);
286
+ /// Specification for this propagator
287
+ virtual Reflection::ActorSpec spec(const Space* home,
288
+ Reflection::VarMap& m) const;
289
+ /// Name of this propagator
290
+ static Support::Symbol ati(void);
291
+ };
292
+
293
+
294
+
295
+
296
+ /**
297
+ * \brief Bounds consistent positive square propagator
298
+ *
299
+ * This propagator provides multiplication for positive views only.
300
+ */
301
+ template <class VA, class VB>
302
+ class SqrPlusBnd : public MixBinaryPropagator<VA,PC_INT_BND,VB,PC_INT_BND> {
303
+ protected:
304
+ using MixBinaryPropagator<VA,PC_INT_BND,VB,PC_INT_BND>::x0;
305
+ using MixBinaryPropagator<VA,PC_INT_BND,VB,PC_INT_BND>::x1;
306
+ /// Constructor for posting
307
+ SqrPlusBnd(Space* home, VA x0, VB x1);
308
+ /// Constructor for cloning \a p
309
+ SqrPlusBnd(Space* home, bool share, SqrPlusBnd<VA,VB>& p);
310
+ public:
311
+ /// Post propagator \f$x_0\cdot x_0=x_1\f$
312
+ static ExecStatus post(Space* home, VA x0, VB x1);
313
+ /// Post propagator for specification
314
+ static void post(Space* home, Reflection::VarMap& vars,
315
+ const Reflection::ActorSpec& spec);
316
+ /// Copy propagator during cloning
317
+ virtual Actor* copy(Space* home, bool share);
318
+ /// Perform propagation
319
+ virtual ExecStatus propagate(Space* home, ModEventDelta med);
320
+ /// Specification for this propagator
321
+ virtual Reflection::ActorSpec spec(const Space* home,
322
+ Reflection::VarMap& m) const;
323
+ /// Name of this propagator
324
+ static Support::Symbol ati(void);
325
+ };
326
+
327
+ /**
328
+ * \brief Bounds consistent square propagator
329
+ *
330
+ * Requires \code #include "gecode/int/arithmetic.hh" \endcode
331
+ * \ingroup FuncIntProp
332
+ */
333
+ template <class View>
334
+ class SqrBnd : public BinaryPropagator<View,PC_INT_BND> {
335
+ protected:
336
+ using BinaryPropagator<View,PC_INT_BND>::x0;
337
+ using BinaryPropagator<View,PC_INT_BND>::x1;
338
+
339
+ /// Constructor for cloning \a p
340
+ SqrBnd(Space* home, bool share, SqrBnd<View>& p);
341
+ /// Constructor for posting
342
+ SqrBnd(Space* home, View x0, View x1);
343
+ public:
344
+ /// Copy propagator during cloning
345
+ virtual Actor* copy(Space* home, bool share);
346
+ /// Perform propagation
347
+ virtual ExecStatus propagate(Space* home, ModEventDelta med);
348
+ /// Post propagator for specification
349
+ static void post(Space* home, Reflection::VarMap& vars,
350
+ const Reflection::ActorSpec& spec);
351
+ /// Post propagator \f$x_0\cdot x_0=x_1\f$
352
+ static ExecStatus post(Space* home, View x0, View x1);
353
+ /// Specification for this propagator
354
+ virtual Reflection::ActorSpec spec(const Space* home,
355
+ Reflection::VarMap& m) const;
356
+ /// Name of this propagator
357
+ static Support::Symbol ati(void);
358
+ };
359
+
360
+
361
+
362
+ /**
363
+ * \brief Domain consistent positive square propagator
364
+ *
365
+ * This propagator provides multiplication for positive views only.
366
+ */
367
+ template <class VA, class VB>
368
+ class SqrPlusDom : public MixBinaryPropagator<VA,PC_INT_DOM,VB,PC_INT_DOM> {
369
+ protected:
370
+ using MixBinaryPropagator<VA,PC_INT_DOM,VB,PC_INT_DOM>::x0;
371
+ using MixBinaryPropagator<VA,PC_INT_DOM,VB,PC_INT_DOM>::x1;
372
+ /// Constructor for posting
373
+ SqrPlusDom(Space* home, VA x0, VB x1);
374
+ /// Constructor for cloning \a p
375
+ SqrPlusDom(Space* home, bool share, SqrPlusDom<VA,VB>& p);
376
+ public:
377
+ /// Post propagator \f$x_0\cdot x_0=x_1\f$
378
+ static ExecStatus post(Space* home, VA x0, VB x1);
379
+ /// Post propagator for specification
380
+ static void post(Space* home, Reflection::VarMap& vars,
381
+ const Reflection::ActorSpec& spec);
382
+ /// Copy propagator during cloning
383
+ virtual Actor* copy(Space* home, bool share);
384
+ /**
385
+ * \brief Cost function
386
+ *
387
+ * If a view has been assigned, the cost is PC_UNARY_LO.
388
+ * If in stage for bounds propagation, the cost is
389
+ * PC_BINARY_LO. Otherwise it is PC_BINARY_HI.
390
+ */
391
+ virtual PropCost cost(ModEventDelta med) const;
392
+ /// Perform propagation
393
+ virtual ExecStatus propagate(Space* home, ModEventDelta med);
394
+ /// Specification for this propagator
395
+ virtual Reflection::ActorSpec spec(const Space* home,
396
+ Reflection::VarMap& m) const;
397
+ /// Name of this propagator
398
+ static Support::Symbol ati(void);
399
+ };
400
+
401
+ /**
402
+ * \brief Domain consistent square propagator
403
+ *
404
+ * Requires \code #include "gecode/int/arithmetic.hh" \endcode
405
+ * \ingroup FuncIntProp
406
+ */
407
+ template <class View>
408
+ class SqrDom : public BinaryPropagator<View,PC_INT_DOM> {
409
+ protected:
410
+ using BinaryPropagator<View,PC_INT_DOM>::x0;
411
+ using BinaryPropagator<View,PC_INT_DOM>::x1;
412
+
413
+ /// Constructor for cloning \a p
414
+ SqrDom(Space* home, bool share, SqrDom<View>& p);
415
+ /// Constructor for posting
416
+ SqrDom(Space* home, View x0, View x1);
417
+ public:
418
+ /// Copy propagator during cloning
419
+ virtual Actor* copy(Space* home, bool share);
420
+ /// Perform propagation
421
+ virtual ExecStatus propagate(Space* home, ModEventDelta med);
422
+ /**
423
+ * \brief Cost function
424
+ *
425
+ * If a view has been assigned, the cost is PC_UNARY_LO.
426
+ * If in stage for bounds propagation, the cost is
427
+ * PC_BINARY_LO. Otherwise it is PC_BINARY_HI.
428
+ */
429
+ virtual PropCost cost(ModEventDelta med) const;
430
+ /// Post propagator for specification
431
+ static void post(Space* home, Reflection::VarMap& vars,
432
+ const Reflection::ActorSpec& spec);
433
+ /// Post propagator \f$x_0\cdot x_0=x_1\f$
434
+ static ExecStatus post(Space* home, View x0, View x1);
435
+ /// Specification for this propagator
436
+ virtual Reflection::ActorSpec spec(const Space* home,
437
+ Reflection::VarMap& m) const;
438
+ /// Name of this propagator
439
+ static Support::Symbol ati(void);
440
+ };
441
+
442
+
443
+
444
+ /**
445
+ * \brief Bounds consistent square root propagator
446
+ *
447
+ * Requires \code #include "gecode/int/arithmetic.hh" \endcode
448
+ * \ingroup FuncIntProp
449
+ */
450
+ template <class View>
451
+ class SqrtBnd : public BinaryPropagator<View,PC_INT_BND> {
452
+ protected:
453
+ using BinaryPropagator<View,PC_INT_BND>::x0;
454
+ using BinaryPropagator<View,PC_INT_BND>::x1;
455
+
456
+ /// Constructor for cloning \a p
457
+ SqrtBnd(Space* home, bool share, SqrtBnd<View>& p);
458
+ /// Constructor for posting
459
+ SqrtBnd(Space* home, View x0, View x1);
460
+ public:
461
+ /// Copy propagator during cloning
462
+ virtual Actor* copy(Space* home, bool share);
463
+ /// Perform propagation
464
+ virtual ExecStatus propagate(Space* home, ModEventDelta med);
465
+ /// Post propagator for specification
466
+ static void post(Space* home, Reflection::VarMap& vars,
467
+ const Reflection::ActorSpec& spec);
468
+ /// Post propagator \f$\lfloor\sqrt{x_0}\rfloor=x_1\f$
469
+ static ExecStatus post(Space* home, View x0, View x1);
470
+ /// Specification for this propagator
471
+ virtual Reflection::ActorSpec spec(const Space* home,
472
+ Reflection::VarMap& m) const;
473
+ /// Name of this propagator
474
+ static Support::Symbol ati(void);
475
+ };
476
+
477
+ /**
478
+ * \brief Domain consistent square root propagator
479
+ *
480
+ * Requires \code #include "gecode/int/arithmetic.hh" \endcode
481
+ * \ingroup FuncIntProp
482
+ */
483
+ template <class View>
484
+ class SqrtDom : public BinaryPropagator<View,PC_INT_DOM> {
485
+ protected:
486
+ using BinaryPropagator<View,PC_INT_DOM>::x0;
487
+ using BinaryPropagator<View,PC_INT_DOM>::x1;
488
+
489
+ /// Constructor for cloning \a p
490
+ SqrtDom(Space* home, bool share, SqrtDom<View>& p);
491
+ /// Constructor for posting
492
+ SqrtDom(Space* home, View x0, View x1);
493
+ public:
494
+ /// Copy propagator during cloning
495
+ virtual Actor* copy(Space* home, bool share);
496
+ /// Perform propagation
497
+ virtual ExecStatus propagate(Space* home, ModEventDelta med);
498
+ /**
499
+ * \brief Cost function
500
+ *
501
+ * If a view has been assigned, the cost is PC_UNARY_LO.
502
+ * If in stage for bounds propagation, the cost is
503
+ * PC_BINARY_LO. Otherwise it is PC_BINARY_HI.
504
+ */
505
+ virtual PropCost cost(ModEventDelta med) const;
506
+ /// Post propagator for specification
507
+ static void post(Space* home, Reflection::VarMap& vars,
508
+ const Reflection::ActorSpec& spec);
509
+ /// Post propagator \f$\lfloor\sqrt{x_0}\rfloor=x_1\f$
510
+ static ExecStatus post(Space* home, View x0, View x1);
511
+ /// Specification for this propagator
512
+ virtual Reflection::ActorSpec spec(const Space* home,
513
+ Reflection::VarMap& m) const;
514
+ /// Name of this propagator
515
+ static Support::Symbol ati(void);
516
+ };
517
+
518
+
519
+
520
+ /**
521
+ * \brief Bounds or domain consistent propagator for \f$x_0\times x_1=x_0\f$
522
+ *
523
+ * Requires \code #include "gecode/int/arithmetic.hh" \endcode
524
+ * \ingroup FuncIntProp
525
+ */
526
+ template <class View, PropCond pc>
527
+ class MultZeroOne : public BinaryPropagator<View,pc> {
528
+ protected:
529
+ using BinaryPropagator<View,pc>::x0;
530
+ using BinaryPropagator<View,pc>::x1;
531
+
532
+ /// Constructor for cloning \a p
533
+ MultZeroOne(Space* home, bool share, MultZeroOne<View,pc>& p);
534
+ /// Constructor for posting
535
+ MultZeroOne(Space* home, View x0, View x1);
536
+ /// Test whether \a x is equal to \a n
537
+ static RelTest equal(View x, int n);
538
+ public:
539
+ /// Copy propagator during cloning
540
+ virtual Actor* copy(Space* home, bool share);
541
+ /// Perform propagation
542
+ virtual ExecStatus propagate(Space* home, ModEventDelta med);
543
+ /// Post propagator for specification
544
+ static void post(Space* home, Reflection::VarMap& vars,
545
+ const Reflection::ActorSpec& spec);
546
+ /// Post propagator \f$x_0\cdot x_1=x_0\f$
547
+ static ExecStatus post(Space* home, View x0, View x1);
548
+ /// Specification for this propagator
549
+ virtual Reflection::ActorSpec spec(const Space* home,
550
+ Reflection::VarMap& m) const;
551
+ /// Name of this propagator
552
+ static Support::Symbol ati(void);
553
+ };
554
+
555
+
556
+
557
+ /**
558
+ * \brief Bounds consistent positive multiplication propagator
559
+ *
560
+ * This propagator provides multiplication for positive views only.
561
+ */
562
+ template <class Val, class VA, class VB, class VC>
563
+ class MultPlusBnd :
564
+ public MixTernaryPropagator<VA,PC_INT_BND,VB,PC_INT_BND,VC,PC_INT_BND> {
565
+ protected:
566
+ using MixTernaryPropagator<VA,PC_INT_BND,VB,PC_INT_BND,VC,PC_INT_BND>::x0;
567
+ using MixTernaryPropagator<VA,PC_INT_BND,VB,PC_INT_BND,VC,PC_INT_BND>::x1;
568
+ using MixTernaryPropagator<VA,PC_INT_BND,VB,PC_INT_BND,VC,PC_INT_BND>::x2;
569
+ public:
570
+ /// Constructor for posting
571
+ MultPlusBnd(Space* home, VA x0, VB x1, VC x2);
572
+ /// Constructor for cloning \a p
573
+ MultPlusBnd(Space* home, bool share, MultPlusBnd<Val,VA,VB,VC>& p);
574
+ /// Post propagator \f$x_0\cdot x_1=x_2\f$
575
+ static ExecStatus post(Space* home, VA x0, VB x1, VC x2);
576
+ /// Post propagator for specification
577
+ static void post(Space* home, Reflection::VarMap& vars,
578
+ const Reflection::ActorSpec& spec);
579
+ /// Copy propagator during cloning
580
+ virtual Actor* copy(Space* home, bool share);
581
+ /// Perform propagation
582
+ virtual ExecStatus propagate(Space* home, ModEventDelta med);
583
+ /// Specification for this propagator
584
+ virtual Reflection::ActorSpec spec(const Space* home,
585
+ Reflection::VarMap& m) const;
586
+ /// Name of this propagator
587
+ static Support::Symbol ati(void);
588
+ };
589
+
590
+ /**
591
+ * \brief Bounds consistent multiplication propagator
592
+ *
593
+ * Requires \code #include "gecode/int/arithmetic.hh" \endcode
594
+ *
595
+ * \ingroup FuncIntProp
596
+ */
597
+ template <class View>
598
+ class MultBnd : public TernaryPropagator<View,PC_INT_BND> {
599
+ protected:
600
+ using TernaryPropagator<View,PC_INT_BND>::x0;
601
+ using TernaryPropagator<View,PC_INT_BND>::x1;
602
+ using TernaryPropagator<View,PC_INT_BND>::x2;
603
+
604
+ /// Constructor for cloning \a p
605
+ MultBnd(Space* home, bool share, MultBnd<View>& p);
606
+ public:
607
+ /// Constructor for posting
608
+ MultBnd(Space* home, View x0, View x1, View x2);
609
+ /// Post propagator \f$x_0\cdot x_1=x_2\f$
610
+ static ExecStatus post(Space* home, View x0, View x1, View x2);
611
+ /// Post propagator for specification
612
+ static void post(Space* home, Reflection::VarMap& vars,
613
+ const Reflection::ActorSpec& spec);
614
+ /// Copy propagator during cloning
615
+ virtual Actor* copy(Space* home, bool share);
616
+ /// Perform propagation
617
+ virtual ExecStatus propagate(Space* home, ModEventDelta med);
618
+ /// Specification for this propagator
619
+ virtual Reflection::ActorSpec spec(const Space* home,
620
+ Reflection::VarMap& m) const;
621
+ /// Name of this propagator
622
+ static Support::Symbol ati(void);
623
+ };
624
+
625
+
626
+
627
+ /**
628
+ * \brief Domain consistent positive multiplication propagator
629
+ *
630
+ * This propagator provides multiplication for positive views only.
631
+ */
632
+ template <class Val, class VA, class VB, class VC>
633
+ class MultPlusDom :
634
+ public MixTernaryPropagator<VA,PC_INT_DOM,VB,PC_INT_DOM,VC,PC_INT_DOM> {
635
+ protected:
636
+ using MixTernaryPropagator<VA,PC_INT_DOM,VB,PC_INT_DOM,VC,PC_INT_DOM>::x0;
637
+ using MixTernaryPropagator<VA,PC_INT_DOM,VB,PC_INT_DOM,VC,PC_INT_DOM>::x1;
638
+ using MixTernaryPropagator<VA,PC_INT_DOM,VB,PC_INT_DOM,VC,PC_INT_DOM>::x2;
639
+ public:
640
+ /// Constructor for posting
641
+ MultPlusDom(Space* home, VA x0, VB x1, VC x2);
642
+ /// Constructor for cloning \a p
643
+ MultPlusDom(Space* home, bool share, MultPlusDom<Val,VA,VB,VC>& p);
644
+ /// Post propagator \f$x_0\cdot x_1=x_2\f$
645
+ static ExecStatus post(Space* home, VA x0, VB x1, VC x2);
646
+ /// Post propagator for specification
647
+ static void post(Space* home, Reflection::VarMap& vars,
648
+ const Reflection::ActorSpec& spec);
649
+ /// Copy propagator during cloning
650
+ virtual Actor* copy(Space* home, bool share);
651
+ /**
652
+ * \brief Cost function
653
+ *
654
+ * If in stage for bounds propagation, the cost is
655
+ * PC_TERNARY_LO. Otherwise it is PC_TERNARY_HI.
656
+ */
657
+ virtual PropCost cost(ModEventDelta med) const;
658
+ /// Perform propagation
659
+ virtual ExecStatus propagate(Space* home, ModEventDelta med);
660
+ /// Specification for this propagator
661
+ virtual Reflection::ActorSpec spec(const Space* home,
662
+ Reflection::VarMap& m) const;
663
+ /// Name of this propagator
664
+ static Support::Symbol ati(void);
665
+ };
666
+
667
+ /**
668
+ * \brief Domain consistent multiplication propagator
669
+ *
670
+ * Requires \code #include "gecode/int/arithmetic.hh" \endcode
671
+ *
672
+ * \ingroup FuncIntProp
673
+ */
674
+ template <class View>
675
+ class MultDom : public TernaryPropagator<View,PC_INT_DOM> {
676
+ protected:
677
+ using TernaryPropagator<View,PC_INT_DOM>::x0;
678
+ using TernaryPropagator<View,PC_INT_DOM>::x1;
679
+ using TernaryPropagator<View,PC_INT_DOM>::x2;
680
+
681
+ /// Constructor for cloning \a p
682
+ MultDom(Space* home, bool share, MultDom<View>& p);
683
+ public:
684
+ /// Constructor for posting
685
+ MultDom(Space* home, View x0, View x1, View x2);
686
+ /// Post propagator \f$x_0\cdot x_1=x_2\f$
687
+ static ExecStatus post(Space* home, View x0, View x1, View x2);
688
+ /// Post propagator for specification
689
+ static void post(Space* home, Reflection::VarMap& vars,
690
+ const Reflection::ActorSpec& spec);
691
+ /// Copy propagator during cloning
692
+ virtual Actor* copy(Space* home, bool share);
693
+ /**
694
+ * \brief Cost function
695
+ *
696
+ * If in stage for bounds propagation, the cost is
697
+ * PC_TERNARY_LO. Otherwise it is PC_TERNARY_HI.
698
+ */
699
+ virtual PropCost cost(ModEventDelta med) const;
700
+ /// Perform propagation
701
+ virtual ExecStatus propagate(Space* home, ModEventDelta med);
702
+ /// Specification for this propagator
703
+ virtual Reflection::ActorSpec spec(const Space* home,
704
+ Reflection::VarMap& m) const;
705
+ /// Name of this propagator
706
+ static Support::Symbol ati(void);
707
+ };
708
+
709
+ /**
710
+ * \brief Bounds consistent positive division propagator
711
+ *
712
+ * This propagator provides division for positive views only.
713
+ */
714
+ template <class Val, class VA, class VB, class VC, bool towardsMinInf=true>
715
+ class DivPlusBnd :
716
+ public MixTernaryPropagator<VA,PC_INT_BND,VB,PC_INT_BND,VC,PC_INT_BND> {
717
+ protected:
718
+ using MixTernaryPropagator<VA,PC_INT_BND,VB,PC_INT_BND,VC,PC_INT_BND>::x0;
719
+ using MixTernaryPropagator<VA,PC_INT_BND,VB,PC_INT_BND,VC,PC_INT_BND>::x1;
720
+ using MixTernaryPropagator<VA,PC_INT_BND,VB,PC_INT_BND,VC,PC_INT_BND>::x2;
721
+ public:
722
+ /// Constructor for posting
723
+ DivPlusBnd(Space* home, VA x0, VB x1, VC x2);
724
+ /// Constructor for cloning \a p
725
+ DivPlusBnd(Space* home, bool share,
726
+ DivPlusBnd<Val,VA,VB,VC,towardsMinInf>& p);
727
+ /// Post propagator \f$x_0\mathrm{div} x_1=x_2\f$ (rounding to \f$-\infty\f$)
728
+ static ExecStatus post(Space* home, VA x0, VB x1, VC x2);
729
+ /// Post propagator for specification
730
+ static void post(Space* home, Reflection::VarMap& vars,
731
+ const Reflection::ActorSpec& spec);
732
+ /// Copy propagator during cloning
733
+ virtual Actor* copy(Space* home, bool share);
734
+ /// Perform propagation
735
+ virtual ExecStatus propagate(Space* home, ModEventDelta med);
736
+ /// Specification for this propagator
737
+ virtual Reflection::ActorSpec spec(const Space* home,
738
+ Reflection::VarMap& m) const;
739
+ /// Name of this propagator
740
+ static Support::Symbol ati(void);
741
+ };
742
+
743
+ /**
744
+ * \brief Bounds consistent division propagator
745
+ *
746
+ * Requires \code #include "gecode/int/arithmetic.hh" \endcode
747
+ *
748
+ * \ingroup FuncIntProp
749
+ */
750
+ template <class View>
751
+ class DivBnd : public TernaryPropagator<View,PC_INT_BND> {
752
+ protected:
753
+ using TernaryPropagator<View,PC_INT_BND>::x0;
754
+ using TernaryPropagator<View,PC_INT_BND>::x1;
755
+ using TernaryPropagator<View,PC_INT_BND>::x2;
756
+
757
+ /// Constructor for cloning \a p
758
+ DivBnd(Space* home, bool share, DivBnd<View>& p);
759
+ public:
760
+ /// Constructor for posting
761
+ DivBnd(Space* home, View x0, View x1, View x2);
762
+ /// Post propagator \f$x_0\mathrm{div} x_1=x_2\f$ (rounding to \f$-\infty\f$)
763
+ static ExecStatus post(Space* home, View x0, View x1, View x2);
764
+ /// Post propagator for specification
765
+ static void post(Space* home, Reflection::VarMap& vars,
766
+ const Reflection::ActorSpec& spec);
767
+ /// Copy propagator during cloning
768
+ virtual Actor* copy(Space* home, bool share);
769
+ /// Perform propagation
770
+ virtual ExecStatus propagate(Space* home, ModEventDelta med);
771
+ /// Specification for this propagator
772
+ virtual Reflection::ActorSpec spec(const Space* home,
773
+ Reflection::VarMap& m) const;
774
+ /// Name of this propagator
775
+ static Support::Symbol ati(void);
776
+ };
777
+
778
+ /**
779
+ * \brief Integer division/modulo propagator
780
+ *
781
+ * This propagator implements the relation between divisor and
782
+ * modulo of an integer division.
783
+ *
784
+ * Requires \code #include "gecode/int/arithmetic.hh" \endcode
785
+ *
786
+ * \ingroup FuncIntProp
787
+ */
788
+ template <class View>
789
+ class DivMod : public BinaryPropagator<View,PC_INT_BND> {
790
+ protected:
791
+ using BinaryPropagator<View,PC_INT_BND>::x0;
792
+ using BinaryPropagator<View,PC_INT_BND>::x1;
793
+
794
+ /// Constructor for cloning \a p
795
+ DivMod(Space* home, bool share, DivMod<View>& p);
796
+ public:
797
+ /// Constructor for posting
798
+ DivMod(Space* home, View x0, View x1);
799
+ /// Post propagator \f$x_0\neq 0 \land (x_1\neq 0\Rightarrow x_0\times x_1>0) \land \mathrm{abs}(x_1)<\mathrm{abs}(x_0)\f$
800
+ static ExecStatus post(Space* home, View x0, View x1);
801
+ /// Post propagator for specification
802
+ static void post(Space* home, Reflection::VarMap& vars,
803
+ const Reflection::ActorSpec& spec);
804
+ /// Copy propagator during cloning
805
+ virtual Actor* copy(Space* home, bool share);
806
+ /// Perform propagation
807
+ virtual ExecStatus propagate(Space* home, ModEventDelta med);
808
+ /// Specification for this propagator
809
+ virtual Reflection::ActorSpec spec(const Space* home,
810
+ Reflection::VarMap& m) const;
811
+ /// Name of this propagator
812
+ static Support::Symbol ati(void);
813
+ };
814
+
815
+ }}}
816
+
817
+ #include "gecode/int/arithmetic/abs.icc"
818
+ #include "gecode/int/arithmetic/max.icc"
819
+ #include "gecode/int/arithmetic/sqr.icc"
820
+ #include "gecode/int/arithmetic/sqrt.icc"
821
+ #include "gecode/int/arithmetic/mult.icc"
822
+ #include "gecode/int/arithmetic/divmod.icc"
823
+
824
+ #endif
825
+
826
+ // STATISTICS: int-prop
827
+