gecoder-with-gecode 0.7.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.
- data/CHANGES +81 -0
- data/COPYING +17 -0
- data/LGPL-LICENSE +458 -0
- data/README +45 -0
- data/Rakefile +13 -0
- data/example/example_helper.rb +1 -0
- data/example/magic_sequence.rb +43 -0
- data/example/queens.rb +43 -0
- data/example/raw_bindings.rb +42 -0
- data/example/send_more_money.rb +43 -0
- data/example/send_most_money.rb +58 -0
- data/example/square_tiling.rb +84 -0
- data/example/sudoku-set.rb +110 -0
- data/example/sudoku.rb +61 -0
- data/ext/extconf.rb +29 -0
- data/ext/gecode-1.3.1/LICENSE +34 -0
- data/ext/gecode-1.3.1/Makefile.contribs +71 -0
- data/ext/gecode-1.3.1/Makefile.dep +3928 -0
- data/ext/gecode-1.3.1/Makefile.in +966 -0
- data/ext/gecode-1.3.1/changelog.in +1065 -0
- data/ext/gecode-1.3.1/configure +8590 -0
- data/ext/gecode-1.3.1/configure.ac +179 -0
- data/ext/gecode-1.3.1/configure.ac.in +175 -0
- data/ext/gecode-1.3.1/contribs/README +26 -0
- data/ext/gecode-1.3.1/contribs/graph/INSTALL +53 -0
- data/ext/gecode-1.3.1/contribs/graph/LICENSE +11 -0
- data/ext/gecode-1.3.1/contribs/graph/Makefile +167 -0
- data/ext/gecode-1.3.1/contribs/graph/Makefile.in.in +169 -0
- data/ext/gecode-1.3.1/contribs/graph/TODO +28 -0
- data/ext/gecode-1.3.1/contribs/graph/binarysimple.hh +82 -0
- data/ext/gecode-1.3.1/contribs/graph/binarysimple.icc +186 -0
- data/ext/gecode-1.3.1/contribs/graph/branch/branch.icc +257 -0
- data/ext/gecode-1.3.1/contribs/graph/configure +2160 -0
- data/ext/gecode-1.3.1/contribs/graph/configure.ac +33 -0
- data/ext/gecode-1.3.1/contribs/graph/doxygen.conf +1226 -0
- data/ext/gecode-1.3.1/contribs/graph/doxygen.hh +132 -0
- data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-basic.cc +94 -0
- data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-complement.cc +104 -0
- data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-instUB.cc +105 -0
- data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-path.cc +92 -0
- data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-path2.cc +273 -0
- data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-pathcost.cc +311 -0
- data/ext/gecode-1.3.1/contribs/graph/examples/g1.txt +1 -0
- data/ext/gecode-1.3.1/contribs/graph/examples/g2.txt +1 -0
- data/ext/gecode-1.3.1/contribs/graph/graph.hh +51 -0
- data/ext/gecode-1.3.1/contribs/graph/graphutils.h +46 -0
- data/ext/gecode-1.3.1/contribs/graph/graphutils.icc +140 -0
- data/ext/gecode-1.3.1/contribs/graph/misc/doxygen/footer.html +1 -0
- data/ext/gecode-1.3.1/contribs/graph/path.hh +116 -0
- data/ext/gecode-1.3.1/contribs/graph/path.icc +64 -0
- data/ext/gecode-1.3.1/contribs/graph/path/path.icc +139 -0
- data/ext/gecode-1.3.1/contribs/graph/path/pathdegree.icc +133 -0
- data/ext/gecode-1.3.1/contribs/graph/path/pathgraphs.icc +341 -0
- data/ext/gecode-1.3.1/contribs/graph/shortdesc.ac +1 -0
- data/ext/gecode-1.3.1/contribs/graph/stlutility.icc +105 -0
- data/ext/gecode-1.3.1/contribs/graph/var.icc +106 -0
- data/ext/gecode-1.3.1/contribs/graph/view.icc +373 -0
- data/ext/gecode-1.3.1/contribs/graph/view/arcnode.cc +162 -0
- data/ext/gecode-1.3.1/contribs/graph/view/arcnode.hh +78 -0
- data/ext/gecode-1.3.1/contribs/graph/view/boundsgraphs.icc +349 -0
- data/ext/gecode-1.3.1/contribs/graph/view/constant.icc +148 -0
- data/ext/gecode-1.3.1/contribs/graph/view/iter.icc +337 -0
- data/ext/gecode-1.3.1/contribs/graph/view/nodearcsets.icc +493 -0
- data/ext/gecode-1.3.1/contribs/graph/view/nodeset.icc +60 -0
- data/ext/gecode-1.3.1/contribs/graph/view/outadjsets.icc +600 -0
- data/ext/gecode-1.3.1/contribs/graph/view/prop.icc +135 -0
- data/ext/gecode-1.3.1/contribs/map/COMPILING +68 -0
- data/ext/gecode-1.3.1/contribs/map/LICENSE +11 -0
- data/ext/gecode-1.3.1/contribs/map/Makefile.in.in +173 -0
- data/ext/gecode-1.3.1/contribs/map/configure +2285 -0
- data/ext/gecode-1.3.1/contribs/map/configure.ac +32 -0
- data/ext/gecode-1.3.1/contribs/map/constraints.hh +46 -0
- data/ext/gecode-1.3.1/contribs/map/constraints.icc +84 -0
- data/ext/gecode-1.3.1/contribs/map/doxygen.conf +1229 -0
- data/ext/gecode-1.3.1/contribs/map/doxygen.hh +33 -0
- data/ext/gecode-1.3.1/contribs/map/examples/approximateMatching.cc +199 -0
- data/ext/gecode-1.3.1/contribs/map/examples/g1.txt +1 -0
- data/ext/gecode-1.3.1/contribs/map/examples/g2.txt +1 -0
- data/ext/gecode-1.3.1/contribs/map/examples/graph-examples.tgz +0 -0
- data/ext/gecode-1.3.1/contribs/map/examples/isomorphism.cc +148 -0
- data/ext/gecode-1.3.1/contribs/map/examples/map +0 -0
- data/ext/gecode-1.3.1/contribs/map/examples/map.cc +80 -0
- data/ext/gecode-1.3.1/contribs/map/examples/subgraphmonomorphism.cc +155 -0
- data/ext/gecode-1.3.1/contribs/map/map.hh +65 -0
- data/ext/gecode-1.3.1/contribs/map/matching/mono.hh +235 -0
- data/ext/gecode-1.3.1/contribs/map/matching/mono.icc +771 -0
- data/ext/gecode-1.3.1/contribs/map/shortdesc.ac +2 -0
- data/ext/gecode-1.3.1/contribs/map/var.icc +346 -0
- data/ext/gecode-1.3.1/contribs/map/var/imp.cc +42 -0
- data/ext/gecode-1.3.1/contribs/map/var/imp.icc +436 -0
- data/ext/gecode-1.3.1/doxygen.conf.in +1225 -0
- data/ext/gecode-1.3.1/doxygen.hh.in +877 -0
- data/ext/gecode-1.3.1/examples/all-interval-sort.cc +201 -0
- data/ext/gecode-1.3.1/examples/all-interval.cc +114 -0
- data/ext/gecode-1.3.1/examples/alpha.cc +112 -0
- data/ext/gecode-1.3.1/examples/baseline.cc +71 -0
- data/ext/gecode-1.3.1/examples/bibd.cc +173 -0
- data/ext/gecode-1.3.1/examples/black-hole.cc +281 -0
- data/ext/gecode-1.3.1/examples/cars.cc +165 -0
- data/ext/gecode-1.3.1/examples/crew.cc +220 -0
- data/ext/gecode-1.3.1/examples/crowded-chess.cc +312 -0
- data/ext/gecode-1.3.1/examples/donald.cc +93 -0
- data/ext/gecode-1.3.1/examples/eq20.cc +111 -0
- data/ext/gecode-1.3.1/examples/golf.cc +242 -0
- data/ext/gecode-1.3.1/examples/golomb.cc +141 -0
- data/ext/gecode-1.3.1/examples/graph-color.cc +371 -0
- data/ext/gecode-1.3.1/examples/grocery.cc +107 -0
- data/ext/gecode-1.3.1/examples/hamming.cc +107 -0
- data/ext/gecode-1.3.1/examples/ind-set.cc +130 -0
- data/ext/gecode-1.3.1/examples/knights.cc +146 -0
- data/ext/gecode-1.3.1/examples/langfordnum.cc +244 -0
- data/ext/gecode-1.3.1/examples/magic-sequence-gcc.cc +93 -0
- data/ext/gecode-1.3.1/examples/magic-sequence.cc +108 -0
- data/ext/gecode-1.3.1/examples/magic-square.cc +120 -0
- data/ext/gecode-1.3.1/examples/money.cc +92 -0
- data/ext/gecode-1.3.1/examples/ortho-latin.cc +156 -0
- data/ext/gecode-1.3.1/examples/packing.cc +211 -0
- data/ext/gecode-1.3.1/examples/partition.cc +126 -0
- data/ext/gecode-1.3.1/examples/photo.cc +155 -0
- data/ext/gecode-1.3.1/examples/picture-puzzle.cc +481 -0
- data/ext/gecode-1.3.1/examples/queen-armies.cc +240 -0
- data/ext/gecode-1.3.1/examples/queens.cc +99 -0
- data/ext/gecode-1.3.1/examples/sports-league.cc +454 -0
- data/ext/gecode-1.3.1/examples/steiner.cc +148 -0
- data/ext/gecode-1.3.1/examples/stress-domain.cc +86 -0
- data/ext/gecode-1.3.1/examples/stress-element.cc +95 -0
- data/ext/gecode-1.3.1/examples/stress-exec.cc +74 -0
- data/ext/gecode-1.3.1/examples/stress-min.cc +84 -0
- data/ext/gecode-1.3.1/examples/stress-search.cc +72 -0
- data/ext/gecode-1.3.1/examples/sudoku-mixed.cc +282 -0
- data/ext/gecode-1.3.1/examples/sudoku-set.cc +162 -0
- data/ext/gecode-1.3.1/examples/sudoku.cc +188 -0
- data/ext/gecode-1.3.1/examples/sudoku.icc +703 -0
- data/ext/gecode-1.3.1/examples/support.cc +160 -0
- data/ext/gecode-1.3.1/examples/support.hh +98 -0
- data/ext/gecode-1.3.1/examples/support.icc +187 -0
- data/ext/gecode-1.3.1/examples/timer.cc +47 -0
- data/ext/gecode-1.3.1/examples/timer.hh +72 -0
- data/ext/gecode-1.3.1/examples/warehouses.cc +176 -0
- data/ext/gecode-1.3.1/extconf.rb +8 -0
- data/ext/gecode-1.3.1/gecode.m4 +736 -0
- data/ext/gecode-1.3.1/gecode/config.icc.in +50 -0
- data/ext/gecode-1.3.1/gecode/int.hh +1426 -0
- data/ext/gecode-1.3.1/gecode/int/arithmetic.cc +87 -0
- data/ext/gecode-1.3.1/gecode/int/arithmetic.hh +292 -0
- data/ext/gecode-1.3.1/gecode/int/arithmetic/abs.icc +213 -0
- data/ext/gecode-1.3.1/gecode/int/arithmetic/max.icc +196 -0
- data/ext/gecode-1.3.1/gecode/int/arithmetic/mult.icc +478 -0
- data/ext/gecode-1.3.1/gecode/int/array.cc +61 -0
- data/ext/gecode-1.3.1/gecode/int/array.icc +264 -0
- data/ext/gecode-1.3.1/gecode/int/bool.cc +187 -0
- data/ext/gecode-1.3.1/gecode/int/bool.hh +255 -0
- data/ext/gecode-1.3.1/gecode/int/bool/base.icc +123 -0
- data/ext/gecode-1.3.1/gecode/int/bool/eq.icc +89 -0
- data/ext/gecode-1.3.1/gecode/int/bool/eqv.icc +132 -0
- data/ext/gecode-1.3.1/gecode/int/bool/or.icc +380 -0
- data/ext/gecode-1.3.1/gecode/int/branch.cc +81 -0
- data/ext/gecode-1.3.1/gecode/int/branch.hh +444 -0
- data/ext/gecode-1.3.1/gecode/int/branch/assign.cc +83 -0
- data/ext/gecode-1.3.1/gecode/int/branch/assign.icc +76 -0
- data/ext/gecode-1.3.1/gecode/int/branch/select-val.icc +104 -0
- data/ext/gecode-1.3.1/gecode/int/branch/select-view.icc +219 -0
- data/ext/gecode-1.3.1/gecode/int/channel.cc +62 -0
- data/ext/gecode-1.3.1/gecode/int/channel.hh +144 -0
- data/ext/gecode-1.3.1/gecode/int/channel/base.icc +60 -0
- data/ext/gecode-1.3.1/gecode/int/channel/dom.icc +313 -0
- data/ext/gecode-1.3.1/gecode/int/channel/stack.icc +59 -0
- data/ext/gecode-1.3.1/gecode/int/channel/val.icc +239 -0
- data/ext/gecode-1.3.1/gecode/int/count.cc +174 -0
- data/ext/gecode-1.3.1/gecode/int/count.hh +401 -0
- data/ext/gecode-1.3.1/gecode/int/count/int.icc +495 -0
- data/ext/gecode-1.3.1/gecode/int/count/rel.icc +100 -0
- data/ext/gecode-1.3.1/gecode/int/count/view.icc +332 -0
- data/ext/gecode-1.3.1/gecode/int/cumulatives.cc +210 -0
- data/ext/gecode-1.3.1/gecode/int/cumulatives.hh +118 -0
- data/ext/gecode-1.3.1/gecode/int/cumulatives/val.icc +377 -0
- data/ext/gecode-1.3.1/gecode/int/distinct.cc +77 -0
- data/ext/gecode-1.3.1/gecode/int/distinct.hh +272 -0
- data/ext/gecode-1.3.1/gecode/int/distinct/bilink.icc +73 -0
- data/ext/gecode-1.3.1/gecode/int/distinct/bnd.icc +335 -0
- data/ext/gecode-1.3.1/gecode/int/distinct/combptr.icc +62 -0
- data/ext/gecode-1.3.1/gecode/int/distinct/dom.icc +740 -0
- data/ext/gecode-1.3.1/gecode/int/distinct/edge.icc +96 -0
- data/ext/gecode-1.3.1/gecode/int/distinct/node.icc +107 -0
- data/ext/gecode-1.3.1/gecode/int/distinct/ter-dom.icc +97 -0
- data/ext/gecode-1.3.1/gecode/int/distinct/val.icc +171 -0
- data/ext/gecode-1.3.1/gecode/int/dom.cc +81 -0
- data/ext/gecode-1.3.1/gecode/int/dom.hh +101 -0
- data/ext/gecode-1.3.1/gecode/int/dom/range.icc +85 -0
- data/ext/gecode-1.3.1/gecode/int/dom/spec.icc +85 -0
- data/ext/gecode-1.3.1/gecode/int/element.cc +58 -0
- data/ext/gecode-1.3.1/gecode/int/element.hh +203 -0
- data/ext/gecode-1.3.1/gecode/int/element/int.icc +396 -0
- data/ext/gecode-1.3.1/gecode/int/element/view.icc +443 -0
- data/ext/gecode-1.3.1/gecode/int/exception.icc +137 -0
- data/ext/gecode-1.3.1/gecode/int/gcc.cc +708 -0
- data/ext/gecode-1.3.1/gecode/int/gcc.hh +338 -0
- data/ext/gecode-1.3.1/gecode/int/gcc/bnd.icc +629 -0
- data/ext/gecode-1.3.1/gecode/int/gcc/dom.icc +504 -0
- data/ext/gecode-1.3.1/gecode/int/gcc/gccbndsup.icc +760 -0
- data/ext/gecode-1.3.1/gecode/int/gcc/graphsup.icc +2375 -0
- data/ext/gecode-1.3.1/gecode/int/gcc/lbc.icc +375 -0
- data/ext/gecode-1.3.1/gecode/int/gcc/occur.icc +687 -0
- data/ext/gecode-1.3.1/gecode/int/gcc/ubc.icc +236 -0
- data/ext/gecode-1.3.1/gecode/int/gcc/val.icc +373 -0
- data/ext/gecode-1.3.1/gecode/int/int-set.cc +115 -0
- data/ext/gecode-1.3.1/gecode/int/int-set.icc +151 -0
- data/ext/gecode-1.3.1/gecode/int/linear.cc +247 -0
- data/ext/gecode-1.3.1/gecode/int/linear.hh +1056 -0
- data/ext/gecode-1.3.1/gecode/int/linear/binary.icc +439 -0
- data/ext/gecode-1.3.1/gecode/int/linear/bool-int.icc +422 -0
- data/ext/gecode-1.3.1/gecode/int/linear/bool-view.icc +311 -0
- data/ext/gecode-1.3.1/gecode/int/linear/dom.icc +503 -0
- data/ext/gecode-1.3.1/gecode/int/linear/nary.icc +857 -0
- data/ext/gecode-1.3.1/gecode/int/linear/noview.icc +264 -0
- data/ext/gecode-1.3.1/gecode/int/linear/post.cc +542 -0
- data/ext/gecode-1.3.1/gecode/int/linear/ternary.icc +255 -0
- data/ext/gecode-1.3.1/gecode/int/propagator.icc +194 -0
- data/ext/gecode-1.3.1/gecode/int/regular.cc +40 -0
- data/ext/gecode-1.3.1/gecode/int/regular.hh +83 -0
- data/ext/gecode-1.3.1/gecode/int/regular/dfa.cc +466 -0
- data/ext/gecode-1.3.1/gecode/int/regular/dfa.icc +172 -0
- data/ext/gecode-1.3.1/gecode/int/regular/dom.icc +480 -0
- data/ext/gecode-1.3.1/gecode/int/regular/reg.cc +738 -0
- data/ext/gecode-1.3.1/gecode/int/rel.cc +293 -0
- data/ext/gecode-1.3.1/gecode/int/rel.hh +526 -0
- data/ext/gecode-1.3.1/gecode/int/rel/eq.icc +640 -0
- data/ext/gecode-1.3.1/gecode/int/rel/lex.icc +212 -0
- data/ext/gecode-1.3.1/gecode/int/rel/lq-le.icc +246 -0
- data/ext/gecode-1.3.1/gecode/int/rel/nq.icc +188 -0
- data/ext/gecode-1.3.1/gecode/int/sortedness.cc +124 -0
- data/ext/gecode-1.3.1/gecode/int/sortedness.hh +108 -0
- data/ext/gecode-1.3.1/gecode/int/sortedness/matching.icc +177 -0
- data/ext/gecode-1.3.1/gecode/int/sortedness/narrowing.icc +243 -0
- data/ext/gecode-1.3.1/gecode/int/sortedness/order.icc +232 -0
- data/ext/gecode-1.3.1/gecode/int/sortedness/sortedness.icc +727 -0
- data/ext/gecode-1.3.1/gecode/int/sortedness/sortsup.icc +666 -0
- data/ext/gecode-1.3.1/gecode/int/var-imp.vis +198 -0
- data/ext/gecode-1.3.1/gecode/int/var.icc +590 -0
- data/ext/gecode-1.3.1/gecode/int/var/bool.icc +52 -0
- data/ext/gecode-1.3.1/gecode/int/var/imp-body.icc +65 -0
- data/ext/gecode-1.3.1/gecode/int/var/imp-hdr.icc +191 -0
- data/ext/gecode-1.3.1/gecode/int/var/imp.cc +361 -0
- data/ext/gecode-1.3.1/gecode/int/var/imp.icc +579 -0
- data/ext/gecode-1.3.1/gecode/int/var/int.cc +63 -0
- data/ext/gecode-1.3.1/gecode/int/var/int.icc +135 -0
- data/ext/gecode-1.3.1/gecode/int/view.icc +1219 -0
- data/ext/gecode-1.3.1/gecode/int/view/bool.icc +270 -0
- data/ext/gecode-1.3.1/gecode/int/view/constint.icc +306 -0
- data/ext/gecode-1.3.1/gecode/int/view/int.icc +221 -0
- data/ext/gecode-1.3.1/gecode/int/view/iter.icc +49 -0
- data/ext/gecode-1.3.1/gecode/int/view/minus.icc +285 -0
- data/ext/gecode-1.3.1/gecode/int/view/offset.icc +274 -0
- data/ext/gecode-1.3.1/gecode/int/view/print.cc +109 -0
- data/ext/gecode-1.3.1/gecode/int/view/rtest.icc +215 -0
- data/ext/gecode-1.3.1/gecode/int/view/scale.icc +373 -0
- data/ext/gecode-1.3.1/gecode/iter.hh +65 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-add.icc +130 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-append.icc +208 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-array.icc +123 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-cache.icc +143 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-compl.icc +206 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-diff.icc +127 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-empty.icc +96 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-inter.icc +202 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-minmax.icc +103 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-minus.icc +138 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-offset.icc +112 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-operations.icc +142 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-scale.icc +224 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-singleton.icc +71 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-size.icc +131 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-union.icc +211 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-values.icc +125 -0
- data/ext/gecode-1.3.1/gecode/iter/values-ranges.icc +91 -0
- data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-compl.icc +247 -0
- data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-inter.icc +227 -0
- data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-union.icc +236 -0
- data/ext/gecode-1.3.1/gecode/iter/virtual-ranges.icc +126 -0
- data/ext/gecode-1.3.1/gecode/kernel.hh +141 -0
- data/ext/gecode-1.3.1/gecode/kernel/array.icc +954 -0
- data/ext/gecode-1.3.1/gecode/kernel/branching.icc +233 -0
- data/ext/gecode-1.3.1/gecode/kernel/core.cc +417 -0
- data/ext/gecode-1.3.1/gecode/kernel/core.icc +1681 -0
- data/ext/gecode-1.3.1/gecode/kernel/exception.cc +49 -0
- data/ext/gecode-1.3.1/gecode/kernel/exception.icc +104 -0
- data/ext/gecode-1.3.1/gecode/kernel/macros.icc +98 -0
- data/ext/gecode-1.3.1/gecode/kernel/memory-manager.cc +41 -0
- data/ext/gecode-1.3.1/gecode/kernel/memory-manager.icc +438 -0
- data/ext/gecode-1.3.1/gecode/kernel/memory.icc +205 -0
- data/ext/gecode-1.3.1/gecode/kernel/modevent.icc +53 -0
- data/ext/gecode-1.3.1/gecode/kernel/propagator.icc +680 -0
- data/ext/gecode-1.3.1/gecode/kernel/view.icc +583 -0
- data/ext/gecode-1.3.1/gecode/limits.hh +87 -0
- data/ext/gecode-1.3.1/gecode/minimodel.hh +942 -0
- data/ext/gecode-1.3.1/gecode/minimodel/arithmetic.cc +137 -0
- data/ext/gecode-1.3.1/gecode/minimodel/bool-expr.cc +207 -0
- data/ext/gecode-1.3.1/gecode/minimodel/bool-expr.icc +191 -0
- data/ext/gecode-1.3.1/gecode/minimodel/bool-rel.icc +66 -0
- data/ext/gecode-1.3.1/gecode/minimodel/exception.icc +59 -0
- data/ext/gecode-1.3.1/gecode/minimodel/lin-expr.cc +103 -0
- data/ext/gecode-1.3.1/gecode/minimodel/lin-expr.icc +192 -0
- data/ext/gecode-1.3.1/gecode/minimodel/lin-rel.icc +200 -0
- data/ext/gecode-1.3.1/gecode/minimodel/matrix.icc +118 -0
- data/ext/gecode-1.3.1/gecode/minimodel/scheduling.cc +241 -0
- data/ext/gecode-1.3.1/gecode/search.hh +745 -0
- data/ext/gecode-1.3.1/gecode/search/bab.cc +153 -0
- data/ext/gecode-1.3.1/gecode/search/bab.icc +101 -0
- data/ext/gecode-1.3.1/gecode/search/dfs.cc +63 -0
- data/ext/gecode-1.3.1/gecode/search/dfs.icc +144 -0
- data/ext/gecode-1.3.1/gecode/search/engine-ctrl.icc +109 -0
- data/ext/gecode-1.3.1/gecode/search/lds.cc +237 -0
- data/ext/gecode-1.3.1/gecode/search/lds.icc +57 -0
- data/ext/gecode-1.3.1/gecode/search/reco-stack.icc +219 -0
- data/ext/gecode-1.3.1/gecode/search/restart.icc +76 -0
- data/ext/gecode-1.3.1/gecode/search/statistics.icc +30 -0
- data/ext/gecode-1.3.1/gecode/search/stop.cc +58 -0
- data/ext/gecode-1.3.1/gecode/search/stop.icc +100 -0
- data/ext/gecode-1.3.1/gecode/set.hh +419 -0
- data/ext/gecode-1.3.1/gecode/set/array.cc +114 -0
- data/ext/gecode-1.3.1/gecode/set/array.icc +134 -0
- data/ext/gecode-1.3.1/gecode/set/branch.cc +57 -0
- data/ext/gecode-1.3.1/gecode/set/branch.hh +176 -0
- data/ext/gecode-1.3.1/gecode/set/branch/select-val.icc +72 -0
- data/ext/gecode-1.3.1/gecode/set/branch/select-view.icc +112 -0
- data/ext/gecode-1.3.1/gecode/set/cardinality.cc +49 -0
- data/ext/gecode-1.3.1/gecode/set/convex.cc +43 -0
- data/ext/gecode-1.3.1/gecode/set/convex.hh +92 -0
- data/ext/gecode-1.3.1/gecode/set/convex/conv.cc +81 -0
- data/ext/gecode-1.3.1/gecode/set/convex/conv.icc +51 -0
- data/ext/gecode-1.3.1/gecode/set/convex/hull.cc +100 -0
- data/ext/gecode-1.3.1/gecode/set/convex/hull.icc +52 -0
- data/ext/gecode-1.3.1/gecode/set/distinct.cc +48 -0
- data/ext/gecode-1.3.1/gecode/set/distinct.hh +97 -0
- data/ext/gecode-1.3.1/gecode/set/distinct/atmostOne.cc +151 -0
- data/ext/gecode-1.3.1/gecode/set/distinct/atmostOne.icc +50 -0
- data/ext/gecode-1.3.1/gecode/set/distinct/binomial.cc +46 -0
- data/ext/gecode-1.3.1/gecode/set/distinct/binomial.icc +157 -0
- data/ext/gecode-1.3.1/gecode/set/distinct/distinct.cc +124 -0
- data/ext/gecode-1.3.1/gecode/set/distinct/distinct.icc +58 -0
- data/ext/gecode-1.3.1/gecode/set/dom.cc +224 -0
- data/ext/gecode-1.3.1/gecode/set/exception.icc +132 -0
- data/ext/gecode-1.3.1/gecode/set/int.cc +139 -0
- data/ext/gecode-1.3.1/gecode/set/int.hh +226 -0
- data/ext/gecode-1.3.1/gecode/set/int/card.cc +61 -0
- data/ext/gecode-1.3.1/gecode/set/int/card.icc +54 -0
- data/ext/gecode-1.3.1/gecode/set/int/channel.cc +100 -0
- data/ext/gecode-1.3.1/gecode/set/int/channel.icc +75 -0
- data/ext/gecode-1.3.1/gecode/set/int/match.cc +148 -0
- data/ext/gecode-1.3.1/gecode/set/int/match.icc +67 -0
- data/ext/gecode-1.3.1/gecode/set/int/minmax.cc +109 -0
- data/ext/gecode-1.3.1/gecode/set/int/minmax.icc +63 -0
- data/ext/gecode-1.3.1/gecode/set/int/weights.cc +182 -0
- data/ext/gecode-1.3.1/gecode/set/int/weights.icc +174 -0
- data/ext/gecode-1.3.1/gecode/set/projectors-compiler.hh +148 -0
- data/ext/gecode-1.3.1/gecode/set/projectors.cc +109 -0
- data/ext/gecode-1.3.1/gecode/set/projectors.hh +319 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/compiler.cc +841 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/projector-set.cc +69 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/projector-set.icc +66 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/projector.cc +125 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/projector.icc +79 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/propagator.hh +127 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/propagator/card.icc +96 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/propagator/nary.icc +106 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/propagator/re-nary.cc +76 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/propagator/re-nary.icc +53 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/set-expr.cc +306 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/set-expr.icc +192 -0
- data/ext/gecode-1.3.1/gecode/set/propagator.icc +96 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op-const.cc +233 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op.cc +96 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op.hh +267 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op/common.icc +528 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op/inter.icc +312 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op/partition.icc +131 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op/post.icc +198 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op/subofunion.icc +150 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op/superofinter.icc +151 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op/union.icc +292 -0
- data/ext/gecode-1.3.1/gecode/set/rel.cc +201 -0
- data/ext/gecode-1.3.1/gecode/set/rel.hh +250 -0
- data/ext/gecode-1.3.1/gecode/set/rel/common.icc +109 -0
- data/ext/gecode-1.3.1/gecode/set/rel/eq.icc +101 -0
- data/ext/gecode-1.3.1/gecode/set/rel/nosubset.icc +88 -0
- data/ext/gecode-1.3.1/gecode/set/rel/nq.icc +132 -0
- data/ext/gecode-1.3.1/gecode/set/rel/re-eq.icc +142 -0
- data/ext/gecode-1.3.1/gecode/set/rel/re-subset.icc +121 -0
- data/ext/gecode-1.3.1/gecode/set/rel/subset.icc +80 -0
- data/ext/gecode-1.3.1/gecode/set/select.cc +88 -0
- data/ext/gecode-1.3.1/gecode/set/select.hh +113 -0
- data/ext/gecode-1.3.1/gecode/set/select/disjoint.cc +267 -0
- data/ext/gecode-1.3.1/gecode/set/select/disjoint.icc +59 -0
- data/ext/gecode-1.3.1/gecode/set/select/idxarray.hh +91 -0
- data/ext/gecode-1.3.1/gecode/set/select/idxarray.icc +112 -0
- data/ext/gecode-1.3.1/gecode/set/select/inter.icc +300 -0
- data/ext/gecode-1.3.1/gecode/set/sequence.cc +48 -0
- data/ext/gecode-1.3.1/gecode/set/sequence.hh +97 -0
- data/ext/gecode-1.3.1/gecode/set/sequence/common.icc +79 -0
- data/ext/gecode-1.3.1/gecode/set/sequence/seq-u.cc +83 -0
- data/ext/gecode-1.3.1/gecode/set/sequence/seq-u.icc +63 -0
- data/ext/gecode-1.3.1/gecode/set/sequence/seq.cc +61 -0
- data/ext/gecode-1.3.1/gecode/set/sequence/seq.icc +53 -0
- data/ext/gecode-1.3.1/gecode/set/var-imp.vis +205 -0
- data/ext/gecode-1.3.1/gecode/set/var.icc +1090 -0
- data/ext/gecode-1.3.1/gecode/set/var/imp-body.icc +192 -0
- data/ext/gecode-1.3.1/gecode/set/var/imp-hdr.icc +235 -0
- data/ext/gecode-1.3.1/gecode/set/var/imp.cc +127 -0
- data/ext/gecode-1.3.1/gecode/set/var/imp.icc +356 -0
- data/ext/gecode-1.3.1/gecode/set/var/integerset.cc +256 -0
- data/ext/gecode-1.3.1/gecode/set/var/integerset.icc +512 -0
- data/ext/gecode-1.3.1/gecode/set/var/iter.icc +47 -0
- data/ext/gecode-1.3.1/gecode/set/var/set.cc +99 -0
- data/ext/gecode-1.3.1/gecode/set/var/set.icc +282 -0
- data/ext/gecode-1.3.1/gecode/set/view.icc +1075 -0
- data/ext/gecode-1.3.1/gecode/set/view/complement.icc +525 -0
- data/ext/gecode-1.3.1/gecode/set/view/const.icc +651 -0
- data/ext/gecode-1.3.1/gecode/set/view/print.cc +120 -0
- data/ext/gecode-1.3.1/gecode/set/view/set.icc +217 -0
- data/ext/gecode-1.3.1/gecode/set/view/singleton.icc +348 -0
- data/ext/gecode-1.3.1/gecode/support/block-allocator.hh +152 -0
- data/ext/gecode-1.3.1/gecode/support/dynamic-array.hh +131 -0
- data/ext/gecode-1.3.1/gecode/support/dynamic-stack.hh +157 -0
- data/ext/gecode-1.3.1/gecode/support/random.hh +100 -0
- data/ext/gecode-1.3.1/gecode/support/shared-array.hh +255 -0
- data/ext/gecode-1.3.1/gecode/support/sort.hh +193 -0
- data/ext/gecode-1.3.1/gecode/support/static-pqueue.hh +240 -0
- data/ext/gecode-1.3.1/gecode/support/static-stack.hh +117 -0
- data/ext/gecode-1.3.1/install-sh +323 -0
- data/ext/gecode-1.3.1/misc/debian/Makefile.am +8 -0
- data/ext/gecode-1.3.1/misc/debian/changelog +6 -0
- data/ext/gecode-1.3.1/misc/debian/control +11 -0
- data/ext/gecode-1.3.1/misc/debian/copyright +44 -0
- data/ext/gecode-1.3.1/misc/debian/gecode.info +9 -0
- data/ext/gecode-1.3.1/misc/debian/gecode.install +2 -0
- data/ext/gecode-1.3.1/misc/debian/gecode.spec +58 -0
- data/ext/gecode-1.3.1/misc/debian/rules +81 -0
- data/ext/gecode-1.3.1/misc/doxygen/back.png +0 -0
- data/ext/gecode-1.3.1/misc/doxygen/footer.html +3 -0
- data/ext/gecode-1.3.1/misc/doxygen/gecode-logo-100.png +0 -0
- data/ext/gecode-1.3.1/misc/doxygen/header.html +46 -0
- data/ext/gecode-1.3.1/misc/doxygen/stylesheet.css +460 -0
- data/ext/gecode-1.3.1/misc/fixproperties.sh +32 -0
- data/ext/gecode-1.3.1/misc/gecode-minimodel.pc.in +12 -0
- data/ext/gecode-1.3.1/misc/gecode-search.pc.in +12 -0
- data/ext/gecode-1.3.1/misc/gecode.pc.in +12 -0
- data/ext/gecode-1.3.1/misc/genchangelog.perl +190 -0
- data/ext/gecode-1.3.1/misc/genlicense.perl +113 -0
- data/ext/gecode-1.3.1/misc/genstatistics.perl +155 -0
- data/ext/gecode-1.3.1/misc/gentxtchangelog.perl +170 -0
- data/ext/gecode-1.3.1/misc/genvarimp.perl +666 -0
- data/ext/gecode-1.3.1/misc/getrevision.perl +32 -0
- data/ext/gecode-1.3.1/misc/makedepend.perl +66 -0
- data/ext/gecode-1.3.1/test/int.cc +497 -0
- data/ext/gecode-1.3.1/test/int.hh +119 -0
- data/ext/gecode-1.3.1/test/int/arithmetic.cc +262 -0
- data/ext/gecode-1.3.1/test/int/basic.cc +42 -0
- data/ext/gecode-1.3.1/test/int/bool.cc +189 -0
- data/ext/gecode-1.3.1/test/int/channel.cc +79 -0
- data/ext/gecode-1.3.1/test/int/count.cc +264 -0
- data/ext/gecode-1.3.1/test/int/distinct.cc +121 -0
- data/ext/gecode-1.3.1/test/int/dom.cc +69 -0
- data/ext/gecode-1.3.1/test/int/element.cc +132 -0
- data/ext/gecode-1.3.1/test/int/gcc.cc +592 -0
- data/ext/gecode-1.3.1/test/int/linear.cc +315 -0
- data/ext/gecode-1.3.1/test/int/minimodel.cc +451 -0
- data/ext/gecode-1.3.1/test/int/regular.cc +105 -0
- data/ext/gecode-1.3.1/test/int/rel.cc +283 -0
- data/ext/gecode-1.3.1/test/int/scheduling.cc +259 -0
- data/ext/gecode-1.3.1/test/int/sortedness.cc +272 -0
- data/ext/gecode-1.3.1/test/intset.cc +40 -0
- data/ext/gecode-1.3.1/test/log.cc +515 -0
- data/ext/gecode-1.3.1/test/log.hh +68 -0
- data/ext/gecode-1.3.1/test/set.cc +542 -0
- data/ext/gecode-1.3.1/test/set.hh +152 -0
- data/ext/gecode-1.3.1/test/set/convex.cc +94 -0
- data/ext/gecode-1.3.1/test/set/distinct.cc +148 -0
- data/ext/gecode-1.3.1/test/set/dom.cc +67 -0
- data/ext/gecode-1.3.1/test/set/int.cc +249 -0
- data/ext/gecode-1.3.1/test/set/projection.cc +333 -0
- data/ext/gecode-1.3.1/test/set/rel-op.cc +662 -0
- data/ext/gecode-1.3.1/test/set/rel.cc +198 -0
- data/ext/gecode-1.3.1/test/set/select.cc +108 -0
- data/ext/gecode-1.3.1/test/set/sequence.cc +83 -0
- data/ext/gecode-1.3.1/test/stress.cc +93 -0
- data/ext/gecode-1.3.1/test/stress.hh +74 -0
- data/ext/gecode-1.3.1/test/stress/distinct.cc +70 -0
- data/ext/gecode-1.3.1/test/stress/domain.cc +69 -0
- data/ext/gecode-1.3.1/test/stress/exec.cc +60 -0
- data/ext/gecode-1.3.1/test/stress/minsort.cc +63 -0
- data/ext/gecode-1.3.1/test/stress/regular.cc +112 -0
- data/ext/gecode-1.3.1/test/test.cc +215 -0
- data/ext/gecode-1.3.1/test/test.hh +107 -0
- data/ext/missing.cpp +328 -0
- data/ext/missing.h +120 -0
- data/ext/vararray.cpp +330 -0
- data/ext/vararray.h +149 -0
- data/lib/gecoder.rb +5 -0
- data/lib/gecoder/bindings.rb +34 -0
- data/lib/gecoder/bindings/bindings.rb +2209 -0
- data/lib/gecoder/interface.rb +8 -0
- data/lib/gecoder/interface/binding_changes.rb +313 -0
- data/lib/gecoder/interface/branch.rb +152 -0
- data/lib/gecoder/interface/constraints.rb +397 -0
- data/lib/gecoder/interface/constraints/bool/boolean.rb +246 -0
- data/lib/gecoder/interface/constraints/bool/linear.rb +29 -0
- data/lib/gecoder/interface/constraints/bool_enum/boolean.rb +84 -0
- data/lib/gecoder/interface/constraints/bool_enum_constraints.rb +8 -0
- data/lib/gecoder/interface/constraints/bool_var_constraints.rb +75 -0
- data/lib/gecoder/interface/constraints/int/arithmetic.rb +71 -0
- data/lib/gecoder/interface/constraints/int/domain.rb +78 -0
- data/lib/gecoder/interface/constraints/int/linear.rb +295 -0
- data/lib/gecoder/interface/constraints/int_enum/arithmetic.rb +72 -0
- data/lib/gecoder/interface/constraints/int_enum/channel.rb +100 -0
- data/lib/gecoder/interface/constraints/int_enum/count.rb +92 -0
- data/lib/gecoder/interface/constraints/int_enum/distinct.rb +69 -0
- data/lib/gecoder/interface/constraints/int_enum/element.rb +82 -0
- data/lib/gecoder/interface/constraints/int_enum/equality.rb +38 -0
- data/lib/gecoder/interface/constraints/int_enum/sort.rb +126 -0
- data/lib/gecoder/interface/constraints/int_enum_constraints.rb +37 -0
- data/lib/gecoder/interface/constraints/int_var_constraints.rb +58 -0
- data/lib/gecoder/interface/constraints/reifiable_constraints.rb +78 -0
- data/lib/gecoder/interface/constraints/set/cardinality.rb +75 -0
- data/lib/gecoder/interface/constraints/set/connection.rb +193 -0
- data/lib/gecoder/interface/constraints/set/domain.rb +109 -0
- data/lib/gecoder/interface/constraints/set/operation.rb +132 -0
- data/lib/gecoder/interface/constraints/set/relation.rb +178 -0
- data/lib/gecoder/interface/constraints/set_enum/channel.rb +18 -0
- data/lib/gecoder/interface/constraints/set_enum/distinct.rb +80 -0
- data/lib/gecoder/interface/constraints/set_enum/operation.rb +60 -0
- data/lib/gecoder/interface/constraints/set_enum/selection.rb +217 -0
- data/lib/gecoder/interface/constraints/set_enum_constraints.rb +34 -0
- data/lib/gecoder/interface/constraints/set_var_constraints.rb +72 -0
- data/lib/gecoder/interface/enum_matrix.rb +64 -0
- data/lib/gecoder/interface/enum_wrapper.rb +153 -0
- data/lib/gecoder/interface/model.rb +251 -0
- data/lib/gecoder/interface/search.rb +123 -0
- data/lib/gecoder/interface/variables.rb +254 -0
- data/lib/gecoder/version.rb +4 -0
- data/specs/binding_changes.rb +76 -0
- data/specs/bool_var.rb +74 -0
- data/specs/branch.rb +170 -0
- data/specs/constraints/arithmetic.rb +266 -0
- data/specs/constraints/bool_enum.rb +140 -0
- data/specs/constraints/boolean.rb +232 -0
- data/specs/constraints/cardinality.rb +154 -0
- data/specs/constraints/channel.rb +126 -0
- data/specs/constraints/connection.rb +373 -0
- data/specs/constraints/constraint_helper.rb +180 -0
- data/specs/constraints/constraints.rb +74 -0
- data/specs/constraints/count.rb +139 -0
- data/specs/constraints/distinct.rb +218 -0
- data/specs/constraints/element.rb +106 -0
- data/specs/constraints/equality.rb +31 -0
- data/specs/constraints/int_domain.rb +69 -0
- data/specs/constraints/int_relation.rb +78 -0
- data/specs/constraints/linear.rb +332 -0
- data/specs/constraints/reification_sugar.rb +96 -0
- data/specs/constraints/selection.rb +292 -0
- data/specs/constraints/set_domain.rb +181 -0
- data/specs/constraints/set_operation.rb +285 -0
- data/specs/constraints/set_relation.rb +201 -0
- data/specs/constraints/sort.rb +175 -0
- data/specs/enum_matrix.rb +43 -0
- data/specs/enum_wrapper.rb +122 -0
- data/specs/int_var.rb +144 -0
- data/specs/logging.rb +24 -0
- data/specs/model.rb +190 -0
- data/specs/search.rb +246 -0
- data/specs/set_var.rb +68 -0
- data/specs/spec_helper.rb +93 -0
- data/tasks/all_tasks.rb +1 -0
- data/tasks/distribution.rake +129 -0
- data/tasks/rcov.rake +17 -0
- data/tasks/specs.rake +15 -0
- data/tasks/svn.rake +11 -0
- data/tasks/website.rake +51 -0
- data/vendor/rust/README +28 -0
- data/vendor/rust/bin/cxxgenerator.rb +93 -0
- data/vendor/rust/include/rust_checks.hh +115 -0
- data/vendor/rust/include/rust_conversions.hh +102 -0
- data/vendor/rust/rust.rb +67 -0
- data/vendor/rust/rust/attribute.rb +51 -0
- data/vendor/rust/rust/bindings.rb +172 -0
- data/vendor/rust/rust/class.rb +339 -0
- data/vendor/rust/rust/constants.rb +48 -0
- data/vendor/rust/rust/container.rb +110 -0
- data/vendor/rust/rust/cppifaceparser.rb +129 -0
- data/vendor/rust/rust/cwrapper.rb +72 -0
- data/vendor/rust/rust/cxxclass.rb +98 -0
- data/vendor/rust/rust/element.rb +81 -0
- data/vendor/rust/rust/enum.rb +63 -0
- data/vendor/rust/rust/function.rb +407 -0
- data/vendor/rust/rust/namespace.rb +61 -0
- data/vendor/rust/rust/templates/AttributeDefinition.rusttpl +17 -0
- data/vendor/rust/rust/templates/AttributeInitBinding.rusttpl +9 -0
- data/vendor/rust/rust/templates/BindingsHeader.rusttpl +24 -0
- data/vendor/rust/rust/templates/BindingsUnit.rusttpl +46 -0
- data/vendor/rust/rust/templates/CWrapperClassDefinitions.rusttpl +64 -0
- data/vendor/rust/rust/templates/ClassDeclarations.rusttpl +7 -0
- data/vendor/rust/rust/templates/ClassInitialize.rusttpl +6 -0
- data/vendor/rust/rust/templates/ConstructorStub.rusttpl +21 -0
- data/vendor/rust/rust/templates/CxxClassDefinitions.rusttpl +91 -0
- data/vendor/rust/rust/templates/CxxMethodStub.rusttpl +12 -0
- data/vendor/rust/rust/templates/CxxStandaloneClassDefinitions.rusttpl +26 -0
- data/vendor/rust/rust/templates/EnumDeclarations.rusttpl +3 -0
- data/vendor/rust/rust/templates/EnumDefinitions.rusttpl +29 -0
- data/vendor/rust/rust/templates/FunctionDefinition.rusttpl +9 -0
- data/vendor/rust/rust/templates/FunctionInitAlias.rusttpl +5 -0
- data/vendor/rust/rust/templates/FunctionInitBinding.rusttpl +9 -0
- data/vendor/rust/rust/templates/MethodInitBinding.rusttpl +9 -0
- data/vendor/rust/rust/templates/ModuleDeclarations.rusttpl +3 -0
- data/vendor/rust/rust/templates/ModuleDefinitions.rusttpl +3 -0
- data/vendor/rust/rust/templates/StandaloneClassDeclarations.rusttpl +7 -0
- data/vendor/rust/rust/templates/VariableFunctionCall.rusttpl +14 -0
- data/vendor/rust/rust/type.rb +98 -0
- data/vendor/rust/test/Makefile +4 -0
- data/vendor/rust/test/constants.rb +36 -0
- data/vendor/rust/test/cppclass.cc +45 -0
- data/vendor/rust/test/cppclass.hh +67 -0
- data/vendor/rust/test/cppclass.rb +59 -0
- data/vendor/rust/test/cwrapper.c +74 -0
- data/vendor/rust/test/cwrapper.h +41 -0
- data/vendor/rust/test/cwrapper.rb +56 -0
- data/vendor/rust/test/dummyclass.hh +31 -0
- data/vendor/rust/test/lib/extension-test.rb +98 -0
- data/vendor/rust/test/operators.cc +41 -0
- data/vendor/rust/test/operators.hh +39 -0
- data/vendor/rust/test/operators.rb +39 -0
- data/vendor/rust/test/test-constants.rb +43 -0
- data/vendor/rust/test/test-cppclass.rb +82 -0
- data/vendor/rust/test/test-cwrapper.rb +80 -0
- data/vendor/rust/test/test-operators.rb +42 -0
- metadata +826 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Main authors:
|
|
3
|
+
* Christian Schulte <schulte@gecode.org>
|
|
4
|
+
*
|
|
5
|
+
* Contributing authors:
|
|
6
|
+
* Guido Tack <tack@gecode.org>
|
|
7
|
+
*
|
|
8
|
+
* Copyright:
|
|
9
|
+
* Christian Schulte, 2004
|
|
10
|
+
* Guido Tack, 2004
|
|
11
|
+
*
|
|
12
|
+
* Last modified:
|
|
13
|
+
* $Date: 2006-08-23 16:54:09 +0200 (Wed, 23 Aug 2006) $ by $Author: tack $
|
|
14
|
+
* $Revision: 3556 $
|
|
15
|
+
*
|
|
16
|
+
* This file is part of Gecode, the generic constraint
|
|
17
|
+
* development environment:
|
|
18
|
+
* http://www.gecode.org
|
|
19
|
+
*
|
|
20
|
+
* See the file "LICENSE" for information on usage and
|
|
21
|
+
* redistribution of this file, and for a
|
|
22
|
+
* DISCLAIMER OF ALL WARRANTIES.
|
|
23
|
+
*
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/* How to tell the compiler to really, really inline */
|
|
27
|
+
#undef forceinline
|
|
28
|
+
|
|
29
|
+
/* Heap memory alignment */
|
|
30
|
+
#undef GECODE_MEMORY_ALIGNMENT
|
|
31
|
+
|
|
32
|
+
/* Whether integer variables are built */
|
|
33
|
+
#undef GECODE_HAVE_INT_VARS
|
|
34
|
+
|
|
35
|
+
/* Whether set variables are built */
|
|
36
|
+
#undef GECODE_HAVE_SET_VARS
|
|
37
|
+
|
|
38
|
+
/* Whether we are compiling static libraries */
|
|
39
|
+
#undef GECODE_STATIC_LIBS
|
|
40
|
+
|
|
41
|
+
/* Whether we have mtrace for memory leak debugging*/
|
|
42
|
+
#undef GECODE_HAVE_MTRACE
|
|
43
|
+
|
|
44
|
+
/* Whether gcc understands visibility attributes */
|
|
45
|
+
#undef GCC_HASCLASSVISIBILITY
|
|
46
|
+
|
|
47
|
+
/* Whether to include audit code */
|
|
48
|
+
#undef GECODE_AUDIT
|
|
49
|
+
|
|
50
|
+
// STATISTICS: kernel-other
|
|
@@ -0,0 +1,1426 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Main authors:
|
|
3
|
+
* Christian Schulte <schulte@gecode.org>
|
|
4
|
+
* Guido Tack <tack@gecode.org>
|
|
5
|
+
*
|
|
6
|
+
* Contributing authors:
|
|
7
|
+
* Mikael Lagerkvist <lagerkvist@gecode.org>
|
|
8
|
+
*
|
|
9
|
+
* Copyright:
|
|
10
|
+
* Christian Schulte, 2002
|
|
11
|
+
* Guido Tack, 2004
|
|
12
|
+
*
|
|
13
|
+
* Last modified:
|
|
14
|
+
* $Date: 2006-08-31 17:36:38 +0200 (Thu, 31 Aug 2006) $ by $Author: schulte $
|
|
15
|
+
* $Revision: 3579 $
|
|
16
|
+
*
|
|
17
|
+
* This file is part of Gecode, the generic constraint
|
|
18
|
+
* development environment:
|
|
19
|
+
* http://www.gecode.org
|
|
20
|
+
*
|
|
21
|
+
* See the file "LICENSE" for information on usage and
|
|
22
|
+
* redistribution of this file, and for a
|
|
23
|
+
* DISCLAIMER OF ALL WARRANTIES.
|
|
24
|
+
*
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
#ifndef __GECODE_INT_HH__
|
|
28
|
+
#define __GECODE_INT_HH__
|
|
29
|
+
|
|
30
|
+
namespace Gecode { namespace Int {
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* \namespace Gecode::Int
|
|
34
|
+
* \brief Finite domain integers
|
|
35
|
+
*
|
|
36
|
+
* The Gecode::Int namespace contains all functionality required
|
|
37
|
+
* to program propagators and branchings for finite domain integers.
|
|
38
|
+
* In addition, all propagators and branchings for finite domain
|
|
39
|
+
* integers provided by %Gecode are contained as nested namespaces.
|
|
40
|
+
*
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
}}
|
|
44
|
+
|
|
45
|
+
#include "gecode/limits.hh"
|
|
46
|
+
|
|
47
|
+
#include "gecode/kernel.hh"
|
|
48
|
+
|
|
49
|
+
/*
|
|
50
|
+
* Support for DLLs under Windows
|
|
51
|
+
*
|
|
52
|
+
*/
|
|
53
|
+
|
|
54
|
+
#if !defined(GECODE_STATIC_LIBS) && \
|
|
55
|
+
(defined(__CYGWIN__) || defined(__MINGW32__) || defined(_MSC_VER))
|
|
56
|
+
|
|
57
|
+
#ifdef GECODE_BUILD_INT
|
|
58
|
+
#define GECODE_INT_EXPORT __declspec( dllexport )
|
|
59
|
+
#else
|
|
60
|
+
#define GECODE_INT_EXPORT __declspec( dllimport )
|
|
61
|
+
#endif
|
|
62
|
+
|
|
63
|
+
#else
|
|
64
|
+
|
|
65
|
+
#ifdef GCC_HASCLASSVISIBILITY
|
|
66
|
+
|
|
67
|
+
#define GECODE_INT_EXPORT __attribute__ ((visibility("default")))
|
|
68
|
+
|
|
69
|
+
#else
|
|
70
|
+
|
|
71
|
+
#define GECODE_INT_EXPORT
|
|
72
|
+
|
|
73
|
+
#endif
|
|
74
|
+
#endif
|
|
75
|
+
|
|
76
|
+
#include <iostream>
|
|
77
|
+
|
|
78
|
+
#include "gecode/iter.hh"
|
|
79
|
+
#include "gecode/support/shared-array.hh"
|
|
80
|
+
|
|
81
|
+
#include "gecode/int/exception.icc"
|
|
82
|
+
|
|
83
|
+
namespace Gecode {
|
|
84
|
+
|
|
85
|
+
class IntSetRanges;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* \brief Integer sets
|
|
89
|
+
*
|
|
90
|
+
* Integer sets are the means to specify arbitrary sets
|
|
91
|
+
* of integers to be used as domains for integer variables.
|
|
92
|
+
* \ingroup TaskIntIntVars TaskSetSetVars
|
|
93
|
+
*/
|
|
94
|
+
class IntSet {
|
|
95
|
+
friend class IntSetRanges;
|
|
96
|
+
private:
|
|
97
|
+
/// %Range (intervals) of integers
|
|
98
|
+
class Range {
|
|
99
|
+
public:
|
|
100
|
+
int min, max;
|
|
101
|
+
};
|
|
102
|
+
/// Shared array that stores the ranges of the domain
|
|
103
|
+
Support::SharedArray<Range> sar;
|
|
104
|
+
/// Sort ranges according to increasing minimum
|
|
105
|
+
class MinInc;
|
|
106
|
+
/// Normalize the first \a n elements
|
|
107
|
+
GECODE_INT_EXPORT void normalize(int n);
|
|
108
|
+
GECODE_INT_EXPORT void init(int n, int m);
|
|
109
|
+
GECODE_INT_EXPORT void init(const int r[], int n);
|
|
110
|
+
GECODE_INT_EXPORT void init(const int r[][2], int n);
|
|
111
|
+
public:
|
|
112
|
+
/// \name Constructors and initialization
|
|
113
|
+
//@{
|
|
114
|
+
/// Initialize as empty set
|
|
115
|
+
IntSet(void);
|
|
116
|
+
/// Copy constructor
|
|
117
|
+
IntSet(const IntSet& is);
|
|
118
|
+
/** \brief Initialize as range with minimum \a n and maximum \a m
|
|
119
|
+
*
|
|
120
|
+
* Note that the set is empty if \a n is larger than \a m
|
|
121
|
+
*/
|
|
122
|
+
IntSet(int n, int m);
|
|
123
|
+
/// Initialize with \a n integers from array \a r
|
|
124
|
+
IntSet(const int r[], int n);
|
|
125
|
+
/** \brief Initialize with \a n ranges from array \a r
|
|
126
|
+
*
|
|
127
|
+
* For position \a i in the array \a r, the minimum is \a r[\a i][0]
|
|
128
|
+
* and the maximum is \a r[\a i][1].
|
|
129
|
+
*/
|
|
130
|
+
IntSet(const int r[][2], int n);
|
|
131
|
+
/// Initialize with range iterator \a i
|
|
132
|
+
template <class I>
|
|
133
|
+
IntSet(I& i);
|
|
134
|
+
//@}
|
|
135
|
+
|
|
136
|
+
/// \name Range length
|
|
137
|
+
//@{
|
|
138
|
+
/// Return number of ranges of the specification
|
|
139
|
+
int size(void) const;
|
|
140
|
+
//@}
|
|
141
|
+
|
|
142
|
+
/// \name Range access
|
|
143
|
+
//@{
|
|
144
|
+
/// Return minimum of range at position \a i
|
|
145
|
+
int min(int i) const;
|
|
146
|
+
/// Return maximum of range at position \a i
|
|
147
|
+
int max(int i) const;
|
|
148
|
+
/// Return width of range at position \a i
|
|
149
|
+
unsigned int width(int i) const;
|
|
150
|
+
//@}
|
|
151
|
+
|
|
152
|
+
/// \name Entire set access
|
|
153
|
+
//@{
|
|
154
|
+
/// Return minimum of entire set
|
|
155
|
+
int min(void) const;
|
|
156
|
+
/// Return maximum of entire set
|
|
157
|
+
int max(void) const;
|
|
158
|
+
//@}
|
|
159
|
+
|
|
160
|
+
/// \name Cloning
|
|
161
|
+
//@{
|
|
162
|
+
/** \brief Update this set to be a copy of \a s
|
|
163
|
+
*
|
|
164
|
+
* If \a share is true, the copy is identical. Otherwise an independent
|
|
165
|
+
* copy is created.
|
|
166
|
+
*/
|
|
167
|
+
void update(bool share, IntSet& s);
|
|
168
|
+
//@}
|
|
169
|
+
|
|
170
|
+
/// \name Predefined value
|
|
171
|
+
//@{
|
|
172
|
+
/// Empty set
|
|
173
|
+
GECODE_INT_EXPORT static const IntSet empty;
|
|
174
|
+
//@}
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* \brief Range iterator for integer sets
|
|
179
|
+
*
|
|
180
|
+
* \ingroup TaskIntIntVars TaskSetSetVars
|
|
181
|
+
*/
|
|
182
|
+
class IntSetRanges {
|
|
183
|
+
private:
|
|
184
|
+
/// Current range
|
|
185
|
+
const IntSet::Range* i;
|
|
186
|
+
/// End range
|
|
187
|
+
const IntSet::Range* e;
|
|
188
|
+
public:
|
|
189
|
+
/// \name Constructors and initialization
|
|
190
|
+
//@{
|
|
191
|
+
/// Default constructor
|
|
192
|
+
IntSetRanges(void);
|
|
193
|
+
/// Initialize with ranges for set \a s
|
|
194
|
+
IntSetRanges(const IntSet& s);
|
|
195
|
+
/// Initialize with ranges for set \a s
|
|
196
|
+
void init(const IntSet& s);
|
|
197
|
+
//@}
|
|
198
|
+
|
|
199
|
+
/// \name Iteration control
|
|
200
|
+
//@{
|
|
201
|
+
/// Test whether iterator is still at a range or done
|
|
202
|
+
bool operator()(void) const;
|
|
203
|
+
/// Move iterator to next range (if possible)
|
|
204
|
+
void operator++(void);
|
|
205
|
+
//@}
|
|
206
|
+
|
|
207
|
+
/// \name Range access
|
|
208
|
+
//@{
|
|
209
|
+
/// Return smallest value of range
|
|
210
|
+
int min(void) const;
|
|
211
|
+
/// Return largest value of range
|
|
212
|
+
int max(void) const;
|
|
213
|
+
/// Return width of range (distance between minimum and maximum)
|
|
214
|
+
unsigned int width(void) const;
|
|
215
|
+
//@}
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* \brief Value iterator for integer sets
|
|
220
|
+
*
|
|
221
|
+
* \ingroup TaskIntIntVars TaskSetSetVars
|
|
222
|
+
*/
|
|
223
|
+
class IntSetValues
|
|
224
|
+
: public Iter::Ranges::ToValues<IntSetRanges> {
|
|
225
|
+
public:
|
|
226
|
+
/// \name Constructors and initialization
|
|
227
|
+
//@{
|
|
228
|
+
/// Default constructor
|
|
229
|
+
IntSetValues(void);
|
|
230
|
+
/// Initialize with values for \a s
|
|
231
|
+
IntSetValues(const IntSet& s);
|
|
232
|
+
/// Initialize with values for \a s
|
|
233
|
+
void init(const IntSet& s);
|
|
234
|
+
//@}
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* \brief Print integer set \a s
|
|
241
|
+
* \relates Gecode::IntSet
|
|
242
|
+
*/
|
|
243
|
+
GECODE_INT_EXPORT std::ostream&
|
|
244
|
+
operator<<(std::ostream&, const Gecode::IntSet& s);
|
|
245
|
+
|
|
246
|
+
#include "gecode/int/int-set.icc"
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
#include "gecode/int/var.icc"
|
|
250
|
+
#include "gecode/int/view.icc"
|
|
251
|
+
#include "gecode/int/propagator.icc"
|
|
252
|
+
#include "gecode/int/array.icc"
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
namespace Gecode {
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* \brief Common relation types for integers
|
|
259
|
+
* \ingroup TaskIntInt
|
|
260
|
+
*/
|
|
261
|
+
enum IntRelType {
|
|
262
|
+
IRT_EQ, ///< Equality (\f$=\f$)
|
|
263
|
+
IRT_NQ, ///< Disequality (\f$\neq\f$)
|
|
264
|
+
IRT_LQ, ///< Less or equal (\f$\leq\f$)
|
|
265
|
+
IRT_LE, ///< Less (\f$<\f$)
|
|
266
|
+
IRT_GQ, ///< Greater or equal (\f$\geq\f$)
|
|
267
|
+
IRT_GR ///< Greater (\f$>\f$)
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* \brief Consistency levels for integer propagators
|
|
272
|
+
*
|
|
273
|
+
* The descriptions are meant to be suggestions. It is not
|
|
274
|
+
* required that a propagator achieves full domain-consistency or
|
|
275
|
+
* full bounds-consistency. It is more like: which level
|
|
276
|
+
* of consistency comes closest.
|
|
277
|
+
*
|
|
278
|
+
* If in the description of a constraint below no consistency level
|
|
279
|
+
* is mentioned, the propagator for the constraint implements
|
|
280
|
+
* domain-consistency.
|
|
281
|
+
* \ingroup TaskIntInt
|
|
282
|
+
*/
|
|
283
|
+
enum IntConLevel {
|
|
284
|
+
ICL_VAL, ///< Value consistency (naive)
|
|
285
|
+
ICL_BND, ///< Bounds consistency
|
|
286
|
+
ICL_DOM, ///< Domain consistency
|
|
287
|
+
ICL_DEF ///< The default consistency for a constraint
|
|
288
|
+
};
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* \defgroup TaskIntIntDomain Domain constraints
|
|
294
|
+
* \ingroup TaskIntInt
|
|
295
|
+
*
|
|
296
|
+
*/
|
|
297
|
+
|
|
298
|
+
//@{
|
|
299
|
+
/// Propagates \f$ l\leq x\leq m\f$
|
|
300
|
+
GECODE_INT_EXPORT void
|
|
301
|
+
dom(Space* home, IntVar x, int l, int m,
|
|
302
|
+
IntConLevel=ICL_DEF);
|
|
303
|
+
/// Propagates \f$ l\leq x_i\leq m\f$ for all \f$0\leq i<|x|\f$
|
|
304
|
+
GECODE_INT_EXPORT void
|
|
305
|
+
dom(Space* home, IntVarArgs& x, int l, int m,
|
|
306
|
+
IntConLevel=ICL_DEF);
|
|
307
|
+
|
|
308
|
+
/// Propagates \f$ x\in s \f$
|
|
309
|
+
GECODE_INT_EXPORT void
|
|
310
|
+
dom(Space* home, IntVar x, const IntSet& s,
|
|
311
|
+
IntConLevel=ICL_DEF);
|
|
312
|
+
/// Propagates \f$ x_i\in s\f$ for all \f$0\leq i<|x|\f$
|
|
313
|
+
GECODE_INT_EXPORT void
|
|
314
|
+
dom(Space* home, IntVarArgs& x, const IntSet& s,
|
|
315
|
+
IntConLevel=ICL_DEF);
|
|
316
|
+
|
|
317
|
+
/// Post propagator for \f$ (l\leq x \leq m) \Leftrightarrow b\f$
|
|
318
|
+
GECODE_INT_EXPORT void
|
|
319
|
+
dom(Space* home, IntVar x, int l, int m, BoolVar b,
|
|
320
|
+
IntConLevel=ICL_DEF);
|
|
321
|
+
/// Post propagator for \f$ (x \in s) \Leftrightarrow b\f$
|
|
322
|
+
GECODE_INT_EXPORT void
|
|
323
|
+
dom(Space* home, IntVar x, const IntSet& s, BoolVar b,
|
|
324
|
+
IntConLevel=ICL_DEF);
|
|
325
|
+
//@}
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* \defgroup TaskIntIntRel Simple relation constraints
|
|
330
|
+
* \ingroup TaskIntInt
|
|
331
|
+
*/
|
|
332
|
+
|
|
333
|
+
//@{
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
/** \brief Post propagator for \f$ x_0 \sim_r x_1\f$
|
|
337
|
+
*
|
|
338
|
+
* Supports both bounds (\a icl = ICL_BND) and
|
|
339
|
+
* domain-consistency (\a icl = ICL_DOM, default).
|
|
340
|
+
*/
|
|
341
|
+
GECODE_INT_EXPORT void
|
|
342
|
+
rel(Space* home, IntVar x0, IntRelType r, IntVar x1,
|
|
343
|
+
IntConLevel icl=ICL_DEF);
|
|
344
|
+
/// Propagates \f$ x \sim_r c\f$
|
|
345
|
+
GECODE_INT_EXPORT void
|
|
346
|
+
rel(Space* home, IntVar x, IntRelType r, int c,
|
|
347
|
+
IntConLevel icl=ICL_DEF);
|
|
348
|
+
/** \brief Post propagator for \f$ (x_0 \sim_r x_1)\Leftrightarrow b\f$
|
|
349
|
+
*
|
|
350
|
+
* Supports both bounds (\a icl = ICL_BND) and
|
|
351
|
+
* domain-consistency (\a icl = ICL_DOM, default).
|
|
352
|
+
*/
|
|
353
|
+
GECODE_INT_EXPORT void
|
|
354
|
+
rel(Space* home, IntVar x0, IntRelType r, IntVar x1, BoolVar b,
|
|
355
|
+
IntConLevel icl=ICL_DEF);
|
|
356
|
+
/** \brief Post propagator for \f$(x \sim_r c)\Leftrightarrow b\f$
|
|
357
|
+
*
|
|
358
|
+
* Supports both bounds (\a icl = ICL_BND) and
|
|
359
|
+
* domain-consistency (\a icl = ICL_DOM, default).
|
|
360
|
+
*/
|
|
361
|
+
GECODE_INT_EXPORT void
|
|
362
|
+
rel(Space* home, IntVar x, IntRelType r, int c, BoolVar b,
|
|
363
|
+
IntConLevel icl=ICL_DEF);
|
|
364
|
+
|
|
365
|
+
/** \brief Post propagator for relation between \a x and \a y.
|
|
366
|
+
*
|
|
367
|
+
* Note that for the inequality relations this corresponds to
|
|
368
|
+
* the lexical order between \a x and \a y.
|
|
369
|
+
*
|
|
370
|
+
* Supports both bounds (\a icl = ICL_BND) and
|
|
371
|
+
* domain-consistency (\a icl = ICL_DOM, default).
|
|
372
|
+
*
|
|
373
|
+
* Throws an exception of type Int::ArgumentSizeMismatch, if
|
|
374
|
+
* \a x and \a y are of different size.
|
|
375
|
+
*/
|
|
376
|
+
GECODE_INT_EXPORT void
|
|
377
|
+
rel(Space* home, const IntVarArgs& x, IntRelType r, const IntVarArgs& y,
|
|
378
|
+
IntConLevel icl=ICL_DEF);
|
|
379
|
+
//@}
|
|
380
|
+
|
|
381
|
+
/**
|
|
382
|
+
* \defgroup TaskIntIntEq Equality constraints
|
|
383
|
+
* \ingroup TaskIntInt
|
|
384
|
+
*/
|
|
385
|
+
|
|
386
|
+
//@{
|
|
387
|
+
|
|
388
|
+
/** \brief Post propagator for \f$ x_0 = x_1\f$
|
|
389
|
+
*
|
|
390
|
+
* Supports both bounds (\a icl = ICL_BND) and
|
|
391
|
+
* domain-consistency (\a icl = ICL_DOM, default).
|
|
392
|
+
*/
|
|
393
|
+
GECODE_INT_EXPORT void
|
|
394
|
+
eq(Space* home, IntVar x0, IntVar x1, IntConLevel icl=ICL_DEF);
|
|
395
|
+
/// Propagates \f$ x = n\f$
|
|
396
|
+
GECODE_INT_EXPORT void
|
|
397
|
+
eq(Space* home, IntVar x, int n, IntConLevel=ICL_DEF);
|
|
398
|
+
/** \brief Post propagator for \f$ (x_0 = x_1)\Leftrightarrow b\f$
|
|
399
|
+
*
|
|
400
|
+
* Supports both bounds (\a icl = ICL_BND) and
|
|
401
|
+
* domain-consistency (\a icl = ICL_DOM, default).
|
|
402
|
+
*/
|
|
403
|
+
GECODE_INT_EXPORT void
|
|
404
|
+
eq(Space* home, IntVar x0, IntVar x1, BoolVar b, IntConLevel icl=ICL_DEF);
|
|
405
|
+
/** \brief Post propagator for \f$ (x=n)\Leftrightarrow b\f$
|
|
406
|
+
*
|
|
407
|
+
* Supports both bounds (\a icl = ICL_BND) and
|
|
408
|
+
* domain-consistency (\a icl = ICL_DOM, default).
|
|
409
|
+
*/
|
|
410
|
+
GECODE_INT_EXPORT void
|
|
411
|
+
eq(Space* home, IntVar x, int n, BoolVar b, IntConLevel icl=ICL_DEF);
|
|
412
|
+
/** \brief Post propagator for \f$ x_0 = x_1=\ldots =x_{|x|-1}\f$
|
|
413
|
+
*
|
|
414
|
+
* Supports both bounds (\a icl = ICL_BND) and
|
|
415
|
+
* domain-consistency (\a icl = ICL_DOM, default).
|
|
416
|
+
*/
|
|
417
|
+
GECODE_INT_EXPORT void
|
|
418
|
+
eq(Space* home, const IntVarArgs& x, IntConLevel icl=ICL_DEF);
|
|
419
|
+
//@}
|
|
420
|
+
|
|
421
|
+
|
|
422
|
+
|
|
423
|
+
/**
|
|
424
|
+
* \defgroup TaskIntIntElement Element constraints
|
|
425
|
+
* \ingroup TaskIntInt
|
|
426
|
+
*/
|
|
427
|
+
|
|
428
|
+
//@{
|
|
429
|
+
/** \brief Post propagator for \f$ n_{x_0}=x_1\f$
|
|
430
|
+
*
|
|
431
|
+
* Throws an exception of type Int::NumericalOverflow, if
|
|
432
|
+
* the integers in \a n exceed the limits in Limits::Int.
|
|
433
|
+
*/
|
|
434
|
+
GECODE_INT_EXPORT void
|
|
435
|
+
element(Space* home, const IntArgs& n, IntVar x0, IntVar x1,
|
|
436
|
+
IntConLevel=ICL_DEF);
|
|
437
|
+
/** \brief Post propagator for \f$ x_{y_0}=y_1\f$
|
|
438
|
+
*
|
|
439
|
+
* Supports both bounds (\a icl = ICL_BND) and
|
|
440
|
+
* domain-consistency (\a icl = ICL_DOM, default).
|
|
441
|
+
*/
|
|
442
|
+
GECODE_INT_EXPORT void
|
|
443
|
+
element(Space* home, const IntVarArgs& x, IntVar y0, IntVar y1,
|
|
444
|
+
IntConLevel icl=ICL_DEF);
|
|
445
|
+
//@}
|
|
446
|
+
|
|
447
|
+
|
|
448
|
+
/**
|
|
449
|
+
* \defgroup TaskIntIntDistinct Distinct constraints
|
|
450
|
+
* \ingroup TaskIntInt
|
|
451
|
+
*/
|
|
452
|
+
|
|
453
|
+
//@{
|
|
454
|
+
/** \brief Post propagator for \f$ x_i\neq x_j\f$ for all \f$0\leq i\neq j<|x|\f$
|
|
455
|
+
*
|
|
456
|
+
* Supports value (\a icl = ICL_VAL, default), bounds (\a icl = ICL_BND),
|
|
457
|
+
* and domain-consistency (\a icl = ICL_DOM).
|
|
458
|
+
*
|
|
459
|
+
* Throws an exception of type Int::ArgumentSame, if \a x contains
|
|
460
|
+
* the same variable multiply.
|
|
461
|
+
*/
|
|
462
|
+
GECODE_INT_EXPORT void
|
|
463
|
+
distinct(Space* home, const IntVarArgs& x,
|
|
464
|
+
IntConLevel icl=ICL_DEF);
|
|
465
|
+
/** \brief Post propagator for \f$ x_i+n_i\neq x_j+n_j\f$ for all \f$0\leq i\neq j<|x|\f$
|
|
466
|
+
*
|
|
467
|
+
* \li Supports value (\a icl = ICL_VAL, default), bounds (\a icl = ICL_BND),
|
|
468
|
+
* and domain-consistency (\a icl = ICL_DOM).
|
|
469
|
+
* \li Throws an exception of type Int::NumericalOverflow, if
|
|
470
|
+
* the integers in \a n exceed the limits in Limits::Int.
|
|
471
|
+
* \li Throws an exception of type Int::ArgumentSizeMismatch, if
|
|
472
|
+
* \a x and \a n are of different size.
|
|
473
|
+
* \li Throws an exception of type Int::ArgumentSame, if \a x contains
|
|
474
|
+
* the same variable multiply.
|
|
475
|
+
*/
|
|
476
|
+
GECODE_INT_EXPORT void
|
|
477
|
+
distinct(Space* home, const IntArgs& n, const IntVarArgs& x,
|
|
478
|
+
IntConLevel icl=ICL_DEF);
|
|
479
|
+
//@}
|
|
480
|
+
|
|
481
|
+
|
|
482
|
+
/**
|
|
483
|
+
* \defgroup TaskIntIntChannel Channel constraints
|
|
484
|
+
* \ingroup TaskIntInt
|
|
485
|
+
*/
|
|
486
|
+
|
|
487
|
+
//@{
|
|
488
|
+
/** \brief Post propagator for \f$ x_i = j\leftrightarrow y_j=i\f$ for all \f$0\leq i<|x|\f$
|
|
489
|
+
*
|
|
490
|
+
* \li Supports value (\a icl = ICL_VAL) and domain propagation (all other
|
|
491
|
+
* values for \a icl).
|
|
492
|
+
* \li Throws an exception of type Int::ArgumentSizeMismatch, if
|
|
493
|
+
* \a x and \a n are of different size.
|
|
494
|
+
* \li Throws an exception of type Int::ArgumentSame, if \a x together
|
|
495
|
+
* with \a y contains the same variable multiply.
|
|
496
|
+
*/
|
|
497
|
+
GECODE_INT_EXPORT void
|
|
498
|
+
channel(Space* home, const IntVarArgs& x, const IntVarArgs& y,
|
|
499
|
+
IntConLevel icl=ICL_DEF);
|
|
500
|
+
//@}
|
|
501
|
+
|
|
502
|
+
|
|
503
|
+
/**
|
|
504
|
+
* \defgroup TaskIntIntScheduling Scheduling constraints
|
|
505
|
+
* \ingroup TaskIntInt
|
|
506
|
+
*/
|
|
507
|
+
//@{
|
|
508
|
+
/**
|
|
509
|
+
* \brief Post propagators for the cumulatives constraint.
|
|
510
|
+
*
|
|
511
|
+
* This function creates propagators for the cumulatives constraint
|
|
512
|
+
* presented in <em> "A new multi-resource cumulatives constraint
|
|
513
|
+
* with negative heights"</em>, Nicolas Beldiceanu and Mats
|
|
514
|
+
* Carlsson, Principles and Practice of Constraint Programming 2002.
|
|
515
|
+
*
|
|
516
|
+
* The constraint models a set of machines and a set of tasks that
|
|
517
|
+
* should be assigned to the machines. The machines have a positive
|
|
518
|
+
* resource limit and the tasks each have a resource usage that can
|
|
519
|
+
* be either positive, negative, or zero. The constraint is enforced
|
|
520
|
+
* over each point in time for a machine where there is at least one
|
|
521
|
+
* task assigned.
|
|
522
|
+
*
|
|
523
|
+
* The limit for a machine is either the maximum amount available at
|
|
524
|
+
* any given time (\a at_most = true), or else the least amount to
|
|
525
|
+
* be used (\a at_most = false).
|
|
526
|
+
*
|
|
527
|
+
* \param machine \f$ machine_i \f$ is the machine assigned to task \f$ i \f$
|
|
528
|
+
* \param start \f$ start_i \f$ is the start date assigned to task \f$ i \f$
|
|
529
|
+
* \param duration \f$ duration_i \f$ is the duration of task \f$ i \f$
|
|
530
|
+
* \param end \f$ end_i \f$ is the end date assigned to task \f$ i \f$
|
|
531
|
+
* \param height \f$ height_i \f$ is the height is the amount of
|
|
532
|
+
* resources consumed by task \f$ i \f$
|
|
533
|
+
* \param limit \f$ limit_r \f$ is the amount of resource available
|
|
534
|
+
* for machine \f$ r \f$
|
|
535
|
+
* \param at_most \a at_most tells if the amount of resources used
|
|
536
|
+
* for a machine should be less than the limit (\a at_most
|
|
537
|
+
* = true) or greater than the limit (\a at_most = false)
|
|
538
|
+
* \param icl Supports value-consistency only (\a icl = ICL_VAL, default).
|
|
539
|
+
*
|
|
540
|
+
* \exception Int::ArgumentSizeMismatch thrown if the sizes of the arguments
|
|
541
|
+
* representing tasks does not match.
|
|
542
|
+
* \exception Int::NumericalOverflow thrown if any numerical argument is
|
|
543
|
+
* larger than Limits::Int::int_max or less than
|
|
544
|
+
* Limits::Int::int_min.
|
|
545
|
+
*/
|
|
546
|
+
GECODE_INT_EXPORT void
|
|
547
|
+
cumulatives(Space* home, const IntVarArgs& machine,
|
|
548
|
+
const IntVarArgs& start, const IntVarArgs& duration,
|
|
549
|
+
const IntVarArgs& end, const IntVarArgs& height,
|
|
550
|
+
const IntArgs& limit, bool at_most, IntConLevel icl=ICL_DEF);
|
|
551
|
+
/** \brief Post propagators for the cumulatives constraint.
|
|
552
|
+
*
|
|
553
|
+
* \copydoc cumulatives()
|
|
554
|
+
*/
|
|
555
|
+
GECODE_INT_EXPORT void
|
|
556
|
+
cumulatives(Space* home, const IntArgs& machine,
|
|
557
|
+
const IntVarArgs& start, const IntVarArgs& duration,
|
|
558
|
+
const IntVarArgs& end, const IntVarArgs& height,
|
|
559
|
+
const IntArgs& limit, bool at_most, IntConLevel icl=ICL_DEF);
|
|
560
|
+
/** \brief Post propagators for the cumulatives constraint.
|
|
561
|
+
*
|
|
562
|
+
* \copydoc cumulatives()
|
|
563
|
+
*/
|
|
564
|
+
GECODE_INT_EXPORT void
|
|
565
|
+
cumulatives(Space* home, const IntVarArgs& machine,
|
|
566
|
+
const IntVarArgs& start, const IntArgs& duration,
|
|
567
|
+
const IntVarArgs& end, const IntVarArgs& height,
|
|
568
|
+
const IntArgs& limit, bool at_most, IntConLevel icl=ICL_DEF);
|
|
569
|
+
/** \brief Post propagators for the cumulatives constraint.
|
|
570
|
+
*
|
|
571
|
+
* \copydoc cumulatives()
|
|
572
|
+
*/
|
|
573
|
+
GECODE_INT_EXPORT void
|
|
574
|
+
cumulatives(Space* home, const IntArgs& machine,
|
|
575
|
+
const IntVarArgs& start, const IntArgs& duration,
|
|
576
|
+
const IntVarArgs& end, const IntVarArgs& height,
|
|
577
|
+
const IntArgs& limit, bool at_most, IntConLevel icl=ICL_DEF);
|
|
578
|
+
/** \brief Post propagators for the cumulatives constraint.
|
|
579
|
+
*
|
|
580
|
+
* \copydoc cumulatives()
|
|
581
|
+
*/
|
|
582
|
+
GECODE_INT_EXPORT void
|
|
583
|
+
cumulatives(Space* home, const IntVarArgs& machine,
|
|
584
|
+
const IntVarArgs& start, const IntVarArgs& duration,
|
|
585
|
+
const IntVarArgs& end, const IntArgs& height,
|
|
586
|
+
const IntArgs& limit, bool at_most, IntConLevel icl=ICL_DEF);
|
|
587
|
+
/** \brief Post propagators for the cumulatives constraint.
|
|
588
|
+
*
|
|
589
|
+
* \copydoc cumulatives()
|
|
590
|
+
*/
|
|
591
|
+
GECODE_INT_EXPORT void
|
|
592
|
+
cumulatives(Space* home, const IntArgs& machine,
|
|
593
|
+
const IntVarArgs& start, const IntVarArgs& duration,
|
|
594
|
+
const IntVarArgs& end, const IntArgs& height,
|
|
595
|
+
const IntArgs& limit, bool at_most, IntConLevel icl=ICL_DEF);
|
|
596
|
+
/** \brief Post propagators for the cumulatives constraint.
|
|
597
|
+
*
|
|
598
|
+
* \copydoc cumulatives()
|
|
599
|
+
*/
|
|
600
|
+
GECODE_INT_EXPORT void
|
|
601
|
+
cumulatives(Space* home, const IntVarArgs& machine,
|
|
602
|
+
const IntVarArgs& start, const IntArgs& duration,
|
|
603
|
+
const IntVarArgs& end, const IntArgs& height,
|
|
604
|
+
const IntArgs& limit, bool at_most, IntConLevel icl=ICL_DEF);
|
|
605
|
+
/** \brief Post propagators for the cumulatives constraint.
|
|
606
|
+
*
|
|
607
|
+
* \copydoc cumulatives()
|
|
608
|
+
*/
|
|
609
|
+
GECODE_INT_EXPORT void
|
|
610
|
+
cumulatives(Space* home, const IntArgs& machine,
|
|
611
|
+
const IntVarArgs& start, const IntArgs& duration,
|
|
612
|
+
const IntVarArgs& end, const IntArgs& height,
|
|
613
|
+
const IntArgs& limit, bool at_most, IntConLevel icl=ICL_DEF);
|
|
614
|
+
//@}
|
|
615
|
+
|
|
616
|
+
|
|
617
|
+
/**
|
|
618
|
+
* \defgroup TaskIntIntRegular Regular constraints
|
|
619
|
+
* \ingroup TaskIntInt
|
|
620
|
+
*/
|
|
621
|
+
|
|
622
|
+
class DFA;
|
|
623
|
+
|
|
624
|
+
//@{
|
|
625
|
+
/// %Regular expressions
|
|
626
|
+
class GECODE_INT_EXPORT REG {
|
|
627
|
+
friend class DFA;
|
|
628
|
+
private:
|
|
629
|
+
/// Implementation of the actual expression tree
|
|
630
|
+
class Exp;
|
|
631
|
+
/// The expression tree
|
|
632
|
+
Exp* e;
|
|
633
|
+
/// Initialize with given expression tree \a
|
|
634
|
+
REG(Exp* e);
|
|
635
|
+
public:
|
|
636
|
+
/// Initialize from regular expression \a r
|
|
637
|
+
REG(const REG& r);
|
|
638
|
+
/// Initialize from regular expression \a r
|
|
639
|
+
const REG& operator=(const REG& r);
|
|
640
|
+
|
|
641
|
+
/// Initialize as empty sequence
|
|
642
|
+
REG(void);
|
|
643
|
+
/// Initialize as single integer
|
|
644
|
+
REG(int);
|
|
645
|
+
/// Return expression for: this expression at least \a n times, at most \a m times
|
|
646
|
+
REG operator()(unsigned int n, unsigned int m);
|
|
647
|
+
/// Return expression for: this expression at least \a n times
|
|
648
|
+
REG operator()(unsigned int n);
|
|
649
|
+
/// Return expression for: this expression or \a r
|
|
650
|
+
REG operator|(const REG& r);
|
|
651
|
+
/// Return expression for: this expression followed by \a r
|
|
652
|
+
REG operator+(const REG& r);
|
|
653
|
+
/// Repeat expression for this expression arbitrarily often (Kleene star)
|
|
654
|
+
REG operator*(void);
|
|
655
|
+
/** \brief Repeat expression for this expression arbitrarily often, but
|
|
656
|
+
* at least once
|
|
657
|
+
*/
|
|
658
|
+
REG operator+(void);
|
|
659
|
+
/// Print expression
|
|
660
|
+
std::ostream& print(std::ostream&) const;
|
|
661
|
+
/// Destructor
|
|
662
|
+
~REG(void);
|
|
663
|
+
};
|
|
664
|
+
|
|
665
|
+
/**
|
|
666
|
+
* \brief Deterministic finite automaton
|
|
667
|
+
*
|
|
668
|
+
* After initialization, the start state is always zero.
|
|
669
|
+
* The final states are contiguous ranging from the first to the
|
|
670
|
+
* last final state.
|
|
671
|
+
*/
|
|
672
|
+
class DFA {
|
|
673
|
+
public:
|
|
674
|
+
/// Specification of a %DFA transition
|
|
675
|
+
class Transition {
|
|
676
|
+
public:
|
|
677
|
+
int i_state; ///< input state
|
|
678
|
+
int symbol; ///< symbol
|
|
679
|
+
int o_state; ///< output state
|
|
680
|
+
};
|
|
681
|
+
/// Iterator for %DFA transitions
|
|
682
|
+
class Transitions;
|
|
683
|
+
private:
|
|
684
|
+
/// Class for %DFA implementation
|
|
685
|
+
class DFAI;
|
|
686
|
+
/// %DFA implementation
|
|
687
|
+
DFAI* dfai;
|
|
688
|
+
protected:
|
|
689
|
+
GECODE_INT_EXPORT
|
|
690
|
+
/**
|
|
691
|
+
* \brief Initialize automaton
|
|
692
|
+
*
|
|
693
|
+
* Start state \a start, transition specification t_spec,
|
|
694
|
+
* final state specification \a f_spec and a flag \a minimize whether
|
|
695
|
+
* the automaton should be minimized
|
|
696
|
+
*/
|
|
697
|
+
void init(int start, Transition t_spec[], int f_spec[],
|
|
698
|
+
bool minimize);
|
|
699
|
+
public:
|
|
700
|
+
friend class Transitions;
|
|
701
|
+
/// Default constructor (empty DFA)
|
|
702
|
+
DFA(void);
|
|
703
|
+
/**
|
|
704
|
+
* \brief Initialize DFA by transitions
|
|
705
|
+
*
|
|
706
|
+
* - Start state is given by \a s.
|
|
707
|
+
* - %Transitions are described by \a t, where the last element
|
|
708
|
+
* must have -1 as value for \c i_state.
|
|
709
|
+
* - Final states are given by \a f, where the last final element
|
|
710
|
+
* must be -1.
|
|
711
|
+
* - Minimizes the DFA, if \a minimize is true.
|
|
712
|
+
*/
|
|
713
|
+
DFA(int s, Transition t[], int f[], bool minimize=true);
|
|
714
|
+
GECODE_INT_EXPORT
|
|
715
|
+
/// Initialize DFA by regular expression \a r
|
|
716
|
+
DFA(REG& r);
|
|
717
|
+
/// Initialize by DFA \a d (DFA is shared)
|
|
718
|
+
DFA(const DFA& d);
|
|
719
|
+
/// Initialize by DFA \a d (DFA is shared)
|
|
720
|
+
const DFA& operator=(const DFA&);
|
|
721
|
+
/// Destructor
|
|
722
|
+
~DFA(void);
|
|
723
|
+
/**
|
|
724
|
+
* \brief Update this DFA to \a d
|
|
725
|
+
*
|
|
726
|
+
* If \a share is true, share the same \a d. If not, create
|
|
727
|
+
* an independent copy from \a d.
|
|
728
|
+
*/
|
|
729
|
+
void update(bool share, DFA& d);
|
|
730
|
+
/// Return the number of states
|
|
731
|
+
unsigned int n_states(void) const;
|
|
732
|
+
/// Return the number of transitions
|
|
733
|
+
unsigned int n_transitions(void) const;
|
|
734
|
+
/// Return the number of the first final state
|
|
735
|
+
int final_fst(void) const;
|
|
736
|
+
/// Return the number of the last final state
|
|
737
|
+
int final_lst(void) const;
|
|
738
|
+
/// Return smallest symbol in DFA
|
|
739
|
+
int symbol_min(void) const;
|
|
740
|
+
/// Return largest symbol in DFA
|
|
741
|
+
int symbol_max(void) const;
|
|
742
|
+
};
|
|
743
|
+
|
|
744
|
+
/**
|
|
745
|
+
* \brief Post propagator for regular constraint
|
|
746
|
+
*
|
|
747
|
+
* The elements of \a x must be a word of the language described by
|
|
748
|
+
* the DFA \a d.
|
|
749
|
+
*/
|
|
750
|
+
GECODE_INT_EXPORT void
|
|
751
|
+
regular(Space* home, const IntVarArgs& x, DFA& d,
|
|
752
|
+
IntConLevel=ICL_DEF);
|
|
753
|
+
|
|
754
|
+
//@}
|
|
755
|
+
|
|
756
|
+
}
|
|
757
|
+
|
|
758
|
+
#include "gecode/int/regular/dfa.icc"
|
|
759
|
+
|
|
760
|
+
namespace Gecode {
|
|
761
|
+
|
|
762
|
+
/**
|
|
763
|
+
* \note The Sortedness propagator described in this section only
|
|
764
|
+
* supports bounds-consistency no matter what value for the
|
|
765
|
+
* argument \a icl is given!
|
|
766
|
+
*
|
|
767
|
+
* \defgroup TaskIntIntSort Sorting constraints
|
|
768
|
+
* \ingroup TaskIntInt
|
|
769
|
+
*/
|
|
770
|
+
|
|
771
|
+
|
|
772
|
+
//@{
|
|
773
|
+
/**
|
|
774
|
+
* \brief Post propagator \f$\exists\pi:\forall i\in\{0,\dots,|x|-1\}:
|
|
775
|
+
* y_0 \leq\dots\leq y_{|x|-1} \wedge x_i=y_{\pi(i)}\f$
|
|
776
|
+
*
|
|
777
|
+
* \anchor SortednessSemantics
|
|
778
|
+
*
|
|
779
|
+
* \exception Int::ArgumentSizeMismatch thrown if \a x and \a y
|
|
780
|
+
* differ in size.
|
|
781
|
+
* \exception Int::ArgumentSame thrown if \a x or \a y contain
|
|
782
|
+
* shared variables.
|
|
783
|
+
*
|
|
784
|
+
* Taking only two arguments, this interface for Sortedness leaves
|
|
785
|
+
* the sorting permutation \f$\pi\f$ implicit.
|
|
786
|
+
*
|
|
787
|
+
*/
|
|
788
|
+
GECODE_INT_EXPORT void
|
|
789
|
+
sortedness(Space* home, const IntVarArgs& x, const IntVarArgs& y,
|
|
790
|
+
IntConLevel icl=ICL_DEF);
|
|
791
|
+
|
|
792
|
+
/**
|
|
793
|
+
* \brief Post propagator \f$\forall i\in\{0,\dots,|x|-1\}:
|
|
794
|
+
* y_0 \leq\dots\leq y_{|x|-1} \wedge x_i=y_{z_i} \f$ \n
|
|
795
|
+
*
|
|
796
|
+
* \exception Int::ArgumentSizeMismatch thrown if \a x, \a y or \a z
|
|
797
|
+
* differ in size.
|
|
798
|
+
* \exception Int::ArgumentSame thrown if \a x, \a y or \a z contain
|
|
799
|
+
* shared variables.
|
|
800
|
+
*
|
|
801
|
+
* Providing a third argument \f$z_0, \dots, z_{|x|-1} \f$, this
|
|
802
|
+
* interface for Sortedness models the sorting permutation
|
|
803
|
+
* \f$\pi\f$ explicitly, such that
|
|
804
|
+
* \f$\forall i\in\{0,\dots,|x|-1\}:\pi(i) = z_i\f$ holds.
|
|
805
|
+
*
|
|
806
|
+
*/
|
|
807
|
+
|
|
808
|
+
GECODE_INT_EXPORT void
|
|
809
|
+
sortedness(Space*, const IntVarArgs& x, const IntVarArgs& y,
|
|
810
|
+
const IntVarArgs& z,
|
|
811
|
+
IntConLevel icl=ICL_DEF);
|
|
812
|
+
//@}
|
|
813
|
+
|
|
814
|
+
/**
|
|
815
|
+
* \defgroup TaskIntIntCard Cardinality constraints
|
|
816
|
+
* \ingroup TaskIntInt
|
|
817
|
+
*
|
|
818
|
+
* \note
|
|
819
|
+
* Domain consistency on the extended cardinality variables of
|
|
820
|
+
* the Global Cardinality Propagator is only obtained if they are bounds
|
|
821
|
+
* consistent, otherwise the problem of enforcing domain consistency
|
|
822
|
+
* on the cardinality variables is NP-complete as proved by
|
|
823
|
+
* \ref CardVarNPCompl "Qumiper et. al. in
|
|
824
|
+
* Improved Algorithms for the Global Cardinality Constraint"
|
|
825
|
+
*/
|
|
826
|
+
|
|
827
|
+
//@{
|
|
828
|
+
/** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=n\}\sim_r m\f$
|
|
829
|
+
*
|
|
830
|
+
* Supports domain-consistent propagation only.
|
|
831
|
+
*/
|
|
832
|
+
GECODE_INT_EXPORT void
|
|
833
|
+
count(Space* home, const IntVarArgs& x, int n, IntRelType r, int m,
|
|
834
|
+
IntConLevel icl=ICL_DEF);
|
|
835
|
+
/** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=y\}\sim_r m\f$
|
|
836
|
+
*
|
|
837
|
+
* Supports domain-consistent propagation only.
|
|
838
|
+
*/
|
|
839
|
+
GECODE_INT_EXPORT void
|
|
840
|
+
count(Space* home, const IntVarArgs& x, IntVar y, IntRelType r, int m,
|
|
841
|
+
IntConLevel icl=ICL_DEF);
|
|
842
|
+
/** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=n\}\sim_r z\f$
|
|
843
|
+
*
|
|
844
|
+
* Supports domain-consistent propagation only.
|
|
845
|
+
*/
|
|
846
|
+
GECODE_INT_EXPORT void
|
|
847
|
+
count(Space* home, const IntVarArgs& x, int n, IntRelType r, IntVar z,
|
|
848
|
+
IntConLevel icl=ICL_DEF);
|
|
849
|
+
/** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=y\}\sim_r z\f$
|
|
850
|
+
*
|
|
851
|
+
* Supports domain-consistent propagation only.
|
|
852
|
+
*/
|
|
853
|
+
GECODE_INT_EXPORT void
|
|
854
|
+
count(Space* home, const IntVarArgs& x, IntVar y, IntRelType r, IntVar z,
|
|
855
|
+
IntConLevel icl=ICL_DEF);
|
|
856
|
+
|
|
857
|
+
|
|
858
|
+
/**
|
|
859
|
+
* \brief Post propagator for
|
|
860
|
+
* \f{eqnarray*}
|
|
861
|
+
* \forall t=(v, lb, ub) \in c: & &
|
|
862
|
+
* lb \leq \#\{i\in\{0, \dots, |x| - 1\} | x_i = v\} \leq ub \\
|
|
863
|
+
* \forall t=(v, unspec_{low}, unspec_{up}) \not\in c: & &
|
|
864
|
+
* unspec_{low} \leq \#\{i\in\{0, \dots, |x| - 1\} | x_i = v\} \leq unspec_{up}
|
|
865
|
+
* \f}
|
|
866
|
+
*
|
|
867
|
+
* Supports value (\a icl = ICL_VAL, default), bounds (\a icl = ICL_BND),
|
|
868
|
+
* and domain-consistency (\a icl = ICL_DOM).
|
|
869
|
+
*
|
|
870
|
+
* \exception Int::ArgumentSame thrown if \a x contains shared variables.
|
|
871
|
+
*
|
|
872
|
+
* \param x variables on which to perform propagation
|
|
873
|
+
* \param c specifying cardinality information as shown below
|
|
874
|
+
* \param m denotes the size of c
|
|
875
|
+
* \param unspec_low denotes the lower bound for those values
|
|
876
|
+
* not specified in c
|
|
877
|
+
* \param unspec_up denotes the upper bound for those values
|
|
878
|
+
* not specified in c
|
|
879
|
+
* \param min smallest domain value of \a x
|
|
880
|
+
* \param max largest domain value of \a x
|
|
881
|
+
* \param icl consistency level
|
|
882
|
+
*
|
|
883
|
+
* Let \f$ D:=\displaystyle \bigcup_{i\in\{0, \dots, |x|-1\}} dom(x_i)\f$ and
|
|
884
|
+
* \f$ V \f$ the set of values represented by \a c. Then this progator allows
|
|
885
|
+
* sets \f$ V\subset D\f$ as well as \f$ V=D\f$.
|
|
886
|
+
*
|
|
887
|
+
* In this interface values \f$ v\f$ and their cardinality bounds
|
|
888
|
+
* have to specified such that \a c looks as follows (for example):
|
|
889
|
+
* \f$ c=[ (1,0,1), (2,1,3), \dots, (10,4,5)]\f$, where the value 1 may occur
|
|
890
|
+
* zero times or once, the value 2 must occur at least once at most three times
|
|
891
|
+
* and the value 10 must occur at least 4 times and at most 5 times.
|
|
892
|
+
*
|
|
893
|
+
* Furthermore, this interface requires that
|
|
894
|
+
* \f$ \forall {i\in\{0, \dots, |x|-1\}}: dom(x_i)
|
|
895
|
+
* \subseteq I=[min;max]\f$.
|
|
896
|
+
*
|
|
897
|
+
*/
|
|
898
|
+
|
|
899
|
+
GECODE_INT_EXPORT void
|
|
900
|
+
gcc(Space* home, const IntVarArgs& x, const IntArgs& c,
|
|
901
|
+
int m, int unspec_low, int unspec_up, int min, int max,
|
|
902
|
+
IntConLevel icl);
|
|
903
|
+
|
|
904
|
+
/**
|
|
905
|
+
* \brief Post propagator for
|
|
906
|
+
* \f{eqnarray*}
|
|
907
|
+
* \forall t=(v, lb, ub) \in c: & &
|
|
908
|
+
* lb \leq \#\{i\in\{0, \dots, |x| - 1\} | x_i = v\} \leq ub \\
|
|
909
|
+
* \forall t=(v, 0, unspec) \not\in c: & &
|
|
910
|
+
* 0 \leq \#\{i\in\{0, \dots, |x| - 1\} | x_i = v\} \leq unspec
|
|
911
|
+
* \f}
|
|
912
|
+
*
|
|
913
|
+
* Supports value (\a icl = ICL_VAL, default), bounds (\a icl = ICL_BND),
|
|
914
|
+
* and domain-consistency (\a icl = ICL_DOM).
|
|
915
|
+
*
|
|
916
|
+
* \exception Int::ArgumentSame thrown if \a x contains shared variables.
|
|
917
|
+
*
|
|
918
|
+
* \param x variables on which to perform propagation
|
|
919
|
+
* \param c specifying cardinality information as shown below
|
|
920
|
+
* \param m denotes the size of \a c
|
|
921
|
+
* \param unspec denotes the upper bound for those values
|
|
922
|
+
* not specified in \a c
|
|
923
|
+
* \param min smallest domain value of \a x
|
|
924
|
+
* \param max largest domain value of \a x
|
|
925
|
+
* \param icl consistency level
|
|
926
|
+
*
|
|
927
|
+
* Let \f$ D:=\displaystyle \bigcup_{i\in\{0, \dots, |x|-1\}} dom(x_i)\f$ and
|
|
928
|
+
* \f$ V \f$ the set of values represented by \a c. Then this interface allows
|
|
929
|
+
* to specify sets \f$ V\subset D\f$ as well as \f$ V=D\f$.
|
|
930
|
+
*
|
|
931
|
+
* In this interface values \f$ v\f$ and their cardinality bounds
|
|
932
|
+
* have to be specified such that \a c looks as follows (for example):
|
|
933
|
+
* \f$ c=[ (1,0,1), (2,1,3), \dots, (10,4,5)]\f$, where the value 1 may occur
|
|
934
|
+
* zero times or once, the value 2 must occur at least once at most three times
|
|
935
|
+
* and the value 10 must occur at least 4 times and at most 5 times.
|
|
936
|
+
*/
|
|
937
|
+
|
|
938
|
+
GECODE_INT_EXPORT void
|
|
939
|
+
gcc(Space* home, const IntVarArgs& x, const IntArgs& c,
|
|
940
|
+
int m, int unspec, int min, int max,
|
|
941
|
+
IntConLevel icl);
|
|
942
|
+
|
|
943
|
+
/**
|
|
944
|
+
* \brief Post propagator for \f$ \forall v
|
|
945
|
+
* \in \displaystyle \bigcup_{i\in\{0, \dots, |x|-1\}} dom(x_i):
|
|
946
|
+
* lb \leq \#\{i\in\{0, \dots, |x| - 1\} | x_i = v\} \leq ub \f$
|
|
947
|
+
*
|
|
948
|
+
* Supports value (\a icl = ICL_VAL, default), bounds (\a icl = ICL_BND),
|
|
949
|
+
* and domain-consistency (\a icl = ICL_DOM).
|
|
950
|
+
*
|
|
951
|
+
* \exception Int::ArgumentSame thrown if \a x contains shared variables.
|
|
952
|
+
*
|
|
953
|
+
* \param x variables on which to perform propagation
|
|
954
|
+
* \param lb denotes the lower bound for all values
|
|
955
|
+
* specified in the array \a c,
|
|
956
|
+
* \param ub denotes the upper bound for all values
|
|
957
|
+
* specified in the array \a c,
|
|
958
|
+
* where this interface allows only value sets
|
|
959
|
+
* \f$ V=D \displaystyle \bigcup_{i\in\{0, \dots, |x|-1\}}
|
|
960
|
+
* dom(x_i)\f$
|
|
961
|
+
* \param icl consistency level
|
|
962
|
+
*/
|
|
963
|
+
|
|
964
|
+
GECODE_INT_EXPORT void
|
|
965
|
+
gcc(Space* home, const IntVarArgs& x, int lb, int ub, IntConLevel icl);
|
|
966
|
+
|
|
967
|
+
/**
|
|
968
|
+
* \brief Post propagator for \f$ \forall v
|
|
969
|
+
* \in \displaystyle \bigcup_{i\in\{0, \dots, |x|-1\}} dom(x_i):
|
|
970
|
+
* lb = \#\{i\in\{0, \dots, |x| - 1\} | x_i = v\} = ub \f$
|
|
971
|
+
*
|
|
972
|
+
* Supports value (\a icl = ICL_VAL, default), bounds (\a icl = ICL_BND),
|
|
973
|
+
* and domain-consistency (\a icl = ICL_DOM).
|
|
974
|
+
*
|
|
975
|
+
* \exception Int::ArgumentSame thrown if \a x contains shared variables.
|
|
976
|
+
*
|
|
977
|
+
* \param x variables on which to perform propagation
|
|
978
|
+
* \param ub denotes the upper bound for all values specified
|
|
979
|
+
* in the array \a c, where this interface
|
|
980
|
+
* allows only value sets
|
|
981
|
+
* \f$ V=D \displaystyle \bigcup_{i\in\{0, \dots, |x|-1\}}
|
|
982
|
+
* dom(x_i)\f$
|
|
983
|
+
* \param icl consistency level
|
|
984
|
+
*
|
|
985
|
+
*/
|
|
986
|
+
|
|
987
|
+
GECODE_INT_EXPORT void
|
|
988
|
+
gcc(Space* home, const IntVarArgs& x, int ub, IntConLevel icl);
|
|
989
|
+
|
|
990
|
+
|
|
991
|
+
/**
|
|
992
|
+
* \brief Post propagator for
|
|
993
|
+
* \f{eqnarray*}
|
|
994
|
+
* v_j \in I=[min;max] & & \\
|
|
995
|
+
* \forall j \in \{0, \dots, |I| - 1\}: & &
|
|
996
|
+
* \#\{i\in\{0, \dots, |x| - 1\} | x_i = v_j\} = c_j
|
|
997
|
+
* \f}
|
|
998
|
+
*
|
|
999
|
+
* \param x variables on which to perform propagation
|
|
1000
|
+
* \param c cardinality variables
|
|
1001
|
+
* \param min smallest domain value of \a x
|
|
1002
|
+
* \param max largest domain value of \a x
|
|
1003
|
+
* \param icl consistency level
|
|
1004
|
+
*
|
|
1005
|
+
* Supports value (\a icl = ICL_VAL, default), bounds (\a icl = ICL_BND),
|
|
1006
|
+
* and domain-consistency (\a icl = ICL_DOM).
|
|
1007
|
+
*
|
|
1008
|
+
* This interface requires that
|
|
1009
|
+
* \f$ \forall {i\in\{0, \dots, |x|-1\}}: dom(x_i)
|
|
1010
|
+
* \subseteq I=[min;max]\f$.
|
|
1011
|
+
*/
|
|
1012
|
+
|
|
1013
|
+
GECODE_INT_EXPORT void
|
|
1014
|
+
gcc(Space* home, const IntVarArgs& x, const IntVarArgs& c,
|
|
1015
|
+
int min, int max,
|
|
1016
|
+
IntConLevel icl);
|
|
1017
|
+
|
|
1018
|
+
/**
|
|
1019
|
+
* \brief Post propagator for \f$ \forall j \in \{0, \dots, |v| - 1\}:
|
|
1020
|
+
* \#\{i\in\{0, \dots, |x| - 1\} | x_i = v_j\} = c_j \f$
|
|
1021
|
+
*
|
|
1022
|
+
* \param x variables on which to perform propagation
|
|
1023
|
+
* \param v containing the values connected to the cardinality
|
|
1024
|
+
* variables as specified below
|
|
1025
|
+
* \param c cardinality variables
|
|
1026
|
+
* \param m denotes the size of \a v and \a c
|
|
1027
|
+
* \param unspec_low denotes the lower bound for those values
|
|
1028
|
+
* not specified in \a v and \a c
|
|
1029
|
+
* \param unspec_up denotes the upper bound for those values
|
|
1030
|
+
* not specified in \a v and \a c
|
|
1031
|
+
* \param all specifies whether the propagator uses all values in
|
|
1032
|
+
* the interval \f$ I=[min;max]\f$
|
|
1033
|
+
* \param min smallest domain value of \a x
|
|
1034
|
+
* \param max largest domain value of \a x
|
|
1035
|
+
* \param icl consistency level
|
|
1036
|
+
*
|
|
1037
|
+
* Supports value (\a icl = ICL_VAL, default), bounds (\a icl = ICL_BND),
|
|
1038
|
+
* and domain-consistency (\a icl = ICL_DOM).
|
|
1039
|
+
*
|
|
1040
|
+
* This interface requires that
|
|
1041
|
+
* \f$ \forall {i\in\{0, \dots, |x|-1\}}: dom(x_i)
|
|
1042
|
+
* \subseteq I=[min;max]\f$.
|
|
1043
|
+
* If \a all is set to true, every value from the interval
|
|
1044
|
+
* \f$ I=[min;max]\f$ is specified with cardinalities.
|
|
1045
|
+
* Otherwise, only specified values in \a v are used and unspecified values
|
|
1046
|
+
* may occur between \a unspec_low and \a unspec_up times.
|
|
1047
|
+
*/
|
|
1048
|
+
|
|
1049
|
+
GECODE_INT_EXPORT void
|
|
1050
|
+
gcc(Space* home,
|
|
1051
|
+
const IntVarArgs& x, const IntArgs& v, const IntVarArgs& c,
|
|
1052
|
+
int m, int unspec_low, int unspec_up, bool all, int min, int max,
|
|
1053
|
+
IntConLevel icl);
|
|
1054
|
+
|
|
1055
|
+
/**
|
|
1056
|
+
* \brief Post propagator for \f$ \forall j \in \{0, \dots, |v| - 1\}:
|
|
1057
|
+
* \#\{i\in\{0, \dots, |x| - 1\} | x_i = v_j\} = c_j \f$
|
|
1058
|
+
*
|
|
1059
|
+
* \param x variables on which to perform propagation
|
|
1060
|
+
* \param v containing the values connected to the cardinality
|
|
1061
|
+
* variables as specified below
|
|
1062
|
+
* \param c cardinality variables
|
|
1063
|
+
* \param m denotes the size of \a v and \a c
|
|
1064
|
+
* \param unspec denotes the upper bound for those values
|
|
1065
|
+
* not specified in \a v and \a c
|
|
1066
|
+
* \param all specifies whether the propagator uses all values in
|
|
1067
|
+
* the interval \f$ I=[min;max]\f$
|
|
1068
|
+
* \param min smallest domain value of \a x
|
|
1069
|
+
* \param max largest domain value of \a x
|
|
1070
|
+
* \param icl consistency level
|
|
1071
|
+
*
|
|
1072
|
+
* Supports value (\a icl = ICL_VAL, default), bounds (\a icl = ICL_BND),
|
|
1073
|
+
* and domain-consistency (\a icl = ICL_DOM).
|
|
1074
|
+
*
|
|
1075
|
+
* This interface requires that
|
|
1076
|
+
* \f$ \forall {i\in\{0, \dots, |x|-1\}}: dom(x_i)
|
|
1077
|
+
* \subseteq [min, \dots, max]\f$.
|
|
1078
|
+
* If \a all is set to true, every value from the interval
|
|
1079
|
+
* \f$ I=[min;max]\f$ is specified with cardinalities.
|
|
1080
|
+
* Otherwise, only specified values in \a v are used and unspecified values
|
|
1081
|
+
* may occur between 0 and \a unspec times.
|
|
1082
|
+
*/
|
|
1083
|
+
GECODE_INT_EXPORT void
|
|
1084
|
+
gcc(Space* home,
|
|
1085
|
+
const IntVarArgs& x, const IntArgs& v, const IntVarArgs& c,
|
|
1086
|
+
int m, int unspec, bool all, int min, int max,
|
|
1087
|
+
IntConLevel icl);
|
|
1088
|
+
//@}
|
|
1089
|
+
|
|
1090
|
+
/**
|
|
1091
|
+
* \defgroup TaskIntIntBool Boolean constraints
|
|
1092
|
+
* \ingroup TaskIntInt
|
|
1093
|
+
*/
|
|
1094
|
+
|
|
1095
|
+
//@{
|
|
1096
|
+
/// Post propagator for \f$ \lnot b_0 = b_1\f$
|
|
1097
|
+
GECODE_INT_EXPORT void
|
|
1098
|
+
bool_not(Space* home, BoolVar b0, BoolVar b1,
|
|
1099
|
+
IntConLevel=ICL_DEF);
|
|
1100
|
+
|
|
1101
|
+
/// Post propagator for \f$ b_0 = b_1\f$
|
|
1102
|
+
GECODE_INT_EXPORT void
|
|
1103
|
+
bool_eq(Space* home, BoolVar b0, BoolVar b1,
|
|
1104
|
+
IntConLevel=ICL_DEF);
|
|
1105
|
+
|
|
1106
|
+
/// Post propagator for \f$ b_0 \land b_1 = b_2 \f$
|
|
1107
|
+
GECODE_INT_EXPORT void
|
|
1108
|
+
bool_and(Space* home, BoolVar b0, BoolVar b1, BoolVar b2,
|
|
1109
|
+
IntConLevel=ICL_DEF);
|
|
1110
|
+
/// Post propagator for \f$ b_0 \land b_1 = b_2 \f$
|
|
1111
|
+
GECODE_INT_EXPORT void
|
|
1112
|
+
bool_and(Space* home, BoolVar b0, BoolVar b1, bool b2,
|
|
1113
|
+
IntConLevel=ICL_DEF);
|
|
1114
|
+
/// Post propagator for \f$ \bigwedge_{i=0}^{|b|-1} b_i = c\f$
|
|
1115
|
+
GECODE_INT_EXPORT void
|
|
1116
|
+
bool_and(Space* home, const BoolVarArgs& b, BoolVar c,
|
|
1117
|
+
IntConLevel=ICL_DEF);
|
|
1118
|
+
/// Post propagator for \f$ \bigwedge_{i=0}^{|b|-1} b_i = c\f$
|
|
1119
|
+
GECODE_INT_EXPORT void
|
|
1120
|
+
bool_and(Space* home, const BoolVarArgs& b, bool c,
|
|
1121
|
+
IntConLevel=ICL_DEF);
|
|
1122
|
+
|
|
1123
|
+
/// Post propagator for \f$ b_0 \lor b_1 = b_2 \f$
|
|
1124
|
+
GECODE_INT_EXPORT void
|
|
1125
|
+
bool_or(Space* home, BoolVar b0, BoolVar b1, BoolVar b2,
|
|
1126
|
+
IntConLevel=ICL_DEF);
|
|
1127
|
+
/// Post propagator for \f$ b_0 \lor b_1 = b_2 \f$
|
|
1128
|
+
GECODE_INT_EXPORT void
|
|
1129
|
+
bool_or(Space* home, BoolVar b0, BoolVar b1, bool b2,
|
|
1130
|
+
IntConLevel=ICL_DEF);
|
|
1131
|
+
/// Post propagator for \f$ \bigvee_{i=0}^{|b|-1} b_i = c\f$
|
|
1132
|
+
GECODE_INT_EXPORT void
|
|
1133
|
+
bool_or(Space* home, const BoolVarArgs& b, BoolVar c,
|
|
1134
|
+
IntConLevel=ICL_DEF);
|
|
1135
|
+
/// Post propagator for \f$ \bigvee_{i=0}^{|b|-1} b_i = c\f$
|
|
1136
|
+
GECODE_INT_EXPORT void
|
|
1137
|
+
bool_or(Space* home, const BoolVarArgs& b, bool c,
|
|
1138
|
+
IntConLevel=ICL_DEF);
|
|
1139
|
+
|
|
1140
|
+
/// Post propagator for \f$ b_0 \Rightarrow b_1 = b_2 \f$ (implication)
|
|
1141
|
+
GECODE_INT_EXPORT void
|
|
1142
|
+
bool_imp(Space* home, BoolVar b0, BoolVar b1, BoolVar b2,
|
|
1143
|
+
IntConLevel=ICL_DEF);
|
|
1144
|
+
/// Post propagator for \f$ b_0 \Rightarrow b_1 = b_2 \f$ (implication)
|
|
1145
|
+
GECODE_INT_EXPORT void
|
|
1146
|
+
bool_imp(Space* home, BoolVar b0, BoolVar b1, bool b2,
|
|
1147
|
+
IntConLevel=ICL_DEF);
|
|
1148
|
+
|
|
1149
|
+
/// Post propagator for \f$ b_0 \Leftrightarrow b_1 = b_2 \f$ (equivalence)
|
|
1150
|
+
GECODE_INT_EXPORT void
|
|
1151
|
+
bool_eqv(Space* home, BoolVar b0, BoolVar b1, BoolVar b2,
|
|
1152
|
+
IntConLevel=ICL_DEF);
|
|
1153
|
+
/// Post propagator for \f$ b_0 \Leftrightarrow b_1 = b_2 \f$ (equivalence)
|
|
1154
|
+
GECODE_INT_EXPORT void
|
|
1155
|
+
bool_eqv(Space* home, BoolVar b0, BoolVar b1, bool b2,
|
|
1156
|
+
IntConLevel=ICL_DEF);
|
|
1157
|
+
/// Post propagator for \f$ b_1 \otimes b_2 = b_3 \f$ (exclusive or)
|
|
1158
|
+
GECODE_INT_EXPORT void
|
|
1159
|
+
bool_xor(Space* home, BoolVar b0, BoolVar b1, BoolVar b2,
|
|
1160
|
+
IntConLevel=ICL_DEF);
|
|
1161
|
+
/// Post propagator for \f$ b_1 \otimes b_2 = b_3 \f$ (exclusive or)
|
|
1162
|
+
GECODE_INT_EXPORT void
|
|
1163
|
+
bool_xor(Space* home, BoolVar b0, BoolVar b1, bool b2,
|
|
1164
|
+
IntConLevel=ICL_DEF);
|
|
1165
|
+
|
|
1166
|
+
//@}
|
|
1167
|
+
|
|
1168
|
+
/**
|
|
1169
|
+
* \defgroup TaskIntIntArith Arithmetic constraints
|
|
1170
|
+
* \ingroup TaskIntInt
|
|
1171
|
+
*/
|
|
1172
|
+
|
|
1173
|
+
//@{
|
|
1174
|
+
/** \brief Post propagator for \f$ \min\{x_0,x_1\}=x_2\f$
|
|
1175
|
+
*
|
|
1176
|
+
* Only bounds-consistency is supported.
|
|
1177
|
+
*/
|
|
1178
|
+
GECODE_INT_EXPORT void
|
|
1179
|
+
min(Space* home, IntVar x0, IntVar x1, IntVar x2,
|
|
1180
|
+
IntConLevel=ICL_DEF);
|
|
1181
|
+
/** \brief Post propagator for \f$ \min x=y\f$
|
|
1182
|
+
*
|
|
1183
|
+
* Only bounds-consistency is supported.
|
|
1184
|
+
*/
|
|
1185
|
+
GECODE_INT_EXPORT void
|
|
1186
|
+
min(Space* home, const IntVarArgs& x, IntVar y,
|
|
1187
|
+
IntConLevel=ICL_DEF);
|
|
1188
|
+
/** \brief Post propagator for \f$ \max\{x_0,x_1\}=x_2\f$
|
|
1189
|
+
*
|
|
1190
|
+
* Only bounds-consistency is supported. If \a x is empty,
|
|
1191
|
+
* an exception of type Int::ArgumentEmpty is thrown.
|
|
1192
|
+
*/
|
|
1193
|
+
GECODE_INT_EXPORT void
|
|
1194
|
+
max(Space* home, IntVar x0, IntVar x1, IntVar x2,
|
|
1195
|
+
IntConLevel=ICL_DEF);
|
|
1196
|
+
/** \brief Post propagator for \f$ \max x=y\f$
|
|
1197
|
+
*
|
|
1198
|
+
* Only bounds-consistency is supported. If \a x is empty,
|
|
1199
|
+
* an exception of type Int::ArgumentEmpty is thrown.
|
|
1200
|
+
*/
|
|
1201
|
+
GECODE_INT_EXPORT void
|
|
1202
|
+
max(Space* home, const IntVarArgs& x, IntVar y,
|
|
1203
|
+
IntConLevel=ICL_DEF);
|
|
1204
|
+
|
|
1205
|
+
/** \brief Post propagator for \f$ |x_0|=x_1\f$
|
|
1206
|
+
*
|
|
1207
|
+
* Only bounds-consistency is supported.
|
|
1208
|
+
*/
|
|
1209
|
+
GECODE_INT_EXPORT void
|
|
1210
|
+
abs(Space* home, IntVar x0, IntVar x1,
|
|
1211
|
+
IntConLevel=ICL_DEF);
|
|
1212
|
+
|
|
1213
|
+
/** \brief Post propagator for \f$x_0\cdot x_1=x_2\f$
|
|
1214
|
+
*
|
|
1215
|
+
* Only bounds-consistency is supported. The propagator
|
|
1216
|
+
* is overflow safe.
|
|
1217
|
+
*/
|
|
1218
|
+
GECODE_INT_EXPORT void
|
|
1219
|
+
mult(Space* home, IntVar x0, IntVar x1, IntVar x2,
|
|
1220
|
+
IntConLevel=ICL_DEF);
|
|
1221
|
+
//@}
|
|
1222
|
+
|
|
1223
|
+
/**
|
|
1224
|
+
* \defgroup TaskIntIntLinear Linear constraints
|
|
1225
|
+
* \ingroup TaskIntInt
|
|
1226
|
+
*
|
|
1227
|
+
* All variants for linear constraints share the following properties:
|
|
1228
|
+
* - Bounds-consistency (over the real numbers) is supported for
|
|
1229
|
+
* all constraints (actually, for disequlities always domain-consistency
|
|
1230
|
+
* is used as it is cheaper). Domain-consistency is supported for all
|
|
1231
|
+
* non-reified constraint. As bounds-consistency for inequalities
|
|
1232
|
+
* coincides with domain-consistency, the only
|
|
1233
|
+
* real variation is for linear equations). Domain-consistent
|
|
1234
|
+
* linear equations are exponential, so use with care!
|
|
1235
|
+
* - Variables occurring multiply in the argument arrays are replaced
|
|
1236
|
+
* by a single occurrence: for example, \f$ax+bx\f$ becomes
|
|
1237
|
+
* \f$(a+b)x\f$.
|
|
1238
|
+
* - If in the above simplification the value for \f$(a+b)\f$ (or for
|
|
1239
|
+
* \f$a\f$ and \f$b\f$) exceeds the limits for integers as
|
|
1240
|
+
* defined in Limits::Int, an exception of type
|
|
1241
|
+
* Int::NumericalOverflow is thrown.
|
|
1242
|
+
* - Assume the constraint
|
|
1243
|
+
* \f$\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_r c\f$.
|
|
1244
|
+
* If \f$|c|+\sum_{i=0}^{|x|-1}a_i\cdot x_i\f$ exceeds the limits
|
|
1245
|
+
* for doubles as defined in Limits::Int, an exception of
|
|
1246
|
+
* type Int::NumericalOverflow is thrown.
|
|
1247
|
+
* - In all other cases, the created propagators are accurate (that
|
|
1248
|
+
* is, they will not silently overflow during propagation).
|
|
1249
|
+
*/
|
|
1250
|
+
|
|
1251
|
+
//@{
|
|
1252
|
+
/// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i\sim_r c\f$
|
|
1253
|
+
GECODE_INT_EXPORT void
|
|
1254
|
+
linear(Space* home, const IntVarArgs& x,
|
|
1255
|
+
IntRelType r, int c,
|
|
1256
|
+
IntConLevel=ICL_DEF);
|
|
1257
|
+
/// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i\sim_r y\f$
|
|
1258
|
+
GECODE_INT_EXPORT void
|
|
1259
|
+
linear(Space* home, const IntVarArgs& x,
|
|
1260
|
+
IntRelType r, IntVar y,
|
|
1261
|
+
IntConLevel=ICL_DEF);
|
|
1262
|
+
/// Post propagator for \f$\left(\sum_{i=0}^{|x|-1}x_i\sim_r c\right)\Leftrightarrow b\f$
|
|
1263
|
+
GECODE_INT_EXPORT void
|
|
1264
|
+
linear(Space* home, const IntVarArgs& x,
|
|
1265
|
+
IntRelType r, int c, BoolVar b, IntConLevel=ICL_DEF);
|
|
1266
|
+
/// Post propagator for \f$\left(\sum_{i=0}^{|x|-1}x_i\sim_r y\right)\Leftrightarrow b\f$
|
|
1267
|
+
GECODE_INT_EXPORT void
|
|
1268
|
+
linear(Space* home, const IntVarArgs& x,
|
|
1269
|
+
IntRelType r, IntVar y, BoolVar b, IntConLevel=ICL_DEF);
|
|
1270
|
+
/** \brief Post propagator for \f$\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_r c\f$
|
|
1271
|
+
*
|
|
1272
|
+
* Throws an exception of type Int::ArgumentSizeMismatch, if
|
|
1273
|
+
* \a a and \a x are of different size.
|
|
1274
|
+
*/
|
|
1275
|
+
GECODE_INT_EXPORT void
|
|
1276
|
+
linear(Space* home, const IntArgs& a, const IntVarArgs& x,
|
|
1277
|
+
IntRelType r, int c,
|
|
1278
|
+
IntConLevel=ICL_DEF);
|
|
1279
|
+
/** \brief Post propagator for \f$\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_r y\f$
|
|
1280
|
+
*
|
|
1281
|
+
* Throws an exception of type Int::ArgumentSizeMismatch, if
|
|
1282
|
+
* \a a and \a x are of different size.
|
|
1283
|
+
*/
|
|
1284
|
+
GECODE_INT_EXPORT void
|
|
1285
|
+
linear(Space* home, const IntArgs& a, const IntVarArgs& x,
|
|
1286
|
+
IntRelType r, IntVar y,
|
|
1287
|
+
IntConLevel=ICL_DEF);
|
|
1288
|
+
/** \brief Post propagator for \f$\left(\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_r c\right)\Leftrightarrow b\f$
|
|
1289
|
+
*
|
|
1290
|
+
* Throws an exception of type Int::ArgumentSizeMismatch, if
|
|
1291
|
+
* \a a and \a x are of different size.
|
|
1292
|
+
*/
|
|
1293
|
+
GECODE_INT_EXPORT void
|
|
1294
|
+
linear(Space* home, const IntArgs& a, const IntVarArgs& x,
|
|
1295
|
+
IntRelType r, int c, BoolVar b,
|
|
1296
|
+
IntConLevel=ICL_DEF);
|
|
1297
|
+
/** \brief Post propagator for \f$\left(\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_r y\right)\Leftrightarrow b\f$
|
|
1298
|
+
*
|
|
1299
|
+
* Throws an exception of type Int::ArgumentSizeMismatch, if
|
|
1300
|
+
* \a a and \a x are of different size.
|
|
1301
|
+
*/
|
|
1302
|
+
GECODE_INT_EXPORT void
|
|
1303
|
+
linear(Space* home, const IntArgs& a, const IntVarArgs& x,
|
|
1304
|
+
IntRelType r, IntVar y, BoolVar b,
|
|
1305
|
+
IntConLevel=ICL_DEF);
|
|
1306
|
+
|
|
1307
|
+
/// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i\sim_r c\f$
|
|
1308
|
+
GECODE_INT_EXPORT void
|
|
1309
|
+
linear(Space* home, const BoolVarArgs& x,
|
|
1310
|
+
IntRelType r, int c,
|
|
1311
|
+
IntConLevel=ICL_DEF);
|
|
1312
|
+
|
|
1313
|
+
/// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i\sim_r y\f$
|
|
1314
|
+
GECODE_INT_EXPORT void
|
|
1315
|
+
linear(Space* home, const BoolVarArgs& x,
|
|
1316
|
+
IntRelType r, IntVar y,
|
|
1317
|
+
IntConLevel=ICL_DEF);
|
|
1318
|
+
|
|
1319
|
+
//@}
|
|
1320
|
+
|
|
1321
|
+
|
|
1322
|
+
/**
|
|
1323
|
+
* \defgroup TaskIntIntBranch Branching
|
|
1324
|
+
* \ingroup TaskIntInt
|
|
1325
|
+
*/
|
|
1326
|
+
|
|
1327
|
+
//@{
|
|
1328
|
+
/// Which variable to select for branching
|
|
1329
|
+
enum BvarSel {
|
|
1330
|
+
BVAR_NONE, ///< First unassigned
|
|
1331
|
+
BVAR_MIN_MIN, ///< With smallest min
|
|
1332
|
+
BVAR_MIN_MAX, ///< With largest min
|
|
1333
|
+
BVAR_MAX_MIN, ///< With smallest max
|
|
1334
|
+
BVAR_MAX_MAX, ///< With largest max
|
|
1335
|
+
BVAR_SIZE_MIN, ///< With smallest domain size
|
|
1336
|
+
BVAR_SIZE_MAX, ///< With largest domain size
|
|
1337
|
+
/** \brief With smallest degree
|
|
1338
|
+
*
|
|
1339
|
+
* The degree of a variable is defined as the number of dependant
|
|
1340
|
+
* propagators. In case of ties, choose the variable with smallest
|
|
1341
|
+
* domain.
|
|
1342
|
+
*/
|
|
1343
|
+
BVAR_DEGREE_MIN,
|
|
1344
|
+
/** \brief With largest degree
|
|
1345
|
+
*
|
|
1346
|
+
* The degree of a variable is defined as the number of dependant
|
|
1347
|
+
* propagators. In case of ties, choose the variable with smallest
|
|
1348
|
+
* domain.
|
|
1349
|
+
*/
|
|
1350
|
+
BVAR_DEGREE_MAX,
|
|
1351
|
+
/** \brief With smallest min-regret
|
|
1352
|
+
*
|
|
1353
|
+
* The min-regret of a variable is the difference between the
|
|
1354
|
+
* smallest and second-smallest value still in the domain.
|
|
1355
|
+
*/
|
|
1356
|
+
BVAR_REGRET_MIN_MIN,
|
|
1357
|
+
/** \brief With largest min-regret
|
|
1358
|
+
*
|
|
1359
|
+
* The min-regret of a variable is the difference between the
|
|
1360
|
+
* smallest and second-smallest value still in the domain.
|
|
1361
|
+
*/
|
|
1362
|
+
BVAR_REGRET_MIN_MAX,
|
|
1363
|
+
/** \brief With smallest max-regret
|
|
1364
|
+
*
|
|
1365
|
+
* The max-regret of a variable is the difference between the
|
|
1366
|
+
* largest and second-largest value still in the domain.
|
|
1367
|
+
*/
|
|
1368
|
+
BVAR_REGRET_MAX_MIN,
|
|
1369
|
+
/** \brief With largest max-regret
|
|
1370
|
+
*
|
|
1371
|
+
* The max-regret of a variable is the difference between the
|
|
1372
|
+
* largest and second-largest value still in the domain.
|
|
1373
|
+
*/
|
|
1374
|
+
BVAR_REGRET_MAX_MAX
|
|
1375
|
+
};
|
|
1376
|
+
|
|
1377
|
+
/// Which values to select first for branching
|
|
1378
|
+
enum BvalSel {
|
|
1379
|
+
BVAL_MIN, ///< Select smallest value
|
|
1380
|
+
BVAL_MED, ///< Select median value
|
|
1381
|
+
BVAL_MAX, ///< Select maximal value
|
|
1382
|
+
BVAL_SPLIT_MIN, ///< Select lower half of domain
|
|
1383
|
+
BVAL_SPLIT_MAX ///< Select upper half of domain
|
|
1384
|
+
};
|
|
1385
|
+
|
|
1386
|
+
/// Branch over all \a x with variable selection \a vars and value selection \a vals
|
|
1387
|
+
GECODE_INT_EXPORT void
|
|
1388
|
+
branch(Space* home, const IntVarArgs& x, BvarSel vars, BvalSel vals);
|
|
1389
|
+
//@}
|
|
1390
|
+
|
|
1391
|
+
/**
|
|
1392
|
+
* \defgroup TaskIntIntAssign Assigning
|
|
1393
|
+
* \ingroup TaskIntInt
|
|
1394
|
+
*/
|
|
1395
|
+
//@{
|
|
1396
|
+
/// Which value to select for assignment
|
|
1397
|
+
enum AvalSel {
|
|
1398
|
+
AVAL_MIN, ///< Select smallest value
|
|
1399
|
+
AVAL_MED, ///< Select median value
|
|
1400
|
+
AVAL_MAX ///< Select maximum value
|
|
1401
|
+
};
|
|
1402
|
+
|
|
1403
|
+
/// Assign all \a x with value selection \a vals
|
|
1404
|
+
GECODE_INT_EXPORT void
|
|
1405
|
+
assign(Space* home, const IntVarArgs& x, AvalSel vals);
|
|
1406
|
+
|
|
1407
|
+
//@}
|
|
1408
|
+
|
|
1409
|
+
}
|
|
1410
|
+
|
|
1411
|
+
/** \relates Gecode::REG
|
|
1412
|
+
* Print regular expression \a r
|
|
1413
|
+
*/
|
|
1414
|
+
GECODE_INT_EXPORT std::ostream&
|
|
1415
|
+
operator<<(std::ostream&, const Gecode::REG& r);
|
|
1416
|
+
|
|
1417
|
+
/** \relates Gecode::DFA
|
|
1418
|
+
* Print DFA \a d
|
|
1419
|
+
*/
|
|
1420
|
+
GECODE_INT_EXPORT std::ostream&
|
|
1421
|
+
operator<<(std::ostream&, const Gecode::DFA& d);
|
|
1422
|
+
|
|
1423
|
+
#endif
|
|
1424
|
+
|
|
1425
|
+
// STATISTICS: int-post
|
|
1426
|
+
|