dep-selector-libgecode 1.0.0.alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +26 -0
- data/Gemfile +3 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +20 -0
- data/dep-selector-libgecode.gemspec +25 -0
- data/ext/libgecode3/Makefile +8 -0
- data/ext/libgecode3/extconf.rb +57 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/LICENSE +25 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/Makefile.contribs +88 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/Makefile.dep +11307 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/Makefile.in +1795 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/changelog.in +6132 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/configure +13054 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/configure.ac +356 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/configure.ac.in +352 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/README +26 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/AbstractWorker.hh +42 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Doxyfile +263 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Makefile.in.in +162 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/OptVar.cc +82 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/OptVar.hh +124 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCOPPlus.cc +306 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCOPPlus.hh +166 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCSPPlusUnblockable.cc +239 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCSPPlusUnblockable.hh +140 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/README +6 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Strategy.cc +253 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Strategy.hh +112 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/StrategyNode.cc +59 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/StrategyNode.hh +49 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/UnblockableBranching.hh +34 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/UnblockableViewValBranching.cc +61 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/UnblockableViewValBranching.hh +45 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Work.cc +48 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Work.hh +64 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/WorkComparators.hh +67 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/WorkManager.cc +376 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/WorkManager.hh +96 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Worker.cc +285 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Worker.hh +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/clean +5 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/configure +2637 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/configure.ac +44 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/myDom.cc +59 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/myspace.cc +119 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/myspace.hh +79 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qecode.hh +56 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_parallel.cc +41 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_parallel.hh +43 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcop.cc +268 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcop.hh +56 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcsp.cc +163 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcsp.hh +63 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_unblockable.cc +423 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_unblockable.hh +84 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/shortdesc.ac +1 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/vartype.hh +31 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/doxygen/doxygen.conf.in +1245 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/doxygen/doxygen.hh.in +594 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/all-interval.cpp +136 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/alpha.cpp +151 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/bacp.cpp +596 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/bibd.cpp +182 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/bin-packing.cpp +25363 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/black-hole.cpp +413 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/car-sequencing.cpp +653 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/crew.cpp +269 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/crossword.cpp +3954 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/crowded-chess.cpp +424 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/dominating-queens.cpp +170 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/domino.cpp +346 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/donald.cpp +135 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/efpa.cpp +323 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/eq20.cpp +128 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/golf.cpp +190 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/golomb-ruler.cpp +157 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/graph-color.cpp +425 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/grocery.cpp +116 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/hamming.cpp +144 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/ind-set.cpp +144 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/kakuro.cpp +627 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/knights.cpp +430 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/langford-number.cpp +218 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/magic-sequence.cpp +133 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/magic-square.cpp +141 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/minesweeper.cpp +311 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/money.cpp +132 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/nonogram.cpp +1215 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/open-shop.cpp +412 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/ortho-latin.cpp +183 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/partition.cpp +145 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/pentominoes.cpp +952 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/perfect-square.cpp +317 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/photo.cpp +166 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/queen-armies.cpp +335 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/queens.cpp +214 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/radiotherapy.cpp +943 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/sat.cpp +260 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/schurs-lemma.cpp +142 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/scowl.hpp +14149 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/sports-league.cpp +353 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/steel-mill.cpp +654 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/steiner.cpp +170 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/sudoku.cpp +2294 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/tsp.cpp +339 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/warehouses.cpp +185 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/word-square.cpp +168 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode.m4 +1272 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver.hh +602 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/options.cpp +435 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/options.hpp +418 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/script.cpp +104 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/script.hpp +388 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc.hh +417 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/CHANGES +63 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/ast.hh +492 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/conexpr.hh +82 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/myplugin.cpp +49 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/myplugin.hh +47 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/myplugin.pro +51 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/test_myplugin.fzn +1 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/flatzinc.cpp +1056 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/lexer.lxx +137 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/lexer.yy.cpp +2458 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/all_different_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/all_equal_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/among.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_least_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_least_set.mzn +38 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_most_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_most_set.mzn +38 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/bin_packing.mzn +44 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/bin_packing_capa.mzn +45 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/bin_packing_load.mzn +45 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/circuit.mzn +40 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/count.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/cumulative.mzn +53 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/decreasing_bool.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/decreasing_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/diffn.mzn +44 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/disjoint.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/distribute.mzn +46 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/exactly_int.mzn +40 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/exactly_set.mzn +38 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/gecode.mzn +98 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality.mzn +43 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality_closed.mzn +39 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality_low_up.mzn +40 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality_low_up_closed.mzn +40 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/increasing_bool.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/increasing_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/int_set_channel.mzn +49 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/inverse.mzn +42 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/lex_less_int.mzn +42 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/lex_lesseq_int.mzn +42 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/link_set_to_booleans.mzn +47 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/maximum_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/member_bool.mzn +41 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/member_int.mzn +41 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/minimum_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/nvalue.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/partition_set.mzn +42 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/precedence.mzn +41 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/range.mzn +51 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/redefinitions.mzn +62 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/regular.mzn +38 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/roots.mzn +63 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/sort.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/sum_pred.mzn +42 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/table_bool.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/table_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/option.hh +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.hh +265 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.tab.cpp +3571 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.tab.hh +164 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.yxx +1604 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/plugin.hh +83 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/registry.cpp +1812 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/registry.hh +71 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/symboltable.hh +96 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/varspec.hh +163 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist.hh +298 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/drawingcursor.cpp +288 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/drawingcursor.hh +110 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/drawingcursor.hpp +84 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gecodelogo.cpp +673 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gecodelogo.hh +65 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gist.cpp +120 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gist.hpp +207 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/layoutcursor.hh +69 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/layoutcursor.hpp +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/mainwindow.cpp +341 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/mainwindow.hh +129 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/node.cpp +82 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/node.hh +160 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/node.hpp +210 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodecursor.hh +215 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodecursor.hpp +271 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodestats.cpp +138 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodestats.hh +81 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodevisitor.hh +96 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodevisitor.hpp +126 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodewidget.cpp +90 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodewidget.hh +59 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/preferences.cpp +190 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/preferences.hh +96 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/qtgist.cpp +809 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/qtgist.hh +294 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/spacenode.cpp +369 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/spacenode.hh +221 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/spacenode.hpp +191 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/standalone-example/mygist.cpp +80 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/standalone-example/standalone_example.pro +18 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/stopbrancher.cpp +90 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/stopbrancher.hh +82 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/textoutput.cpp +175 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/textoutput.hh +75 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/treecanvas.cpp +1430 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/treecanvas.hh +369 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/visualnode.cpp +473 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/visualnode.hh +237 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/visualnode.hpp +220 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/zoomToFitIcon.hpp +114 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int.hh +3477 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic.cpp +185 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic.hh +666 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/abs.hpp +236 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/divmod.hpp +350 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/max.hpp +398 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/mult.hpp +750 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/sqr.hpp +377 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/sqrt.hpp +217 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/array-traits.hpp +147 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/array.cpp +113 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/array.hpp +111 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing.cpp +71 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing.hh +184 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing/propagate.cpp +388 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing/propagate.hpp +219 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool.cpp +755 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool.hh +581 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/base.hpp +137 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/clause.hpp +353 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/eq.hpp +196 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/eqv.cpp +104 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/eqv.hpp +202 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/lq.hpp +241 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/or.hpp +850 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch.cpp +152 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch.hh +607 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-val-bool.hpp +81 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-val-int.hpp +107 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-bool.bs +121 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-bool.cpp +438 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-int.bs +121 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-int.cpp +438 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/select-val.hpp +229 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/select-values.hpp +213 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/select-view.hpp +364 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel.cpp +172 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel.hh +249 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/base.hpp +78 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/dom.hpp +332 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-multi.cpp +241 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-multi.hpp +84 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-single.cpp +77 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-single.hpp +71 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/val.hpp +256 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit.cpp +229 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit.hh +160 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit/base.hpp +270 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit/dom.hpp +128 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit/val.hpp +105 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count.cpp +417 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count.hh +410 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-base.hpp +80 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-eq.hpp +143 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-gq.hpp +137 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-lq.hpp +136 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/rel.hpp +281 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-base.hpp +131 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-eq.hpp +117 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-gq.hpp +109 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-lq.hpp +96 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative.cpp +432 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative.hh +745 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/basic.hpp +211 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/edge-finding.hpp +185 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/man-prop.hpp +127 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/opt-prop.hpp +171 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/overload.hpp +63 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/task-view.hpp +84 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/task.hpp +256 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/tree.hpp +272 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulatives.cpp +187 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulatives.hh +133 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulatives/val.hpp +380 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct.cpp +97 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct.hh +314 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/bnd.hpp +444 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/dom-ctrl.hpp +81 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/dom.hpp +123 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/graph.hpp +266 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/ter-dom.hpp +113 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/val.hpp +185 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom.cpp +135 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom.hh +118 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom/range.hpp +105 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom/spec.hpp +124 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element.cpp +190 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element.hh +384 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/int.hpp +443 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/pair.cpp +151 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/pair.hpp +74 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/view.hpp +559 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exception.hpp +196 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec.cpp +83 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec.hh +87 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec/when.cpp +77 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec/when.hpp +51 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional.cpp +124 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional.hh +508 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/base.hpp +163 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/basic.hpp +148 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/dfa.cpp +535 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/dfa.hpp +282 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/incremental.hpp +454 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/layered-graph.hpp +982 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/tuple-set.cpp +222 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/tuple-set.hpp +184 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc.cpp +172 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc.hh +268 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/bnd-sup.hpp +608 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/bnd.hpp +829 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/dom-sup.hpp +1777 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/dom.hpp +315 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/post.hpp +169 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/val.hpp +299 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/view.hpp +410 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/int-set-1.hpp +249 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/int-set-2.hpp +51 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/int-set.cpp +167 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/limits.hpp +94 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear-bool.cpp +196 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear-int.cpp +194 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear.hh +1560 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-int.hpp +743 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-post.cpp +602 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-scale.hpp +695 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-view.hpp +319 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-bin.hpp +439 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-dom.hpp +484 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-nary.hpp +864 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-noview.hpp +251 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-post.cpp +561 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-ter.hpp +273 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/post.hpp +152 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member.cpp +85 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member.hh +125 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member/prop.hpp +175 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member/re-prop.hpp +178 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap.cpp +226 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap.hh +318 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/base.hpp +88 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/box.hpp +198 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/dim.hpp +197 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/man.hpp +119 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/opt.hpp +153 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues.cpp +244 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues.hh +429 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-base.hpp +98 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-eq.hpp +174 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-gq.hpp +149 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-lq.hpp +151 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/graph.hpp +283 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-base.hpp +347 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-eq.hpp +167 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-gq.hpp +130 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-lq.hpp +154 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/range-event.hpp +51 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/sym-bit-matrix.hpp +69 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/precede.cpp +73 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/precede.hh +113 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/precede/single.hpp +232 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/propagator.hpp +311 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel.cpp +381 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel.hh +665 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/eq.hpp +676 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/lex.hpp +414 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/lq-le.hpp +537 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/nq.hpp +196 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence.cpp +197 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence.hh +154 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/int.hpp +168 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/set-op.hpp +154 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/view.hpp +499 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/violations.hpp +101 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted.cpp +82 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted.hh +107 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/matching.hpp +173 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/narrowing.hpp +250 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/order.hpp +213 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/propagate.hpp +646 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/sortsup.hpp +564 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/support-values.hh +154 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/support-values.hpp +187 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task.hh +454 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/array.hpp +179 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/fwd-to-bwd.hpp +102 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/iter.hpp +92 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/man-to-opt.hpp +100 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/prop.hpp +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/purge.hpp +74 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/sort.hpp +234 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/tree.hpp +189 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary.cpp +258 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary.hh +839 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/detectable.hpp +116 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/edge-finding.hpp +78 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/man-prop.hpp +78 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/not-first-not-last.hpp +133 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/opt-prop.hpp +116 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/overload.hpp +93 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/subsumption.hpp +55 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/task-view.hpp +105 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/task.hpp +532 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/tree.hpp +229 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unshare.cpp +146 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/val-set.hh +118 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/val-set.hpp +186 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp.hpp +710 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/bool.cpp +65 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/bool.hpp +431 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/bool.vis +75 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/delta.hpp +64 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/int.cpp +361 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/int.hpp +1029 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/int.vis +117 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/bool.cpp +53 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/bool.hpp +121 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/int.cpp +61 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/int.hpp +145 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/print.hpp +56 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph.hh +334 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/bi-link.hpp +89 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/comb-ptr-flag.hpp +78 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/edge.hpp +124 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/graph.hpp +202 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/iter-prune-val.hpp +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/node.hpp +171 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view.hpp +1690 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/bool-test.hpp +64 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/bool.hpp +314 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/cached.hpp +402 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/constint.hpp +324 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/int.hpp +264 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/iter.hpp +65 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/minus.hpp +300 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/neg-bool.hpp +177 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/offset.hpp +303 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/print.hpp +162 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/rel-test.hpp +231 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/scale.hpp +368 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/zero.hpp +305 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter.hh +96 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-add.hpp +144 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-append.hpp +222 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-array.hpp +139 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-cache.hpp +106 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-compl.hpp +220 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-diff.hpp +142 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-empty.hpp +111 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-inter.hpp +309 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-list.hpp +263 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-map.hpp +260 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-minmax.hpp +118 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-minus.hpp +107 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-negative.hpp +137 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-offset.hpp +127 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-operations.hpp +157 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-positive.hpp +139 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-rangelist.hpp +115 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-scale.hpp +238 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-singleton-append.hpp +111 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-singleton.hpp +86 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-size.hpp +146 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-union.hpp +361 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-values.hpp +140 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-array.hpp +120 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-bitset.hpp +114 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-inter.hpp +130 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-list.hpp +186 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-map.hpp +136 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-minus.hpp +105 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-negative.hpp +116 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-offset.hpp +113 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-positive.hpp +123 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-ranges.hpp +106 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-singleton.hpp +109 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-union.hpp +137 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-unique.hpp +118 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel.hh +194 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/advisor.hpp +102 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/allocators.hpp +476 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/archive.cpp +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/archive.hpp +298 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/array.hpp +2133 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/branch.cpp +121 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/branch.hpp +254 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher-tiebreak.hpp +615 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher-val.hpp +126 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher-view.hpp +455 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher.hpp +431 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/core.cpp +563 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/core.hpp +3668 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/exception.hpp +124 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/global-prop-info.hpp +258 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/macros.hpp +118 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/memory-config.hpp +154 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/memory-manager.cpp +53 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/memory-manager.hpp +511 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/modevent.hpp +69 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/propagator.hpp +699 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/range-list.hpp +184 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/region.cpp +85 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/region.hpp +459 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/shared-array.hpp +345 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/var-imp.hpp +332 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/var-type.hpp +767 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/var.hpp +144 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/view.hpp +715 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/wait.hh +244 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel.hh +1870 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/arithmetic.cpp +408 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/bool-expr.cpp +522 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/bool-expr.hpp +87 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/exception.hpp +84 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-expr.cpp +594 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-expr.hpp +297 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-rel.cpp +414 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-rel.hpp +85 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/matrix.hpp +247 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/optimize.hpp +62 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/reg.cpp +817 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/reg.hpp +94 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-expr.cpp +704 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-expr.hpp +96 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-rel.cpp +81 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-rel.hpp +84 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search.hh +458 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/bab.cpp +62 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/bab.hpp +91 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/dfs.cpp +62 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/dfs.hpp +84 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/options.cpp +72 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/options.hpp +49 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/bab.cpp +178 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/bab.hh +203 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/dfs.cpp +176 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/dfs.hh +195 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/engine.cpp +118 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/engine.hh +418 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/path.hh +477 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/restart.cpp +167 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/restart.hh +73 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/restart.cpp +62 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/restart.hpp +88 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/bab.hh +177 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/dfs.hh +176 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/path.hh +411 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/restart.hh +89 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/statistics.hpp +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/stop.cpp +83 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/stop.hpp +137 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/support.hh +91 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/worker.hh +202 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set.hh +1144 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/array-traits.hpp +86 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/array.cpp +219 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/array.hpp +64 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch.cpp +128 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch.hh +438 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/post-val.hpp +107 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/post-view.bs +109 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/post-view.cpp +370 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/select-val.hpp +204 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/select-view.hpp +306 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/cardinality.cpp +65 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex.cpp +60 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex.hh +107 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/conv.cpp +97 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/conv.hpp +67 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/hull.cpp +116 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/hull.hpp +68 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct.cpp +56 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct.hh +79 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct/atmostOne.cpp +162 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct/atmostOne.hpp +66 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/dom.cpp +300 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element.cpp +255 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element.hh +218 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/disjoint.hpp +324 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/inter.hpp +308 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/union.hpp +342 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/unionConst.hpp +293 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/exception.hpp +146 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/exec.cpp +58 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int.cpp +191 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int.hh +459 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/card.hpp +93 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/channel-bool.hpp +282 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/channel-int.hpp +158 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/match.hpp +199 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/minmax.hpp +645 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/weights.hpp +353 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/limits.hpp +62 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/precede.cpp +74 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/precede.hh +115 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/precede/single.hpp +255 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-cvc.cpp +66 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-cvv.cpp +65 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-vcc.cpp +168 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-vcv.cpp +166 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-vvc.cpp +63 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-singleton.cpp +115 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-ternary.cpp +60 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op.cpp +105 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op.hh +297 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/common.hpp +619 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/inter.hpp +389 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/partition.hpp +164 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl-cvc.cpp +58 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl-cvv.cpp +54 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl-vvc.cpp +57 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl.cpp +54 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl-cvc.cpp +55 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl-cvv.cpp +54 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl-vvc.cpp +54 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl.cpp +54 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post.hpp +266 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/subofunion.hpp +166 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/superofinter.hpp +167 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/union.hpp +319 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel.cpp +232 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel.hh +322 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/common.hpp +125 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/eq.hpp +116 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/lq.hpp +417 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/nosubset.hpp +104 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/nq.hpp +160 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/re-eq.hpp +152 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/re-lq.hpp +182 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/re-subset.hpp +146 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/subset.hpp +96 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence.cpp +64 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence.hh +115 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/common.hpp +100 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq-u.cpp +145 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq-u.hpp +79 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq.cpp +76 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq.hpp +69 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp.hpp +634 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/delta.hpp +78 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/integerset.cpp +348 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/integerset.hpp +426 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/iter.hpp +63 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/set.cpp +142 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/set.hpp +531 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/set.vis +197 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var/print.hpp +49 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var/set.cpp +111 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var/set.hpp +254 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view.hpp +1142 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/cached.hpp +399 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/complement.hpp +556 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/const.hpp +723 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/print.hpp +140 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/set.hpp +263 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/singleton.hpp +402 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support.hh +135 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/auto-link.hpp +73 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/bitset-base.hpp +379 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/bitset.hpp +81 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/block-allocator.hpp +169 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/cast.hpp +52 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/config.hpp.in +109 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/dynamic-array.hpp +140 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/dynamic-queue.hpp +156 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/dynamic-stack.hpp +186 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/exception.cpp +65 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/exception.hpp +102 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/heap.cpp +49 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/heap.hpp +593 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/int-type.hpp +172 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/macros.hpp +103 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/marked-pointer.hpp +79 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/random.hpp +128 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/sort.hpp +268 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/static-stack.hpp +148 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread.hpp +272 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/none.hpp +87 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/pthreads.cpp +66 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/pthreads.hpp +142 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/thread.cpp +72 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/thread.hpp +114 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/windows.cpp +68 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/windows.hpp +108 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/timer.hpp +103 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/install-sh +323 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/allexamples.perl +60 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/back.png +0 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/footer.html +3 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/gecode-logo-100.png +0 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/header.html +66 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/stylesheet.css +468 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/fixautoheader.perl +55 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/fixmanifest.perl +84 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/fixproperties.sh +98 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/gecode-logo.ico +0 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/genbranch.perl +310 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/genchangelog.perl +249 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/gencurrentchangelog.perl +191 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/genlcovmakefile.perl +148 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/genlicense.perl +121 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/genrc.perl +236 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/genstatistics.perl +178 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/gentxtchangelog.perl +198 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/genvarimp.perl +877 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/genxcodeproj.perl +144 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/getrevision.perl +47 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/makedepend.perl +85 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/svn-ignore-root.txt +43 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/svn-ignore.txt +18 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/afc.cpp +143 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/array.cpp +277 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/assign.cpp +278 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/assign.hh +119 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/assign/bool.cpp +61 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/assign/int.cpp +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/assign/set.cpp +72 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/branch.cpp +504 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/branch.hh +119 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/branch/bool.cpp +61 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/branch/int.cpp +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/branch/set.cpp +72 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int.cpp +655 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int.hh +353 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int.hpp +314 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/arithmetic.cpp +772 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/basic.cpp +82 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/bin-packing.cpp +237 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/bool.cpp +500 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/channel.cpp +234 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/circuit.cpp +359 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/count.cpp +410 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/cumulative.cpp +560 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/cumulatives.cpp +276 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/distinct.cpp +248 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/dom.cpp +174 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/element.cpp +602 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/exec.cpp +150 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/extensional.cpp +571 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/gcc.cpp +320 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/linear.cpp +394 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/member.cpp +138 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-arithmetic.cpp +368 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-bool.cpp +4344 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-count.cpp +295 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-lin.cpp +2179 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-rel.cpp +136 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/no-overlap.cpp +259 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/nvalues.cpp +241 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/precede.cpp +115 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/rel.cpp +568 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/sequence.cpp +168 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/sorted.cpp +165 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/unary.cpp +327 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/unshare.cpp +109 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/search.cpp +487 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set.cpp +638 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set.hh +362 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set.hpp +121 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/construct.cpp +225 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/convex.cpp +139 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/distinct.cpp +116 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/dom.cpp +346 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/element.cpp +397 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/exec.cpp +86 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/int.cpp +532 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/mm-set.cpp +4532 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/precede.cpp +136 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/rel-op-const.cpp +368 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/rel-op.cpp +504 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/rel.cpp +157 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/sequence.cpp +133 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/test.cpp +281 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/test.hh +161 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/test.hpp +76 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/tools/flatzinc/fz.cpp +93 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/tools/flatzinc/mzn-gecode.bat.in +41 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/tools/flatzinc/mzn-gecode.in +41 -0
- data/lib/dep-selector-libgecode.rb +15 -0
- data/lib/dep-selector-libgecode/version.rb +3 -0
- metadata +878 -0
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Main authors:
|
|
4
|
+
* Christian Schulte <schulte@gecode.org>
|
|
5
|
+
*
|
|
6
|
+
* Copyright:
|
|
7
|
+
* Christian Schulte, 2006
|
|
8
|
+
*
|
|
9
|
+
* Last modified:
|
|
10
|
+
* $Date: 2011-06-20 19:16:03 +1000 (Mon, 20 Jun 2011) $ by $Author: schulte $
|
|
11
|
+
* $Revision: 12058 $
|
|
12
|
+
*
|
|
13
|
+
* This file is part of Gecode, the generic constraint
|
|
14
|
+
* development environment:
|
|
15
|
+
* http://www.gecode.org
|
|
16
|
+
*
|
|
17
|
+
* Permission is hereby granted, free of charge, to any person obtaining
|
|
18
|
+
* a copy of this software and associated documentation files (the
|
|
19
|
+
* "Software"), to deal in the Software without restriction, including
|
|
20
|
+
* without limitation the rights to use, copy, modify, merge, publish,
|
|
21
|
+
* distribute, sublicense, and/or sell copies of the Software, and to
|
|
22
|
+
* permit persons to whom the Software is furnished to do so, subject to
|
|
23
|
+
* the following conditions:
|
|
24
|
+
*
|
|
25
|
+
* The above copyright notice and this permission notice shall be
|
|
26
|
+
* included in all copies or substantial portions of the Software.
|
|
27
|
+
*
|
|
28
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
29
|
+
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
30
|
+
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
31
|
+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
32
|
+
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
33
|
+
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
34
|
+
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
35
|
+
*
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
namespace Gecode { namespace Int { namespace Bool {
|
|
39
|
+
|
|
40
|
+
/*
|
|
41
|
+
* Less or equal propagator
|
|
42
|
+
*
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
template<class BV>
|
|
46
|
+
forceinline
|
|
47
|
+
Lq<BV>::Lq(Home home, BV b0, BV b1)
|
|
48
|
+
: BoolBinary<BV,BV>(home,b0,b1) {}
|
|
49
|
+
|
|
50
|
+
template<class BV>
|
|
51
|
+
forceinline
|
|
52
|
+
Lq<BV>::Lq(Space& home, bool share, Lq<BV>& p)
|
|
53
|
+
: BoolBinary<BV,BV>(home,share,p) {}
|
|
54
|
+
|
|
55
|
+
template<class BV>
|
|
56
|
+
Actor*
|
|
57
|
+
Lq<BV>::copy(Space& home, bool share) {
|
|
58
|
+
return new (home) Lq<BV>(home,share,*this);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
template<class BV>
|
|
62
|
+
inline ExecStatus
|
|
63
|
+
Lq<BV>::post(Home home, BV b0, BV b1) {
|
|
64
|
+
if (b0.zero()) {
|
|
65
|
+
return ES_OK;
|
|
66
|
+
} else if (b0.one()) {
|
|
67
|
+
GECODE_ME_CHECK(b1.one(home));
|
|
68
|
+
} else if (b1.zero()) {
|
|
69
|
+
GECODE_ME_CHECK(b0.zero(home));
|
|
70
|
+
} else if (b1.one()) {
|
|
71
|
+
return ES_OK;
|
|
72
|
+
} else {
|
|
73
|
+
(void) new (home) Lq<BV>(home,b0,b1);
|
|
74
|
+
}
|
|
75
|
+
return ES_OK;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
template<class BV>
|
|
79
|
+
ExecStatus
|
|
80
|
+
Lq<BV>::propagate(Space& home, const ModEventDelta&) {
|
|
81
|
+
#define GECODE_INT_STATUS(S0,S1) \
|
|
82
|
+
((BV::S0<<(1*BV::BITS))|(BV::S1<<(0*BV::BITS)))
|
|
83
|
+
switch ((x0.status()<<(1*BV::BITS)) | (x1.status()<<(0*BV::BITS))) {
|
|
84
|
+
case GECODE_INT_STATUS(NONE,NONE):
|
|
85
|
+
GECODE_NEVER;
|
|
86
|
+
case GECODE_INT_STATUS(NONE,ZERO):
|
|
87
|
+
GECODE_ME_CHECK(x0.zero_none(home)); break;
|
|
88
|
+
case GECODE_INT_STATUS(NONE,ONE):
|
|
89
|
+
case GECODE_INT_STATUS(ZERO,NONE):
|
|
90
|
+
case GECODE_INT_STATUS(ZERO,ZERO):
|
|
91
|
+
case GECODE_INT_STATUS(ZERO,ONE):
|
|
92
|
+
break;
|
|
93
|
+
case GECODE_INT_STATUS(ONE,NONE):
|
|
94
|
+
GECODE_ME_CHECK(x1.one_none(home)); break;
|
|
95
|
+
case GECODE_INT_STATUS(ONE,ZERO):
|
|
96
|
+
return ES_FAILED;
|
|
97
|
+
case GECODE_INT_STATUS(ONE,ONE):
|
|
98
|
+
break;
|
|
99
|
+
default:
|
|
100
|
+
GECODE_NEVER;
|
|
101
|
+
}
|
|
102
|
+
return home.ES_SUBSUMED(*this);
|
|
103
|
+
#undef GECODE_INT_STATUS
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
/*
|
|
108
|
+
* N-ary Boolean less or equal propagator
|
|
109
|
+
*
|
|
110
|
+
*/
|
|
111
|
+
|
|
112
|
+
template<class VX>
|
|
113
|
+
forceinline
|
|
114
|
+
NaryLq<VX>::NaryLq(Home home, ViewArray<VX>& x)
|
|
115
|
+
: NaryPropagator<VX,PC_BOOL_NONE>(home,x),
|
|
116
|
+
run(false), n_zero(0), n_one(0), c(home) {
|
|
117
|
+
x.subscribe(home,*new (home) Advisor(home,*this,c));
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
template<class VX>
|
|
121
|
+
forceinline
|
|
122
|
+
NaryLq<VX>::NaryLq(Space& home, bool share, NaryLq<VX>& p)
|
|
123
|
+
: NaryPropagator<VX,PC_BOOL_NONE>(home,share,p),
|
|
124
|
+
run(false), n_zero(0), n_one(0) {
|
|
125
|
+
c.update(home,share,p.c);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
template<class VX>
|
|
129
|
+
Actor*
|
|
130
|
+
NaryLq<VX>::copy(Space& home, bool share) {
|
|
131
|
+
return new (home) NaryLq<VX>(home,share,*this);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
template<class VX>
|
|
135
|
+
inline ExecStatus
|
|
136
|
+
NaryLq<VX>::post(Home home, ViewArray<VX>& x) {
|
|
137
|
+
int i = 0;
|
|
138
|
+
while (i < x.size())
|
|
139
|
+
if (x[i].zero()) {
|
|
140
|
+
// All x[j] left of i must be zero as well
|
|
141
|
+
for (int j=i; j--; )
|
|
142
|
+
GECODE_ME_CHECK(x[j].zero_none(home));
|
|
143
|
+
x.drop_fst(i+1); i=0;
|
|
144
|
+
} else if (x[i].one()) {
|
|
145
|
+
// All x[j] right of i must be one as well
|
|
146
|
+
for (int j=i+1; j<x.size(); j++)
|
|
147
|
+
GECODE_ME_CHECK(x[j].one(home));
|
|
148
|
+
x.drop_lst(i-1); break;
|
|
149
|
+
} else {
|
|
150
|
+
i++;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
if (x.size() == 2)
|
|
154
|
+
return Lq<VX>::post(home,x[0],x[1]);
|
|
155
|
+
if (x.size() > 2)
|
|
156
|
+
(void) new (home) NaryLq(home,x);
|
|
157
|
+
return ES_OK;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
template<class VX>
|
|
161
|
+
PropCost
|
|
162
|
+
NaryLq<VX>::cost(const Space&, const ModEventDelta&) const {
|
|
163
|
+
return PropCost::binary(PropCost::LO);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
template<class VX>
|
|
167
|
+
ExecStatus
|
|
168
|
+
NaryLq<VX>::advise(Space&, Advisor&, const Delta& d) {
|
|
169
|
+
if (VX::zero(d))
|
|
170
|
+
n_zero++;
|
|
171
|
+
else
|
|
172
|
+
n_one++;
|
|
173
|
+
return run ? ES_FIX : ES_NOFIX;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
template<class VX>
|
|
177
|
+
forceinline size_t
|
|
178
|
+
NaryLq<VX>::dispose(Space& home) {
|
|
179
|
+
Advisors<Advisor> as(c);
|
|
180
|
+
x.cancel(home,as.advisor());
|
|
181
|
+
c.dispose(home);
|
|
182
|
+
(void) NaryPropagator<VX,PC_BOOL_NONE>::dispose(home);
|
|
183
|
+
return sizeof(*this);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
template<class VX>
|
|
187
|
+
ExecStatus
|
|
188
|
+
NaryLq<VX>::propagate(Space& home, const ModEventDelta&) {
|
|
189
|
+
run = true;
|
|
190
|
+
while (n_zero > 0) {
|
|
191
|
+
int i = 0;
|
|
192
|
+
while (x[i].none())
|
|
193
|
+
i++;
|
|
194
|
+
if (x[i].one())
|
|
195
|
+
return ES_FAILED;
|
|
196
|
+
// As the x[j] might be shared, only zero() but not zero_none()
|
|
197
|
+
for (int j=i; j--; )
|
|
198
|
+
GECODE_ME_CHECK(x[j].zero(home));
|
|
199
|
+
n_zero -= i + 1;
|
|
200
|
+
assert(n_zero >= 0);
|
|
201
|
+
x.drop_fst(i+1);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
while (n_one > 0) {
|
|
205
|
+
int i = x.size() - 1;
|
|
206
|
+
while (x[i].none())
|
|
207
|
+
i--;
|
|
208
|
+
assert(x[i].one());
|
|
209
|
+
// As the x[j] might be shared, only one() but not one_none()
|
|
210
|
+
for (int j=i+1; j<x.size(); j++)
|
|
211
|
+
GECODE_ME_CHECK(x[j].one(home));
|
|
212
|
+
n_one -= x.size() - i;
|
|
213
|
+
assert(n_one >= 0);
|
|
214
|
+
x.drop_lst(i-1);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
if (x.size() < 2)
|
|
218
|
+
return home.ES_SUBSUMED(*this);
|
|
219
|
+
|
|
220
|
+
run = false;
|
|
221
|
+
return ES_FIX;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
/*
|
|
226
|
+
* Less posting
|
|
227
|
+
*
|
|
228
|
+
*/
|
|
229
|
+
|
|
230
|
+
template<class BV>
|
|
231
|
+
forceinline ExecStatus
|
|
232
|
+
Le<BV>::post(Home home, BV b0, BV b1) {
|
|
233
|
+
GECODE_ME_CHECK(b0.zero(home));
|
|
234
|
+
GECODE_ME_CHECK(b1.one(home));
|
|
235
|
+
return ES_OK;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
}}}
|
|
239
|
+
|
|
240
|
+
// STATISTICS: int-prop
|
|
241
|
+
|
|
@@ -0,0 +1,850 @@
|
|
|
1
|
+
/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Main authors:
|
|
4
|
+
* Christian Schulte <schulte@gecode.org>
|
|
5
|
+
*
|
|
6
|
+
* Copyright:
|
|
7
|
+
* Christian Schulte, 2004
|
|
8
|
+
*
|
|
9
|
+
* Last modified:
|
|
10
|
+
* $Date: 2011-07-07 22:43:42 +1000 (Thu, 07 Jul 2011) $ by $Author: schulte $
|
|
11
|
+
* $Revision: 12161 $
|
|
12
|
+
*
|
|
13
|
+
* This file is part of Gecode, the generic constraint
|
|
14
|
+
* development environment:
|
|
15
|
+
* http://www.gecode.org
|
|
16
|
+
*
|
|
17
|
+
* Permission is hereby granted, free of charge, to any person obtaining
|
|
18
|
+
* a copy of this software and associated documentation files (the
|
|
19
|
+
* "Software"), to deal in the Software without restriction, including
|
|
20
|
+
* without limitation the rights to use, copy, modify, merge, publish,
|
|
21
|
+
* distribute, sublicense, and/or sell copies of the Software, and to
|
|
22
|
+
* permit persons to whom the Software is furnished to do so, subject to
|
|
23
|
+
* the following conditions:
|
|
24
|
+
*
|
|
25
|
+
* The above copyright notice and this permission notice shall be
|
|
26
|
+
* included in all copies or substantial portions of the Software.
|
|
27
|
+
*
|
|
28
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
29
|
+
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
30
|
+
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
31
|
+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
32
|
+
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
33
|
+
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
34
|
+
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
35
|
+
*
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
namespace Gecode { namespace Int { namespace Bool {
|
|
39
|
+
|
|
40
|
+
/// Binary Boolean disjunction propagator (subsumed)
|
|
41
|
+
template<class BV>
|
|
42
|
+
class OrTrueSubsumed : public BoolBinary<BV,BV> {
|
|
43
|
+
protected:
|
|
44
|
+
using BoolBinary<BV,BV>::x0;
|
|
45
|
+
using BoolBinary<BV,BV>::x1;
|
|
46
|
+
/// Constructor for cloning \a p
|
|
47
|
+
OrTrueSubsumed(Space& home, bool share, OrTrueSubsumed& p);
|
|
48
|
+
/// Post propagator
|
|
49
|
+
static ExecStatus post(Home home, BV b0, BV b1);
|
|
50
|
+
public:
|
|
51
|
+
/// Constructor
|
|
52
|
+
OrTrueSubsumed(Home home, BV b0, BV b1);
|
|
53
|
+
/// Constructor for rewriting \a p during cloning
|
|
54
|
+
OrTrueSubsumed(Space& home, bool share, Propagator& p,
|
|
55
|
+
BV b0, BV b1);
|
|
56
|
+
/// Copy propagator during cloning
|
|
57
|
+
virtual Actor* copy(Space& home, bool share);
|
|
58
|
+
/// Perform propagation
|
|
59
|
+
virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
template<class BV>
|
|
63
|
+
forceinline
|
|
64
|
+
OrTrueSubsumed<BV>::OrTrueSubsumed
|
|
65
|
+
(Home home, BV b0, BV b1)
|
|
66
|
+
: BoolBinary<BV,BV>(home,b0,b1) {}
|
|
67
|
+
|
|
68
|
+
template<class BV>
|
|
69
|
+
forceinline ExecStatus
|
|
70
|
+
OrTrueSubsumed<BV>::post(Home home, BV b0, BV b1) {
|
|
71
|
+
(void) new (home) OrTrueSubsumed(home,b0,b1);
|
|
72
|
+
return ES_OK;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
template<class BV>
|
|
76
|
+
forceinline
|
|
77
|
+
OrTrueSubsumed<BV>::OrTrueSubsumed
|
|
78
|
+
(Space& home, bool share, OrTrueSubsumed<BV>& p)
|
|
79
|
+
: BoolBinary<BV,BV>(home,share,p) {}
|
|
80
|
+
|
|
81
|
+
template<class BV>
|
|
82
|
+
forceinline
|
|
83
|
+
OrTrueSubsumed<BV>::OrTrueSubsumed(Space& home, bool share, Propagator& p,
|
|
84
|
+
BV b0, BV b1)
|
|
85
|
+
: BoolBinary<BV,BV>(home,share,p,b0,b1) {}
|
|
86
|
+
|
|
87
|
+
template<class BV>
|
|
88
|
+
Actor*
|
|
89
|
+
OrTrueSubsumed<BV>::copy(Space& home, bool share) {
|
|
90
|
+
return new (home) OrTrueSubsumed<BV>(home,share,*this);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
template<class BV>
|
|
94
|
+
ExecStatus
|
|
95
|
+
OrTrueSubsumed<BV>::propagate(Space& home, const ModEventDelta&) {
|
|
96
|
+
return home.ES_SUBSUMED(*this);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
/*
|
|
101
|
+
* Binary Boolean disjunction propagator (true)
|
|
102
|
+
*
|
|
103
|
+
*/
|
|
104
|
+
|
|
105
|
+
template<class BVA, class BVB>
|
|
106
|
+
forceinline
|
|
107
|
+
BinOrTrue<BVA,BVB>::BinOrTrue(Home home, BVA b0, BVB b1)
|
|
108
|
+
: BoolBinary<BVA,BVB>(home,b0,b1) {}
|
|
109
|
+
|
|
110
|
+
template<class BVA, class BVB>
|
|
111
|
+
forceinline
|
|
112
|
+
BinOrTrue<BVA,BVB>::BinOrTrue(Space& home, bool share, BinOrTrue<BVA,BVB>& p)
|
|
113
|
+
: BoolBinary<BVA,BVB>(home,share,p) {}
|
|
114
|
+
|
|
115
|
+
template<class BVA, class BVB>
|
|
116
|
+
forceinline
|
|
117
|
+
BinOrTrue<BVA,BVB>::BinOrTrue(Space& home, bool share, Propagator& p,
|
|
118
|
+
BVA b0, BVB b1)
|
|
119
|
+
: BoolBinary<BVA,BVB>(home,share,p,b0,b1) {}
|
|
120
|
+
|
|
121
|
+
template<class BVA, class BVB>
|
|
122
|
+
Actor*
|
|
123
|
+
BinOrTrue<BVA,BVB>::copy(Space& home, bool share) {
|
|
124
|
+
return new (home) BinOrTrue<BVA,BVB>(home,share,*this);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
template<class BVA, class BVB>
|
|
128
|
+
inline ExecStatus
|
|
129
|
+
BinOrTrue<BVA,BVB>::post(Home home, BVA b0, BVB b1) {
|
|
130
|
+
switch (bool_test(b0,b1)) {
|
|
131
|
+
case BT_SAME:
|
|
132
|
+
GECODE_ME_CHECK(b0.one(home));
|
|
133
|
+
break;
|
|
134
|
+
case BT_COMP:
|
|
135
|
+
break;
|
|
136
|
+
case BT_NONE:
|
|
137
|
+
if (b0.zero()) {
|
|
138
|
+
GECODE_ME_CHECK(b1.one(home));
|
|
139
|
+
} else if (b1.zero()) {
|
|
140
|
+
GECODE_ME_CHECK(b0.one(home));
|
|
141
|
+
} else if (!b0.one() && !b1.one()) {
|
|
142
|
+
(void) new (home) BinOrTrue<BVA,BVB>(home,b0,b1);
|
|
143
|
+
}
|
|
144
|
+
break;
|
|
145
|
+
default: GECODE_NEVER;
|
|
146
|
+
}
|
|
147
|
+
return ES_OK;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
template<class BVA, class BVB>
|
|
151
|
+
ExecStatus
|
|
152
|
+
BinOrTrue<BVA,BVB>::propagate(Space& home, const ModEventDelta&) {
|
|
153
|
+
#define GECODE_INT_STATUS(S0,S1) \
|
|
154
|
+
((BVA::S0<<(1*BVA::BITS))|(BVB::S1<<(0*BVB::BITS)))
|
|
155
|
+
switch ((x0.status() << (1*BVA::BITS)) | (x1.status() << (0*BVB::BITS))) {
|
|
156
|
+
case GECODE_INT_STATUS(NONE,NONE):
|
|
157
|
+
GECODE_NEVER;
|
|
158
|
+
case GECODE_INT_STATUS(NONE,ZERO):
|
|
159
|
+
GECODE_ME_CHECK(x0.one_none(home)); break;
|
|
160
|
+
case GECODE_INT_STATUS(NONE,ONE):
|
|
161
|
+
break;
|
|
162
|
+
case GECODE_INT_STATUS(ZERO,NONE):
|
|
163
|
+
GECODE_ME_CHECK(x1.one_none(home)); break;
|
|
164
|
+
case GECODE_INT_STATUS(ZERO,ZERO):
|
|
165
|
+
return ES_FAILED;
|
|
166
|
+
case GECODE_INT_STATUS(ZERO,ONE):
|
|
167
|
+
case GECODE_INT_STATUS(ONE,NONE):
|
|
168
|
+
case GECODE_INT_STATUS(ONE,ZERO):
|
|
169
|
+
case GECODE_INT_STATUS(ONE,ONE):
|
|
170
|
+
break;
|
|
171
|
+
default:
|
|
172
|
+
GECODE_NEVER;
|
|
173
|
+
}
|
|
174
|
+
return home.ES_SUBSUMED(*this);
|
|
175
|
+
#undef GECODE_INT_STATUS
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/*
|
|
179
|
+
* Boolean disjunction propagator (true)
|
|
180
|
+
*
|
|
181
|
+
*/
|
|
182
|
+
|
|
183
|
+
template<class BV>
|
|
184
|
+
forceinline
|
|
185
|
+
TerOrTrue<BV>::TerOrTrue(Home home, BV b0, BV b1, BV b2)
|
|
186
|
+
: BoolBinary<BV,BV>(home,b0,b1), x2(b2) {}
|
|
187
|
+
|
|
188
|
+
template<class BV>
|
|
189
|
+
forceinline size_t
|
|
190
|
+
TerOrTrue<BV>::dispose(Space& home) {
|
|
191
|
+
(void) BoolBinary<BV,BV>::dispose(home);
|
|
192
|
+
return sizeof(*this);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
template<class BV>
|
|
196
|
+
forceinline
|
|
197
|
+
TerOrTrue<BV>::TerOrTrue(Space& home, bool share, TerOrTrue<BV>& p)
|
|
198
|
+
: BoolBinary<BV,BV>(home,share,p) {
|
|
199
|
+
x2.update(home,share,p.x2);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
template<class BV>
|
|
203
|
+
forceinline
|
|
204
|
+
TerOrTrue<BV>::TerOrTrue(Space& home, bool share, Propagator& p,
|
|
205
|
+
BV b0, BV b1, BV b2)
|
|
206
|
+
: BoolBinary<BV,BV>(home,share,p,b0,b1) {
|
|
207
|
+
x2.update(home,share,b2);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
template<class BV>
|
|
211
|
+
Actor*
|
|
212
|
+
TerOrTrue<BV>::copy(Space& home, bool share) {
|
|
213
|
+
assert(x0.none() && x1.none());
|
|
214
|
+
if (x2.one())
|
|
215
|
+
return new (home) OrTrueSubsumed<BV>(home,share,*this,x0,x1);
|
|
216
|
+
else if (x2.zero())
|
|
217
|
+
return new (home) BinOrTrue<BV,BV>(home,share,*this,x0,x1);
|
|
218
|
+
else
|
|
219
|
+
return new (home) TerOrTrue<BV>(home,share,*this);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
template<class BV>
|
|
223
|
+
forceinline ExecStatus
|
|
224
|
+
TerOrTrue<BV>::post(Home home, BV b0, BV b1, BV b2) {
|
|
225
|
+
(void) new (home) TerOrTrue<BV>(home,b0,b1,b2);
|
|
226
|
+
return ES_OK;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
template<class BV>
|
|
230
|
+
ExecStatus
|
|
231
|
+
TerOrTrue<BV>::propagate(Space& home, const ModEventDelta&) {
|
|
232
|
+
#define GECODE_INT_STATUS(S0,S1,S2) \
|
|
233
|
+
((BV::S0<<(2*BV::BITS))|(BV::S1<<(1*BV::BITS))|(BV::S2<<(0*BV::BITS)))
|
|
234
|
+
switch ((x0.status() << (2*BV::BITS)) | (x1.status() << (1*BV::BITS)) |
|
|
235
|
+
(x2.status() << (0*BV::BITS))) {
|
|
236
|
+
case GECODE_INT_STATUS(NONE,NONE,NONE):
|
|
237
|
+
case GECODE_INT_STATUS(NONE,NONE,ZERO):
|
|
238
|
+
case GECODE_INT_STATUS(NONE,NONE,ONE):
|
|
239
|
+
GECODE_NEVER;
|
|
240
|
+
case GECODE_INT_STATUS(NONE,ZERO,NONE):
|
|
241
|
+
std::swap(x1,x2); x1.subscribe(home,*this,PC_BOOL_VAL);
|
|
242
|
+
return ES_FIX;
|
|
243
|
+
case GECODE_INT_STATUS(NONE,ZERO,ZERO):
|
|
244
|
+
GECODE_ME_CHECK(x0.one_none(home)); break;
|
|
245
|
+
case GECODE_INT_STATUS(NONE,ZERO,ONE):
|
|
246
|
+
case GECODE_INT_STATUS(NONE,ONE,NONE):
|
|
247
|
+
case GECODE_INT_STATUS(NONE,ONE,ZERO):
|
|
248
|
+
case GECODE_INT_STATUS(NONE,ONE,ONE):
|
|
249
|
+
break;
|
|
250
|
+
case GECODE_INT_STATUS(ZERO,NONE,NONE):
|
|
251
|
+
std::swap(x0,x2); x0.subscribe(home,*this,PC_BOOL_VAL);
|
|
252
|
+
return ES_FIX;
|
|
253
|
+
case GECODE_INT_STATUS(ZERO,NONE,ZERO):
|
|
254
|
+
GECODE_ME_CHECK(x1.one_none(home)); break;
|
|
255
|
+
case GECODE_INT_STATUS(ZERO,NONE,ONE):
|
|
256
|
+
break;
|
|
257
|
+
case GECODE_INT_STATUS(ZERO,ZERO,NONE):
|
|
258
|
+
GECODE_ME_CHECK(x2.one_none(home)); break;
|
|
259
|
+
case GECODE_INT_STATUS(ZERO,ZERO,ZERO):
|
|
260
|
+
return ES_FAILED;
|
|
261
|
+
case GECODE_INT_STATUS(ZERO,ZERO,ONE):
|
|
262
|
+
case GECODE_INT_STATUS(ZERO,ONE,NONE):
|
|
263
|
+
case GECODE_INT_STATUS(ZERO,ONE,ZERO):
|
|
264
|
+
case GECODE_INT_STATUS(ZERO,ONE,ONE):
|
|
265
|
+
case GECODE_INT_STATUS(ONE,NONE,NONE):
|
|
266
|
+
case GECODE_INT_STATUS(ONE,NONE,ZERO):
|
|
267
|
+
case GECODE_INT_STATUS(ONE,NONE,ONE):
|
|
268
|
+
case GECODE_INT_STATUS(ONE,ZERO,NONE):
|
|
269
|
+
case GECODE_INT_STATUS(ONE,ZERO,ZERO):
|
|
270
|
+
case GECODE_INT_STATUS(ONE,ZERO,ONE):
|
|
271
|
+
case GECODE_INT_STATUS(ONE,ONE,NONE):
|
|
272
|
+
case GECODE_INT_STATUS(ONE,ONE,ZERO):
|
|
273
|
+
case GECODE_INT_STATUS(ONE,ONE,ONE):
|
|
274
|
+
break;
|
|
275
|
+
default:
|
|
276
|
+
GECODE_NEVER;
|
|
277
|
+
}
|
|
278
|
+
return home.ES_SUBSUMED(*this);
|
|
279
|
+
#undef GECODE_INT_STATUS
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/*
|
|
283
|
+
* Boolean disjunction propagator (true)
|
|
284
|
+
*
|
|
285
|
+
*/
|
|
286
|
+
|
|
287
|
+
template<class BV>
|
|
288
|
+
forceinline
|
|
289
|
+
QuadOrTrue<BV>::QuadOrTrue(Home home, BV b0, BV b1, BV b2, BV b3)
|
|
290
|
+
: BoolBinary<BV,BV>(home,b0,b1), x2(b2), x3(b3) {}
|
|
291
|
+
|
|
292
|
+
template<class BV>
|
|
293
|
+
forceinline size_t
|
|
294
|
+
QuadOrTrue<BV>::dispose(Space& home) {
|
|
295
|
+
(void) BoolBinary<BV,BV>::dispose(home);
|
|
296
|
+
return sizeof(*this);
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
template<class BV>
|
|
300
|
+
forceinline
|
|
301
|
+
QuadOrTrue<BV>::QuadOrTrue(Space& home, bool share, QuadOrTrue<BV>& p)
|
|
302
|
+
: BoolBinary<BV,BV>(home,share,p) {
|
|
303
|
+
x2.update(home,share,p.x2);
|
|
304
|
+
x3.update(home,share,p.x3);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
template<class BV>
|
|
308
|
+
forceinline
|
|
309
|
+
QuadOrTrue<BV>::QuadOrTrue(Space& home, bool share, Propagator& p,
|
|
310
|
+
BV b0, BV b1, BV b2, BV b3)
|
|
311
|
+
: BoolBinary<BV,BV>(home,share,p,b0,b1) {
|
|
312
|
+
x2.update(home,share,b2);
|
|
313
|
+
x3.update(home,share,b3);
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
template<class BV>
|
|
317
|
+
Actor*
|
|
318
|
+
QuadOrTrue<BV>::copy(Space& home, bool share) {
|
|
319
|
+
assert(x0.none() && x1.none());
|
|
320
|
+
if (x2.one() || x3.one())
|
|
321
|
+
return new (home) OrTrueSubsumed<BV>(home,share,*this,x0,x1);
|
|
322
|
+
else if (x2.zero() && x3.zero())
|
|
323
|
+
return new (home) BinOrTrue<BV,BV>(home,share,*this,x0,x1);
|
|
324
|
+
else if (x2.zero())
|
|
325
|
+
return new (home) TerOrTrue<BV>(home,share,*this,x0,x1,x3);
|
|
326
|
+
else if (x3.zero())
|
|
327
|
+
return new (home) TerOrTrue<BV>(home,share,*this,x0,x1,x2);
|
|
328
|
+
else
|
|
329
|
+
return new (home) QuadOrTrue<BV>(home,share,*this);
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
template<class BV>
|
|
333
|
+
forceinline ExecStatus
|
|
334
|
+
QuadOrTrue<BV>::post(Home home, BV b0, BV b1, BV b2, BV b3) {
|
|
335
|
+
(void) new (home) QuadOrTrue<BV>(home,b0,b1,b2,b3);
|
|
336
|
+
return ES_OK;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
template<class BV>
|
|
340
|
+
ExecStatus
|
|
341
|
+
QuadOrTrue<BV>::propagate(Space& home, const ModEventDelta&) {
|
|
342
|
+
#define GECODE_INT_STATUS(S0,S1,S2,S3) \
|
|
343
|
+
((BV::S0 << (3*BV::BITS)) | (BV::S1 << (2*BV::BITS)) | \
|
|
344
|
+
(BV::S2 << (1*BV::BITS)) | (BV::S3 << (0*BV::BITS)))
|
|
345
|
+
switch ((x0.status() << (3*BV::BITS)) | (x1.status() << (2*BV::BITS)) |
|
|
346
|
+
(x2.status() << (1*BV::BITS)) | (x3.status() << (0*BV::BITS))) {
|
|
347
|
+
case GECODE_INT_STATUS(NONE,NONE,NONE,NONE):
|
|
348
|
+
case GECODE_INT_STATUS(NONE,NONE,NONE,ZERO):
|
|
349
|
+
case GECODE_INT_STATUS(NONE,NONE,NONE,ONE):
|
|
350
|
+
case GECODE_INT_STATUS(NONE,NONE,ZERO,NONE):
|
|
351
|
+
case GECODE_INT_STATUS(NONE,NONE,ZERO,ZERO):
|
|
352
|
+
case GECODE_INT_STATUS(NONE,NONE,ZERO,ONE):
|
|
353
|
+
case GECODE_INT_STATUS(NONE,NONE,ONE,NONE):
|
|
354
|
+
case GECODE_INT_STATUS(NONE,NONE,ONE,ZERO):
|
|
355
|
+
case GECODE_INT_STATUS(NONE,NONE,ONE,ONE):
|
|
356
|
+
GECODE_NEVER;
|
|
357
|
+
case GECODE_INT_STATUS(NONE,ZERO,NONE,NONE):
|
|
358
|
+
case GECODE_INT_STATUS(NONE,ZERO,NONE,ZERO):
|
|
359
|
+
std::swap(x1,x2); x1.subscribe(home,*this,PC_BOOL_VAL,false);
|
|
360
|
+
return ES_FIX;
|
|
361
|
+
case GECODE_INT_STATUS(NONE,ZERO,NONE,ONE):
|
|
362
|
+
break;
|
|
363
|
+
case GECODE_INT_STATUS(NONE,ZERO,ZERO,NONE):
|
|
364
|
+
std::swap(x1,x3); x1.subscribe(home,*this,PC_BOOL_VAL,false);
|
|
365
|
+
return ES_FIX;
|
|
366
|
+
case GECODE_INT_STATUS(NONE,ZERO,ZERO,ZERO):
|
|
367
|
+
GECODE_ME_CHECK(x0.one_none(home)); break;
|
|
368
|
+
case GECODE_INT_STATUS(NONE,ZERO,ZERO,ONE):
|
|
369
|
+
case GECODE_INT_STATUS(NONE,ZERO,ONE,NONE):
|
|
370
|
+
case GECODE_INT_STATUS(NONE,ZERO,ONE,ZERO):
|
|
371
|
+
case GECODE_INT_STATUS(NONE,ZERO,ONE,ONE):
|
|
372
|
+
case GECODE_INT_STATUS(NONE,ONE,NONE,NONE):
|
|
373
|
+
case GECODE_INT_STATUS(NONE,ONE,NONE,ZERO):
|
|
374
|
+
case GECODE_INT_STATUS(NONE,ONE,NONE,ONE):
|
|
375
|
+
case GECODE_INT_STATUS(NONE,ONE,ZERO,NONE):
|
|
376
|
+
case GECODE_INT_STATUS(NONE,ONE,ZERO,ZERO):
|
|
377
|
+
case GECODE_INT_STATUS(NONE,ONE,ZERO,ONE):
|
|
378
|
+
case GECODE_INT_STATUS(NONE,ONE,ONE,NONE):
|
|
379
|
+
case GECODE_INT_STATUS(NONE,ONE,ONE,ZERO):
|
|
380
|
+
case GECODE_INT_STATUS(NONE,ONE,ONE,ONE):
|
|
381
|
+
break;
|
|
382
|
+
case GECODE_INT_STATUS(ZERO,NONE,NONE,NONE):
|
|
383
|
+
case GECODE_INT_STATUS(ZERO,NONE,NONE,ZERO):
|
|
384
|
+
std::swap(x0,x2); x0.subscribe(home,*this,PC_BOOL_VAL,false);
|
|
385
|
+
return ES_FIX;
|
|
386
|
+
case GECODE_INT_STATUS(ZERO,NONE,NONE,ONE):
|
|
387
|
+
break;
|
|
388
|
+
case GECODE_INT_STATUS(ZERO,NONE,ZERO,NONE):
|
|
389
|
+
std::swap(x0,x3); x0.subscribe(home,*this,PC_BOOL_VAL,false);
|
|
390
|
+
return ES_FIX;
|
|
391
|
+
case GECODE_INT_STATUS(ZERO,NONE,ZERO,ZERO):
|
|
392
|
+
GECODE_ME_CHECK(x1.one_none(home)); break;
|
|
393
|
+
case GECODE_INT_STATUS(ZERO,NONE,ZERO,ONE):
|
|
394
|
+
case GECODE_INT_STATUS(ZERO,NONE,ONE,NONE):
|
|
395
|
+
case GECODE_INT_STATUS(ZERO,NONE,ONE,ZERO):
|
|
396
|
+
case GECODE_INT_STATUS(ZERO,NONE,ONE,ONE):
|
|
397
|
+
break;
|
|
398
|
+
case GECODE_INT_STATUS(ZERO,ZERO,NONE,NONE):
|
|
399
|
+
std::swap(x0,x2); x0.subscribe(home,*this,PC_BOOL_VAL,false);
|
|
400
|
+
std::swap(x1,x3); x1.subscribe(home,*this,PC_BOOL_VAL,false);
|
|
401
|
+
return ES_FIX;
|
|
402
|
+
case GECODE_INT_STATUS(ZERO,ZERO,NONE,ZERO):
|
|
403
|
+
GECODE_ME_CHECK(x2.one_none(home)); break;
|
|
404
|
+
case GECODE_INT_STATUS(ZERO,ZERO,NONE,ONE):
|
|
405
|
+
break;
|
|
406
|
+
case GECODE_INT_STATUS(ZERO,ZERO,ZERO,NONE):
|
|
407
|
+
GECODE_ME_CHECK(x3.one_none(home)); break;
|
|
408
|
+
case GECODE_INT_STATUS(ZERO,ZERO,ZERO,ZERO):
|
|
409
|
+
return ES_FAILED;
|
|
410
|
+
case GECODE_INT_STATUS(ZERO,ZERO,ZERO,ONE):
|
|
411
|
+
case GECODE_INT_STATUS(ZERO,ZERO,ONE,NONE):
|
|
412
|
+
case GECODE_INT_STATUS(ZERO,ZERO,ONE,ZERO):
|
|
413
|
+
case GECODE_INT_STATUS(ZERO,ZERO,ONE,ONE):
|
|
414
|
+
case GECODE_INT_STATUS(ZERO,ONE,NONE,NONE):
|
|
415
|
+
case GECODE_INT_STATUS(ZERO,ONE,NONE,ZERO):
|
|
416
|
+
case GECODE_INT_STATUS(ZERO,ONE,NONE,ONE):
|
|
417
|
+
case GECODE_INT_STATUS(ZERO,ONE,ZERO,NONE):
|
|
418
|
+
case GECODE_INT_STATUS(ZERO,ONE,ZERO,ZERO):
|
|
419
|
+
case GECODE_INT_STATUS(ZERO,ONE,ZERO,ONE):
|
|
420
|
+
case GECODE_INT_STATUS(ZERO,ONE,ONE,NONE):
|
|
421
|
+
case GECODE_INT_STATUS(ZERO,ONE,ONE,ZERO):
|
|
422
|
+
case GECODE_INT_STATUS(ZERO,ONE,ONE,ONE):
|
|
423
|
+
case GECODE_INT_STATUS(ONE,NONE,NONE,NONE):
|
|
424
|
+
case GECODE_INT_STATUS(ONE,NONE,NONE,ZERO):
|
|
425
|
+
case GECODE_INT_STATUS(ONE,NONE,NONE,ONE):
|
|
426
|
+
case GECODE_INT_STATUS(ONE,NONE,ZERO,NONE):
|
|
427
|
+
case GECODE_INT_STATUS(ONE,NONE,ZERO,ZERO):
|
|
428
|
+
case GECODE_INT_STATUS(ONE,NONE,ZERO,ONE):
|
|
429
|
+
case GECODE_INT_STATUS(ONE,NONE,ONE,NONE):
|
|
430
|
+
case GECODE_INT_STATUS(ONE,NONE,ONE,ZERO):
|
|
431
|
+
case GECODE_INT_STATUS(ONE,NONE,ONE,ONE):
|
|
432
|
+
case GECODE_INT_STATUS(ONE,ZERO,NONE,NONE):
|
|
433
|
+
case GECODE_INT_STATUS(ONE,ZERO,NONE,ZERO):
|
|
434
|
+
case GECODE_INT_STATUS(ONE,ZERO,NONE,ONE):
|
|
435
|
+
case GECODE_INT_STATUS(ONE,ZERO,ZERO,NONE):
|
|
436
|
+
case GECODE_INT_STATUS(ONE,ZERO,ZERO,ZERO):
|
|
437
|
+
case GECODE_INT_STATUS(ONE,ZERO,ZERO,ONE):
|
|
438
|
+
case GECODE_INT_STATUS(ONE,ZERO,ONE,NONE):
|
|
439
|
+
case GECODE_INT_STATUS(ONE,ZERO,ONE,ZERO):
|
|
440
|
+
case GECODE_INT_STATUS(ONE,ZERO,ONE,ONE):
|
|
441
|
+
case GECODE_INT_STATUS(ONE,ONE,NONE,NONE):
|
|
442
|
+
case GECODE_INT_STATUS(ONE,ONE,NONE,ZERO):
|
|
443
|
+
case GECODE_INT_STATUS(ONE,ONE,NONE,ONE):
|
|
444
|
+
case GECODE_INT_STATUS(ONE,ONE,ZERO,NONE):
|
|
445
|
+
case GECODE_INT_STATUS(ONE,ONE,ZERO,ZERO):
|
|
446
|
+
case GECODE_INT_STATUS(ONE,ONE,ZERO,ONE):
|
|
447
|
+
case GECODE_INT_STATUS(ONE,ONE,ONE,NONE):
|
|
448
|
+
case GECODE_INT_STATUS(ONE,ONE,ONE,ZERO):
|
|
449
|
+
case GECODE_INT_STATUS(ONE,ONE,ONE,ONE):
|
|
450
|
+
break;
|
|
451
|
+
default:
|
|
452
|
+
GECODE_NEVER;
|
|
453
|
+
}
|
|
454
|
+
return home.ES_SUBSUMED(*this);
|
|
455
|
+
#undef GECODE_INT_STATUS
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
/*
|
|
459
|
+
* Boolean disjunction propagator
|
|
460
|
+
*
|
|
461
|
+
*/
|
|
462
|
+
|
|
463
|
+
template<class BVA, class BVB, class BVC>
|
|
464
|
+
forceinline
|
|
465
|
+
Or<BVA,BVB,BVC>::Or(Home home, BVA b0, BVB b1, BVC b2)
|
|
466
|
+
: BoolTernary<BVA,BVB,BVC>(home,b0,b1,b2) {}
|
|
467
|
+
|
|
468
|
+
template<class BVA, class BVB, class BVC>
|
|
469
|
+
forceinline
|
|
470
|
+
Or<BVA,BVB,BVC>::Or(Space& home, bool share, Or<BVA,BVB,BVC>& p)
|
|
471
|
+
: BoolTernary<BVA,BVB,BVC>(home,share,p) {}
|
|
472
|
+
|
|
473
|
+
template<class BVA, class BVB, class BVC>
|
|
474
|
+
forceinline
|
|
475
|
+
Or<BVA,BVB,BVC>::Or(Space& home, bool share, Propagator& p,
|
|
476
|
+
BVA b0, BVB b1, BVC b2)
|
|
477
|
+
: BoolTernary<BVA,BVB,BVC>(home,share,p,b0,b1,b2) {}
|
|
478
|
+
|
|
479
|
+
template<class BVA, class BVB, class BVC>
|
|
480
|
+
Actor*
|
|
481
|
+
Or<BVA,BVB,BVC>::copy(Space& home, bool share) {
|
|
482
|
+
if (x2.one()) {
|
|
483
|
+
assert(x0.none() && x1.none());
|
|
484
|
+
return new (home) BinOrTrue<BVA,BVB>(home,share,*this,x0,x1);
|
|
485
|
+
} else if (x0.zero()) {
|
|
486
|
+
assert(x1.none() && x2.none());
|
|
487
|
+
return new (home) Eq<BVB,BVC>(home,share,*this,x1,x2);
|
|
488
|
+
} else if (x1.zero()) {
|
|
489
|
+
assert(x0.none() && x2.none());
|
|
490
|
+
return new (home) Eq<BVA,BVC>(home,share,*this,x0,x2);
|
|
491
|
+
} else {
|
|
492
|
+
return new (home) Or<BVA,BVB,BVC>(home,share,*this);
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
template<class BVA, class BVB, class BVC>
|
|
497
|
+
inline ExecStatus
|
|
498
|
+
Or<BVA,BVB,BVC>::post(Home home, BVA b0, BVB b1, BVC b2) {
|
|
499
|
+
if (b2.zero()) {
|
|
500
|
+
GECODE_ME_CHECK(b0.zero(home));
|
|
501
|
+
GECODE_ME_CHECK(b1.zero(home));
|
|
502
|
+
} else if (b2.one()) {
|
|
503
|
+
return BinOrTrue<BVA,BVB>::post(home,b0,b1);
|
|
504
|
+
} else {
|
|
505
|
+
switch (bool_test(b0,b1)) {
|
|
506
|
+
case BT_SAME:
|
|
507
|
+
return Eq<BVA,BVC>::post(home,b0,b2);
|
|
508
|
+
case BT_COMP:
|
|
509
|
+
GECODE_ME_CHECK(b2.one(home));
|
|
510
|
+
break;
|
|
511
|
+
case BT_NONE:
|
|
512
|
+
if (b0.one() || b1.one()) {
|
|
513
|
+
GECODE_ME_CHECK(b2.one(home));
|
|
514
|
+
} else if (b0.zero()) {
|
|
515
|
+
return Eq<BVB,BVC>::post(home,b1,b2);
|
|
516
|
+
} else if (b1.zero()) {
|
|
517
|
+
return Eq<BVA,BVC>::post(home,b0,b2);
|
|
518
|
+
} else {
|
|
519
|
+
(void) new (home) Or<BVA,BVB,BVC>(home,b0,b1,b2);
|
|
520
|
+
}
|
|
521
|
+
break;
|
|
522
|
+
default: GECODE_NEVER;
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
return ES_OK;
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
template<class BVA, class BVB, class BVC>
|
|
529
|
+
ExecStatus
|
|
530
|
+
Or<BVA,BVB,BVC>::propagate(Space& home, const ModEventDelta&) {
|
|
531
|
+
#define GECODE_INT_STATUS(S0,S1,S2) \
|
|
532
|
+
((BVA::S0<<(2*BVA::BITS))|(BVB::S1<<(1*BVB::BITS))|(BVC::S2<<(0*BVC::BITS)))
|
|
533
|
+
switch ((x0.status() << (2*BVA::BITS)) | (x1.status() << (1*BVB::BITS)) |
|
|
534
|
+
(x2.status() << (0*BVC::BITS))) {
|
|
535
|
+
case GECODE_INT_STATUS(NONE,NONE,NONE):
|
|
536
|
+
GECODE_NEVER;
|
|
537
|
+
case GECODE_INT_STATUS(NONE,NONE,ZERO):
|
|
538
|
+
GECODE_ME_CHECK(x0.zero_none(home));
|
|
539
|
+
GECODE_ME_CHECK(x1.zero_none(home));
|
|
540
|
+
break;
|
|
541
|
+
case GECODE_INT_STATUS(NONE,NONE,ONE):
|
|
542
|
+
return ES_FIX;
|
|
543
|
+
case GECODE_INT_STATUS(NONE,ZERO,NONE):
|
|
544
|
+
switch (bool_test(x0,x2)) {
|
|
545
|
+
case BT_SAME: return home.ES_SUBSUMED(*this);
|
|
546
|
+
case BT_COMP: return ES_FAILED;
|
|
547
|
+
case BT_NONE: return ES_FIX;
|
|
548
|
+
default: GECODE_NEVER;
|
|
549
|
+
}
|
|
550
|
+
GECODE_NEVER;
|
|
551
|
+
case GECODE_INT_STATUS(NONE,ZERO,ZERO):
|
|
552
|
+
GECODE_ME_CHECK(x0.zero_none(home)); break;
|
|
553
|
+
case GECODE_INT_STATUS(NONE,ZERO,ONE):
|
|
554
|
+
GECODE_ME_CHECK(x0.one_none(home)); break;
|
|
555
|
+
case GECODE_INT_STATUS(NONE,ONE,NONE):
|
|
556
|
+
GECODE_ME_CHECK(x2.one_none(home)); break;
|
|
557
|
+
case GECODE_INT_STATUS(NONE,ONE,ZERO):
|
|
558
|
+
return ES_FAILED;
|
|
559
|
+
case GECODE_INT_STATUS(NONE,ONE,ONE):
|
|
560
|
+
break;
|
|
561
|
+
case GECODE_INT_STATUS(ZERO,NONE,NONE):
|
|
562
|
+
switch (bool_test(x1,x2)) {
|
|
563
|
+
case BT_SAME: return home.ES_SUBSUMED(*this);
|
|
564
|
+
case BT_COMP: return ES_FAILED;
|
|
565
|
+
case BT_NONE: return ES_FIX;
|
|
566
|
+
default: GECODE_NEVER;
|
|
567
|
+
}
|
|
568
|
+
GECODE_NEVER;
|
|
569
|
+
case GECODE_INT_STATUS(ZERO,NONE,ZERO):
|
|
570
|
+
GECODE_ME_CHECK(x1.zero_none(home)); break;
|
|
571
|
+
case GECODE_INT_STATUS(ZERO,NONE,ONE):
|
|
572
|
+
GECODE_ME_CHECK(x1.one_none(home)); break;
|
|
573
|
+
case GECODE_INT_STATUS(ZERO,ZERO,NONE):
|
|
574
|
+
GECODE_ME_CHECK(x2.zero_none(home)); break;
|
|
575
|
+
case GECODE_INT_STATUS(ZERO,ZERO,ZERO):
|
|
576
|
+
break;
|
|
577
|
+
case GECODE_INT_STATUS(ZERO,ZERO,ONE):
|
|
578
|
+
return ES_FAILED;
|
|
579
|
+
case GECODE_INT_STATUS(ZERO,ONE,NONE):
|
|
580
|
+
GECODE_ME_CHECK(x2.one_none(home)); break;
|
|
581
|
+
case GECODE_INT_STATUS(ZERO,ONE,ZERO):
|
|
582
|
+
return ES_FAILED;
|
|
583
|
+
case GECODE_INT_STATUS(ZERO,ONE,ONE):
|
|
584
|
+
break;
|
|
585
|
+
case GECODE_INT_STATUS(ONE,NONE,NONE):
|
|
586
|
+
GECODE_ME_CHECK(x2.one_none(home)); break;
|
|
587
|
+
case GECODE_INT_STATUS(ONE,NONE,ZERO):
|
|
588
|
+
return ES_FAILED;
|
|
589
|
+
case GECODE_INT_STATUS(ONE,NONE,ONE):
|
|
590
|
+
break;
|
|
591
|
+
case GECODE_INT_STATUS(ONE,ZERO,NONE):
|
|
592
|
+
GECODE_ME_CHECK(x2.one_none(home)); break;
|
|
593
|
+
case GECODE_INT_STATUS(ONE,ZERO,ZERO):
|
|
594
|
+
return ES_FAILED;
|
|
595
|
+
case GECODE_INT_STATUS(ONE,ZERO,ONE):
|
|
596
|
+
break;
|
|
597
|
+
case GECODE_INT_STATUS(ONE,ONE,NONE):
|
|
598
|
+
GECODE_ME_CHECK(x2.one_none(home)); break;
|
|
599
|
+
case GECODE_INT_STATUS(ONE,ONE,ZERO):
|
|
600
|
+
return ES_FAILED;
|
|
601
|
+
case GECODE_INT_STATUS(ONE,ONE,ONE):
|
|
602
|
+
break;
|
|
603
|
+
default:
|
|
604
|
+
GECODE_NEVER;
|
|
605
|
+
}
|
|
606
|
+
return home.ES_SUBSUMED(*this);
|
|
607
|
+
#undef GECODE_INT_STATUS
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
/*
|
|
611
|
+
* N-ary Boolean disjunction propagator (true)
|
|
612
|
+
*
|
|
613
|
+
*/
|
|
614
|
+
|
|
615
|
+
template<class BV>
|
|
616
|
+
forceinline
|
|
617
|
+
NaryOrTrue<BV>::NaryOrTrue(Home home, ViewArray<BV>& b)
|
|
618
|
+
: BinaryPropagator<BV,PC_BOOL_VAL>(home,b[0],b[1]), x(b) {
|
|
619
|
+
assert(x.size() > 2);
|
|
620
|
+
x.drop_fst(2);
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
template<class BV>
|
|
624
|
+
PropCost
|
|
625
|
+
NaryOrTrue<BV>::cost(const Space&, const ModEventDelta&) const {
|
|
626
|
+
return PropCost::binary(PropCost::LO);
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
template<class BV>
|
|
630
|
+
forceinline
|
|
631
|
+
NaryOrTrue<BV>::NaryOrTrue(Space& home, bool share, NaryOrTrue<BV>& p)
|
|
632
|
+
: BinaryPropagator<BV,PC_BOOL_VAL>(home,share,p) {
|
|
633
|
+
x.update(home,share,p.x);
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
template<class BV>
|
|
637
|
+
Actor*
|
|
638
|
+
NaryOrTrue<BV>::copy(Space& home, bool share) {
|
|
639
|
+
int n = x.size();
|
|
640
|
+
if (n > 0) {
|
|
641
|
+
// Eliminate all zeros and find a one
|
|
642
|
+
for (int i=n; i--; )
|
|
643
|
+
if (x[i].one()) {
|
|
644
|
+
// Only keep the one
|
|
645
|
+
x[0]=x[i]; x.size(1);
|
|
646
|
+
return new (home) OrTrueSubsumed<BV>(home,share,*this,x0,x1);
|
|
647
|
+
} else if (x[i].zero()) {
|
|
648
|
+
// Eliminate the zero
|
|
649
|
+
x[i]=x[--n];
|
|
650
|
+
}
|
|
651
|
+
x.size(n);
|
|
652
|
+
}
|
|
653
|
+
switch (n) {
|
|
654
|
+
case 0:
|
|
655
|
+
return new (home) BinOrTrue<BV,BV>(home,share,*this,x0,x1);
|
|
656
|
+
case 1:
|
|
657
|
+
return new (home) TerOrTrue<BV>(home,share,*this,x0,x1,x[0]);
|
|
658
|
+
case 2:
|
|
659
|
+
return new (home) QuadOrTrue<BV>(home,share,*this,x0,x1,x[0],x[1]);
|
|
660
|
+
default:
|
|
661
|
+
return new (home) NaryOrTrue<BV>(home,share,*this);
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
template<class BV>
|
|
666
|
+
inline ExecStatus
|
|
667
|
+
NaryOrTrue<BV>::post(Home home, ViewArray<BV>& b) {
|
|
668
|
+
for (int i=b.size(); i--; )
|
|
669
|
+
if (b[i].one())
|
|
670
|
+
return ES_OK;
|
|
671
|
+
else if (b[i].zero())
|
|
672
|
+
b.move_lst(i);
|
|
673
|
+
if (b.size() == 0)
|
|
674
|
+
return ES_FAILED;
|
|
675
|
+
if (b.size() == 1) {
|
|
676
|
+
GECODE_ME_CHECK(b[0].one(home));
|
|
677
|
+
} else if (b.size() == 2) {
|
|
678
|
+
return BinOrTrue<BV,BV>::post(home,b[0],b[1]);
|
|
679
|
+
} else if (b.size() == 3) {
|
|
680
|
+
return TerOrTrue<BV>::post(home,b[0],b[1],b[2]);
|
|
681
|
+
} else if (b.size() == 4) {
|
|
682
|
+
return QuadOrTrue<BV>::post(home,b[0],b[1],b[2],b[3]);
|
|
683
|
+
} else {
|
|
684
|
+
(void) new (home) NaryOrTrue(home,b);
|
|
685
|
+
}
|
|
686
|
+
return ES_OK;
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
template<class BV>
|
|
690
|
+
forceinline size_t
|
|
691
|
+
NaryOrTrue<BV>::dispose(Space& home) {
|
|
692
|
+
(void) BinaryPropagator<BV,PC_BOOL_VAL>::dispose(home);
|
|
693
|
+
return sizeof(*this);
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
template<class BV>
|
|
697
|
+
forceinline ExecStatus
|
|
698
|
+
NaryOrTrue<BV>::resubscribe(Space& home, BV& x0, BV x1) {
|
|
699
|
+
if (x0.zero()) {
|
|
700
|
+
int n = x.size();
|
|
701
|
+
for (int i=n; i--; )
|
|
702
|
+
if (x[i].one()) {
|
|
703
|
+
return home.ES_SUBSUMED(*this);
|
|
704
|
+
} else if (x[i].zero()) {
|
|
705
|
+
x[i] = x[--n];
|
|
706
|
+
} else {
|
|
707
|
+
// Move to x0 and subscribe
|
|
708
|
+
x0=x[i]; x[i]=x[--n];
|
|
709
|
+
x.size(n);
|
|
710
|
+
x0.subscribe(home,*this,PC_BOOL_VAL,false);
|
|
711
|
+
return ES_FIX;
|
|
712
|
+
}
|
|
713
|
+
// All views have been assigned!
|
|
714
|
+
GECODE_ME_CHECK(x1.one(home));
|
|
715
|
+
return home.ES_SUBSUMED(*this);
|
|
716
|
+
}
|
|
717
|
+
return ES_FIX;
|
|
718
|
+
}
|
|
719
|
+
|
|
720
|
+
template<class BV>
|
|
721
|
+
ExecStatus
|
|
722
|
+
NaryOrTrue<BV>::propagate(Space& home, const ModEventDelta&) {
|
|
723
|
+
if (x0.one())
|
|
724
|
+
return home.ES_SUBSUMED(*this);
|
|
725
|
+
if (x1.one())
|
|
726
|
+
return home.ES_SUBSUMED(*this);
|
|
727
|
+
GECODE_ES_CHECK(resubscribe(home,x0,x1));
|
|
728
|
+
GECODE_ES_CHECK(resubscribe(home,x1,x0));
|
|
729
|
+
return ES_FIX;
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
|
|
733
|
+
/*
|
|
734
|
+
* N-ary Boolean disjunction propagator
|
|
735
|
+
*
|
|
736
|
+
*/
|
|
737
|
+
|
|
738
|
+
template<class VX, class VY>
|
|
739
|
+
forceinline
|
|
740
|
+
NaryOr<VX,VY>::NaryOr(Home home, ViewArray<VX>& x, VY y)
|
|
741
|
+
: MixNaryOnePropagator<VX,PC_BOOL_NONE,VY,PC_BOOL_VAL>(home,x,y),
|
|
742
|
+
n_zero(0), c(home) {
|
|
743
|
+
x.subscribe(home,*new (home) Advisor(home,*this,c));
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
template<class VX, class VY>
|
|
747
|
+
forceinline
|
|
748
|
+
NaryOr<VX,VY>::NaryOr(Space& home, bool share, NaryOr<VX,VY>& p)
|
|
749
|
+
: MixNaryOnePropagator<VX,PC_BOOL_NONE,VY,PC_BOOL_VAL>(home,share,p),
|
|
750
|
+
n_zero(p.n_zero) {
|
|
751
|
+
c.update(home,share,p.c);
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
template<class VX, class VY>
|
|
755
|
+
Actor*
|
|
756
|
+
NaryOr<VX,VY>::copy(Space& home, bool share) {
|
|
757
|
+
assert(n_zero < x.size());
|
|
758
|
+
if (n_zero > 0) {
|
|
759
|
+
int n=x.size();
|
|
760
|
+
// Eliminate all zeros
|
|
761
|
+
for (int i=n; i--; )
|
|
762
|
+
if (x[i].zero())
|
|
763
|
+
x[i]=x[--n];
|
|
764
|
+
x.size(n);
|
|
765
|
+
n_zero = 0;
|
|
766
|
+
}
|
|
767
|
+
assert(n_zero < x.size());
|
|
768
|
+
return new (home) NaryOr<VX,VY>(home,share,*this);
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
template<class VX, class VY>
|
|
772
|
+
inline ExecStatus
|
|
773
|
+
NaryOr<VX,VY>::post(Home home, ViewArray<VX>& x, VY y) {
|
|
774
|
+
assert(!x.shared(home));
|
|
775
|
+
if (y.one())
|
|
776
|
+
return NaryOrTrue<VX>::post(home,x);
|
|
777
|
+
if (y.zero()) {
|
|
778
|
+
for (int i=x.size(); i--; )
|
|
779
|
+
GECODE_ME_CHECK(x[i].zero(home));
|
|
780
|
+
return ES_OK;
|
|
781
|
+
}
|
|
782
|
+
for (int i=x.size(); i--; )
|
|
783
|
+
if (x[i].one()) {
|
|
784
|
+
GECODE_ME_CHECK(y.one_none(home));
|
|
785
|
+
return ES_OK;
|
|
786
|
+
} else if (x[i].zero()) {
|
|
787
|
+
x.move_lst(i);
|
|
788
|
+
}
|
|
789
|
+
if (x.size() == 0) {
|
|
790
|
+
GECODE_ME_CHECK(y.zero_none(home));
|
|
791
|
+
} else if (x.size() == 1) {
|
|
792
|
+
return Eq<VX,VY>::post(home,x[0],y);
|
|
793
|
+
} else if (x.size() == 2) {
|
|
794
|
+
return Or<VX,VX,VY>::post(home,x[0],x[1],y);
|
|
795
|
+
} else {
|
|
796
|
+
(void) new (home) NaryOr(home,x,y);
|
|
797
|
+
}
|
|
798
|
+
return ES_OK;
|
|
799
|
+
}
|
|
800
|
+
|
|
801
|
+
template<class VX, class VY>
|
|
802
|
+
PropCost
|
|
803
|
+
NaryOr<VX,VY>::cost(const Space&, const ModEventDelta&) const {
|
|
804
|
+
return PropCost::unary(PropCost::LO);
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
template<class VX, class VY>
|
|
808
|
+
ExecStatus
|
|
809
|
+
NaryOr<VX,VY>::advise(Space&, Advisor&, const Delta& d) {
|
|
810
|
+
// Decides whether the propagator must be run
|
|
811
|
+
if (VX::zero(d) && (++n_zero < x.size()))
|
|
812
|
+
return ES_FIX;
|
|
813
|
+
else
|
|
814
|
+
return ES_NOFIX;
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
template<class VX, class VY>
|
|
818
|
+
forceinline size_t
|
|
819
|
+
NaryOr<VX,VY>::dispose(Space& home) {
|
|
820
|
+
Advisors<Advisor> as(c);
|
|
821
|
+
x.cancel(home,as.advisor());
|
|
822
|
+
c.dispose(home);
|
|
823
|
+
(void) MixNaryOnePropagator<VX,PC_BOOL_NONE,VY,PC_BOOL_VAL>
|
|
824
|
+
::dispose(home);
|
|
825
|
+
return sizeof(*this);
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
template<class VX, class VY>
|
|
829
|
+
ExecStatus
|
|
830
|
+
NaryOr<VX,VY>::propagate(Space& home, const ModEventDelta&) {
|
|
831
|
+
if (y.one())
|
|
832
|
+
GECODE_REWRITE(*this,NaryOrTrue<VX>::post(home(*this),x));
|
|
833
|
+
if (y.zero()) {
|
|
834
|
+
// Note that this might trigger the advisor of this propagator!
|
|
835
|
+
for (int i = x.size(); i--; )
|
|
836
|
+
GECODE_ME_CHECK(x[i].zero(home));
|
|
837
|
+
} else if (n_zero == x.size()) {
|
|
838
|
+
// All views are zero
|
|
839
|
+
GECODE_ME_CHECK(y.zero_none(home));
|
|
840
|
+
} else {
|
|
841
|
+
// There is exactly one view which is one
|
|
842
|
+
GECODE_ME_CHECK(y.one_none(home));
|
|
843
|
+
}
|
|
844
|
+
return home.ES_SUBSUMED(*this);
|
|
845
|
+
}
|
|
846
|
+
|
|
847
|
+
}}}
|
|
848
|
+
|
|
849
|
+
// STATISTICS: int-prop
|
|
850
|
+
|