diff --git a/Makefile.dep b/Makefile.dep index e6c20d7d10..28b96985e0 100644 --- a/Makefile.dep +++ b/Makefile.dep @@ -1042,7 +1042,7 @@ gecode/search/cpprofiler/tracer$(OBJSUFFIX) gecode/search/cpprofiler/tracer$(SBJ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/int/int-set$(OBJSUFFIX) gecode/int/int-set$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -1105,7 +1105,7 @@ gecode/int/int-set$(OBJSUFFIX) gecode/int/int-set$(SBJSUFFIX): \ ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/var-imp/int$(OBJSUFFIX) gecode/int/var-imp/int$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -1168,7 +1168,7 @@ gecode/int/var-imp/int$(OBJSUFFIX) gecode/int/var-imp/int$(SBJSUFFIX): \ ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/var-imp/bool$(OBJSUFFIX) gecode/int/var-imp/bool$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -1231,7 +1231,7 @@ gecode/int/var-imp/bool$(OBJSUFFIX) gecode/int/var-imp/bool$(SBJSUFFIX): \ ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/var/int$(OBJSUFFIX) gecode/int/var/int$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -1294,7 +1294,7 @@ gecode/int/var/int$(OBJSUFFIX) gecode/int/var/int$(SBJSUFFIX): \ ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/var/bool$(OBJSUFFIX) gecode/int/var/bool$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -1357,7 +1357,7 @@ gecode/int/var/bool$(OBJSUFFIX) gecode/int/var/bool$(SBJSUFFIX): \ ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/array$(OBJSUFFIX) gecode/int/array$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -1420,7 +1420,7 @@ gecode/int/array$(OBJSUFFIX) gecode/int/array$(SBJSUFFIX): \ ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/bool$(OBJSUFFIX) gecode/int/bool$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/bool.hh ./gecode/int/bool/base.hpp ./gecode/int/bool/clause.hpp \ ./gecode/int/bool/eq.hpp ./gecode/int/bool/eqv.hpp ./gecode/int/bool/ite.hpp \ ./gecode/int/bool/lq.hpp ./gecode/int/bool/or.hpp ./gecode/int/branch.hpp \ @@ -1487,7 +1487,7 @@ gecode/int/bool$(OBJSUFFIX) gecode/int/bool$(SBJSUFFIX): \ ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/bool/eqv$(OBJSUFFIX) gecode/int/bool/eqv$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/bool.hh ./gecode/int/bool/base.hpp ./gecode/int/bool/clause.hpp \ ./gecode/int/bool/eq.hpp ./gecode/int/bool/eqv.hpp ./gecode/int/bool/ite.hpp \ ./gecode/int/bool/lq.hpp ./gecode/int/bool/or.hpp ./gecode/int/branch.hpp \ @@ -1554,7 +1554,7 @@ gecode/int/bool/eqv$(OBJSUFFIX) gecode/int/bool/eqv$(SBJSUFFIX): \ ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/extensional/dfa$(OBJSUFFIX) gecode/int/extensional/dfa$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -1617,7 +1617,7 @@ gecode/int/extensional/dfa$(OBJSUFFIX) gecode/int/extensional/dfa$(SBJSUFFIX): \ ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/extensional/tuple-set$(OBJSUFFIX) gecode/int/extensional/tuple-set$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -1680,7 +1680,7 @@ gecode/int/extensional/tuple-set$(OBJSUFFIX) gecode/int/extensional/tuple-set$(S ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/extensional-regular$(OBJSUFFIX) gecode/int/extensional-regular$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -1746,7 +1746,7 @@ gecode/int/extensional-regular$(OBJSUFFIX) gecode/int/extensional-regular$(SBJSU ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/extensional-tuple-set$(OBJSUFFIX) gecode/int/extensional-tuple-set$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -1812,7 +1812,7 @@ gecode/int/extensional-tuple-set$(OBJSUFFIX) gecode/int/extensional-tuple-set$(S ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/dom$(OBJSUFFIX) gecode/int/dom$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -1878,7 +1878,7 @@ gecode/int/dom$(OBJSUFFIX) gecode/int/dom$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/int/rel$(OBJSUFFIX) gecode/int/rel$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/bool.hh ./gecode/int/bool/base.hpp ./gecode/int/bool/clause.hpp \ ./gecode/int/bool/eq.hpp ./gecode/int/bool/eqv.hpp ./gecode/int/bool/ite.hpp \ ./gecode/int/bool/lq.hpp ./gecode/int/bool/or.hpp ./gecode/int/branch.hpp \ @@ -1945,7 +1945,7 @@ gecode/int/rel$(OBJSUFFIX) gecode/int/rel$(SBJSUFFIX): \ ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/precede$(OBJSUFFIX) gecode/int/precede$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -2009,7 +2009,7 @@ gecode/int/precede$(OBJSUFFIX) gecode/int/precede$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/int/element$(OBJSUFFIX) gecode/int/element$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -2076,7 +2076,7 @@ gecode/int/element$(OBJSUFFIX) gecode/int/element$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/int/count$(OBJSUFFIX) gecode/int/count$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -2146,7 +2146,7 @@ gecode/int/count$(OBJSUFFIX) gecode/int/count$(SBJSUFFIX): \ gecode/int/arithmetic$(OBJSUFFIX) gecode/int/arithmetic$(SBJSUFFIX): \ ./gecode/int/arithmetic/gcd.hpp ./gecode/int/arithmetic/divides.hpp \ ./gecode/int/arithmetic/product.hpp ./gecode/int/arithmetic/product-mod.hpp \ - ./gecode/int.hh ./gecode/int/arithmetic.hh ./gecode/int/arithmetic/abs.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/arithmetic.hh ./gecode/int/arithmetic/abs.hpp \ ./gecode/int/arithmetic/argmax.hpp ./gecode/int/arithmetic/divmod.hpp ./gecode/int/arithmetic/max.hpp \ ./gecode/int/arithmetic/mult.hpp ./gecode/int/arithmetic/nroot.hpp ./gecode/int/arithmetic/pow-ops.hpp \ ./gecode/int/arithmetic/pow.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ @@ -2221,7 +2221,7 @@ gecode/int/arithmetic$(OBJSUFFIX) gecode/int/arithmetic$(SBJSUFFIX): \ ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/exec$(OBJSUFFIX) gecode/int/exec$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -2285,7 +2285,7 @@ gecode/int/exec$(OBJSUFFIX) gecode/int/exec$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/int/exec/when$(OBJSUFFIX) gecode/int/exec/when$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -2349,7 +2349,7 @@ gecode/int/exec/when$(OBJSUFFIX) gecode/int/exec/when$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/int/element/pair$(OBJSUFFIX) gecode/int/element/pair$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -2416,7 +2416,7 @@ gecode/int/element/pair$(OBJSUFFIX) gecode/int/element/pair$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/int/linear/int-post$(OBJSUFFIX) gecode/int/linear/int-post$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/bool.hh ./gecode/int/bool/base.hpp ./gecode/int/bool/clause.hpp \ ./gecode/int/bool/eq.hpp ./gecode/int/bool/eqv.hpp ./gecode/int/bool/ite.hpp \ ./gecode/int/bool/lq.hpp ./gecode/int/bool/or.hpp ./gecode/int/branch.hpp \ @@ -2487,7 +2487,7 @@ gecode/int/linear/int-post$(OBJSUFFIX) gecode/int/linear/int-post$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/int/linear-int$(OBJSUFFIX) gecode/int/linear-int$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/bool.hh ./gecode/int/bool/base.hpp ./gecode/int/bool/clause.hpp \ ./gecode/int/bool/eq.hpp ./gecode/int/bool/eqv.hpp ./gecode/int/bool/ite.hpp \ ./gecode/int/bool/lq.hpp ./gecode/int/bool/or.hpp ./gecode/int/branch.hpp \ @@ -2558,7 +2558,7 @@ gecode/int/linear-int$(OBJSUFFIX) gecode/int/linear-int$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/int/linear/bool-post$(OBJSUFFIX) gecode/int/linear/bool-post$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/bool.hh ./gecode/int/bool/base.hpp ./gecode/int/bool/clause.hpp \ ./gecode/int/bool/eq.hpp ./gecode/int/bool/eqv.hpp ./gecode/int/bool/ite.hpp \ ./gecode/int/bool/lq.hpp ./gecode/int/bool/or.hpp ./gecode/int/branch.hpp \ @@ -2629,7 +2629,7 @@ gecode/int/linear/bool-post$(OBJSUFFIX) gecode/int/linear/bool-post$(SBJSUFFIX): ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/int/linear-bool$(OBJSUFFIX) gecode/int/linear-bool$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/bool.hh ./gecode/int/bool/base.hpp ./gecode/int/bool/clause.hpp \ ./gecode/int/bool/eq.hpp ./gecode/int/bool/eqv.hpp ./gecode/int/bool/ite.hpp \ ./gecode/int/bool/lq.hpp ./gecode/int/bool/or.hpp ./gecode/int/branch.hpp \ @@ -2700,7 +2700,7 @@ gecode/int/linear-bool$(OBJSUFFIX) gecode/int/linear-bool$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/int/branch$(OBJSUFFIX) gecode/int/branch$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hh ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/cbs.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/merit.hpp ./gecode/int/branch/ngl.hpp \ @@ -2765,7 +2765,7 @@ gecode/int/branch$(OBJSUFFIX) gecode/int/branch$(SBJSUFFIX): \ ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/distinct/eqite$(OBJSUFFIX) gecode/int/distinct/eqite$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -2835,7 +2835,7 @@ gecode/int/distinct/eqite$(OBJSUFFIX) gecode/int/distinct/eqite$(SBJSUFFIX): \ ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/distinct/cbs$(OBJSUFFIX) gecode/int/distinct/cbs$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -2905,7 +2905,7 @@ gecode/int/distinct/cbs$(OBJSUFFIX) gecode/int/distinct/cbs$(SBJSUFFIX): \ ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/distinct$(OBJSUFFIX) gecode/int/distinct$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/bool.hh ./gecode/int/bool/base.hpp ./gecode/int/bool/clause.hpp \ ./gecode/int/bool/eq.hpp ./gecode/int/bool/eqv.hpp ./gecode/int/bool/ite.hpp \ ./gecode/int/bool/lq.hpp ./gecode/int/bool/or.hpp ./gecode/int/branch.hpp \ @@ -2978,7 +2978,7 @@ gecode/int/distinct$(OBJSUFFIX) gecode/int/distinct$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/int/sorted$(OBJSUFFIX) gecode/int/sorted$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -3050,7 +3050,7 @@ gecode/int/sorted$(OBJSUFFIX) gecode/int/sorted$(SBJSUFFIX): \ ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/gcc$(OBJSUFFIX) gecode/int/gcc$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/bool.hh ./gecode/int/bool/base.hpp ./gecode/int/bool/clause.hpp \ ./gecode/int/bool/eq.hpp ./gecode/int/bool/eqv.hpp ./gecode/int/bool/ite.hpp \ ./gecode/int/bool/lq.hpp ./gecode/int/bool/or.hpp ./gecode/int/branch.hpp \ @@ -3129,7 +3129,7 @@ gecode/int/gcc$(OBJSUFFIX) gecode/int/gcc$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/int/channel$(OBJSUFFIX) gecode/int/channel$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hh \ @@ -3201,7 +3201,7 @@ gecode/int/channel$(OBJSUFFIX) gecode/int/channel$(SBJSUFFIX): \ ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/channel/link-single$(OBJSUFFIX) gecode/int/channel/link-single$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hh \ @@ -3273,7 +3273,7 @@ gecode/int/channel/link-single$(OBJSUFFIX) gecode/int/channel/link-single$(SBJSU ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/channel/link-multi$(OBJSUFFIX) gecode/int/channel/link-multi$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hh \ @@ -3345,7 +3345,7 @@ gecode/int/channel/link-multi$(OBJSUFFIX) gecode/int/channel/link-multi$(SBJSUFF ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/unshare$(OBJSUFFIX) gecode/int/unshare$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/bool.hh ./gecode/int/bool/base.hpp ./gecode/int/bool/clause.hpp \ ./gecode/int/bool/eq.hpp ./gecode/int/bool/eqv.hpp ./gecode/int/bool/ite.hpp \ ./gecode/int/bool/lq.hpp ./gecode/int/bool/or.hpp ./gecode/int/branch.hpp \ @@ -3412,7 +3412,7 @@ gecode/int/unshare$(OBJSUFFIX) gecode/int/unshare$(SBJSUFFIX): \ ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/sequence$(OBJSUFFIX) gecode/int/sequence$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -3478,7 +3478,7 @@ gecode/int/sequence$(OBJSUFFIX) gecode/int/sequence$(SBJSUFFIX): \ ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/bin-packing$(OBJSUFFIX) gecode/int/bin-packing$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/bin-packing.hh ./gecode/int/bin-packing/conflict-graph.hpp ./gecode/int/bin-packing/propagate.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ @@ -3549,7 +3549,7 @@ gecode/int/bin-packing$(OBJSUFFIX) gecode/int/bin-packing$(SBJSUFFIX): \ ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/bin-packing/propagate$(OBJSUFFIX) gecode/int/bin-packing/propagate$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/bin-packing.hh ./gecode/int/bin-packing/conflict-graph.hpp ./gecode/int/bin-packing/propagate.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ @@ -3620,7 +3620,7 @@ gecode/int/bin-packing/propagate$(OBJSUFFIX) gecode/int/bin-packing/propagate$(S ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/bin-packing/conflict-graph$(OBJSUFFIX) gecode/int/bin-packing/conflict-graph$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/bin-packing.hh ./gecode/int/bin-packing/conflict-graph.hpp ./gecode/int/bin-packing/propagate.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ @@ -3691,7 +3691,7 @@ gecode/int/bin-packing/conflict-graph$(OBJSUFFIX) gecode/int/bin-packing/conflic ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/order$(OBJSUFFIX) gecode/int/order$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -3756,7 +3756,7 @@ gecode/int/order$(OBJSUFFIX) gecode/int/order$(SBJSUFFIX): \ ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/order/propagate$(OBJSUFFIX) gecode/int/order/propagate$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -3821,7 +3821,7 @@ gecode/int/order/propagate$(OBJSUFFIX) gecode/int/order/propagate$(SBJSUFFIX): \ ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/unary$(OBJSUFFIX) gecode/int/unary$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -3899,7 +3899,7 @@ gecode/int/unary$(OBJSUFFIX) gecode/int/unary$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/int/cumulative$(OBJSUFFIX) gecode/int/cumulative$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -3974,7 +3974,7 @@ gecode/int/cumulative$(OBJSUFFIX) gecode/int/cumulative$(SBJSUFFIX): \ ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/cumulatives$(OBJSUFFIX) gecode/int/cumulatives$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -4038,7 +4038,7 @@ gecode/int/cumulatives$(OBJSUFFIX) gecode/int/cumulatives$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/int/circuit$(OBJSUFFIX) gecode/int/circuit$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -4109,7 +4109,7 @@ gecode/int/circuit$(OBJSUFFIX) gecode/int/circuit$(SBJSUFFIX): \ ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/no-overlap$(OBJSUFFIX) gecode/int/no-overlap$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -4174,7 +4174,7 @@ gecode/int/no-overlap$(OBJSUFFIX) gecode/int/no-overlap$(SBJSUFFIX): \ ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/nvalues$(OBJSUFFIX) gecode/int/nvalues$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/bool.hh ./gecode/int/bool/base.hpp ./gecode/int/bool/clause.hpp \ ./gecode/int/bool/eq.hpp ./gecode/int/bool/eqv.hpp ./gecode/int/bool/ite.hpp \ ./gecode/int/bool/lq.hpp ./gecode/int/bool/or.hpp ./gecode/int/branch.hpp \ @@ -4251,7 +4251,7 @@ gecode/int/nvalues$(OBJSUFFIX) gecode/int/nvalues$(SBJSUFFIX): \ ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/member$(OBJSUFFIX) gecode/int/member$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -4317,7 +4317,7 @@ gecode/int/member$(OBJSUFFIX) gecode/int/member$(SBJSUFFIX): \ ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/branch/action$(OBJSUFFIX) gecode/int/branch/action$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -4380,7 +4380,7 @@ gecode/int/branch/action$(OBJSUFFIX) gecode/int/branch/action$(SBJSUFFIX): \ ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/branch/chb$(OBJSUFFIX) gecode/int/branch/chb$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -4445,7 +4445,7 @@ gecode/int/branch/chb$(OBJSUFFIX) gecode/int/branch/chb$(SBJSUFFIX): \ gecode/int/arithmetic/mult$(OBJSUFFIX) gecode/int/arithmetic/mult$(SBJSUFFIX): \ ./gecode/int/arithmetic/gcd.hpp ./gecode/int/arithmetic/divides.hpp \ ./gecode/int/arithmetic/product.hpp ./gecode/int/arithmetic/product-mod.hpp \ - ./gecode/int.hh ./gecode/int/arithmetic.hh ./gecode/int/arithmetic/abs.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/arithmetic.hh ./gecode/int/arithmetic/abs.hpp \ ./gecode/int/arithmetic/argmax.hpp ./gecode/int/arithmetic/divmod.hpp ./gecode/int/arithmetic/max.hpp \ ./gecode/int/arithmetic/mult.hpp ./gecode/int/arithmetic/nroot.hpp ./gecode/int/arithmetic/pow-ops.hpp \ ./gecode/int/arithmetic/pow.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ @@ -4520,7 +4520,7 @@ gecode/int/arithmetic/mult$(OBJSUFFIX) gecode/int/arithmetic/mult$(SBJSUFFIX): \ ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/branch/view-sel$(OBJSUFFIX) gecode/int/branch/view-sel$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hh ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/cbs.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/merit.hpp ./gecode/int/branch/ngl.hpp \ @@ -4585,7 +4585,7 @@ gecode/int/branch/view-sel$(OBJSUFFIX) gecode/int/branch/view-sel$(SBJSUFFIX): \ ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/branch/val-sel-commit$(OBJSUFFIX) gecode/int/branch/val-sel-commit$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hh ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/cbs.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/merit.hpp ./gecode/int/branch/ngl.hpp \ @@ -4650,7 +4650,7 @@ gecode/int/branch/val-sel-commit$(OBJSUFFIX) gecode/int/branch/val-sel-commit$(S ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/branch/view-values$(OBJSUFFIX) gecode/int/branch/view-values$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hh ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/cbs.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/merit.hpp ./gecode/int/branch/ngl.hpp \ @@ -4715,7 +4715,7 @@ gecode/int/branch/view-values$(OBJSUFFIX) gecode/int/branch/view-values$(SBJSUFF ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/relax$(OBJSUFFIX) gecode/int/relax$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -4778,7 +4778,7 @@ gecode/int/relax$(OBJSUFFIX) gecode/int/relax$(SBJSUFFIX): \ ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/ldsb$(OBJSUFFIX) gecode/int/ldsb$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hh ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/cbs.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/merit.hpp ./gecode/int/branch/ngl.hpp \ @@ -4844,7 +4844,7 @@ gecode/int/ldsb$(OBJSUFFIX) gecode/int/ldsb$(SBJSUFFIX): \ ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/ldsb/sym-imp$(OBJSUFFIX) gecode/int/ldsb/sym-imp$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hh ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/cbs.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/merit.hpp ./gecode/int/branch/ngl.hpp \ @@ -4910,7 +4910,7 @@ gecode/int/ldsb/sym-imp$(OBJSUFFIX) gecode/int/ldsb/sym-imp$(SBJSUFFIX): \ ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/ldsb/sym-obj$(OBJSUFFIX) gecode/int/ldsb/sym-obj$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -4974,7 +4974,7 @@ gecode/int/ldsb/sym-obj$(OBJSUFFIX) gecode/int/ldsb/sym-obj$(SBJSUFFIX): \ ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/trace$(OBJSUFFIX) gecode/int/trace$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -5037,7 +5037,7 @@ gecode/int/trace$(OBJSUFFIX) gecode/int/trace$(SBJSUFFIX): \ ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/trace/tracer$(OBJSUFFIX) gecode/int/trace/tracer$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -5100,7 +5100,7 @@ gecode/int/trace/tracer$(OBJSUFFIX) gecode/int/trace/tracer$(SBJSUFFIX): \ ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/int/exception$(OBJSUFFIX) gecode/int/exception$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -5174,7 +5174,7 @@ gecode/float/var/float$(OBJSUFFIX) gecode/float/var/float$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -5248,7 +5248,7 @@ gecode/float/var-imp/float$(OBJSUFFIX) gecode/float/var-imp/float$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -5326,7 +5326,7 @@ gecode/float/arithmetic$(OBJSUFFIX) gecode/float/arithmetic$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -5400,7 +5400,7 @@ gecode/float/array$(OBJSUFFIX) gecode/float/array$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -5475,7 +5475,7 @@ gecode/float/branch$(OBJSUFFIX) gecode/float/branch$(SBJSUFFIX): \ ./gecode/float/var-imp/delta.hpp ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp \ ./gecode/float/var/print.hpp ./gecode/float/view.hpp ./gecode/float/view/float.hpp \ ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp \ - ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp ./gecode/int.hh \ + ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -5551,7 +5551,7 @@ gecode/float/rel$(OBJSUFFIX) gecode/float/rel$(SBJSUFFIX): \ ./gecode/float/var-imp/delta.hpp ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp \ ./gecode/float/var/print.hpp ./gecode/float/view.hpp ./gecode/float/view/float.hpp \ ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp \ - ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp ./gecode/int.hh \ + ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -5627,7 +5627,7 @@ gecode/float/linear$(OBJSUFFIX) gecode/float/linear$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -5703,7 +5703,7 @@ gecode/float/linear/post$(OBJSUFFIX) gecode/float/linear/post$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -5779,7 +5779,7 @@ gecode/float/bool$(OBJSUFFIX) gecode/float/bool$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -5854,7 +5854,7 @@ gecode/float/channel$(OBJSUFFIX) gecode/float/channel$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -5929,7 +5929,7 @@ gecode/float/transcendental$(OBJSUFFIX) gecode/float/transcendental$(SBJSUFFIX): ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -6004,7 +6004,7 @@ gecode/float/trigonometric$(OBJSUFFIX) gecode/float/trigonometric$(SBJSUFFIX): \ ./gecode/float/var-imp/delta.hpp ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp \ ./gecode/float/var/print.hpp ./gecode/float/view.hpp ./gecode/float/view/float.hpp \ ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp \ - ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp ./gecode/int.hh \ + ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -6079,7 +6079,7 @@ gecode/float/branch/action$(OBJSUFFIX) gecode/float/branch/action$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -6153,7 +6153,7 @@ gecode/float/branch/chb$(OBJSUFFIX) gecode/float/branch/chb$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -6227,7 +6227,7 @@ gecode/float/rounding$(OBJSUFFIX) gecode/float/rounding$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -6301,7 +6301,7 @@ gecode/float/exec$(OBJSUFFIX) gecode/float/exec$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -6376,7 +6376,7 @@ gecode/float/branch/val-sel-commit$(OBJSUFFIX) gecode/float/branch/val-sel-commi ./gecode/float/var-imp/delta.hpp ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp \ ./gecode/float/var/print.hpp ./gecode/float/view.hpp ./gecode/float/view/float.hpp \ ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp \ - ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp ./gecode/int.hh \ + ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -6452,7 +6452,7 @@ gecode/float/branch/view-sel$(OBJSUFFIX) gecode/float/branch/view-sel$(SBJSUFFIX ./gecode/float/var-imp/delta.hpp ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp \ ./gecode/float/var/print.hpp ./gecode/float/view.hpp ./gecode/float/view/float.hpp \ ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp \ - ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp ./gecode/int.hh \ + ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -6528,7 +6528,7 @@ gecode/float/dom$(OBJSUFFIX) gecode/float/dom$(SBJSUFFIX): \ ./gecode/float/var-imp/delta.hpp ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp \ ./gecode/float/var/print.hpp ./gecode/float/view.hpp ./gecode/float/view/float.hpp \ ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp \ - ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp ./gecode/int.hh \ + ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -6603,7 +6603,7 @@ gecode/float/relax$(OBJSUFFIX) gecode/float/relax$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -6678,7 +6678,7 @@ gecode/float/trace$(OBJSUFFIX) gecode/float/trace$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -6752,7 +6752,7 @@ gecode/float/trace/tracer$(OBJSUFFIX) gecode/float/trace/tracer$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -6826,7 +6826,7 @@ gecode/float/exception$(OBJSUFFIX) gecode/float/exception$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -6889,7 +6889,7 @@ gecode/float/exception$(OBJSUFFIX) gecode/float/exception$(SBJSUFFIX): \ ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/set/branch$(OBJSUFFIX) gecode/set/branch$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -6964,7 +6964,7 @@ gecode/set/branch$(OBJSUFFIX) gecode/set/branch$(SBJSUFFIX): \ ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/set/cardinality$(OBJSUFFIX) gecode/set/cardinality$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -7039,7 +7039,7 @@ gecode/set/cardinality$(OBJSUFFIX) gecode/set/cardinality$(SBJSUFFIX): \ ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/set/convex$(OBJSUFFIX) gecode/set/convex$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -7114,7 +7114,7 @@ gecode/set/convex$(OBJSUFFIX) gecode/set/convex$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/convex/conv$(OBJSUFFIX) gecode/set/convex/conv$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -7189,7 +7189,7 @@ gecode/set/convex/conv$(OBJSUFFIX) gecode/set/convex/conv$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/convex/hull$(OBJSUFFIX) gecode/set/convex/hull$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -7264,7 +7264,7 @@ gecode/set/convex/hull$(OBJSUFFIX) gecode/set/convex/hull$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/dom$(OBJSUFFIX) gecode/set/dom$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -7341,7 +7341,7 @@ gecode/set/dom$(OBJSUFFIX) gecode/set/dom$(SBJSUFFIX): \ ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/set/rel$(OBJSUFFIX) gecode/set/rel$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -7422,7 +7422,7 @@ gecode/set/rel$(OBJSUFFIX) gecode/set/rel$(SBJSUFFIX): \ ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/set/rel-op$(OBJSUFFIX) gecode/set/rel-op$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -7502,7 +7502,7 @@ gecode/set/rel-op$(OBJSUFFIX) gecode/set/rel-op$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/rel-op-ternary$(OBJSUFFIX) gecode/set/rel-op-ternary$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -7582,7 +7582,7 @@ gecode/set/rel-op-ternary$(OBJSUFFIX) gecode/set/rel-op-ternary$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/rel-op-singleton$(OBJSUFFIX) gecode/set/rel-op-singleton$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -7662,7 +7662,7 @@ gecode/set/rel-op-singleton$(OBJSUFFIX) gecode/set/rel-op-singleton$(SBJSUFFIX): ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/rel-op/post-compl$(OBJSUFFIX) gecode/set/rel-op/post-compl$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -7742,7 +7742,7 @@ gecode/set/rel-op/post-compl$(OBJSUFFIX) gecode/set/rel-op/post-compl$(SBJSUFFIX ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/rel-op/post-nocompl$(OBJSUFFIX) gecode/set/rel-op/post-nocompl$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -7822,7 +7822,7 @@ gecode/set/rel-op/post-nocompl$(OBJSUFFIX) gecode/set/rel-op/post-nocompl$(SBJSU ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/rel-op/post-compl-cvv$(OBJSUFFIX) gecode/set/rel-op/post-compl-cvv$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -7902,7 +7902,7 @@ gecode/set/rel-op/post-compl-cvv$(OBJSUFFIX) gecode/set/rel-op/post-compl-cvv$(S ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/rel-op/post-nocompl-cvv$(OBJSUFFIX) gecode/set/rel-op/post-nocompl-cvv$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -7982,7 +7982,7 @@ gecode/set/rel-op/post-nocompl-cvv$(OBJSUFFIX) gecode/set/rel-op/post-nocompl-cv ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/rel-op/post-compl-vvc$(OBJSUFFIX) gecode/set/rel-op/post-compl-vvc$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -8062,7 +8062,7 @@ gecode/set/rel-op/post-compl-vvc$(OBJSUFFIX) gecode/set/rel-op/post-compl-vvc$(S ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/rel-op/post-nocompl-vvc$(OBJSUFFIX) gecode/set/rel-op/post-nocompl-vvc$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -8142,7 +8142,7 @@ gecode/set/rel-op/post-nocompl-vvc$(OBJSUFFIX) gecode/set/rel-op/post-nocompl-vv ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/rel-op/post-compl-cvc$(OBJSUFFIX) gecode/set/rel-op/post-compl-cvc$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -8222,7 +8222,7 @@ gecode/set/rel-op/post-compl-cvc$(OBJSUFFIX) gecode/set/rel-op/post-compl-cvc$(S ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/rel-op/post-nocompl-cvc$(OBJSUFFIX) gecode/set/rel-op/post-nocompl-cvc$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -8302,7 +8302,7 @@ gecode/set/rel-op/post-nocompl-cvc$(OBJSUFFIX) gecode/set/rel-op/post-nocompl-cv ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/rel-op-const-vvc$(OBJSUFFIX) gecode/set/rel-op-const-vvc$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -8382,7 +8382,7 @@ gecode/set/rel-op-const-vvc$(OBJSUFFIX) gecode/set/rel-op-const-vvc$(SBJSUFFIX): ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/rel-op-const-vcv$(OBJSUFFIX) gecode/set/rel-op-const-vcv$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -8462,7 +8462,7 @@ gecode/set/rel-op-const-vcv$(OBJSUFFIX) gecode/set/rel-op-const-vcv$(SBJSUFFIX): ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/rel-op-const-vcc$(OBJSUFFIX) gecode/set/rel-op-const-vcc$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -8542,7 +8542,7 @@ gecode/set/rel-op-const-vcc$(OBJSUFFIX) gecode/set/rel-op-const-vcc$(SBJSUFFIX): ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/rel-op-const-cvc$(OBJSUFFIX) gecode/set/rel-op-const-cvc$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -8622,7 +8622,7 @@ gecode/set/rel-op-const-cvc$(OBJSUFFIX) gecode/set/rel-op-const-cvc$(SBJSUFFIX): ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/rel-op-const-cvv$(OBJSUFFIX) gecode/set/rel-op-const-cvv$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -8702,7 +8702,7 @@ gecode/set/rel-op-const-cvv$(OBJSUFFIX) gecode/set/rel-op-const-cvv$(SBJSUFFIX): ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/int$(OBJSUFFIX) gecode/set/int$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -8780,7 +8780,7 @@ gecode/set/int$(OBJSUFFIX) gecode/set/int$(SBJSUFFIX): \ ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/set/channel$(OBJSUFFIX) gecode/set/channel$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -8859,7 +8859,7 @@ gecode/set/channel$(OBJSUFFIX) gecode/set/channel$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/bool$(OBJSUFFIX) gecode/set/bool$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -8933,7 +8933,7 @@ gecode/set/bool$(OBJSUFFIX) gecode/set/bool$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/element$(OBJSUFFIX) gecode/set/element$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -9018,7 +9018,7 @@ gecode/set/element$(OBJSUFFIX) gecode/set/element$(SBJSUFFIX): \ ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/set/sequence$(OBJSUFFIX) gecode/set/sequence$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -9097,7 +9097,7 @@ gecode/set/sequence$(OBJSUFFIX) gecode/set/sequence$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/distinct$(OBJSUFFIX) gecode/set/distinct$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -9171,7 +9171,7 @@ gecode/set/distinct$(OBJSUFFIX) gecode/set/distinct$(SBJSUFFIX): \ ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/set/distinct/atmostOne$(OBJSUFFIX) gecode/set/distinct/atmostOne$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -9245,7 +9245,7 @@ gecode/set/distinct/atmostOne$(OBJSUFFIX) gecode/set/distinct/atmostOne$(SBJSUFF ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/set/precede$(OBJSUFFIX) gecode/set/precede$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -9319,7 +9319,7 @@ gecode/set/precede$(OBJSUFFIX) gecode/set/precede$(SBJSUFFIX): \ ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/set/sequence/seq$(OBJSUFFIX) gecode/set/sequence/seq$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -9398,7 +9398,7 @@ gecode/set/sequence/seq$(OBJSUFFIX) gecode/set/sequence/seq$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/sequence/seq-u$(OBJSUFFIX) gecode/set/sequence/seq-u$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -9477,7 +9477,7 @@ gecode/set/sequence/seq-u$(OBJSUFFIX) gecode/set/sequence/seq-u$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/array$(OBJSUFFIX) gecode/set/array$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -9551,7 +9551,7 @@ gecode/set/array$(OBJSUFFIX) gecode/set/array$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/var-imp/set$(OBJSUFFIX) gecode/set/var-imp/set$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -9625,7 +9625,7 @@ gecode/set/var-imp/set$(OBJSUFFIX) gecode/set/var-imp/set$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/var-imp/integerset$(OBJSUFFIX) gecode/set/var-imp/integerset$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -9699,7 +9699,7 @@ gecode/set/var-imp/integerset$(OBJSUFFIX) gecode/set/var-imp/integerset$(SBJSUFF ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/var/set$(OBJSUFFIX) gecode/set/var/set$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -9773,7 +9773,7 @@ gecode/set/var/set$(OBJSUFFIX) gecode/set/var/set$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/exec$(OBJSUFFIX) gecode/set/exec$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -9847,7 +9847,7 @@ gecode/set/exec$(OBJSUFFIX) gecode/set/exec$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/branch/action$(OBJSUFFIX) gecode/set/branch/action$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -9921,7 +9921,7 @@ gecode/set/branch/action$(OBJSUFFIX) gecode/set/branch/action$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/branch/chb$(OBJSUFFIX) gecode/set/branch/chb$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -9995,7 +9995,7 @@ gecode/set/branch/chb$(OBJSUFFIX) gecode/set/branch/chb$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/branch/view-sel$(OBJSUFFIX) gecode/set/branch/view-sel$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -10070,7 +10070,7 @@ gecode/set/branch/view-sel$(OBJSUFFIX) gecode/set/branch/view-sel$(SBJSUFFIX): \ ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/set/branch/val-sel-commit$(OBJSUFFIX) gecode/set/branch/val-sel-commit$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -10145,7 +10145,7 @@ gecode/set/branch/val-sel-commit$(OBJSUFFIX) gecode/set/branch/val-sel-commit$(S ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/set/branch/ngl$(OBJSUFFIX) gecode/set/branch/ngl$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -10220,7 +10220,7 @@ gecode/set/branch/ngl$(OBJSUFFIX) gecode/set/branch/ngl$(SBJSUFFIX): \ ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/set/ldsb$(OBJSUFFIX) gecode/set/ldsb$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -10297,7 +10297,7 @@ gecode/set/ldsb$(OBJSUFFIX) gecode/set/ldsb$(SBJSUFFIX): \ ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/set/ldsb/sym-imp$(OBJSUFFIX) gecode/set/ldsb/sym-imp$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -10372,7 +10372,7 @@ gecode/set/ldsb/sym-imp$(OBJSUFFIX) gecode/set/ldsb/sym-imp$(SBJSUFFIX): \ ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/set/relax$(OBJSUFFIX) gecode/set/relax$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -10446,7 +10446,7 @@ gecode/set/relax$(OBJSUFFIX) gecode/set/relax$(SBJSUFFIX): \ ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp gecode/set/trace$(OBJSUFFIX) gecode/set/trace$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -10520,7 +10520,7 @@ gecode/set/trace$(OBJSUFFIX) gecode/set/trace$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/trace/tracer$(OBJSUFFIX) gecode/set/trace/tracer$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -10594,7 +10594,7 @@ gecode/set/trace/tracer$(OBJSUFFIX) gecode/set/trace/tracer$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp gecode/set/exception$(OBJSUFFIX) gecode/set/exception$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -10679,7 +10679,7 @@ gecode/minimodel/int-expr$(OBJSUFFIX) gecode/minimodel/int-expr$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/bool.hh ./gecode/int/bool/base.hpp \ ./gecode/int/bool/clause.hpp ./gecode/int/bool/eq.hpp ./gecode/int/bool/eqv.hpp \ ./gecode/int/bool/ite.hpp ./gecode/int/bool/lq.hpp ./gecode/int/bool/or.hpp \ @@ -10777,7 +10777,7 @@ gecode/minimodel/int-rel$(OBJSUFFIX) gecode/minimodel/int-rel$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -10867,7 +10867,7 @@ gecode/minimodel/int-arith$(OBJSUFFIX) gecode/minimodel/int-arith$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -10957,7 +10957,7 @@ gecode/minimodel/bool-expr$(OBJSUFFIX) gecode/minimodel/bool-expr$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -11047,7 +11047,7 @@ gecode/minimodel/set-expr$(OBJSUFFIX) gecode/minimodel/set-expr$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -11137,7 +11137,7 @@ gecode/minimodel/set-rel$(OBJSUFFIX) gecode/minimodel/set-rel$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -11227,7 +11227,7 @@ gecode/minimodel/dom$(OBJSUFFIX) gecode/minimodel/dom$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -11318,7 +11318,7 @@ gecode/minimodel/float-expr$(OBJSUFFIX) gecode/minimodel/float-expr$(SBJSUFFIX): ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -11408,7 +11408,7 @@ gecode/minimodel/float-rel$(OBJSUFFIX) gecode/minimodel/float-rel$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -11498,7 +11498,7 @@ gecode/minimodel/float-arith$(OBJSUFFIX) gecode/minimodel/float-arith$(SBJSUFFIX ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -11588,7 +11588,7 @@ gecode/minimodel/reg$(OBJSUFFIX) gecode/minimodel/reg$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -11678,7 +11678,7 @@ gecode/minimodel/optimize$(OBJSUFFIX) gecode/minimodel/optimize$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -11768,7 +11768,7 @@ gecode/minimodel/exception$(OBJSUFFIX) gecode/minimodel/exception$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -11858,7 +11858,7 @@ gecode/minimodel/ipl$(OBJSUFFIX) gecode/minimodel/ipl$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -11950,7 +11950,7 @@ gecode/driver/options$(OBJSUFFIX) gecode/driver/options$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -12042,7 +12042,7 @@ gecode/driver/script$(OBJSUFFIX) gecode/driver/script$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -12134,7 +12134,7 @@ examples/alpha$(OBJSUFFIX) examples/alpha$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -12226,7 +12226,7 @@ examples/bacp$(OBJSUFFIX) examples/bacp$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hh ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/cbs.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/merit.hpp ./gecode/int/branch/ngl.hpp \ @@ -12320,7 +12320,7 @@ examples/bibd$(OBJSUFFIX) examples/bibd$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -12412,7 +12412,7 @@ examples/donald$(OBJSUFFIX) examples/donald$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -12504,7 +12504,7 @@ examples/efpa$(OBJSUFFIX) examples/efpa$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -12596,7 +12596,7 @@ examples/eq20$(OBJSUFFIX) examples/eq20$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -12688,7 +12688,7 @@ examples/golomb-ruler$(OBJSUFFIX) examples/golomb-ruler$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -12780,7 +12780,7 @@ examples/graph-color$(OBJSUFFIX) examples/graph-color$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -12872,7 +12872,7 @@ examples/grocery$(OBJSUFFIX) examples/grocery$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -12964,7 +12964,7 @@ examples/ind-set$(OBJSUFFIX) examples/ind-set$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -13056,7 +13056,7 @@ examples/magic-sequence$(OBJSUFFIX) examples/magic-sequence$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -13148,7 +13148,7 @@ examples/magic-square$(OBJSUFFIX) examples/magic-square$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -13240,7 +13240,7 @@ examples/money$(OBJSUFFIX) examples/money$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -13332,7 +13332,7 @@ examples/ortho-latin$(OBJSUFFIX) examples/ortho-latin$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -13424,7 +13424,7 @@ examples/partition$(OBJSUFFIX) examples/partition$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -13516,7 +13516,7 @@ examples/photo$(OBJSUFFIX) examples/photo$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -13608,7 +13608,7 @@ examples/queens$(OBJSUFFIX) examples/queens$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -13700,7 +13700,7 @@ examples/sudoku$(OBJSUFFIX) examples/sudoku$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -13792,7 +13792,7 @@ examples/sudoku-advanced$(OBJSUFFIX) examples/sudoku-advanced$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -13884,7 +13884,7 @@ examples/kakuro$(OBJSUFFIX) examples/kakuro$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -13976,7 +13976,7 @@ examples/nonogram$(OBJSUFFIX) examples/nonogram$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -14068,7 +14068,7 @@ examples/pentominoes$(OBJSUFFIX) examples/pentominoes$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -14160,7 +14160,7 @@ examples/crowded-chess$(OBJSUFFIX) examples/crowded-chess$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -14252,7 +14252,7 @@ examples/black-hole$(OBJSUFFIX) examples/black-hole$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -14344,7 +14344,7 @@ examples/minesweeper$(OBJSUFFIX) examples/minesweeper$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -14436,7 +14436,7 @@ examples/domino$(OBJSUFFIX) examples/domino$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -14528,7 +14528,7 @@ examples/steel-mill$(OBJSUFFIX) examples/steel-mill$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -14620,7 +14620,7 @@ examples/sports-league$(OBJSUFFIX) examples/sports-league$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -14712,7 +14712,7 @@ examples/all-interval$(OBJSUFFIX) examples/all-interval$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -14804,7 +14804,7 @@ examples/langford-number$(OBJSUFFIX) examples/langford-number$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -14896,7 +14896,7 @@ examples/warehouses$(OBJSUFFIX) examples/warehouses$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -14988,7 +14988,7 @@ examples/radiotherapy$(OBJSUFFIX) examples/radiotherapy$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -15080,7 +15080,7 @@ examples/word-square$(OBJSUFFIX) examples/word-square$(SBJSUFFIX): \ ./gecode/float/var/print.hpp ./gecode/float/view.hpp ./gecode/float/view/float.hpp \ ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp \ ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp ./gecode/gist.hh \ - ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -15172,7 +15172,7 @@ examples/crossword$(OBJSUFFIX) examples/crossword$(SBJSUFFIX): \ ./gecode/float/var/print.hpp ./gecode/float/view.hpp ./gecode/float/view/float.hpp \ ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp \ ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp ./gecode/gist.hh \ - ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -15250,7 +15250,7 @@ examples/crossword$(OBJSUFFIX) examples/crossword$(SBJSUFFIX): \ ./gecode/support/marked-pointer.hpp ./gecode/support/random.hpp ./gecode/support/ref-count.hpp \ ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp -examples/open-shop$(OBJSUFFIX) examples/open-shop$(SBJSUFFIX): \ +examples/common-pattern$(OBJSUFFIX) examples/common-pattern$(SBJSUFFIX): \ ./gecode/driver.hh ./gecode/driver/options.hpp ./gecode/driver/script.hpp \ ./gecode/float.hh ./gecode/float/array-traits.hpp ./gecode/float/array.hpp \ ./gecode/float/branch.hpp ./gecode/float/branch/action.hpp ./gecode/float/branch/afc.hpp \ @@ -15271,6 +15271,286 @@ examples/open-shop$(OBJSUFFIX) examples/open-shop$(SBJSUFFIX): \ ./gecode/int/div.hh ./gecode/int/div.hpp ./gecode/int/exception.hpp \ ./gecode/int/extensional.hpp ./gecode/int/extensional/dfa.hpp ./gecode/int/extensional/tuple-set.hpp \ ./gecode/int/int-set-1.hpp ./gecode/int/int-set-2.hpp ./gecode/int/ipl.hpp \ + ./gecode/int/irt.hpp ./gecode/int/limits.hpp ./gecode/int/min-distance.hpp \ + ./gecode/int/open-var-list.hpp ./gecode/int/propagator.hpp ./gecode/int/reify.hpp \ + ./gecode/int/trace.hpp ./gecode/int/trace/bool-delta.hpp ./gecode/int/trace/bool-trace-view.hpp \ + ./gecode/int/trace/int-delta.hpp ./gecode/int/trace/int-trace-view.hpp ./gecode/int/trace/traits.hpp \ + ./gecode/int/var-imp.hpp ./gecode/int/var-imp/bool.hpp ./gecode/int/var-imp/delta.hpp \ + ./gecode/int/var-imp/int.hpp ./gecode/int/var/bool.hpp ./gecode/int/var/int.hpp \ + ./gecode/int/var/print.hpp ./gecode/int/view.hpp ./gecode/int/view/bool-test.hpp \ + ./gecode/int/view/bool.hpp ./gecode/int/view/cached.hpp ./gecode/int/view/constint.hpp \ + ./gecode/int/view/int.hpp ./gecode/int/view/iter.hpp ./gecode/int/view/minus.hpp \ + ./gecode/int/view/neg-bool.hpp ./gecode/int/view/offset.hpp ./gecode/int/view/print.hpp \ + ./gecode/int/view/rel-test.hpp ./gecode/int/view/scale.hpp ./gecode/int/view/zero.hpp \ + ./gecode/iter.hh ./gecode/iter/ranges-add.hpp ./gecode/iter/ranges-append.hpp \ + ./gecode/iter/ranges-array.hpp ./gecode/iter/ranges-cache.hpp ./gecode/iter/ranges-compl.hpp \ + ./gecode/iter/ranges-diff.hpp ./gecode/iter/ranges-empty.hpp ./gecode/iter/ranges-inter.hpp \ + ./gecode/iter/ranges-list.hpp ./gecode/iter/ranges-map.hpp ./gecode/iter/ranges-minmax.hpp \ + ./gecode/iter/ranges-minus.hpp ./gecode/iter/ranges-negative.hpp ./gecode/iter/ranges-offset.hpp \ + ./gecode/iter/ranges-operations.hpp ./gecode/iter/ranges-positive.hpp ./gecode/iter/ranges-rangelist.hpp \ + ./gecode/iter/ranges-scale.hpp ./gecode/iter/ranges-singleton-append.hpp ./gecode/iter/ranges-singleton.hpp \ + ./gecode/iter/ranges-size.hpp ./gecode/iter/ranges-union.hpp ./gecode/iter/ranges-values.hpp \ + ./gecode/iter/values-array.hpp ./gecode/iter/values-bitset.hpp ./gecode/iter/values-bitsetoffset.hpp \ + ./gecode/iter/values-inter.hpp ./gecode/iter/values-list.hpp ./gecode/iter/values-map.hpp \ + ./gecode/iter/values-minus.hpp ./gecode/iter/values-negative.hpp ./gecode/iter/values-offset.hpp \ + ./gecode/iter/values-positive.hpp ./gecode/iter/values-ranges.hpp ./gecode/iter/values-singleton.hpp \ + ./gecode/iter/values-union.hpp ./gecode/iter/values-unique.hpp ./gecode/kernel.hh \ + ./gecode/kernel/archive.hpp ./gecode/kernel/branch/action.hpp ./gecode/kernel/branch/afc.hpp \ + ./gecode/kernel/branch/chb.hpp ./gecode/kernel/branch/filter.hpp ./gecode/kernel/branch/merit.hpp \ + ./gecode/kernel/branch/print.hpp ./gecode/kernel/branch/tiebreak.hpp ./gecode/kernel/branch/traits.hpp \ + ./gecode/kernel/branch/val-commit.hpp ./gecode/kernel/branch/val-sel-commit.hpp ./gecode/kernel/branch/val-sel.hpp \ + ./gecode/kernel/branch/val.hpp ./gecode/kernel/branch/var.hpp ./gecode/kernel/branch/view-sel.hpp \ + ./gecode/kernel/branch/view-val.hpp ./gecode/kernel/branch/view.hpp ./gecode/kernel/core.hpp \ + ./gecode/kernel/data/array.hpp ./gecode/kernel/data/rnd.hpp ./gecode/kernel/data/shared-array.hpp \ + ./gecode/kernel/data/shared-data.hpp ./gecode/kernel/exception.hpp ./gecode/kernel/gpi.hpp \ + ./gecode/kernel/macros.hpp ./gecode/kernel/memory/allocators.hpp ./gecode/kernel/memory/config.hpp \ + ./gecode/kernel/memory/manager.hpp ./gecode/kernel/memory/region.hpp ./gecode/kernel/modevent.hpp \ + ./gecode/kernel/propagator/advisor.hpp ./gecode/kernel/propagator/pattern.hpp ./gecode/kernel/propagator/subscribed.hpp \ + ./gecode/kernel/propagator/wait.hpp ./gecode/kernel/range-list.hpp ./gecode/kernel/shared-object.hpp \ + ./gecode/kernel/shared-space-data.hpp ./gecode/kernel/trace/filter.hpp ./gecode/kernel/trace/general.hpp \ + ./gecode/kernel/trace/print.hpp ./gecode/kernel/trace/recorder.hpp ./gecode/kernel/trace/tracer.hpp \ + ./gecode/kernel/trace/traits.hpp ./gecode/kernel/var-imp.hpp ./gecode/kernel/var-type.hpp \ + ./gecode/kernel/var.hpp ./gecode/kernel/view.hpp ./gecode/minimodel.hh \ + ./gecode/minimodel/aliases.hpp ./gecode/minimodel/bool-expr.hpp ./gecode/minimodel/channel.hpp \ + ./gecode/minimodel/exception.hpp ./gecode/minimodel/float-expr.hpp ./gecode/minimodel/float-rel.hpp \ + ./gecode/minimodel/int-expr.hpp ./gecode/minimodel/int-rel.hpp ./gecode/minimodel/ipl.hpp \ + ./gecode/minimodel/ldsb.hpp ./gecode/minimodel/matrix.hpp ./gecode/minimodel/optimize.hpp \ + ./gecode/minimodel/reg.hpp ./gecode/minimodel/set-expr.hpp ./gecode/minimodel/set-rel.hpp \ + ./gecode/search.hh ./gecode/search/bab.hpp ./gecode/search/base.hpp \ + ./gecode/search/build.hpp ./gecode/search/cutoff.hpp ./gecode/search/dfs.hpp \ + ./gecode/search/engine.hpp ./gecode/search/exception.hpp ./gecode/search/lds.hpp \ + ./gecode/search/options.hpp ./gecode/search/pbs.hpp ./gecode/search/rbs.hpp \ + ./gecode/search/sebs.hpp ./gecode/search/seq/dead.hh ./gecode/search/statistics.hpp \ + ./gecode/search/stop.hpp ./gecode/search/support.hh ./gecode/search/trace-recorder.hpp \ + ./gecode/search/tracer.hpp ./gecode/search/traits.hpp ./gecode/search/worker-control.hh \ + ./gecode/set.hh ./gecode/set/array-traits.hpp ./gecode/set/array.hpp \ + ./gecode/set/branch.hpp ./gecode/set/branch/action.hpp ./gecode/set/branch/afc.hpp \ + ./gecode/set/branch/assign.hpp ./gecode/set/branch/chb.hpp ./gecode/set/branch/traits.hpp \ + ./gecode/set/branch/val.hpp ./gecode/set/branch/var.hpp ./gecode/set/exception.hpp \ + ./gecode/set/int.hpp ./gecode/set/limits.hpp ./gecode/set/trace.hpp \ + ./gecode/set/trace/delta.hpp ./gecode/set/trace/trace-view.hpp ./gecode/set/trace/traits.hpp \ + ./gecode/set/var-imp.hpp ./gecode/set/var-imp/delta.hpp ./gecode/set/var-imp/integerset.hpp \ + ./gecode/set/var-imp/iter.hpp ./gecode/set/var-imp/set.hpp ./gecode/set/var/print.hpp \ + ./gecode/set/var/set.hpp ./gecode/set/view.hpp ./gecode/set/view/cached.hpp \ + ./gecode/set/view/complement.hpp ./gecode/set/view/const.hpp ./gecode/set/view/print.hpp \ + ./gecode/set/view/set.hpp ./gecode/set/view/singleton.hpp ./gecode/support.hh \ + ./gecode/support/allocator.hpp ./gecode/support/auto-link.hpp ./gecode/support/bitset-base.hpp \ + ./gecode/support/bitset-offset.hpp ./gecode/support/bitset.hpp ./gecode/support/block-allocator.hpp \ + ./gecode/support/cast.hpp ./gecode/support/config.hpp ./gecode/support/dynamic-array.hpp \ + ./gecode/support/dynamic-queue.hpp ./gecode/support/dynamic-stack.hpp ./gecode/support/exception.hpp \ + ./gecode/support/failpoint.hpp ./gecode/support/hash.hpp ./gecode/support/heap.hpp \ + ./gecode/support/hw-rnd.hpp ./gecode/support/int-type.hpp ./gecode/support/macros.hpp \ + ./gecode/support/marked-pointer.hpp ./gecode/support/random.hpp ./gecode/support/ref-count.hpp \ + ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ + ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp \ + ./examples/common-pattern.hh +examples/fifteen-puzzle$(OBJSUFFIX) examples/fifteen-puzzle$(SBJSUFFIX): \ + ./gecode/driver.hh ./gecode/driver/options.hpp ./gecode/driver/script.hpp \ + ./gecode/float.hh ./gecode/float/array-traits.hpp ./gecode/float/array.hpp \ + ./gecode/float/branch.hpp ./gecode/float/branch/action.hpp ./gecode/float/branch/afc.hpp \ + ./gecode/float/branch/assign.hpp ./gecode/float/branch/chb.hpp ./gecode/float/branch/traits.hpp \ + ./gecode/float/branch/val.hpp ./gecode/float/branch/var.hpp ./gecode/float/channel.hpp \ + ./gecode/float/exception.hpp ./gecode/float/limits.hpp ./gecode/float/nextafter.hpp \ + ./gecode/float/num.hpp ./gecode/float/rounding.hpp ./gecode/float/trace.hpp \ + ./gecode/float/trace/delta.hpp ./gecode/float/trace/trace-view.hpp ./gecode/float/trace/traits.hpp \ + ./gecode/float/val.hpp ./gecode/float/var-imp.hpp ./gecode/float/var-imp/delta.hpp \ + ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ + ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ + ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ + ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ + ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ + ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ + ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ + ./gecode/int/div.hh ./gecode/int/div.hpp ./gecode/int/exception.hpp \ + ./gecode/int/extensional.hpp ./gecode/int/extensional/dfa.hpp ./gecode/int/extensional/tuple-set.hpp \ + ./gecode/int/int-set-1.hpp ./gecode/int/int-set-2.hpp ./gecode/int/ipl.hpp \ + ./gecode/int/irt.hpp ./gecode/int/limits.hpp ./gecode/int/min-distance.hpp \ + ./gecode/int/open-var-list.hpp ./gecode/int/propagator.hpp ./gecode/int/reify.hpp \ + ./gecode/int/trace.hpp ./gecode/int/trace/bool-delta.hpp ./gecode/int/trace/bool-trace-view.hpp \ + ./gecode/int/trace/int-delta.hpp ./gecode/int/trace/int-trace-view.hpp ./gecode/int/trace/traits.hpp \ + ./gecode/int/var-imp.hpp ./gecode/int/var-imp/bool.hpp ./gecode/int/var-imp/delta.hpp \ + ./gecode/int/var-imp/int.hpp ./gecode/int/var/bool.hpp ./gecode/int/var/int.hpp \ + ./gecode/int/var/print.hpp ./gecode/int/view.hpp ./gecode/int/view/bool-test.hpp \ + ./gecode/int/view/bool.hpp ./gecode/int/view/cached.hpp ./gecode/int/view/constint.hpp \ + ./gecode/int/view/int.hpp ./gecode/int/view/iter.hpp ./gecode/int/view/minus.hpp \ + ./gecode/int/view/neg-bool.hpp ./gecode/int/view/offset.hpp ./gecode/int/view/print.hpp \ + ./gecode/int/view/rel-test.hpp ./gecode/int/view/scale.hpp ./gecode/int/view/zero.hpp \ + ./gecode/iter.hh ./gecode/iter/ranges-add.hpp ./gecode/iter/ranges-append.hpp \ + ./gecode/iter/ranges-array.hpp ./gecode/iter/ranges-cache.hpp ./gecode/iter/ranges-compl.hpp \ + ./gecode/iter/ranges-diff.hpp ./gecode/iter/ranges-empty.hpp ./gecode/iter/ranges-inter.hpp \ + ./gecode/iter/ranges-list.hpp ./gecode/iter/ranges-map.hpp ./gecode/iter/ranges-minmax.hpp \ + ./gecode/iter/ranges-minus.hpp ./gecode/iter/ranges-negative.hpp ./gecode/iter/ranges-offset.hpp \ + ./gecode/iter/ranges-operations.hpp ./gecode/iter/ranges-positive.hpp ./gecode/iter/ranges-rangelist.hpp \ + ./gecode/iter/ranges-scale.hpp ./gecode/iter/ranges-singleton-append.hpp ./gecode/iter/ranges-singleton.hpp \ + ./gecode/iter/ranges-size.hpp ./gecode/iter/ranges-union.hpp ./gecode/iter/ranges-values.hpp \ + ./gecode/iter/values-array.hpp ./gecode/iter/values-bitset.hpp ./gecode/iter/values-bitsetoffset.hpp \ + ./gecode/iter/values-inter.hpp ./gecode/iter/values-list.hpp ./gecode/iter/values-map.hpp \ + ./gecode/iter/values-minus.hpp ./gecode/iter/values-negative.hpp ./gecode/iter/values-offset.hpp \ + ./gecode/iter/values-positive.hpp ./gecode/iter/values-ranges.hpp ./gecode/iter/values-singleton.hpp \ + ./gecode/iter/values-union.hpp ./gecode/iter/values-unique.hpp ./gecode/kernel.hh \ + ./gecode/kernel/archive.hpp ./gecode/kernel/branch/action.hpp ./gecode/kernel/branch/afc.hpp \ + ./gecode/kernel/branch/chb.hpp ./gecode/kernel/branch/filter.hpp ./gecode/kernel/branch/merit.hpp \ + ./gecode/kernel/branch/print.hpp ./gecode/kernel/branch/tiebreak.hpp ./gecode/kernel/branch/traits.hpp \ + ./gecode/kernel/branch/val-commit.hpp ./gecode/kernel/branch/val-sel-commit.hpp ./gecode/kernel/branch/val-sel.hpp \ + ./gecode/kernel/branch/val.hpp ./gecode/kernel/branch/var.hpp ./gecode/kernel/branch/view-sel.hpp \ + ./gecode/kernel/branch/view-val.hpp ./gecode/kernel/branch/view.hpp ./gecode/kernel/core.hpp \ + ./gecode/kernel/data/array.hpp ./gecode/kernel/data/rnd.hpp ./gecode/kernel/data/shared-array.hpp \ + ./gecode/kernel/data/shared-data.hpp ./gecode/kernel/exception.hpp ./gecode/kernel/gpi.hpp \ + ./gecode/kernel/macros.hpp ./gecode/kernel/memory/allocators.hpp ./gecode/kernel/memory/config.hpp \ + ./gecode/kernel/memory/manager.hpp ./gecode/kernel/memory/region.hpp ./gecode/kernel/modevent.hpp \ + ./gecode/kernel/propagator/advisor.hpp ./gecode/kernel/propagator/pattern.hpp ./gecode/kernel/propagator/subscribed.hpp \ + ./gecode/kernel/propagator/wait.hpp ./gecode/kernel/range-list.hpp ./gecode/kernel/shared-object.hpp \ + ./gecode/kernel/shared-space-data.hpp ./gecode/kernel/trace/filter.hpp ./gecode/kernel/trace/general.hpp \ + ./gecode/kernel/trace/print.hpp ./gecode/kernel/trace/recorder.hpp ./gecode/kernel/trace/tracer.hpp \ + ./gecode/kernel/trace/traits.hpp ./gecode/kernel/var-imp.hpp ./gecode/kernel/var-type.hpp \ + ./gecode/kernel/var.hpp ./gecode/kernel/view.hpp ./gecode/minimodel.hh \ + ./gecode/minimodel/aliases.hpp ./gecode/minimodel/bool-expr.hpp ./gecode/minimodel/channel.hpp \ + ./gecode/minimodel/exception.hpp ./gecode/minimodel/float-expr.hpp ./gecode/minimodel/float-rel.hpp \ + ./gecode/minimodel/int-expr.hpp ./gecode/minimodel/int-rel.hpp ./gecode/minimodel/ipl.hpp \ + ./gecode/minimodel/ldsb.hpp ./gecode/minimodel/matrix.hpp ./gecode/minimodel/optimize.hpp \ + ./gecode/minimodel/reg.hpp ./gecode/minimodel/set-expr.hpp ./gecode/minimodel/set-rel.hpp \ + ./gecode/search.hh ./gecode/search/bab.hpp ./gecode/search/base.hpp \ + ./gecode/search/build.hpp ./gecode/search/cutoff.hpp ./gecode/search/dfs.hpp \ + ./gecode/search/engine.hpp ./gecode/search/exception.hpp ./gecode/search/lds.hpp \ + ./gecode/search/options.hpp ./gecode/search/pbs.hpp ./gecode/search/rbs.hpp \ + ./gecode/search/sebs.hpp ./gecode/search/seq/dead.hh ./gecode/search/statistics.hpp \ + ./gecode/search/stop.hpp ./gecode/search/support.hh ./gecode/search/trace-recorder.hpp \ + ./gecode/search/tracer.hpp ./gecode/search/traits.hpp ./gecode/search/worker-control.hh \ + ./gecode/set.hh ./gecode/set/array-traits.hpp ./gecode/set/array.hpp \ + ./gecode/set/branch.hpp ./gecode/set/branch/action.hpp ./gecode/set/branch/afc.hpp \ + ./gecode/set/branch/assign.hpp ./gecode/set/branch/chb.hpp ./gecode/set/branch/traits.hpp \ + ./gecode/set/branch/val.hpp ./gecode/set/branch/var.hpp ./gecode/set/exception.hpp \ + ./gecode/set/int.hpp ./gecode/set/limits.hpp ./gecode/set/trace.hpp \ + ./gecode/set/trace/delta.hpp ./gecode/set/trace/trace-view.hpp ./gecode/set/trace/traits.hpp \ + ./gecode/set/var-imp.hpp ./gecode/set/var-imp/delta.hpp ./gecode/set/var-imp/integerset.hpp \ + ./gecode/set/var-imp/iter.hpp ./gecode/set/var-imp/set.hpp ./gecode/set/var/print.hpp \ + ./gecode/set/var/set.hpp ./gecode/set/view.hpp ./gecode/set/view/cached.hpp \ + ./gecode/set/view/complement.hpp ./gecode/set/view/const.hpp ./gecode/set/view/print.hpp \ + ./gecode/set/view/set.hpp ./gecode/set/view/singleton.hpp ./gecode/support.hh \ + ./gecode/support/allocator.hpp ./gecode/support/auto-link.hpp ./gecode/support/bitset-base.hpp \ + ./gecode/support/bitset-offset.hpp ./gecode/support/bitset.hpp ./gecode/support/block-allocator.hpp \ + ./gecode/support/cast.hpp ./gecode/support/config.hpp ./gecode/support/dynamic-array.hpp \ + ./gecode/support/dynamic-queue.hpp ./gecode/support/dynamic-stack.hpp ./gecode/support/exception.hpp \ + ./gecode/support/failpoint.hpp ./gecode/support/hash.hpp ./gecode/support/heap.hpp \ + ./gecode/support/hw-rnd.hpp ./gecode/support/int-type.hpp ./gecode/support/macros.hpp \ + ./gecode/support/marked-pointer.hpp ./gecode/support/random.hpp ./gecode/support/ref-count.hpp \ + ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ + ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp +examples/open-route$(OBJSUFFIX) examples/open-route$(SBJSUFFIX): \ + ./gecode/driver.hh ./gecode/driver/options.hpp ./gecode/driver/script.hpp \ + ./gecode/float.hh ./gecode/float/array-traits.hpp ./gecode/float/array.hpp \ + ./gecode/float/branch.hpp ./gecode/float/branch/action.hpp ./gecode/float/branch/afc.hpp \ + ./gecode/float/branch/assign.hpp ./gecode/float/branch/chb.hpp ./gecode/float/branch/traits.hpp \ + ./gecode/float/branch/val.hpp ./gecode/float/branch/var.hpp ./gecode/float/channel.hpp \ + ./gecode/float/exception.hpp ./gecode/float/limits.hpp ./gecode/float/nextafter.hpp \ + ./gecode/float/num.hpp ./gecode/float/rounding.hpp ./gecode/float/trace.hpp \ + ./gecode/float/trace/delta.hpp ./gecode/float/trace/trace-view.hpp ./gecode/float/trace/traits.hpp \ + ./gecode/float/val.hpp ./gecode/float/var-imp.hpp ./gecode/float/var-imp/delta.hpp \ + ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ + ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ + ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ + ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ + ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ + ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ + ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ + ./gecode/int/div.hh ./gecode/int/div.hpp ./gecode/int/exception.hpp \ + ./gecode/int/extensional.hpp ./gecode/int/extensional/dfa.hpp ./gecode/int/extensional/tuple-set.hpp \ + ./gecode/int/int-set-1.hpp ./gecode/int/int-set-2.hpp ./gecode/int/ipl.hpp \ + ./gecode/int/irt.hpp ./gecode/int/limits.hpp ./gecode/int/min-distance.hpp \ + ./gecode/int/open-var-list.hpp ./gecode/int/propagator.hpp ./gecode/int/reify.hpp \ + ./gecode/int/trace.hpp ./gecode/int/trace/bool-delta.hpp ./gecode/int/trace/bool-trace-view.hpp \ + ./gecode/int/trace/int-delta.hpp ./gecode/int/trace/int-trace-view.hpp ./gecode/int/trace/traits.hpp \ + ./gecode/int/var-imp.hpp ./gecode/int/var-imp/bool.hpp ./gecode/int/var-imp/delta.hpp \ + ./gecode/int/var-imp/int.hpp ./gecode/int/var/bool.hpp ./gecode/int/var/int.hpp \ + ./gecode/int/var/print.hpp ./gecode/int/view.hpp ./gecode/int/view/bool-test.hpp \ + ./gecode/int/view/bool.hpp ./gecode/int/view/cached.hpp ./gecode/int/view/constint.hpp \ + ./gecode/int/view/int.hpp ./gecode/int/view/iter.hpp ./gecode/int/view/minus.hpp \ + ./gecode/int/view/neg-bool.hpp ./gecode/int/view/offset.hpp ./gecode/int/view/print.hpp \ + ./gecode/int/view/rel-test.hpp ./gecode/int/view/scale.hpp ./gecode/int/view/zero.hpp \ + ./gecode/iter.hh ./gecode/iter/ranges-add.hpp ./gecode/iter/ranges-append.hpp \ + ./gecode/iter/ranges-array.hpp ./gecode/iter/ranges-cache.hpp ./gecode/iter/ranges-compl.hpp \ + ./gecode/iter/ranges-diff.hpp ./gecode/iter/ranges-empty.hpp ./gecode/iter/ranges-inter.hpp \ + ./gecode/iter/ranges-list.hpp ./gecode/iter/ranges-map.hpp ./gecode/iter/ranges-minmax.hpp \ + ./gecode/iter/ranges-minus.hpp ./gecode/iter/ranges-negative.hpp ./gecode/iter/ranges-offset.hpp \ + ./gecode/iter/ranges-operations.hpp ./gecode/iter/ranges-positive.hpp ./gecode/iter/ranges-rangelist.hpp \ + ./gecode/iter/ranges-scale.hpp ./gecode/iter/ranges-singleton-append.hpp ./gecode/iter/ranges-singleton.hpp \ + ./gecode/iter/ranges-size.hpp ./gecode/iter/ranges-union.hpp ./gecode/iter/ranges-values.hpp \ + ./gecode/iter/values-array.hpp ./gecode/iter/values-bitset.hpp ./gecode/iter/values-bitsetoffset.hpp \ + ./gecode/iter/values-inter.hpp ./gecode/iter/values-list.hpp ./gecode/iter/values-map.hpp \ + ./gecode/iter/values-minus.hpp ./gecode/iter/values-negative.hpp ./gecode/iter/values-offset.hpp \ + ./gecode/iter/values-positive.hpp ./gecode/iter/values-ranges.hpp ./gecode/iter/values-singleton.hpp \ + ./gecode/iter/values-union.hpp ./gecode/iter/values-unique.hpp ./gecode/kernel.hh \ + ./gecode/kernel/archive.hpp ./gecode/kernel/branch/action.hpp ./gecode/kernel/branch/afc.hpp \ + ./gecode/kernel/branch/chb.hpp ./gecode/kernel/branch/filter.hpp ./gecode/kernel/branch/merit.hpp \ + ./gecode/kernel/branch/print.hpp ./gecode/kernel/branch/tiebreak.hpp ./gecode/kernel/branch/traits.hpp \ + ./gecode/kernel/branch/val-commit.hpp ./gecode/kernel/branch/val-sel-commit.hpp ./gecode/kernel/branch/val-sel.hpp \ + ./gecode/kernel/branch/val.hpp ./gecode/kernel/branch/var.hpp ./gecode/kernel/branch/view-sel.hpp \ + ./gecode/kernel/branch/view-val.hpp ./gecode/kernel/branch/view.hpp ./gecode/kernel/core.hpp \ + ./gecode/kernel/data/array.hpp ./gecode/kernel/data/rnd.hpp ./gecode/kernel/data/shared-array.hpp \ + ./gecode/kernel/data/shared-data.hpp ./gecode/kernel/exception.hpp ./gecode/kernel/gpi.hpp \ + ./gecode/kernel/macros.hpp ./gecode/kernel/memory/allocators.hpp ./gecode/kernel/memory/config.hpp \ + ./gecode/kernel/memory/manager.hpp ./gecode/kernel/memory/region.hpp ./gecode/kernel/modevent.hpp \ + ./gecode/kernel/propagator/advisor.hpp ./gecode/kernel/propagator/pattern.hpp ./gecode/kernel/propagator/subscribed.hpp \ + ./gecode/kernel/propagator/wait.hpp ./gecode/kernel/range-list.hpp ./gecode/kernel/shared-object.hpp \ + ./gecode/kernel/shared-space-data.hpp ./gecode/kernel/trace/filter.hpp ./gecode/kernel/trace/general.hpp \ + ./gecode/kernel/trace/print.hpp ./gecode/kernel/trace/recorder.hpp ./gecode/kernel/trace/tracer.hpp \ + ./gecode/kernel/trace/traits.hpp ./gecode/kernel/var-imp.hpp ./gecode/kernel/var-type.hpp \ + ./gecode/kernel/var.hpp ./gecode/kernel/view.hpp ./gecode/minimodel.hh \ + ./gecode/minimodel/aliases.hpp ./gecode/minimodel/bool-expr.hpp ./gecode/minimodel/channel.hpp \ + ./gecode/minimodel/exception.hpp ./gecode/minimodel/float-expr.hpp ./gecode/minimodel/float-rel.hpp \ + ./gecode/minimodel/int-expr.hpp ./gecode/minimodel/int-rel.hpp ./gecode/minimodel/ipl.hpp \ + ./gecode/minimodel/ldsb.hpp ./gecode/minimodel/matrix.hpp ./gecode/minimodel/optimize.hpp \ + ./gecode/minimodel/reg.hpp ./gecode/minimodel/set-expr.hpp ./gecode/minimodel/set-rel.hpp \ + ./gecode/search.hh ./gecode/search/bab.hpp ./gecode/search/base.hpp \ + ./gecode/search/build.hpp ./gecode/search/cutoff.hpp ./gecode/search/dfs.hpp \ + ./gecode/search/engine.hpp ./gecode/search/exception.hpp ./gecode/search/lds.hpp \ + ./gecode/search/options.hpp ./gecode/search/pbs.hpp ./gecode/search/rbs.hpp \ + ./gecode/search/sebs.hpp ./gecode/search/seq/dead.hh ./gecode/search/statistics.hpp \ + ./gecode/search/stop.hpp ./gecode/search/support.hh ./gecode/search/trace-recorder.hpp \ + ./gecode/search/tracer.hpp ./gecode/search/traits.hpp ./gecode/search/worker-control.hh \ + ./gecode/set.hh ./gecode/set/array-traits.hpp ./gecode/set/array.hpp \ + ./gecode/set/branch.hpp ./gecode/set/branch/action.hpp ./gecode/set/branch/afc.hpp \ + ./gecode/set/branch/assign.hpp ./gecode/set/branch/chb.hpp ./gecode/set/branch/traits.hpp \ + ./gecode/set/branch/val.hpp ./gecode/set/branch/var.hpp ./gecode/set/exception.hpp \ + ./gecode/set/int.hpp ./gecode/set/limits.hpp ./gecode/set/trace.hpp \ + ./gecode/set/trace/delta.hpp ./gecode/set/trace/trace-view.hpp ./gecode/set/trace/traits.hpp \ + ./gecode/set/var-imp.hpp ./gecode/set/var-imp/delta.hpp ./gecode/set/var-imp/integerset.hpp \ + ./gecode/set/var-imp/iter.hpp ./gecode/set/var-imp/set.hpp ./gecode/set/var/print.hpp \ + ./gecode/set/var/set.hpp ./gecode/set/view.hpp ./gecode/set/view/cached.hpp \ + ./gecode/set/view/complement.hpp ./gecode/set/view/const.hpp ./gecode/set/view/print.hpp \ + ./gecode/set/view/set.hpp ./gecode/set/view/singleton.hpp ./gecode/support.hh \ + ./gecode/support/allocator.hpp ./gecode/support/auto-link.hpp ./gecode/support/bitset-base.hpp \ + ./gecode/support/bitset-offset.hpp ./gecode/support/bitset.hpp ./gecode/support/block-allocator.hpp \ + ./gecode/support/cast.hpp ./gecode/support/config.hpp ./gecode/support/dynamic-array.hpp \ + ./gecode/support/dynamic-queue.hpp ./gecode/support/dynamic-stack.hpp ./gecode/support/exception.hpp \ + ./gecode/support/failpoint.hpp ./gecode/support/hash.hpp ./gecode/support/heap.hpp \ + ./gecode/support/hw-rnd.hpp ./gecode/support/int-type.hpp ./gecode/support/macros.hpp \ + ./gecode/support/marked-pointer.hpp ./gecode/support/random.hpp ./gecode/support/ref-count.hpp \ + ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp \ + ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp +examples/open-shop$(OBJSUFFIX) examples/open-shop$(SBJSUFFIX): \ + ./gecode/driver.hh ./gecode/driver/options.hpp ./gecode/driver/script.hpp \ + ./gecode/float.hh ./gecode/float/array-traits.hpp ./gecode/float/array.hpp \ + ./gecode/float/branch.hpp ./gecode/float/branch/action.hpp ./gecode/float/branch/afc.hpp \ + ./gecode/float/branch/assign.hpp ./gecode/float/branch/chb.hpp ./gecode/float/branch/traits.hpp \ + ./gecode/float/branch/val.hpp ./gecode/float/branch/var.hpp ./gecode/float/channel.hpp \ + ./gecode/float/exception.hpp ./gecode/float/limits.hpp ./gecode/float/nextafter.hpp \ + ./gecode/float/num.hpp ./gecode/float/rounding.hpp ./gecode/float/trace.hpp \ + ./gecode/float/trace/delta.hpp ./gecode/float/trace/trace-view.hpp ./gecode/float/trace/traits.hpp \ + ./gecode/float/val.hpp ./gecode/float/var-imp.hpp ./gecode/float/var-imp/delta.hpp \ + ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ + ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ + ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ + ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ + ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ + ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ + ./gecode/int/div.hh ./gecode/int/div.hpp ./gecode/int/exception.hpp \ + ./gecode/int/extensional.hpp ./gecode/int/extensional/dfa.hpp ./gecode/int/extensional/tuple-set.hpp \ + ./gecode/int/int-set-1.hpp ./gecode/int/int-set-2.hpp ./gecode/int/ipl.hpp \ ./gecode/int/irt.hpp ./gecode/int/limits.hpp ./gecode/int/propagator.hpp \ ./gecode/int/reify.hpp ./gecode/int/trace.hpp ./gecode/int/trace/bool-delta.hpp \ ./gecode/int/trace/bool-trace-view.hpp ./gecode/int/trace/int-delta.hpp ./gecode/int/trace/int-trace-view.hpp \ @@ -15356,7 +15636,7 @@ examples/car-sequencing$(OBJSUFFIX) examples/car-sequencing$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -15448,7 +15728,7 @@ examples/sat$(OBJSUFFIX) examples/sat$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -15540,7 +15820,7 @@ examples/bin-packing$(OBJSUFFIX) examples/bin-packing$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -15632,7 +15912,7 @@ examples/knights$(OBJSUFFIX) examples/knights$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -15724,7 +16004,7 @@ examples/tsp$(OBJSUFFIX) examples/tsp$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -15816,7 +16096,7 @@ examples/perfect-square$(OBJSUFFIX) examples/perfect-square$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -15908,7 +16188,7 @@ examples/schurs-lemma$(OBJSUFFIX) examples/schurs-lemma$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -16000,7 +16280,7 @@ examples/dominating-queens$(OBJSUFFIX) examples/dominating-queens$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -16092,7 +16372,7 @@ examples/colored-matrix$(OBJSUFFIX) examples/colored-matrix$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -16184,7 +16464,7 @@ examples/multi-bin-packing$(OBJSUFFIX) examples/multi-bin-packing$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -16276,7 +16556,7 @@ examples/qcp$(OBJSUFFIX) examples/qcp$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -16368,7 +16648,7 @@ examples/job-shop$(OBJSUFFIX) examples/job-shop$(SBJSUFFIX): \ ./gecode/float/var/print.hpp ./gecode/float/view.hpp ./gecode/float/view/float.hpp \ ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp \ ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp ./gecode/gist.hh \ - ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -16460,7 +16740,7 @@ examples/crew$(OBJSUFFIX) examples/crew$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -16552,7 +16832,7 @@ examples/golf$(OBJSUFFIX) examples/golf$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -16644,7 +16924,7 @@ examples/hamming$(OBJSUFFIX) examples/hamming$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -16736,7 +17016,7 @@ examples/steiner$(OBJSUFFIX) examples/steiner$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -16828,7 +17108,7 @@ examples/queen-armies$(OBJSUFFIX) examples/queen-armies$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -16920,7 +17200,7 @@ examples/cartesian-heart$(OBJSUFFIX) examples/cartesian-heart$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -17012,7 +17292,7 @@ examples/descartes-folium$(OBJSUFFIX) examples/descartes-folium$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -17104,7 +17384,7 @@ examples/archimedean-spiral$(OBJSUFFIX) examples/archimedean-spiral$(SBJSUFFIX): ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -17196,7 +17476,7 @@ examples/golden-spiral$(OBJSUFFIX) examples/golden-spiral$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -17321,7 +17601,7 @@ gecode/gist/gist$(OBJSUFFIX) gecode/gist/gist$(SBJSUFFIX): \ ./gecode/gist/nodestats.hh ./gecode/gist/qtgist.hh ./gecode/gist/spacenode.hh \ ./gecode/gist/spacenode.hpp ./gecode/gist/stopbrancher.hh ./gecode/gist/textoutput.hh \ ./gecode/gist/treecanvas.hh ./gecode/gist/visualnode.hh ./gecode/gist/visualnode.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -17439,7 +17719,7 @@ gecode/gist/spacenode$(OBJSUFFIX) gecode/gist/spacenode$(SBJSUFFIX): \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ ./gecode/gist/node.hh ./gecode/gist/node.hpp ./gecode/gist/spacenode.hh \ ./gecode/gist/spacenode.hpp ./gecode/gist/stopbrancher.hh ./gecode/gist/visualnode.hh \ - ./gecode/gist/visualnode.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/gist/visualnode.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -17532,7 +17812,7 @@ gecode/gist/treecanvas$(OBJSUFFIX) gecode/gist/treecanvas$(SBJSUFFIX): \ ./gecode/gist/nodecursor.hh ./gecode/gist/nodecursor.hpp ./gecode/gist/nodevisitor.hh \ ./gecode/gist/nodevisitor.hpp ./gecode/gist/spacenode.hh ./gecode/gist/spacenode.hpp \ ./gecode/gist/treecanvas.hh ./gecode/gist/visualnode.hh ./gecode/gist/visualnode.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -17622,7 +17902,7 @@ gecode/gist/qtgist$(OBJSUFFIX) gecode/gist/qtgist$(SBJSUFFIX): \ ./gecode/gist/nodecursor.hpp ./gecode/gist/nodestats.hh ./gecode/gist/nodevisitor.hh \ ./gecode/gist/nodevisitor.hpp ./gecode/gist/qtgist.hh ./gecode/gist/spacenode.hh \ ./gecode/gist/spacenode.hpp ./gecode/gist/treecanvas.hh ./gecode/gist/visualnode.hh \ - ./gecode/gist/visualnode.hpp ./gecode/gist/zoomToFitIcon.hpp ./gecode/int.hh \ + ./gecode/gist/visualnode.hpp ./gecode/gist/zoomToFitIcon.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -17744,7 +18024,7 @@ gecode/gist/nodestats$(OBJSUFFIX) gecode/gist/nodestats$(SBJSUFFIX): \ ./gecode/gist/nodevisitor.hh ./gecode/gist/nodevisitor.hpp ./gecode/gist/nodewidget.hh \ ./gecode/gist/qtgist.hh ./gecode/gist/spacenode.hh ./gecode/gist/spacenode.hpp \ ./gecode/gist/treecanvas.hh ./gecode/gist/visualnode.hh ./gecode/gist/visualnode.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -17835,7 +18115,7 @@ gecode/gist/nodewidget$(OBJSUFFIX) gecode/gist/nodewidget$(SBJSUFFIX): \ ./gecode/gist/nodecursor.hh ./gecode/gist/nodecursor.hpp ./gecode/gist/nodestats.hh \ ./gecode/gist/nodewidget.hh ./gecode/gist/qtgist.hh ./gecode/gist/spacenode.hh \ ./gecode/gist/spacenode.hpp ./gecode/gist/treecanvas.hh ./gecode/gist/visualnode.hh \ - ./gecode/gist/visualnode.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/gist/visualnode.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -17927,7 +18207,7 @@ gecode/gist/mainwindow$(OBJSUFFIX) gecode/gist/mainwindow$(SBJSUFFIX): \ ./gecode/gist/nodecursor.hpp ./gecode/gist/nodestats.hh ./gecode/gist/nodewidget.hh \ ./gecode/gist/preferences.hh ./gecode/gist/qtgist.hh ./gecode/gist/spacenode.hh \ ./gecode/gist/spacenode.hpp ./gecode/gist/treecanvas.hh ./gecode/gist/visualnode.hh \ - ./gecode/gist/visualnode.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/gist/visualnode.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -18013,7 +18293,7 @@ gecode/gist/preferences$(OBJSUFFIX) gecode/gist/preferences$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/gist/preferences.hh ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/gist/preferences.hh ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -18099,7 +18379,7 @@ gecode/gist/stopbrancher$(OBJSUFFIX) gecode/gist/stopbrancher$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/gist/stopbrancher.hh ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/gist/stopbrancher.hh ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -18189,7 +18469,7 @@ gecode/flatzinc/flatzinc$(OBJSUFFIX) gecode/flatzinc/flatzinc$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hh ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/cbs.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/merit.hpp ./gecode/int/branch/ngl.hpp \ @@ -18285,7 +18565,7 @@ gecode/flatzinc/registry$(OBJSUFFIX) gecode/flatzinc/registry$(SBJSUFFIX): \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ ./gecode/float/view/scale.hpp ./gecode/gist.hh ./gecode/gist/gist.hpp \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -18379,7 +18659,7 @@ gecode/flatzinc/branch$(OBJSUFFIX) gecode/flatzinc/branch$(SBJSUFFIX): \ ./gecode/float/var/print.hpp ./gecode/float/view.hpp ./gecode/float/view/float.hpp \ ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp \ ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp ./gecode/gist.hh \ - ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hh ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/cbs.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/merit.hpp \ @@ -18475,7 +18755,7 @@ tools/flatzinc/fzn-gecode$(OBJSUFFIX) tools/flatzinc/fzn-gecode$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -18571,7 +18851,7 @@ gecode/flatzinc/parser.tab$(OBJSUFFIX) gecode/flatzinc/parser.tab$(SBJSUFFIX): \ ./gecode/float/var/print.hpp ./gecode/float/view.hpp ./gecode/float/view/float.hpp \ ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp \ ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp ./gecode/gist.hh \ - ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -18677,7 +18957,7 @@ gecode/flatzinc/lexer.yy$(OBJSUFFIX) gecode/flatzinc/lexer.yy$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -18757,7 +19037,7 @@ gecode/flatzinc/lexer.yy$(OBJSUFFIX) gecode/flatzinc/lexer.yy$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp test/test$(OBJSUFFIX) test/test$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -18821,7 +19101,7 @@ test/test$(OBJSUFFIX) test/test$(SBJSUFFIX): \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp ./test/test.hh \ ./test/test.hpp test/afc$(OBJSUFFIX) test/afc$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -18896,7 +19176,7 @@ test/ldsb$(OBJSUFFIX) test/ldsb$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hh ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/cbs.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/merit.hpp \ @@ -18980,7 +19260,7 @@ test/ldsb$(OBJSUFFIX) test/ldsb$(SBJSUFFIX): \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp \ ./test/test.hh ./test/test.hpp test/region$(OBJSUFFIX) test/region$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -19044,7 +19324,7 @@ test/region$(OBJSUFFIX) test/region$(SBJSUFFIX): \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp ./test/test.hh \ ./test/test.hpp test/groups$(OBJSUFFIX) test/groups$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -19108,7 +19388,7 @@ test/groups$(OBJSUFFIX) test/groups$(SBJSUFFIX): \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp ./test/test.hh \ ./test/test.hpp test/int$(OBJSUFFIX) test/int$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -19183,7 +19463,7 @@ test/int/channel$(OBJSUFFIX) test/int/channel$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -19264,20 +19544,6 @@ test/int/channel$(OBJSUFFIX) test/int/channel$(SBJSUFFIX): \ ./test/int.hh ./test/int.hpp ./test/test.hh \ ./test/test.hpp test/int/arithmetic$(OBJSUFFIX) test/int/arithmetic$(SBJSUFFIX): \ - ./gecode/int/arithmetic.hh ./gecode/int/arithmetic/abs.hpp ./gecode/int/arithmetic/argmax.hpp \ - ./gecode/int/arithmetic/divides.hpp ./gecode/int/arithmetic/divmod.hpp ./gecode/int/arithmetic/gcd.hpp \ - ./gecode/int/arithmetic/max.hpp ./gecode/int/arithmetic/mult.hpp ./gecode/int/arithmetic/nroot.hpp \ - ./gecode/int/arithmetic/pow-ops.hpp ./gecode/int/arithmetic/pow.hpp ./gecode/int/arithmetic/product-mod.hpp \ - ./gecode/int/arithmetic/product.hpp ./gecode/int/bool.hh ./gecode/int/bool/base.hpp \ - ./gecode/int/bool/clause.hpp ./gecode/int/bool/eq.hpp ./gecode/int/bool/eqv.hpp \ - ./gecode/int/bool/ite.hpp ./gecode/int/bool/lq.hpp ./gecode/int/bool/or.hpp \ - ./gecode/int/idx-view.hh ./gecode/int/idx-view.hpp ./gecode/int/linear.hh \ - ./gecode/int/linear/bool-int.hpp ./gecode/int/linear/bool-scale.hpp ./gecode/int/linear/bool-view.hpp \ - ./gecode/int/linear/int-bin.hpp ./gecode/int/linear/int-dom.hpp ./gecode/int/linear/int-nary.hpp \ - ./gecode/int/linear/int-noview.hpp ./gecode/int/linear/int-ter.hpp ./gecode/int/linear/post.hpp \ - ./gecode/int/rel.hh ./gecode/int/rel/eq.hpp ./gecode/int/rel/lex.hpp \ - ./gecode/int/rel/lq-le.hpp ./gecode/int/rel/nq.hpp ./gecode/int/support-values.hh \ - ./gecode/int/support-values.hpp \ ./gecode/float.hh ./gecode/float/array-traits.hpp ./gecode/float/array.hpp \ ./gecode/float/branch.hpp ./gecode/float/branch/action.hpp ./gecode/float/branch/afc.hpp \ ./gecode/float/branch/assign.hpp ./gecode/float/branch/chb.hpp ./gecode/float/branch/traits.hpp \ @@ -19289,7 +19555,7 @@ test/int/arithmetic$(OBJSUFFIX) test/int/arithmetic$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -19370,7 +19636,7 @@ test/int/arithmetic$(OBJSUFFIX) test/int/arithmetic$(SBJSUFFIX): \ ./test/int.hh ./test/int.hpp ./test/test.hh \ ./test/test.hpp test/int/basic$(OBJSUFFIX) test/int/basic$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -19445,7 +19711,7 @@ test/int/bool$(OBJSUFFIX) test/int/bool$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -19526,7 +19792,7 @@ test/int/bool$(OBJSUFFIX) test/int/bool$(SBJSUFFIX): \ ./test/int.hh ./test/int.hpp ./test/test.hh \ ./test/test.hpp test/int/count$(OBJSUFFIX) test/int/count$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -19601,7 +19867,7 @@ test/int/dom$(OBJSUFFIX) test/int/dom$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -19693,7 +19959,7 @@ test/int/distinct$(OBJSUFFIX) test/int/distinct$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -19785,7 +20051,7 @@ test/int/element$(OBJSUFFIX) test/int/element$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -19877,7 +20143,7 @@ test/int/extensional$(OBJSUFFIX) test/int/extensional$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -19969,7 +20235,7 @@ test/int/rel$(OBJSUFFIX) test/int/rel$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -20061,7 +20327,7 @@ test/int/linear$(OBJSUFFIX) test/int/linear$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -20142,7 +20408,7 @@ test/int/linear$(OBJSUFFIX) test/int/linear$(SBJSUFFIX): \ ./test/int.hh ./test/int.hpp ./test/test.hh \ ./test/test.hpp test/int/gcc$(OBJSUFFIX) test/int/gcc$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -20206,7 +20472,7 @@ test/int/gcc$(OBJSUFFIX) test/int/gcc$(SBJSUFFIX): \ ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp ./test/int.hh \ ./test/int.hpp ./test/test.hh ./test/test.hpp test/int/sorted$(OBJSUFFIX) test/int/sorted$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -20281,7 +20547,7 @@ test/int/unshare$(OBJSUFFIX) test/int/unshare$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -20373,7 +20639,7 @@ test/int/exec$(OBJSUFFIX) test/int/exec$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -20465,7 +20731,7 @@ test/int/sequence$(OBJSUFFIX) test/int/sequence$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -20557,7 +20823,7 @@ test/int/mm-arithmetic$(OBJSUFFIX) test/int/mm-arithmetic$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -20649,7 +20915,7 @@ test/int/mm-bool$(OBJSUFFIX) test/int/mm-bool$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -20741,7 +21007,7 @@ test/int/mm-lin$(OBJSUFFIX) test/int/mm-lin$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -20833,7 +21099,7 @@ test/int/mm-count$(OBJSUFFIX) test/int/mm-count$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -20925,7 +21191,7 @@ test/int/mm-rel$(OBJSUFFIX) test/int/mm-rel$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -21017,7 +21283,7 @@ test/int/bin-packing$(OBJSUFFIX) test/int/bin-packing$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -21109,7 +21375,7 @@ test/int/order$(OBJSUFFIX) test/int/order$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -21201,7 +21467,7 @@ test/int/unary$(OBJSUFFIX) test/int/unary$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -21293,7 +21559,7 @@ test/int/cumulative$(OBJSUFFIX) test/int/cumulative$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -21397,7 +21663,7 @@ test/int/cumulatives$(OBJSUFFIX) test/int/cumulatives$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -21489,7 +21755,7 @@ test/int/circuit$(OBJSUFFIX) test/int/circuit$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -21581,7 +21847,7 @@ test/int/no-overlap$(OBJSUFFIX) test/int/no-overlap$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -21662,7 +21928,7 @@ test/int/no-overlap$(OBJSUFFIX) test/int/no-overlap$(SBJSUFFIX): \ ./test/int.hh ./test/int.hpp ./test/test.hh \ ./test/test.hpp test/int/precede$(OBJSUFFIX) test/int/precede$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -21737,7 +22003,7 @@ test/int/nvalues$(OBJSUFFIX) test/int/nvalues$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -21829,7 +22095,7 @@ test/int/member$(OBJSUFFIX) test/int/member$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -21910,7 +22176,7 @@ test/int/member$(OBJSUFFIX) test/int/member$(SBJSUFFIX): \ ./test/int.hh ./test/int.hpp ./test/test.hh \ ./test/test.hpp test/set$(OBJSUFFIX) test/set$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -21986,7 +22252,7 @@ test/set$(OBJSUFFIX) test/set$(SBJSUFFIX): \ ./test/set.hh ./test/set.hpp ./test/test.hh \ ./test/test.hpp test/set/construct$(OBJSUFFIX) test/set/construct$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -22073,7 +22339,7 @@ test/set/dom$(OBJSUFFIX) test/set/dom$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -22165,7 +22431,7 @@ test/set/rel$(OBJSUFFIX) test/set/rel$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -22246,7 +22512,7 @@ test/set/rel$(OBJSUFFIX) test/set/rel$(SBJSUFFIX): \ ./test/int.hh ./test/int.hpp ./test/set.hh \ ./test/set.hpp ./test/test.hh ./test/test.hpp test/set/rel-op$(OBJSUFFIX) test/set/rel-op$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -22322,7 +22588,7 @@ test/set/rel-op$(OBJSUFFIX) test/set/rel-op$(SBJSUFFIX): \ ./test/set.hh ./test/set.hpp ./test/test.hh \ ./test/test.hpp test/set/rel-op-const$(OBJSUFFIX) test/set/rel-op-const$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -22398,7 +22664,7 @@ test/set/rel-op-const$(OBJSUFFIX) test/set/rel-op-const$(SBJSUFFIX): \ ./test/set.hh ./test/set.hpp ./test/test.hh \ ./test/test.hpp test/set/convex$(OBJSUFFIX) test/set/convex$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -22474,7 +22740,7 @@ test/set/convex$(OBJSUFFIX) test/set/convex$(SBJSUFFIX): \ ./test/set.hh ./test/set.hpp ./test/test.hh \ ./test/test.hpp test/set/sequence$(OBJSUFFIX) test/set/sequence$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -22561,7 +22827,7 @@ test/set/int$(OBJSUFFIX) test/set/int$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -22653,7 +22919,7 @@ test/set/element$(OBJSUFFIX) test/set/element$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -22734,7 +23000,7 @@ test/set/element$(OBJSUFFIX) test/set/element$(SBJSUFFIX): \ ./test/int.hh ./test/int.hpp ./test/set.hh \ ./test/set.hpp ./test/test.hh ./test/test.hpp test/set/precede$(OBJSUFFIX) test/set/precede$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -22810,7 +23076,7 @@ test/set/precede$(OBJSUFFIX) test/set/precede$(SBJSUFFIX): \ ./test/set.hh ./test/set.hpp ./test/test.hh \ ./test/test.hpp test/set/distinct$(OBJSUFFIX) test/set/distinct$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -22886,7 +23152,7 @@ test/set/distinct$(OBJSUFFIX) test/set/distinct$(SBJSUFFIX): \ ./test/set.hh ./test/set.hpp ./test/test.hh \ ./test/test.hpp test/set/exec$(OBJSUFFIX) test/set/exec$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -22973,7 +23239,7 @@ test/set/mm-set$(OBJSUFFIX) test/set/mm-set$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -23065,7 +23331,7 @@ test/set/channel$(OBJSUFFIX) test/set/channel$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -23157,7 +23423,7 @@ test/float$(OBJSUFFIX) test/float$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -23233,7 +23499,7 @@ test/float/basic$(OBJSUFFIX) test/float/basic$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -23309,7 +23575,7 @@ test/float/arithmetic$(OBJSUFFIX) test/float/arithmetic$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -23401,7 +23667,7 @@ test/float/transcendental$(OBJSUFFIX) test/float/transcendental$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -23493,7 +23759,7 @@ test/float/trigonometric$(OBJSUFFIX) test/float/trigonometric$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -23585,7 +23851,7 @@ test/float/linear$(OBJSUFFIX) test/float/linear$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -23677,7 +23943,7 @@ test/float/rel$(OBJSUFFIX) test/float/rel$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -23769,7 +24035,7 @@ test/float/channel$(OBJSUFFIX) test/float/channel$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -23861,7 +24127,7 @@ test/float/mm-lin$(OBJSUFFIX) test/float/mm-lin$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -23953,7 +24219,7 @@ test/float/dom$(OBJSUFFIX) test/float/dom$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -24045,7 +24311,7 @@ test/branch$(OBJSUFFIX) test/branch$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -24131,7 +24397,7 @@ test/branch/int$(OBJSUFFIX) test/branch/int$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -24217,7 +24483,7 @@ test/branch/bool$(OBJSUFFIX) test/branch/bool$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -24303,7 +24569,7 @@ test/branch/set$(OBJSUFFIX) test/branch/set$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -24389,7 +24655,7 @@ test/branch/float$(OBJSUFFIX) test/branch/float$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -24475,7 +24741,7 @@ test/assign$(OBJSUFFIX) test/assign$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -24561,7 +24827,7 @@ test/assign/int$(OBJSUFFIX) test/assign/int$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -24647,7 +24913,7 @@ test/assign/bool$(OBJSUFFIX) test/assign/bool$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -24733,7 +24999,7 @@ test/assign/set$(OBJSUFFIX) test/assign/set$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -24819,7 +25085,7 @@ test/assign/float$(OBJSUFFIX) test/assign/float$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -24905,7 +25171,7 @@ test/search$(OBJSUFFIX) test/search$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -24996,7 +25262,7 @@ test/nogoods$(OBJSUFFIX) test/nogoods$(SBJSUFFIX): \ ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ - ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp \ ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ @@ -25076,7 +25342,7 @@ test/nogoods$(OBJSUFFIX) test/nogoods$(SBJSUFFIX): \ ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp \ ./test/test.hh ./test/test.hpp test/array$(OBJSUFFIX) test/array$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ @@ -25154,7 +25420,7 @@ test/flatzinc$(OBJSUFFIX) test/flatzinc$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -25249,7 +25515,7 @@ test/flatzinc/bool_clause$(OBJSUFFIX) test/flatzinc/bool_clause$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -25344,7 +25610,7 @@ test/flatzinc/bug232$(OBJSUFFIX) test/flatzinc/bug232$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -25439,7 +25705,7 @@ test/flatzinc/bug319$(OBJSUFFIX) test/flatzinc/bug319$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -25534,7 +25800,7 @@ test/flatzinc/bugfix_r6746$(OBJSUFFIX) test/flatzinc/bugfix_r6746$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -25629,7 +25895,7 @@ test/flatzinc/bugfix_r7854$(OBJSUFFIX) test/flatzinc/bugfix_r7854$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -25724,7 +25990,7 @@ test/flatzinc/empty_domain_1$(OBJSUFFIX) test/flatzinc/empty_domain_1$(SBJSUFFIX ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -25819,7 +26085,7 @@ test/flatzinc/empty_domain_2$(OBJSUFFIX) test/flatzinc/empty_domain_2$(SBJSUFFIX ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -25914,7 +26180,7 @@ test/flatzinc/int_set_as_type1$(OBJSUFFIX) test/flatzinc/int_set_as_type1$(SBJSU ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -26009,7 +26275,7 @@ test/flatzinc/int_set_as_type2$(OBJSUFFIX) test/flatzinc/int_set_as_type2$(SBJSU ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -26104,7 +26370,7 @@ test/flatzinc/jobshop$(OBJSUFFIX) test/flatzinc/jobshop$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -26199,7 +26465,7 @@ test/flatzinc/no_warn_empty_domain$(OBJSUFFIX) test/flatzinc/no_warn_empty_domai ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -26294,7 +26560,7 @@ test/flatzinc/output_test$(OBJSUFFIX) test/flatzinc/output_test$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -26389,7 +26655,7 @@ test/flatzinc/queens4$(OBJSUFFIX) test/flatzinc/queens4$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -26484,7 +26750,7 @@ test/flatzinc/sat_arith1$(OBJSUFFIX) test/flatzinc/sat_arith1$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -26579,7 +26845,7 @@ test/flatzinc/sat_array_bool_and$(OBJSUFFIX) test/flatzinc/sat_array_bool_and$(S ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -26674,7 +26940,7 @@ test/flatzinc/sat_array_bool_or$(OBJSUFFIX) test/flatzinc/sat_array_bool_or$(SBJ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -26769,7 +27035,7 @@ test/flatzinc/sat_cmp_reif$(OBJSUFFIX) test/flatzinc/sat_cmp_reif$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -26864,7 +27130,7 @@ test/flatzinc/sat_eq_reif$(OBJSUFFIX) test/flatzinc/sat_eq_reif$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -26959,7 +27225,7 @@ test/flatzinc/test_approx_bnb$(OBJSUFFIX) test/flatzinc/test_approx_bnb$(SBJSUFF ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -27054,7 +27320,7 @@ test/flatzinc/test_array_just_right$(OBJSUFFIX) test/flatzinc/test_array_just_ri ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -27149,7 +27415,7 @@ test/flatzinc/test_assigned_var_bounds_bad$(OBJSUFFIX) test/flatzinc/test_assign ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -27244,7 +27510,7 @@ test/flatzinc/test_flatzinc_output_anns$(OBJSUFFIX) test/flatzinc/test_flatzinc_ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -27339,7 +27605,7 @@ test/flatzinc/test_fzn_arith$(OBJSUFFIX) test/flatzinc/test_fzn_arith$(SBJSUFFIX ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -27434,7 +27700,7 @@ test/flatzinc/test_fzn_arrays$(OBJSUFFIX) test/flatzinc/test_fzn_arrays$(SBJSUFF ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -27529,7 +27795,7 @@ test/flatzinc/test_fzn_coercions$(OBJSUFFIX) test/flatzinc/test_fzn_coercions$(S ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -27624,7 +27890,7 @@ test/flatzinc/test_fzn_comparison$(OBJSUFFIX) test/flatzinc/test_fzn_comparison$ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -27719,7 +27985,7 @@ test/flatzinc/test_fzn_logic$(OBJSUFFIX) test/flatzinc/test_fzn_logic$(SBJSUFFIX ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -27814,7 +28080,7 @@ test/flatzinc/test_fzn_sets$(OBJSUFFIX) test/flatzinc/test_fzn_sets$(SBJSUFFIX): ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -27909,7 +28175,7 @@ test/flatzinc/test_int_div$(OBJSUFFIX) test/flatzinc/test_int_div$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -28004,7 +28270,7 @@ test/flatzinc/test_int_mod$(OBJSUFFIX) test/flatzinc/test_int_mod$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -28099,7 +28365,7 @@ test/flatzinc/test_int_ranges_as_values$(OBJSUFFIX) test/flatzinc/test_int_range ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -28194,7 +28460,7 @@ test/flatzinc/test_seq_search$(OBJSUFFIX) test/flatzinc/test_seq_search$(SBJSUFF ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -28289,7 +28555,7 @@ test/flatzinc/2dpacking$(OBJSUFFIX) test/flatzinc/2dpacking$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -28384,7 +28650,7 @@ test/flatzinc/alpha$(OBJSUFFIX) test/flatzinc/alpha$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -28479,7 +28745,7 @@ test/flatzinc/battleships1$(OBJSUFFIX) test/flatzinc/battleships1$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -28574,7 +28840,7 @@ test/flatzinc/battleships10$(OBJSUFFIX) test/flatzinc/battleships10$(SBJSUFFIX): ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -28669,7 +28935,7 @@ test/flatzinc/battleships2$(OBJSUFFIX) test/flatzinc/battleships2$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -28764,7 +29030,7 @@ test/flatzinc/battleships3$(OBJSUFFIX) test/flatzinc/battleships3$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -28859,7 +29125,7 @@ test/flatzinc/battleships4$(OBJSUFFIX) test/flatzinc/battleships4$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -28954,7 +29220,7 @@ test/flatzinc/battleships5$(OBJSUFFIX) test/flatzinc/battleships5$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -29049,7 +29315,7 @@ test/flatzinc/battleships7$(OBJSUFFIX) test/flatzinc/battleships7$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -29144,7 +29410,7 @@ test/flatzinc/battleships9$(OBJSUFFIX) test/flatzinc/battleships9$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -29239,7 +29505,7 @@ test/flatzinc/blocksworld_instance_1$(OBJSUFFIX) test/flatzinc/blocksworld_insta ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -29334,7 +29600,7 @@ test/flatzinc/blocksworld_instance_2$(OBJSUFFIX) test/flatzinc/blocksworld_insta ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -29429,7 +29695,7 @@ test/flatzinc/cumulatives$(OBJSUFFIX) test/flatzinc/cumulatives$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -29524,7 +29790,7 @@ test/flatzinc/cumulatives_full_1$(OBJSUFFIX) test/flatzinc/cumulatives_full_1$(S ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -29619,7 +29885,7 @@ test/flatzinc/cumulatives_full_2$(OBJSUFFIX) test/flatzinc/cumulatives_full_2$(S ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -29714,7 +29980,7 @@ test/flatzinc/cumulatives_full_3$(OBJSUFFIX) test/flatzinc/cumulatives_full_3$(S ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -29809,7 +30075,7 @@ test/flatzinc/cumulatives_full_4$(OBJSUFFIX) test/flatzinc/cumulatives_full_4$(S ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -29904,7 +30170,7 @@ test/flatzinc/cumulatives_full_5$(OBJSUFFIX) test/flatzinc/cumulatives_full_5$(S ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -29999,7 +30265,7 @@ test/flatzinc/cumulatives_full_6$(OBJSUFFIX) test/flatzinc/cumulatives_full_6$(S ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -30094,7 +30360,7 @@ test/flatzinc/cumulatives_full_7$(OBJSUFFIX) test/flatzinc/cumulatives_full_7$(S ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -30189,7 +30455,7 @@ test/flatzinc/cumulatives_full_8$(OBJSUFFIX) test/flatzinc/cumulatives_full_8$(S ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -30284,7 +30550,7 @@ test/flatzinc/cutstock$(OBJSUFFIX) test/flatzinc/cutstock$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -30379,7 +30645,7 @@ test/flatzinc/eq20$(OBJSUFFIX) test/flatzinc/eq20$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -30474,7 +30740,7 @@ test/flatzinc/factory_planning_instance$(OBJSUFFIX) test/flatzinc/factory_planni ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -30569,7 +30835,7 @@ test/flatzinc/golomb$(OBJSUFFIX) test/flatzinc/golomb$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -30664,7 +30930,7 @@ test/flatzinc/jobshop2x2$(OBJSUFFIX) test/flatzinc/jobshop2x2$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -30759,7 +31025,7 @@ test/flatzinc/knights$(OBJSUFFIX) test/flatzinc/knights$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -30854,7 +31120,7 @@ test/flatzinc/langford2$(OBJSUFFIX) test/flatzinc/langford2$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -30949,7 +31215,7 @@ test/flatzinc/latin_squares_fd$(OBJSUFFIX) test/flatzinc/latin_squares_fd$(SBJSU ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -31044,7 +31310,7 @@ test/flatzinc/multidim_knapsack_simple$(OBJSUFFIX) test/flatzinc/multidim_knapsa ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -31139,7 +31405,7 @@ test/flatzinc/packing$(OBJSUFFIX) test/flatzinc/packing$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -31234,7 +31500,7 @@ test/flatzinc/perfsq$(OBJSUFFIX) test/flatzinc/perfsq$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -31329,7 +31595,7 @@ test/flatzinc/perfsq2$(OBJSUFFIX) test/flatzinc/perfsq2$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -31424,7 +31690,7 @@ test/flatzinc/photo$(OBJSUFFIX) test/flatzinc/photo$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -31519,7 +31785,7 @@ test/flatzinc/product_fd$(OBJSUFFIX) test/flatzinc/product_fd$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -31614,7 +31880,7 @@ test/flatzinc/product_lp$(OBJSUFFIX) test/flatzinc/product_lp$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -31709,7 +31975,7 @@ test/flatzinc/quasigroup_qg5$(OBJSUFFIX) test/flatzinc/quasigroup_qg5$(SBJSUFFIX ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -31804,7 +32070,7 @@ test/flatzinc/queen_cp2$(OBJSUFFIX) test/flatzinc/queen_cp2$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -31899,7 +32165,7 @@ test/flatzinc/queen_ip$(OBJSUFFIX) test/flatzinc/queen_ip$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -31994,7 +32260,7 @@ test/flatzinc/radiation$(OBJSUFFIX) test/flatzinc/radiation$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -32089,7 +32355,7 @@ test/flatzinc/shared_array_element$(OBJSUFFIX) test/flatzinc/shared_array_elemen ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -32184,7 +32450,7 @@ test/flatzinc/simple_sat$(OBJSUFFIX) test/flatzinc/simple_sat$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -32279,7 +32545,7 @@ test/flatzinc/singHoist2$(OBJSUFFIX) test/flatzinc/singHoist2$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -32374,7 +32640,7 @@ test/flatzinc/sudoku$(OBJSUFFIX) test/flatzinc/sudoku$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -32469,7 +32735,7 @@ test/flatzinc/template_design$(OBJSUFFIX) test/flatzinc/template_design$(SBJSUFF ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -32564,7 +32830,7 @@ test/flatzinc/tenpenki_1$(OBJSUFFIX) test/flatzinc/tenpenki_1$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -32659,7 +32925,7 @@ test/flatzinc/tenpenki_2$(OBJSUFFIX) test/flatzinc/tenpenki_2$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -32754,7 +33020,7 @@ test/flatzinc/tenpenki_3$(OBJSUFFIX) test/flatzinc/tenpenki_3$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -32849,7 +33115,7 @@ test/flatzinc/tenpenki_4$(OBJSUFFIX) test/flatzinc/tenpenki_4$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -32944,7 +33210,7 @@ test/flatzinc/tenpenki_5$(OBJSUFFIX) test/flatzinc/tenpenki_5$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -33039,7 +33305,7 @@ test/flatzinc/tenpenki_6$(OBJSUFFIX) test/flatzinc/tenpenki_6$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -33134,7 +33400,7 @@ test/flatzinc/warehouses$(OBJSUFFIX) test/flatzinc/warehouses$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -33229,7 +33495,7 @@ test/flatzinc/warehouses_small$(OBJSUFFIX) test/flatzinc/warehouses_small$(SBJSU ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -33324,7 +33590,7 @@ test/flatzinc/wolf_goat_cabbage$(OBJSUFFIX) test/flatzinc/wolf_goat_cabbage$(SBJ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -33419,7 +33685,7 @@ test/flatzinc/zebra$(OBJSUFFIX) test/flatzinc/zebra$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -33514,7 +33780,7 @@ test/flatzinc/magicsq_3$(OBJSUFFIX) test/flatzinc/magicsq_3$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -33609,7 +33875,7 @@ test/flatzinc/magicsq_4$(OBJSUFFIX) test/flatzinc/magicsq_4$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -33704,7 +33970,7 @@ test/flatzinc/magicsq_5$(OBJSUFFIX) test/flatzinc/magicsq_5$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -33799,7 +34065,7 @@ test/flatzinc/oss$(OBJSUFFIX) test/flatzinc/oss$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -33894,7 +34160,7 @@ test/flatzinc/steiner_triples$(OBJSUFFIX) test/flatzinc/steiner_triples$(SBJSUFF ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -33989,7 +34255,7 @@ test/flatzinc/subtyping$(OBJSUFFIX) test/flatzinc/subtyping$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -34084,7 +34350,7 @@ test/flatzinc/timetabling$(OBJSUFFIX) test/flatzinc/timetabling$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -34179,7 +34445,7 @@ test/flatzinc/trucking$(OBJSUFFIX) test/flatzinc/trucking$(SBJSUFFIX): \ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -34274,7 +34540,7 @@ test/flatzinc/on_restart_complete$(OBJSUFFIX) test/flatzinc/on_restart_complete$ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -34369,7 +34635,7 @@ test/flatzinc/on_restart_last_val_bool$(OBJSUFFIX) test/flatzinc/on_restart_last ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -34464,7 +34730,7 @@ test/flatzinc/on_restart_last_val_float$(OBJSUFFIX) test/flatzinc/on_restart_las ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -34559,7 +34825,7 @@ test/flatzinc/on_restart_last_val_int$(OBJSUFFIX) test/flatzinc/on_restart_last_ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -34654,7 +34920,7 @@ test/flatzinc/on_restart_last_val_set$(OBJSUFFIX) test/flatzinc/on_restart_last_ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -34749,7 +35015,7 @@ test/flatzinc/on_restart_sol_bool$(OBJSUFFIX) test/flatzinc/on_restart_sol_bool$ ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -34844,7 +35110,7 @@ test/flatzinc/on_restart_sol_float$(OBJSUFFIX) test/flatzinc/on_restart_sol_floa ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -34939,7 +35205,7 @@ test/flatzinc/on_restart_sol_int$(OBJSUFFIX) test/flatzinc/on_restart_sol_int$(S ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -35034,7 +35300,7 @@ test/flatzinc/on_restart_sol_set$(OBJSUFFIX) test/flatzinc/on_restart_sol_set$(S ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp ./gecode/float/view.hpp \ ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp ./gecode/float/view/offset.hpp \ ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp ./gecode/float/view/scale.hpp \ - ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh \ + ./gecode/gist.hh ./gecode/gist/gist.hpp ./gecode/int.hh ./gecode/int/open-var-list.hpp \ ./gecode/int/array-traits.hpp ./gecode/int/array.hpp ./gecode/int/branch.hpp \ ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp \ ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp \ @@ -35114,12 +35380,239 @@ test/flatzinc/on_restart_sol_set$(OBJSUFFIX) test/flatzinc/on_restart_sol_set$(S ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp ./test/flatzinc.hh ./test/test.hh \ ./test/test.hpp -gecode/int/min-distance$(OBJSUFFIX) gecode/int/min-distance$(SBJSUFFIX): \ +gecode/int/open-var-list$(OBJSUFFIX) gecode/int/open-var-list$(SBJSUFFIX): \ + ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int/branch.hh ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ + ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/cbs.hpp \ + ./gecode/int/branch/chb.hpp ./gecode/int/branch/merit.hpp ./gecode/int/branch/ngl.hpp \ + ./gecode/int/branch/traits.hpp ./gecode/int/branch/val-commit.hpp ./gecode/int/branch/val-sel.hpp \ + ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/branch/view-values.hpp \ + ./gecode/int/channel.hpp ./gecode/int/div.hh ./gecode/int/div.hpp \ + ./gecode/int/exception.hpp ./gecode/int/extensional.hpp ./gecode/int/extensional/dfa.hpp \ + ./gecode/int/extensional/tuple-set.hpp ./gecode/int/int-set-1.hpp ./gecode/int/int-set-2.hpp \ + ./gecode/int/ipl.hpp ./gecode/int/irt.hpp ./gecode/int/limits.hpp \ + ./gecode/int/open-var-list.hpp ./gecode/int/propagator.hpp ./gecode/int/reify.hpp \ + ./gecode/int/trace.hpp ./gecode/int/trace/bool-delta.hpp ./gecode/int/trace/bool-trace-view.hpp \ + ./gecode/int/trace/int-delta.hpp ./gecode/int/trace/int-trace-view.hpp ./gecode/int/trace/traits.hpp \ + ./gecode/int/var-imp.hpp ./gecode/int/var-imp/bool.hpp ./gecode/int/var-imp/delta.hpp \ + ./gecode/int/var-imp/int.hpp ./gecode/int/var/bool.hpp ./gecode/int/var/int.hpp \ + ./gecode/int/var/print.hpp ./gecode/int/view.hpp ./gecode/int/view/bool-test.hpp \ + ./gecode/int/view/bool.hpp ./gecode/int/view/cached.hpp ./gecode/int/view/constint.hpp \ + ./gecode/int/view/int.hpp ./gecode/int/view/iter.hpp ./gecode/int/view/minus.hpp \ + ./gecode/int/view/neg-bool.hpp ./gecode/int/view/offset.hpp ./gecode/int/view/print.hpp \ + ./gecode/int/view/rel-test.hpp ./gecode/int/view/scale.hpp ./gecode/int/view/zero.hpp \ + ./gecode/iter.hh ./gecode/iter/ranges-add.hpp ./gecode/iter/ranges-append.hpp \ + ./gecode/iter/ranges-array.hpp ./gecode/iter/ranges-cache.hpp ./gecode/iter/ranges-compl.hpp \ + ./gecode/iter/ranges-diff.hpp ./gecode/iter/ranges-empty.hpp ./gecode/iter/ranges-inter.hpp \ + ./gecode/iter/ranges-list.hpp ./gecode/iter/ranges-map.hpp ./gecode/iter/ranges-minmax.hpp \ + ./gecode/iter/ranges-minus.hpp ./gecode/iter/ranges-negative.hpp ./gecode/iter/ranges-offset.hpp \ + ./gecode/iter/ranges-operations.hpp ./gecode/iter/ranges-positive.hpp ./gecode/iter/ranges-rangelist.hpp \ + ./gecode/iter/ranges-scale.hpp ./gecode/iter/ranges-singleton-append.hpp ./gecode/iter/ranges-singleton.hpp \ + ./gecode/iter/ranges-size.hpp ./gecode/iter/ranges-union.hpp ./gecode/iter/ranges-values.hpp \ + ./gecode/iter/values-array.hpp ./gecode/iter/values-bitset.hpp ./gecode/iter/values-bitsetoffset.hpp \ + ./gecode/iter/values-inter.hpp ./gecode/iter/values-list.hpp ./gecode/iter/values-map.hpp \ + ./gecode/iter/values-minus.hpp ./gecode/iter/values-negative.hpp ./gecode/iter/values-offset.hpp \ + ./gecode/iter/values-positive.hpp ./gecode/iter/values-ranges.hpp ./gecode/iter/values-singleton.hpp \ + ./gecode/iter/values-union.hpp ./gecode/iter/values-unique.hpp ./gecode/kernel.hh \ + ./gecode/kernel/archive.hpp ./gecode/kernel/branch/action.hpp ./gecode/kernel/branch/afc.hpp \ + ./gecode/kernel/branch/chb.hpp ./gecode/kernel/branch/filter.hpp ./gecode/kernel/branch/merit.hpp \ + ./gecode/kernel/branch/print.hpp ./gecode/kernel/branch/tiebreak.hpp ./gecode/kernel/branch/traits.hpp \ + ./gecode/kernel/branch/val-commit.hpp ./gecode/kernel/branch/val-sel-commit.hpp ./gecode/kernel/branch/val-sel.hpp \ + ./gecode/kernel/branch/val.hpp ./gecode/kernel/branch/var.hpp ./gecode/kernel/branch/view-sel.hpp \ + ./gecode/kernel/branch/view-val.hpp ./gecode/kernel/branch/view.hpp ./gecode/kernel/core.hpp \ + ./gecode/kernel/data/array.hpp ./gecode/kernel/data/rnd.hpp ./gecode/kernel/data/shared-array.hpp \ + ./gecode/kernel/data/shared-data.hpp ./gecode/kernel/exception.hpp ./gecode/kernel/gpi.hpp \ + ./gecode/kernel/macros.hpp ./gecode/kernel/memory/allocators.hpp ./gecode/kernel/memory/config.hpp \ + ./gecode/kernel/memory/manager.hpp ./gecode/kernel/memory/region.hpp ./gecode/kernel/modevent.hpp \ + ./gecode/kernel/propagator/advisor.hpp ./gecode/kernel/propagator/pattern.hpp ./gecode/kernel/propagator/subscribed.hpp \ + ./gecode/kernel/propagator/wait.hpp ./gecode/kernel/range-list.hpp ./gecode/kernel/shared-object.hpp \ + ./gecode/kernel/shared-space-data.hpp ./gecode/kernel/trace/filter.hpp ./gecode/kernel/trace/general.hpp \ + ./gecode/kernel/trace/print.hpp ./gecode/kernel/trace/recorder.hpp ./gecode/kernel/trace/tracer.hpp \ + ./gecode/kernel/trace/traits.hpp ./gecode/kernel/var-imp.hpp ./gecode/kernel/var-type.hpp \ + ./gecode/kernel/var.hpp ./gecode/kernel/view.hpp ./gecode/search.hh \ + ./gecode/search/bab.hpp ./gecode/search/base.hpp ./gecode/search/build.hpp \ + ./gecode/search/cutoff.hpp ./gecode/search/dfs.hpp ./gecode/search/engine.hpp \ + ./gecode/search/exception.hpp ./gecode/search/lds.hpp ./gecode/search/options.hpp \ + ./gecode/search/pbs.hpp ./gecode/search/rbs.hpp ./gecode/search/sebs.hpp \ + ./gecode/search/seq/dead.hh ./gecode/search/statistics.hpp ./gecode/search/stop.hpp \ + ./gecode/search/support.hh ./gecode/search/trace-recorder.hpp ./gecode/search/tracer.hpp \ + ./gecode/search/traits.hpp ./gecode/support.hh ./gecode/support/allocator.hpp \ + ./gecode/support/auto-link.hpp ./gecode/support/bitset-base.hpp ./gecode/support/bitset-offset.hpp \ + ./gecode/support/bitset.hpp ./gecode/support/block-allocator.hpp ./gecode/support/cast.hpp \ + gecode/support/config.hpp ./gecode/support/dynamic-array.hpp ./gecode/support/dynamic-queue.hpp \ + ./gecode/support/dynamic-stack.hpp ./gecode/support/exception.hpp ./gecode/support/failpoint.hpp \ + ./gecode/support/hash.hpp ./gecode/support/heap.hpp ./gecode/support/hw-rnd.hpp \ + ./gecode/support/int-type.hpp ./gecode/support/macros.hpp ./gecode/support/marked-pointer.hpp \ + ./gecode/support/random.hpp ./gecode/support/ref-count.hpp ./gecode/support/run-jobs.hpp \ + ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ + ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp +gecode/int/extensional-open-regular$(OBJSUFFIX) gecode/int/extensional-open-regular$(SBJSUFFIX): \ ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ ./gecode/int/div.hh ./gecode/int/div.hpp ./gecode/int/exception.hpp \ + ./gecode/int/extensional.hh ./gecode/int/extensional.hpp ./gecode/int/extensional/bit-set.hpp \ + ./gecode/int/extensional/compact.hpp ./gecode/int/extensional/dfa.hpp ./gecode/int/extensional/layered-graph.hpp \ + ./gecode/int/extensional/tiny-bit-set.hpp ./gecode/int/extensional/tuple-set.hpp ./gecode/int/int-set-1.hpp \ + ./gecode/int/int-set-2.hpp ./gecode/int/ipl.hpp ./gecode/int/irt.hpp \ + ./gecode/int/limits.hpp ./gecode/int/open-var-list.hpp ./gecode/int/propagator.hpp \ + ./gecode/int/reify.hpp ./gecode/int/rel.hh ./gecode/int/rel/eq.hpp \ + ./gecode/int/rel/lex.hpp ./gecode/int/rel/lq-le.hpp ./gecode/int/rel/nq.hpp \ + ./gecode/int/trace.hpp ./gecode/int/trace/bool-delta.hpp ./gecode/int/trace/bool-trace-view.hpp \ + ./gecode/int/trace/int-delta.hpp ./gecode/int/trace/int-trace-view.hpp ./gecode/int/trace/traits.hpp \ + ./gecode/int/var-imp.hpp ./gecode/int/var-imp/bool.hpp ./gecode/int/var-imp/delta.hpp \ + ./gecode/int/var-imp/int.hpp ./gecode/int/var/bool.hpp ./gecode/int/var/int.hpp \ + ./gecode/int/var/print.hpp ./gecode/int/view.hpp ./gecode/int/view/bool-test.hpp \ + ./gecode/int/view/bool.hpp ./gecode/int/view/cached.hpp ./gecode/int/view/constint.hpp \ + ./gecode/int/view/int.hpp ./gecode/int/view/iter.hpp ./gecode/int/view/minus.hpp \ + ./gecode/int/view/neg-bool.hpp ./gecode/int/view/offset.hpp ./gecode/int/view/print.hpp \ + ./gecode/int/view/rel-test.hpp ./gecode/int/view/scale.hpp ./gecode/int/view/zero.hpp \ + ./gecode/iter.hh ./gecode/iter/ranges-add.hpp ./gecode/iter/ranges-append.hpp \ + ./gecode/iter/ranges-array.hpp ./gecode/iter/ranges-cache.hpp ./gecode/iter/ranges-compl.hpp \ + ./gecode/iter/ranges-diff.hpp ./gecode/iter/ranges-empty.hpp ./gecode/iter/ranges-inter.hpp \ + ./gecode/iter/ranges-list.hpp ./gecode/iter/ranges-map.hpp ./gecode/iter/ranges-minmax.hpp \ + ./gecode/iter/ranges-minus.hpp ./gecode/iter/ranges-negative.hpp ./gecode/iter/ranges-offset.hpp \ + ./gecode/iter/ranges-operations.hpp ./gecode/iter/ranges-positive.hpp ./gecode/iter/ranges-rangelist.hpp \ + ./gecode/iter/ranges-scale.hpp ./gecode/iter/ranges-singleton-append.hpp ./gecode/iter/ranges-singleton.hpp \ + ./gecode/iter/ranges-size.hpp ./gecode/iter/ranges-union.hpp ./gecode/iter/ranges-values.hpp \ + ./gecode/iter/values-array.hpp ./gecode/iter/values-bitset.hpp ./gecode/iter/values-bitsetoffset.hpp \ + ./gecode/iter/values-inter.hpp ./gecode/iter/values-list.hpp ./gecode/iter/values-map.hpp \ + ./gecode/iter/values-minus.hpp ./gecode/iter/values-negative.hpp ./gecode/iter/values-offset.hpp \ + ./gecode/iter/values-positive.hpp ./gecode/iter/values-ranges.hpp ./gecode/iter/values-singleton.hpp \ + ./gecode/iter/values-union.hpp ./gecode/iter/values-unique.hpp ./gecode/kernel.hh \ + ./gecode/kernel/archive.hpp ./gecode/kernel/branch/action.hpp ./gecode/kernel/branch/afc.hpp \ + ./gecode/kernel/branch/chb.hpp ./gecode/kernel/branch/filter.hpp ./gecode/kernel/branch/merit.hpp \ + ./gecode/kernel/branch/print.hpp ./gecode/kernel/branch/tiebreak.hpp ./gecode/kernel/branch/traits.hpp \ + ./gecode/kernel/branch/val-commit.hpp ./gecode/kernel/branch/val-sel-commit.hpp ./gecode/kernel/branch/val-sel.hpp \ + ./gecode/kernel/branch/val.hpp ./gecode/kernel/branch/var.hpp ./gecode/kernel/branch/view-sel.hpp \ + ./gecode/kernel/branch/view-val.hpp ./gecode/kernel/branch/view.hpp ./gecode/kernel/core.hpp \ + ./gecode/kernel/data/array.hpp ./gecode/kernel/data/rnd.hpp ./gecode/kernel/data/shared-array.hpp \ + ./gecode/kernel/data/shared-data.hpp ./gecode/kernel/exception.hpp ./gecode/kernel/gpi.hpp \ + ./gecode/kernel/macros.hpp ./gecode/kernel/memory/allocators.hpp ./gecode/kernel/memory/config.hpp \ + ./gecode/kernel/memory/manager.hpp ./gecode/kernel/memory/region.hpp ./gecode/kernel/modevent.hpp \ + ./gecode/kernel/propagator/advisor.hpp ./gecode/kernel/propagator/pattern.hpp ./gecode/kernel/propagator/subscribed.hpp \ + ./gecode/kernel/propagator/wait.hpp ./gecode/kernel/range-list.hpp ./gecode/kernel/shared-object.hpp \ + ./gecode/kernel/shared-space-data.hpp ./gecode/kernel/trace/filter.hpp ./gecode/kernel/trace/general.hpp \ + ./gecode/kernel/trace/print.hpp ./gecode/kernel/trace/recorder.hpp ./gecode/kernel/trace/tracer.hpp \ + ./gecode/kernel/trace/traits.hpp ./gecode/kernel/var-imp.hpp ./gecode/kernel/var-type.hpp \ + ./gecode/kernel/var.hpp ./gecode/kernel/view.hpp ./gecode/search.hh \ + ./gecode/search/bab.hpp ./gecode/search/base.hpp ./gecode/search/build.hpp \ + ./gecode/search/cutoff.hpp ./gecode/search/dfs.hpp ./gecode/search/engine.hpp \ + ./gecode/search/exception.hpp ./gecode/search/lds.hpp ./gecode/search/options.hpp \ + ./gecode/search/pbs.hpp ./gecode/search/rbs.hpp ./gecode/search/sebs.hpp \ + ./gecode/search/seq/dead.hh ./gecode/search/statistics.hpp ./gecode/search/stop.hpp \ + ./gecode/search/support.hh ./gecode/search/trace-recorder.hpp ./gecode/search/tracer.hpp \ + ./gecode/search/traits.hpp ./gecode/support.hh ./gecode/support/allocator.hpp \ + ./gecode/support/auto-link.hpp ./gecode/support/bitset-base.hpp ./gecode/support/bitset-offset.hpp \ + ./gecode/support/bitset.hpp ./gecode/support/block-allocator.hpp ./gecode/support/cast.hpp \ + gecode/support/config.hpp ./gecode/support/dynamic-array.hpp ./gecode/support/dynamic-queue.hpp \ + ./gecode/support/dynamic-stack.hpp ./gecode/support/exception.hpp ./gecode/support/failpoint.hpp \ + ./gecode/support/hash.hpp ./gecode/support/heap.hpp ./gecode/support/hw-rnd.hpp \ + ./gecode/support/int-type.hpp ./gecode/support/macros.hpp ./gecode/support/marked-pointer.hpp \ + ./gecode/support/random.hpp ./gecode/support/ref-count.hpp ./gecode/support/run-jobs.hpp \ + ./gecode/support/sort.hpp ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp \ + ./gecode/support/thread/thread.hpp ./gecode/support/timer.hpp +test/int/open-var-list$(OBJSUFFIX) test/int/open-var-list$(SBJSUFFIX): \ + ./gecode/float.hh ./gecode/float/array-traits.hpp ./gecode/float/array.hpp \ + ./gecode/float/branch.hpp ./gecode/float/branch/action.hpp ./gecode/float/branch/afc.hpp \ + ./gecode/float/branch/assign.hpp ./gecode/float/branch/chb.hpp ./gecode/float/branch/traits.hpp \ + ./gecode/float/branch/val.hpp ./gecode/float/branch/var.hpp ./gecode/float/channel.hpp \ + ./gecode/float/exception.hpp ./gecode/float/limits.hpp ./gecode/float/nextafter.hpp \ + ./gecode/float/num.hpp ./gecode/float/rounding.hpp ./gecode/float/trace.hpp \ + ./gecode/float/trace/delta.hpp ./gecode/float/trace/trace-view.hpp ./gecode/float/trace/traits.hpp \ + ./gecode/float/val.hpp ./gecode/float/var-imp.hpp ./gecode/float/var-imp/delta.hpp \ + ./gecode/float/var-imp/float.hpp ./gecode/float/var/float.hpp ./gecode/float/var/print.hpp \ + ./gecode/float/view.hpp ./gecode/float/view/float.hpp ./gecode/float/view/minus.hpp \ + ./gecode/float/view/offset.hpp ./gecode/float/view/print.hpp ./gecode/float/view/rel-test.hpp \ + ./gecode/float/view/scale.hpp ./gecode/int.hh ./gecode/int/array-traits.hpp \ + ./gecode/int/array.hpp ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp \ + ./gecode/int/branch/afc.hpp ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp \ + ./gecode/int/branch/traits.hpp ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp \ + ./gecode/int/channel.hpp ./gecode/int/div.hh ./gecode/int/div.hpp \ + ./gecode/int/exception.hpp ./gecode/int/extensional.hpp ./gecode/int/extensional/dfa.hpp \ + ./gecode/int/extensional/tuple-set.hpp ./gecode/int/int-set-1.hpp ./gecode/int/int-set-2.hpp \ + ./gecode/int/ipl.hpp ./gecode/int/irt.hpp ./gecode/int/limits.hpp \ + ./gecode/int/open-var-list.hpp ./gecode/int/propagator.hpp ./gecode/int/reify.hpp \ + ./gecode/int/trace.hpp ./gecode/int/trace/bool-delta.hpp ./gecode/int/trace/bool-trace-view.hpp \ + ./gecode/int/trace/int-delta.hpp ./gecode/int/trace/int-trace-view.hpp ./gecode/int/trace/traits.hpp \ + ./gecode/int/var-imp.hpp ./gecode/int/var-imp/bool.hpp ./gecode/int/var-imp/delta.hpp \ + ./gecode/int/var-imp/int.hpp ./gecode/int/var/bool.hpp ./gecode/int/var/int.hpp \ + ./gecode/int/var/print.hpp ./gecode/int/view.hpp ./gecode/int/view/bool-test.hpp \ + ./gecode/int/view/bool.hpp ./gecode/int/view/cached.hpp ./gecode/int/view/constint.hpp \ + ./gecode/int/view/int.hpp ./gecode/int/view/iter.hpp ./gecode/int/view/minus.hpp \ + ./gecode/int/view/neg-bool.hpp ./gecode/int/view/offset.hpp ./gecode/int/view/print.hpp \ + ./gecode/int/view/rel-test.hpp ./gecode/int/view/scale.hpp ./gecode/int/view/zero.hpp \ + ./gecode/iter.hh ./gecode/iter/ranges-add.hpp ./gecode/iter/ranges-append.hpp \ + ./gecode/iter/ranges-array.hpp ./gecode/iter/ranges-cache.hpp ./gecode/iter/ranges-compl.hpp \ + ./gecode/iter/ranges-diff.hpp ./gecode/iter/ranges-empty.hpp ./gecode/iter/ranges-inter.hpp \ + ./gecode/iter/ranges-list.hpp ./gecode/iter/ranges-map.hpp ./gecode/iter/ranges-minmax.hpp \ + ./gecode/iter/ranges-minus.hpp ./gecode/iter/ranges-negative.hpp ./gecode/iter/ranges-offset.hpp \ + ./gecode/iter/ranges-operations.hpp ./gecode/iter/ranges-positive.hpp ./gecode/iter/ranges-rangelist.hpp \ + ./gecode/iter/ranges-scale.hpp ./gecode/iter/ranges-singleton-append.hpp ./gecode/iter/ranges-singleton.hpp \ + ./gecode/iter/ranges-size.hpp ./gecode/iter/ranges-union.hpp ./gecode/iter/ranges-values.hpp \ + ./gecode/iter/values-array.hpp ./gecode/iter/values-bitset.hpp ./gecode/iter/values-bitsetoffset.hpp \ + ./gecode/iter/values-inter.hpp ./gecode/iter/values-list.hpp ./gecode/iter/values-map.hpp \ + ./gecode/iter/values-minus.hpp ./gecode/iter/values-negative.hpp ./gecode/iter/values-offset.hpp \ + ./gecode/iter/values-positive.hpp ./gecode/iter/values-ranges.hpp ./gecode/iter/values-singleton.hpp \ + ./gecode/iter/values-union.hpp ./gecode/iter/values-unique.hpp ./gecode/kernel.hh \ + ./gecode/kernel/archive.hpp ./gecode/kernel/branch/action.hpp ./gecode/kernel/branch/afc.hpp \ + ./gecode/kernel/branch/chb.hpp ./gecode/kernel/branch/filter.hpp ./gecode/kernel/branch/merit.hpp \ + ./gecode/kernel/branch/print.hpp ./gecode/kernel/branch/tiebreak.hpp ./gecode/kernel/branch/traits.hpp \ + ./gecode/kernel/branch/val-commit.hpp ./gecode/kernel/branch/val-sel-commit.hpp ./gecode/kernel/branch/val-sel.hpp \ + ./gecode/kernel/branch/val.hpp ./gecode/kernel/branch/var.hpp ./gecode/kernel/branch/view-sel.hpp \ + ./gecode/kernel/branch/view-val.hpp ./gecode/kernel/branch/view.hpp ./gecode/kernel/core.hpp \ + ./gecode/kernel/data/array.hpp ./gecode/kernel/data/rnd.hpp ./gecode/kernel/data/shared-array.hpp \ + ./gecode/kernel/data/shared-data.hpp ./gecode/kernel/exception.hpp ./gecode/kernel/gpi.hpp \ + ./gecode/kernel/macros.hpp ./gecode/kernel/memory/allocators.hpp ./gecode/kernel/memory/config.hpp \ + ./gecode/kernel/memory/manager.hpp ./gecode/kernel/memory/region.hpp ./gecode/kernel/modevent.hpp \ + ./gecode/kernel/propagator/advisor.hpp ./gecode/kernel/propagator/pattern.hpp ./gecode/kernel/propagator/subscribed.hpp \ + ./gecode/kernel/propagator/wait.hpp ./gecode/kernel/range-list.hpp ./gecode/kernel/shared-object.hpp \ + ./gecode/kernel/shared-space-data.hpp ./gecode/kernel/trace/filter.hpp ./gecode/kernel/trace/general.hpp \ + ./gecode/kernel/trace/print.hpp ./gecode/kernel/trace/recorder.hpp ./gecode/kernel/trace/tracer.hpp \ + ./gecode/kernel/trace/traits.hpp ./gecode/kernel/var-imp.hpp ./gecode/kernel/var-type.hpp \ + ./gecode/kernel/var.hpp ./gecode/kernel/view.hpp ./gecode/search.hh \ + ./gecode/search/bab.hpp ./gecode/search/base.hpp ./gecode/search/build.hpp \ + ./gecode/search/cutoff.hpp ./gecode/search/dfs.hpp ./gecode/search/engine.hpp \ + ./gecode/search/exception.hpp ./gecode/search/lds.hpp ./gecode/search/options.hpp \ + ./gecode/search/pbs.hpp ./gecode/search/rbs.hpp ./gecode/search/sebs.hpp \ + ./gecode/search/seq/dead.hh ./gecode/search/statistics.hpp ./gecode/search/stop.hpp \ + ./gecode/search/support.hh ./gecode/search/trace-recorder.hpp ./gecode/search/tracer.hpp \ + ./gecode/search/traits.hpp ./gecode/set.hh ./gecode/set/array-traits.hpp \ + ./gecode/set/array.hpp ./gecode/set/branch.hpp ./gecode/set/branch/action.hpp \ + ./gecode/set/branch/afc.hpp ./gecode/set/branch/assign.hpp ./gecode/set/branch/chb.hpp \ + ./gecode/set/branch/traits.hpp ./gecode/set/branch/val.hpp ./gecode/set/branch/var.hpp \ + ./gecode/set/exception.hpp ./gecode/set/int.hpp ./gecode/set/limits.hpp \ + ./gecode/set/trace.hpp ./gecode/set/trace/delta.hpp ./gecode/set/trace/trace-view.hpp \ + ./gecode/set/trace/traits.hpp ./gecode/set/var-imp.hpp ./gecode/set/var-imp/delta.hpp \ + ./gecode/set/var-imp/integerset.hpp ./gecode/set/var-imp/iter.hpp ./gecode/set/var-imp/set.hpp \ + ./gecode/set/var/print.hpp ./gecode/set/var/set.hpp ./gecode/set/view.hpp \ + ./gecode/set/view/cached.hpp ./gecode/set/view/complement.hpp ./gecode/set/view/const.hpp \ + ./gecode/set/view/print.hpp ./gecode/set/view/set.hpp ./gecode/set/view/singleton.hpp \ + ./gecode/support.hh ./gecode/support/allocator.hpp ./gecode/support/auto-link.hpp \ + ./gecode/support/bitset-base.hpp ./gecode/support/bitset-offset.hpp ./gecode/support/bitset.hpp \ + ./gecode/support/block-allocator.hpp ./gecode/support/cast.hpp gecode/support/config.hpp \ + ./gecode/support/dynamic-array.hpp ./gecode/support/dynamic-queue.hpp ./gecode/support/dynamic-stack.hpp \ + ./gecode/support/exception.hpp ./gecode/support/failpoint.hpp ./gecode/support/hash.hpp \ + ./gecode/support/heap.hpp ./gecode/support/hw-rnd.hpp ./gecode/support/int-type.hpp \ + ./gecode/support/macros.hpp ./gecode/support/marked-pointer.hpp ./gecode/support/random.hpp \ + ./gecode/support/ref-count.hpp ./gecode/support/run-jobs.hpp ./gecode/support/sort.hpp \ + ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ + ./gecode/support/timer.hpp ./test/int.hh ./test/int.hpp \ + ./test/test.hh ./test/test.hpp \ + ./examples/common-pattern.hh ./gecode/int/min-distance.hpp ./gecode/minimodel.hh \ + ./gecode/minimodel/aliases.hpp ./gecode/minimodel/bool-expr.hpp ./gecode/minimodel/channel.hpp \ + ./gecode/minimodel/exception.hpp ./gecode/minimodel/float-expr.hpp ./gecode/minimodel/float-rel.hpp \ + ./gecode/minimodel/int-expr.hpp ./gecode/minimodel/int-rel.hpp ./gecode/minimodel/ipl.hpp \ + ./gecode/minimodel/ldsb.hpp ./gecode/minimodel/matrix.hpp ./gecode/minimodel/optimize.hpp \ + ./gecode/minimodel/reg.hpp ./gecode/minimodel/set-expr.hpp ./gecode/minimodel/set-rel.hpp \ + ./gecode/search/worker-control.hh +gecode/int/min-distance$(OBJSUFFIX) gecode/int/min-distance$(SBJSUFFIX): \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ + ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ + ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ + ./gecode/int/div.hh ./gecode/int/div.hpp ./gecode/int/exception.hpp \ ./gecode/int/extensional.hpp ./gecode/int/extensional/dfa.hpp ./gecode/int/extensional/tuple-set.hpp \ ./gecode/int/int-set-1.hpp ./gecode/int/int-set-2.hpp ./gecode/int/ipl.hpp \ ./gecode/int/irt.hpp ./gecode/int/limits.hpp ./gecode/int/min-distance.hh \ @@ -35180,7 +35673,7 @@ gecode/int/min-distance$(OBJSUFFIX) gecode/int/min-distance$(SBJSUFFIX): \ ./gecode/support/static-stack.hpp ./gecode/support/thread.hpp ./gecode/support/thread/thread.hpp \ ./gecode/support/timer.hpp test/int/min-distance$(OBJSUFFIX) test/int/min-distance$(SBJSUFFIX): \ - ./gecode/int.hh ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ + ./gecode/int.hh ./gecode/int/open-var-list.hpp ./gecode/int/array-traits.hpp ./gecode/int/array.hpp \ ./gecode/int/branch.hpp ./gecode/int/branch/action.hpp ./gecode/int/branch/afc.hpp \ ./gecode/int/branch/assign.hpp ./gecode/int/branch/chb.hpp ./gecode/int/branch/traits.hpp \ ./gecode/int/branch/val.hpp ./gecode/int/branch/var.hpp ./gecode/int/channel.hpp \ diff --git a/Makefile.in b/Makefile.in index 8e5d2c625d..50a0830ab5 100755 --- a/Makefile.in +++ b/Makefile.in @@ -323,7 +323,9 @@ INTSRC0 = \ int-set.cpp var-imp/int.cpp var-imp/bool.cpp var/int.cpp \ var/bool.cpp array.cpp bool.cpp bool/eqv.cpp \ extensional/dfa.cpp extensional/tuple-set.cpp \ - extensional-regular.cpp extensional-tuple-set.cpp \ + extensional-regular.cpp extensional-open-regular.cpp \ + extensional-tuple-set.cpp \ + open-var-list.cpp \ dom.cpp rel.cpp precede.cpp element.cpp count.cpp \ arithmetic.cpp exec.cpp \ exec/when.cpp element/pair.cpp \ @@ -348,6 +350,7 @@ INTSRC0 = \ exception.cpp INTHDR0 = \ + open-var-list.hpp \ limits.hpp support-values.hh support-values.hpp \ idx-view.hh idx-view.hpp div.hh div.hpp \ exec.hh exec/when.hpp \ @@ -906,7 +909,7 @@ INTEXAMPLESRC0 = \ word-square crossword open-shop car-sequencing sat \ bin-packing knights tsp perfect-square schurs-lemma \ dominating-queens colored-matrix multi-bin-packing \ - qcp job-shop + qcp job-shop open-route common-pattern fifteen-puzzle INTEXAMPLEHDR = $(INTEXAMPLEHDR0:%=examples/%.hpp) @@ -1119,7 +1122,7 @@ EXETARGETS = $(FLATZINCEXE) $(FLATZINCLAUNCHER) INTTESTSRC00 = \ channel arithmetic basic bool count dom distinct element extensional \ - rel linear gcc sorted unshare exec sequence \ + rel linear gcc sorted unshare exec sequence open-var-list \ mm-arithmetic mm-bool mm-lin mm-count mm-rel \ bin-packing order unary cumulative cumulatives circuit \ no-overlap precede inter-distance nvalues member min-distance diff --git a/changelog.in b/changelog.in index 394b936a5d..b9d2f399ca 100755 --- a/changelog.in +++ b/changelog.in @@ -73,6 +73,41 @@ Date: unreleased [DESCRIPTION] This is the development changelog for the next Gecode release. +[ENTRY] +Module: int +What: new +Rank: major +[DESCRIPTION] +Add OpenIntVarList and OpenBoolVarList for lists whose length is decided +during propagation and search. OpenVarList supports other variable types +through a factory. Constraints follow the growing prefix, including regular +language constraints. Branching assigns prefix values before closing or +extending the list, using standard variable and value selectors. Posting a +brancher on the length first selects the length before list values. The +common-pattern example demonstrates constrained frequent subsequence mining +without padding, with support thresholds and integer database input; +open-route provides a smaller introduction. +Open-list factories and transitions run inside Space::NoGPI scopes by +default, including transitions called by direct append. Callback-local +Space::UseGPI scopes enable global information for selected postings; +nested list construction starts its own NoGPI scope. + +[ENTRY] +Module: kernel +What: new +Rank: minor +[DESCRIPTION] +Add Space::NoGPI and Space::UseGPI to control global propagator information +for scoped posting. NoGPI keeps information in the space with zero AFC. + +[ENTRY] +Module: int +What: bug +Rank: minor +[DESCRIPTION] +Fix iterator invalidation during counting-based search cache cleanup. + + [ENTRY] Module: int diff --git a/cmake/GecodeSources.cmake b/cmake/GecodeSources.cmake index 58a415eb36..c3e7b24359 100644 --- a/cmake/GecodeSources.cmake +++ b/cmake/GecodeSources.cmake @@ -83,7 +83,9 @@ set(GECODE_INT_SOURCES gecode/int/exec.cpp gecode/int/exec/when.cpp gecode/int/extensional-regular.cpp + gecode/int/extensional-open-regular.cpp gecode/int/extensional-tuple-set.cpp + gecode/int/open-var-list.cpp gecode/int/extensional/dfa.cpp gecode/int/extensional/tuple-set.cpp gecode/int/gcc.cpp @@ -428,6 +430,7 @@ set(GECODE_TEST_SOURCES test/int/no-overlap.cpp test/int/nvalues.cpp test/int/order.cpp + test/int/open-var-list.cpp test/int/precede.cpp test/int/rel.cpp test/int/sequence.cpp diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index a223ae844a..6282beaeb8 100755 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -13,6 +13,7 @@ set(GECODE_EXAMPLE_SOURCES car-sequencing.cpp cartesian-heart.cpp colored-matrix.cpp + common-pattern.cpp crew.cpp crossword.cpp crowded-chess.cpp @@ -22,6 +23,7 @@ set(GECODE_EXAMPLE_SOURCES donald.cpp efpa.cpp eq20.cpp + fifteen-puzzle.cpp golden-spiral.cpp golf.cpp golomb-ruler.cpp @@ -40,6 +42,7 @@ set(GECODE_EXAMPLE_SOURCES money.cpp multi-bin-packing.cpp nonogram.cpp + open-route.cpp open-shop.cpp ortho-latin.cpp partition.cpp diff --git a/examples/common-pattern.cpp b/examples/common-pattern.cpp new file mode 100644 index 0000000000..8c302364e5 --- /dev/null +++ b/examples/common-pattern.cpp @@ -0,0 +1,251 @@ +/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */ +/* + * Main author: + * Mikael Zayenz Lagerkvist + * + * Copyright: + * Mikael Zayenz Lagerkvist, 2026 + * + * This file is part of Gecode, the generic constraint + * development environment: + * http://www.gecode.dev + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + +#include + +#include "common-pattern.hh" + +#include +#include + +using namespace Gecode; + +/// Sequence database and restrictions on the patterns to mine +class CommonPatternOptions : public Options { +protected: + Driver::StringValueOption _sequences, _file, _support, _required; + Driver::StringOption _format, _language; + Driver::UnsignedIntOption _min_length; + Driver::BoolOption _motif; + std::unique_ptr input; + std::vector required_items; + int threshold; +public: + CommonPatternOptions(void) + : Options("CommonPattern"), + _sequences("sequences","comma-separated sequences over A..Z","ABCBC,BABC,ABDC"), + _file("file","sequence database; one sequence per line",""), + _support("support","minimum supporting sequences, as a percentage","100"), + _required("required","items that must occur, comma-separated letters or IDs",""), + _format("format","database format",PatternMining::LETTERS), + _language("language","pattern language",PatternMining::DEFAULT), + _min_length("min-length","minimum pattern length",1), + _motif("motif","default language starts with A and ends with C",true), + threshold(0) { + _format.add(PatternMining::LETTERS,"letters"); + _format.add(PatternMining::INTEGERS,"integers"); + _format.add(PatternMining::SPMF,"spmf"); + _language.add(PatternMining::DEFAULT,"default","use -motif"); + _language.add(PatternMining::NONE,"none"); + _language.add(PatternMining::MOTIF,"motif"); + _language.add(PatternMining::RE10,"re10"); + _language.add(PatternMining::RE14,"re14"); + _language.add(PatternMining::RE2,"re2"); + add(_sequences); add(_file); add(_format); add(_support); + add(_min_length); add(_required); add(_language); add(_motif); + } + + /// Validate external input before constructing a space + void read(void) { + if (_min_length.value() < 1 || _min_length.value() > Int::Limits::max) + throw std::invalid_argument("Minimum length must be a positive Gecode integer"); + PatternMining::Sequences sequences; + const std::string filename(_file.value()); + if (filename.empty()) { + if (_format.value() != PatternMining::LETTERS) + throw std::invalid_argument("Integer and SPMF formats require -file"); + const std::string text(_sequences.value()); + if (text.empty() || text.back() == ',') + throw std::invalid_argument("Expected comma-separated nonempty A..Z sequences"); + std::istringstream stream(text); + std::string sequence; + while (std::getline(stream,sequence,',')) + sequences.push_back(PatternMining::read_sequence(sequence,PatternMining::LETTERS)); + } else { + std::ifstream stream(filename); + sequences = PatternMining::read_database(stream, + static_cast(_format.value())); + } + input.reset(new PatternMining::Database(sequences)); + threshold = PatternMining::minimum_support(_support.value(),input->ends.size()); + const std::string items(_required.value()); + if (!items.empty()) { + if (items.back() == ',') + throw std::invalid_argument("Empty required item"); + std::istringstream stream(items); + std::string item; + while (std::getline(stream,item,',')) { + const std::vector parsed = PatternMining::read_sequence(item, + letters() ? PatternMining::LETTERS : PatternMining::INTEGERS); + if (parsed.size() != 1) + throw std::invalid_argument("Required items must be single letters or IDs"); + required_items.push_back(parsed[0]); + } + } + } + + const PatternMining::Database& database(void) const { return *input; } + const std::vector& required(void) const { return required_items; } + int support(void) const { return threshold; } + int min_length(void) const { return static_cast(_min_length.value()); } + bool letters(void) const { return _format.value() == PatternMining::LETTERS; } + PatternMining::Language language(void) const { + if (_language.value() == PatternMining::DEFAULT) + return _motif.value() ? PatternMining::MOTIF : PatternMining::NONE; + return static_cast(_language.value()); + } +}; + +/** + * \brief %Example: constrained frequent subsequences of unknown length + * + * A pattern must occur in at least -support percent of the input sequences. + * Matching preserves order and may skip items; repeated items match distinct + * positions. Support counts records, including duplicate records, once each. + * By default the inputs ABCBC, BABC, ABDC must all support the pattern, which + * must start with A and end with C. AC and ABC are feasible; ABC is longest. + * + * The decision is an ordered list of items with unknown length. The frequency + * constraint requires sufficiently many records to contain that list as a + * subsequence. Ordinary length and regular constraints restrict the pattern: + * they do not restrict the matching positions in the input records. Default + * DFS enumerates every qualifying pattern; -search bab finds a longest one. + * These are different queries from closed, maximal, or top-k frequent mining. + * + * An OpenIntVarList constructs pattern positions as needed, without an end + * marker or unused suffix variables. Pattern languages therefore describe + * just the pattern, without padding transitions. The private frequency + * constraint maintains supporting suffixes after the assigned prefix and + * removes items with insufficient support. This prefix projection follows + * Kemmar et al., "PREFIX-PROJECTION Global Constraint for Sequential Pattern + * Mining", CP 2015, doi:10.1007/978-3-319-23219-5_17, with an additional + * remaining-suffix length bound. Projection is a filtering method, independent + * of the pattern's length, item and language restrictions. OpenRoute is the + * simpler introduction to open lists. + * + * The paper's Table 1 can be mined with: + * -sequences ABCBC,BABC,AB,BCD -support 50 -language none. + * -min-length and -required constrain length and item membership. -language + * also accepts motif (A, any items, C), re10, re14, re2 (comparison presets + * from the paper). Their letters mean item IDs A=1 through Z=26; integer data + * must use the corresponding mapping for these named expressions. + * + * -file reads one sequence per line in -format letters, integers, or spmf. + * Integer IDs are positive and preserved in output. SPMF records must have + * singleton itemsets: "1 -1 2 -1 3 -1 -2" is the sequence ABC. Multi-item + * itemsets are rejected because they define a different mining problem. + * No gap or time restrictions are supported. The comparison runner in + * misc/common-pattern/README.md uses identical mining queries across models. + * + * \ingroup Example + */ +class CommonPattern : public IntMaximizeScript { +protected: + OpenIntVarList pattern; + IntVar frequency; + PatternMining::Database database; + bool letters; +public: + enum { SEARCH_BAB, SEARCH_DFS }; + + CommonPattern(const CommonPatternOptions& opt) + : IntMaximizeScript(opt), database(opt.database()), letters(opt.letters()) { + pattern = OpenIntVarList(*this,database.domain(),database.max_length()); + rel(*this,pattern.length(),IRT_GQ,opt.min_length()); + frequency = PatternMining::frequent(*this,pattern,database,opt.support()); + if (opt.language() != PatternMining::NONE) + extensional(*this,pattern,PatternMining::language(opt.language(),database)); + if (!opt.required().empty()) { + REG alphabet(IntArgs(database.alphabet)); + for (int item : opt.required()) + extensional(*this,pattern,*alphabet + REG(item) + *alphabet); + } + branch(*this,pattern,INT_VAR_NONE(),INT_VAL_MIN()); + } + + virtual IntVar cost(void) const { return pattern.length(); } + + CommonPattern(CommonPattern& s) + : IntMaximizeScript(s), database(s.database), letters(s.letters) { + pattern.update(*this,s.pattern); + frequency.update(*this,s.frequency); + } + + virtual Space* copy(void) { return new CommonPattern(*this); } + + virtual void print(std::ostream& os) const { + os << "\t"; + for (int i=0; i('A'+item-1); + else + os << item; + } else { + os << pattern[i]; + } + } + os << " (length " << pattern.length() + << ", support " << frequency << '/' << database.ends.size() + << ")" << std::endl; + } +}; + +/** \brief Main-function + * \relates CommonPattern + */ +int +main(int argc, char* argv[]) { + CommonPatternOptions opt; + opt.solutions(0); + opt.search(CommonPattern::SEARCH_DFS); + opt.search(CommonPattern::SEARCH_BAB,"bab","find a longest pattern"); + opt.search(CommonPattern::SEARCH_DFS,"dfs","enumerate frequent patterns"); + opt.parse(argc,argv); + try { + opt.read(); + } catch (const std::invalid_argument& error) { + std::cerr << error.what() << std::endl; + return 1; + } + if (opt.search() == CommonPattern::SEARCH_DFS) + IntMaximizeScript::run(opt); + else + IntMaximizeScript::run(opt); + return 0; +} + +// STATISTICS: example-any diff --git a/examples/common-pattern.hh b/examples/common-pattern.hh new file mode 100644 index 0000000000..236d59c8a1 --- /dev/null +++ b/examples/common-pattern.hh @@ -0,0 +1,431 @@ +/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */ +/* + * Private modelling support for the common-pattern example and its comparison. + * Copyright Mikael Zayenz Lagerkvist, 2026. + * Distributed under the MIT license; see LICENSE. + */ + +#ifndef GECODE_EXAMPLES_COMMON_PATTERN_HH +#define GECODE_EXAMPLES_COMMON_PATTERN_HH + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace PatternMining { + + using namespace Gecode; + typedef std::vector> Sequences; + + enum Format { LETTERS, INTEGERS, SPMF }; + enum Language { DEFAULT, NONE, MOTIF, RE10, RE14, RE2 }; + + /// Read positive integer items or A..Z (represented by item IDs 1..26) + inline std::vector + read_sequence(const std::string& line, Format format) { + std::vector sequence; + if (format == LETTERS) { + for (char a : line) { + if ((a < 'A') || (a > 'Z')) + throw std::invalid_argument("Letter sequences must contain A..Z only"); + sequence.push_back(a-'A'+1); + } + } else { + std::istringstream stream(line); + std::string token; + bool open_itemset = false, ended = false; + while (stream >> token) { + int item; + const auto parsed = std::from_chars(token.data(),token.data()+token.size(),item); + if ((parsed.ec != std::errc()) || (parsed.ptr != token.data()+token.size())) + throw std::invalid_argument("Invalid integer item"); + if (ended) + throw std::invalid_argument("Items after SPMF sequence end"); + if ((format == SPMF) && (item == -1)) { + if (!open_itemset) + throw std::invalid_argument("Empty SPMF itemset"); + open_itemset = false; + } else if ((format == SPMF) && (item == -2)) { + if (open_itemset) + throw std::invalid_argument("Missing SPMF itemset end"); + ended = true; + } else { + if ((item <= 0) || (item > Int::Limits::max) || + ((format == SPMF) && open_itemset)) + throw std::invalid_argument("Expected positive items; SPMF itemsets must be singletons"); + sequence.push_back(item); + open_itemset = true; + } + } + if (!stream.eof() || ((format == SPMF) && !ended)) + throw std::invalid_argument("Invalid sequence or missing SPMF sequence end"); + } + if (sequence.empty()) + throw std::invalid_argument("Empty sequence"); + return sequence; + } + + /// Read one sequence per line, retaining duplicate rows as distinct records + inline Sequences + read_database(std::istream& stream, Format format) { + Sequences input; + std::string line; + while (std::getline(stream,line)) { + if (!line.empty() && (line.back() == '\r')) + line.pop_back(); + if (line.empty() || ((format == SPMF) && + ((line[0] == '#') || (line[0] == '%') || (line[0] == '@')))) + continue; + input.push_back(read_sequence(line,format)); + } + if (!stream.eof() || input.empty()) + throw std::invalid_argument("Cannot read a nonempty sequence database"); + return input; + } + + /// Convert a percentage with at most six decimals to an exact sequence count + inline int + minimum_support(const std::string& percent, int sequences) { + unsigned long long numerator = 0, scale = 1; + bool decimal = false, digit = false; + for (char c : percent) { + if ((c == '.') && !decimal) { + decimal = true; + } else if ((c >= '0') && (c <= '9')) { + digit = true; + numerator = numerator*10 + (c-'0'); + if (decimal) + scale *= 10; + if ((numerator > 100000000ULL) || (scale > 1000000ULL)) + throw std::invalid_argument("Support needs at most six decimals"); + } else { + throw std::invalid_argument("Support must be a percentage in (0,100]"); + } + } + if (!digit || (numerator == 0) || (numerator > 100*scale)) + throw std::invalid_argument("Support must be a percentage in (0,100]"); + const unsigned long long denominator = 100*scale; + return static_cast((sequences*numerator+denominator-1)/denominator); + } + + /// Immutable input, with dense ranks internally and original IDs externally + class Database { + public: + IntSharedArray items, ends, alphabet; + /// Last occurrence of each distinct item per record, in decreasing order + IntSharedArray last_positions, last_ends; + + explicit Database(const Sequences& input) { + if (input.empty()) + throw std::invalid_argument("Empty database"); + std::vector symbols; + for (const std::vector& sequence : input) { + if (sequence.empty() || + (sequence.size() >= static_cast(Int::Limits::max)-symbols.size())) + throw std::invalid_argument("Empty sequence or database too large"); + for (int item : sequence) { + if ((item <= 0) || (item > Int::Limits::max)) + throw std::invalid_argument("Item IDs must be positive Gecode integers"); + symbols.push_back(item); + } + } + items.init(static_cast(symbols.size())); + std::sort(symbols.begin(),symbols.end()); + symbols.erase(std::unique(symbols.begin(),symbols.end()),symbols.end()); + alphabet.init(static_cast(symbols.size())); + std::copy(symbols.begin(),symbols.end(),alphabet.begin()); + ends.init(static_cast(input.size())); + last_ends.init(static_cast(input.size())); + Region region; + int* seen = region.alloc(alphabet.size()); + std::fill(seen,seen+alphabet.size(),-1); + std::vector last; + int k = 0, i = 0; + for (const std::vector& sequence : input) { + const int start = k; + for (int item : sequence) + items[k++] = static_cast(std::lower_bound( + symbols.begin(),symbols.end(),item)-symbols.begin()); + ends[i] = k; + for (int j=k; j-- > start; ) + if (seen[items[j]] != i) { + seen[items[j]] = i; + last.push_back(j); + } + last_ends[i++] = static_cast(last.size()); + } + last_positions.init(static_cast(last.size())); + std::copy(last.begin(),last.end(),last_positions.begin()); + } + + IntSet domain(void) const { return IntSet(alphabet.begin(),alphabet.size()); } + + int max_length(void) const { + int bound = 0, start = 0; + for (int end : ends) { + bound = std::max(bound,end-start); + start = end; + } + return bound; + } + + /// Count supporting records, rather than embeddings within a record + int support(const std::vector& pattern) const { + int count = 0, start = 0; + for (int end : ends) { + size_t matched = 0; + for (int i=start; (i(database.ends.size())), + size(database.ends.size()), data(database), threshold(support) { + for (int i=0; i(p.size)), size(p.size), + data(p.data), threshold(p.threshold) { + std::copy(p.suffixes,p.suffixes+size,suffixes); + } + + /// Keep only records supporting the extended prefix, at their earliest match + bool advance(int item) { + const int rank = static_cast(std::lower_bound( + data.alphabet.begin(),data.alphabet.end(),item)-data.alphabet.begin()); + if ((rank == data.alphabet.size()) || (data.alphabet[rank] != item)) + return false; + int n = 0; + for (int i=0; i= threshold; + } + + int support(void) const { return size; } + + /// Each item's last occurrence suffices to establish its suffix support + IntSet frequent(Region& region, bool termination) const { + const int d = data.alphabet.size(); + int* count = region.alloc(d); + std::fill(count,count+d,0); + for (int i=0; i(d+1); + int n = 0; + if (termination) + values[n++] = 0; + for (int a=0; a= threshold) + values[n++] = data.alphabet[a]; + return IntSet(values,n); + } + + /// The threshold-th largest suffix length bounds every frequent extension + int remaining(Region& region) const { + int* sizes = region.alloc(size); + for (int i=0; i()); + return sizes[threshold-1]; + } + }; + + /** + * \brief Private prefix projection for a growing list + * + * Adapts CP2015 Algorithms 1--2: no termination item, future variables or + * per-input DFA. Unconstructed positions are filtered when they appear. + * Earliest matching is sound for ordinary subsequences, not gap constraints. + */ + class OpenProjection : public Propagator { + protected: + OpenIntVarList list; + Int::IntView length, frequency; + Projection projection; + IntSet available; + int consumed, subscribed; + /// Filtering depends on the assigned prefix, not on constructed positions + int cached_prefix, extension_bound; + + OpenProjection(Space& home, OpenIntVarList pattern, + const Database& database, int support, IntVar count) + : Propagator(home), list(pattern), length(pattern.length()), frequency(count), + projection(home,database,support), consumed(0), + subscribed(pattern.known_length()), cached_prefix(-1), extension_bound(0) { + home.notice(*this,AP_DISPOSE); + list.subscribe(home,*this); + length.subscribe(home,*this,Int::PC_INT_BND); + for (int i=0; i database.ends.size())) { + home.fail(); + return IntVar(); + } + IntVar count(home,support,database.ends.size()); + OpenProjection::post(home,pattern,database,support,count); + return count; + } + + /// Pattern languages from the example and CP2015 Section 5(d) + inline REG + language(Language name, const Database& database) { + if (name == RE10) + return *REG(1) + REG(2) + (REG(2) | REG(3)) + *REG(4) + + REG(5) + *REG(6) + (REG(7) | REG(8)) + *REG(9); + if (name == RE14) + return *REG(1) + (REG(17) | (REG(2) + *REG(19) + + (REG(2) | REG(3)))) + *REG(4) + REG(5) + *(REG(9) | REG(19)) + + (REG(6) | REG(8)) + *REG(7) + REG(18); + REG alphabet(IntArgs(database.alphabet.size(),database.alphabet.begin())); + if (name == MOTIF) + return REG(1) + *alphabet + REG(3); + return (REG(19) | REG(20)) + alphabet + (REG(18) | REG(11)); + } + +} + +#endif diff --git a/examples/fifteen-puzzle.cpp b/examples/fifteen-puzzle.cpp new file mode 100644 index 0000000000..46853f7325 --- /dev/null +++ b/examples/fifteen-puzzle.cpp @@ -0,0 +1,412 @@ +/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */ +/* + * Main author: + * Mikael Zayenz Lagerkvist + * + * Copyright: + * Mikael Zayenz Lagerkvist, 2026 + * + * This file is part of Gecode, the generic constraint + * development environment: + * http://www.gecode.dev + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +using namespace Gecode; +using Board = std::array; + +/// Options for the initial scramble and bounded solution path. +class PuzzleOptions : public Options { + Driver::UnsignedIntOption _scramble; + Driver::UnsignedIntOption _limit; +public: + enum { MODEL_OPEN, MODEL_FIXED }; + PuzzleOptions(void) + : Options("FifteenPuzzle"), + _scramble("scramble","number of random slides from the goal",12), + _limit("limit","maximum number of solution moves",12) { + add(_scramble); + add(_limit); + model(MODEL_OPEN); + model(MODEL_OPEN,"open","construct states as the path grows"); + model(MODEL_FIXED,"fixed","construct all bounded states initially"); + solutions(0); + seed(1); + } + unsigned int + scramble(void) const { + return _scramble.value(); + } + int + limit(void) const { + Int::Limits::check(16*(static_cast(_limit.value())+1), + "FifteenPuzzle::limit"); + return static_cast(_limit.value()); + } +}; + +static Board +goal(void) { + return {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0}; +} + +static std::vector +neighbors(int blank) { + std::vector result; + if (blank >= 4) + result.push_back(blank-4); + if (blank % 4 != 0) + result.push_back(blank-1); + if (blank % 4 != 3) + result.push_back(blank+1); + if (blank < 12) + result.push_back(blank+4); + return result; +} + +static Board +initial_board(const PuzzleOptions& opt) { + Board board = goal(); + Rnd random(opt.seed()); + int blank = 15; + int previous = -1; + for (unsigned int i=0; i choices = neighbors(blank); + choices.erase(std::remove(choices.begin(),choices.end(),previous), + choices.end()); + int next = choices[random(static_cast(choices.size()))]; + std::swap(board[blank],board[next]); + previous = blank; + blank = next; + } + return board; +} + +static int +manhattan(const Board& board) { + int distance = 0; + for (int i=0; i<16; i++) { + if (board[i] != 0) { + const int target = board[i]-1; + distance += std::abs(i/4-target/4) + std::abs(i%4-target%4); + } + } + return distance; +} + +static Board +values(const IntVarArgs& tiles) { + Board result; + for (int i=0; i<16; i++) + result[i] = tiles[i].val(); + return result; +} + +static void +print_board(std::ostream& os, const Board& board) { + for (int i=0; i<16; i++) { + os << std::setw(3) << board[i]; + if (i % 4 == 3) + os << '\n'; + } +} + +static void +post_start(Home home, const IntVarArgs& tiles, IntVar blank, + const Board& initial) { + for (int i=0; i<16; i++) + rel(home,tiles[i] == initial[i]); + const int zero = static_cast( + std::find(initial.begin(),initial.end(),0)-initial.begin()); + rel(home,blank == zero); +} + +// Both representations use these rules between successive states. +static void +post_slide(Home home, + const IntVarArgs& before, IntVar old_blank, + const IntVarArgs& after, IntVar new_blank) { + static const TupleSet adjacent = [] { + TupleSet table(2); + for (int i=0; i<16; i++) { + for (int j : neighbors(i)) + table.add(IntArgs({i,j})); + } + table.finalize(); + return table; + }(); + extensional(home,IntVarArgs({old_blank,new_blank}),adjacent); + rel(home,element(after,old_blank) == element(before,new_blank)); + rel(home,element(after,new_blank) == 0); + for (int i=0; i<16; i++) { + rel(home,((old_blank != i) && (new_blank != i)) >> + (before[i] == after[i])); + } +} + +static void +post_goal(Home home, const IntVarArgs& tiles, IntVar length, + int states) { + const Board target = goal(); + BoolExpr solved(tiles[0] == target[0]); + for (int i=1; i<16; i++) + solved = solved && (tiles[i] == target[i]); + rel(home,(length >= states) >> ((length == states) == solved)); +} + +/** + * \brief %Example: solve the 15-puzzle with an open list of states + * + * Start from a solvable board obtained by randomly sliding from the goal. + * Each path position is the blank position in one board; the tile list holds + * sixteen variables per board. The transition on the path constructs and + * constrains the next board when that position is materialized. + * Goal detection waits until that board is assigned, so it does not require + * constructing future boards to decide whether the path should continue. + * Manhattan distance rejects assigned boards that cannot reach the goal + * within the remaining move bound, without increasing the list's minimum. + * + * The goal closes the path. Length counts states including the start, so + * branch and bound minimizes moves by minimizing length minus one. + * The independent move limit bounds search and need not equal the scramble. + * Defaults use twelve slides, seed one, and a twelve-move limit. Select + * -model fixed to compare with an array representation; -scramble, -seed, + * and -limit control the instance and search bound independently. + * + * \ingroup Example + */ +class OpenPuzzle : public Script { + OpenIntVarList tiles; + OpenIntVarList path; +public: + OpenPuzzle(const PuzzleOptions& opt) + : Script(opt), + tiles(*this,IntSet(0,15),16*(opt.limit()+1)), + path(*this,IntSet(0,15), + [](Space& home, OpenIntVarList x, int i) { + static_cast(home).transition(x,i); + },opt.limit()+1) { + const Board initial = initial_board(opt); + rel(*this,tiles.length() == 16*path.length()); + tiles.materialize(*this,16); + IntVar start = path.get(*this,0); + post_start(*this,state(0),start,initial); + wait_goal(0); + branch(*this,path,INT_VAR_NONE(),INT_VAL_MIN()); + } + + bool + check_bound(int i, const Board& board) { + if (i+manhattan(board) <= path.length().max()-1) + return true; + fail(); + return false; + } + + void + force_goal(int i) { + const Board target = goal(); + const IntVarArgs board = state(i); + for (int j=0; j<16; j++) + rel(*this,board[j],IRT_EQ,target[j]); + } + + void + wait_goal(int i) { + if (path.length().max() == i+1) { + force_goal(i); + if (failed()) + return; + } + wait(*this,state(i),[i](Space& home) { + OpenPuzzle& s = static_cast(home); + const Board board = values(s.state(i)); + if (!s.check_bound(i,board)) + return; + if (board == goal()) + rel(home,s.path.length(),IRT_EQ,i+1); + else + rel(home,s.path.length(),IRT_GR,i+1); + }); + } + + void + transition(OpenIntVarList x, int i) { + // The constructor posts the starting board unconditionally. + if (i == 0) + return; + tiles.materialize(*this,16*(i+1)); + if (failed()) + return; + post_slide(*this,state(i-1),x[i-1],state(i),x[i]); + wait_goal(i); + } + + OpenPuzzle(OpenPuzzle& s) : Script(s) { + tiles.update(*this,s.tiles); + path.update(*this,s.path); + } + Space* + copy(void) override { + return new OpenPuzzle(*this); + } + IntVarArgs + state(int i) const { + IntVarArgs result(16); + for (int j=0; j<16; j++) + result[j] = tiles[16*i+j]; + return result; + } + int + depth(void) const { + int i = 0; + while (i+1 < path.known_length() && path[i+1].assigned()) + i++; + return i; + } + void + constrain(const Space& solution) override { + const OpenPuzzle& best = static_cast(solution); + rel(*this,path.length() < best.path.length().val()); + if (failed()) + return; + // BAB can constrain after a commit, before the board becomes assigned. + int current = depth(); + while (current > 0 && !state(current).assigned()) + current--; + if (!check_bound(current,values(state(current)))) + return; + const int last = path.length().max()-1; + if (16*(last+1) <= tiles.known_length()) + force_goal(last); + } + void + print(std::ostream& os) const override { + os << "Moves: " << path.length().val()-1 << "\nBlank positions:"; + for (int i=0; i= manhattan(initial)+1); + branch(*this,path,INT_VAR_NONE(),INT_VAL_MIN(), + [](const Space& home, IntVar, int i) { + const FixedPuzzle& s = static_cast(home); + const int g = s.depth(); + return values(s.state(g)) != goal() && i == g+1; + }); + } + + FixedPuzzle(FixedPuzzle& s) : Script(s) { + tiles.update(*this,s.tiles); + path.update(*this,s.path); + length.update(*this,s.length); + } + Space* + copy(void) override { + return new FixedPuzzle(*this); + } + IntVarArgs + state(int i) const { + IntVarArgs result(16); + for (int j=0; j<16; j++) + result[j] = tiles[16*i+j]; + return result; + } + int + depth(void) const { + int i = 0; + while (i+1 < path.size() && path[i+1].assigned()) + i++; + return i; + } + void + constrain(const Space& solution) override { + const FixedPuzzle& best = static_cast(solution); + rel(*this,length < best.length.val()); + } + void + print(std::ostream& os) const override { + os << "Moves: " << length.val()-1 << "\nBlank positions:"; + for (int i=0; i(opt); + else + Script::run(opt); + return 0; +} + +// STATISTICS: example-any diff --git a/examples/open-route.cpp b/examples/open-route.cpp new file mode 100644 index 0000000000..8bab74aaab --- /dev/null +++ b/examples/open-route.cpp @@ -0,0 +1,129 @@ +/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */ +/* + * Main author: + * Mikael Zayenz Lagerkvist + * + * Copyright: + * Mikael Zayenz Lagerkvist, 2026 + * + * This file is part of Gecode, the generic constraint + * development environment: + * http://www.gecode.dev + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + +#include +#include + +using namespace Gecode; + +/** + * \brief %Example: simple routes of unknown length + * + * Find all simple routes from node 0 to node 4 in this directed graph: + * 0 -> 1, 2, 4 + * 1 -> 2, 4 + * 2 -> 1, 3 + * 3 -> 2, 4 + * + * The graph contains cycles, but distinct node variables exclude revisits. + * A simple route uses at most the five nodes, so this finite bound preserves + * every solution while ensuring that search terminates. + * + * \ingroup Example + */ +class OpenRoute : public Script { +protected: + /// Number of graph nodes and maximal route length + static const int n = 5; + /// Node IDs in route order, including source and destination + OpenIntVarList route; +public: + /// Branching to use for the route + enum { + BRANCH_INCREMENTAL, ///< Assign the current prefix before extending it + BRANCH_LENGTH ///< Choose the complete route length first + }; + + /// Construct the model + OpenRoute(const Options& opt) + : Script(opt), route(*this,IntSet(0,n-1),n) { + // State 5 consumes the source node. Each remaining transition consumes + // the destination of a graph arc; only node 4 is an accepting state. + DFA paths(5,{ + {5,0,0}, + {0,1,1}, {0,2,2}, {0,4,4}, + {1,2,2}, {1,4,4}, + {2,1,1}, {2,3,3}, + {3,2,2}, {3,4,4} + },{4}); + extensional(*this,route,paths); + distinct(*this,route); + + // Ordinary brancher posting order gives length-first search when wanted. + if (opt.branching() == BRANCH_LENGTH) + branch(*this,route.length(),INT_VAL_MIN()); + branch(*this,route,INT_VAR_NONE(),INT_VAL_MIN()); + } + + /// Constructor for cloning \a s, including the space-local open list + OpenRoute(OpenRoute& s) : Script(s) { + route.update(*this,s.route); + } + + /// Perform copying during cloning + virtual Space* + copy(void) { + return new OpenRoute(*this); + } + + /// Print the materialized route (complete in a solution) + virtual void + print(std::ostream& os) const { + os << "\t"; + for (int i=0; i 0) + os << " -> "; + os << route[i]; + } + os << " (length " << route.length() << ")" << std::endl; + } +}; + +/** \brief Main-function + * \relates OpenRoute + */ +int +main(int argc, char* argv[]) { + Options opt("OpenRoute"); + opt.solutions(0); + opt.branching(OpenRoute::BRANCH_INCREMENTAL); + opt.branching(OpenRoute::BRANCH_INCREMENTAL,"incremental", + "Assign the current prefix before extending the route"); + opt.branching(OpenRoute::BRANCH_LENGTH,"length", + "Choose the complete route length first"); + opt.parse(argc,argv); + Script::run(opt); + return 0; +} + +// STATISTICS: example-any diff --git a/gecode/int.hh b/gecode/int.hh index 04bfb99d70..de652eddbf 100755 --- a/gecode/int.hh +++ b/gecode/int.hh @@ -2424,8 +2424,340 @@ namespace Gecode { std::size_t hash(void) const; }; + /** + * \brief Space-local list of variables with an open length + * + * Variables can be appended until the list is closed. The length + * variable denotes the eventual list length. Propagation materializes + * positions required by its minimum. The known_length() query counts the + * positions already constructed. Indexed access is limited to this prefix; + * get() creates positions and requires enough eventual length to include + * the requested position. + * + * Handles in one Space share the same list. Updating during cloning + * preserves that sharing in the clone with separate mutable state. + * + * OpenIntVarList and OpenBoolVarList provide standard factories. + * Other variable types use a factory passed to OpenVarList, for + * example a function returning SetVar or FloatVar. Storage, cloning, and + * materialization are shared; constraint and branching overloads remain + * specific to the variable type. Var must provide the usual Gecode variable + * handle operations: default and copy construction, assignment, assigned(), + * varimp(), and update(). + * + * Operations require an initialized list belonging to the supplied space. + * Appended variables must also be initialized and belong to that space. + * + * A list can be used in an ordinary Space: + * \code + * class Model : public Space { + * public: + * OpenIntVarList x; + * Model(void) : x(*this,IntSet(0,2),3) { + * rel(*this,x.length(),IRT_GQ,1); + * distinct(*this,x); + * branch(*this,x); + * } + * Model(Model& s) : Space(s) { + * x.update(*this,s.x); + * } + * virtual Space* copy(void) { + * return new Model(*this); + * } + * }; + * \endcode + * + * The \ref CommonPattern "common-pattern example" finds constrained + * frequent subsequences across several inputs. The pattern length is a decision; + * the open list avoids allocating an array up to the input-length bound + * and encoding an unused suffix with a termination symbol. Shared prefix + * projection and regular constraints on the pattern language follow growth. + * The \ref OpenRoute "open-route example" is a smaller introduction, + * including search and printing solutions. + * + * \ingroup TaskModelInt + */ + template + class OpenVarList : public LocalHandle { + private: + /// Space-local list implementation + class Object; + public: + /** + * \brief Function creating the variable at position \a i in \a home + * + * The function object is shared between clones. It must be deterministic + * and safe for concurrent calls. Captured data must be owned or shared + * and must not be space-local. Returned variables must belong to \a home + * and be initialized. + * + * Materialization calls the factory inside a Space::NoGPI scope. + * New propagators keep their information in the space and have zero + * AFC, so AFC-based branching does not count them. Identifiers and + * groups remain available. Group changes are local to the space; clones + * copy the current group. A callback-local + * Space::UseGPI scope enables global information and ordinary AFC for + * selected postings. Nested materialization starts a new NoGPI scope. + * Each scope restores the previous setting when it ends, including + * exception unwinding. + */ + typedef std::function Factory; + /** + * \brief Function called after materializing position \a i + * + * The function object is shared between clones. It must be + * deterministic and safe for concurrent calls. Captured data must be + * owned or shared and must not be space-local; \a home and \a x refer + * to the current space. + * + * Calls from materialize() and direct append() run inside a + * Space::NoGPI scope with the same AFC and group behavior as Factory. + * A callback-local Space::UseGPI scope enables global information for + * selected postings. Nested materialize() or append() calls enter their + * own NoGPI scope and restore the callback's setting when they return. + */ + typedef std::function x, int i)> + Transition; + /// Construct an uninitialized list + OpenVarList(void); + /// Construct a list using \a create for each position + OpenVarList(Space& home, Factory create, + int max=Int::Limits::max); + /// Construct a list using \a create and transition function \a t + OpenVarList(Space& home, Factory create, Transition t, + int max=Int::Limits::max); + /// Update during cloning + void update(Space& home, OpenVarList& s); + /// Return the number of constructed positions (their values may be unassigned) + int known_length(void) const; + /// Return variable at position \a i (\a i must be a valid position) + Var operator [](int i) const; + /// Return the eventual-length variable + IntVar length(void) const; + /** + * \brief Append variable \a x + * + * Constrains the eventual length to include the new position and calls + * the transition function, if supplied, inside a Space::NoGPI scope. + * + * Throws an exception of type Int::ArgumentSame if \a x is an + * unassigned variable already in the list. + */ + void append(Space& home, Var x); + /** + * \brief Materialize the first \a n variables + * + * The eventual length is constrained to be at least \a n. Positions + * required by its minimum are materialized, including any increase + * imposed by the transition function. + * + * Factory and transition calls run inside Space::NoGPI scopes by + * default. A callback-local Space::UseGPI scope enables global + * information for selected postings (see Factory). + */ + void materialize(Space& home, int n); + /** + * \brief Require and return the variable at position \a i + * + * Constrains the eventual length to be at least \a i+1 and materializes + * positions through \a i, using the Space::NoGPI scopes documented + * for materialize(). + * + * Returns an uninitialized variable if \a home is failed or + * materialization fails. Throws Int::OutOfLimits for a negative index, + * an index outside Int::Limits, or (in a nonfailed space) an index at + * least length().max(). Check for failure before using the result, + * for example with an integer list: + * \code + * IntVar y = x.get(home,i); + * if (home.failed()) + * return; + * rel(home,y,IRT_NQ,0); + * \endcode + */ + Var get(Space& home, int i); + /** + * \brief Close the list at its materialized length + * + * First materializes any positions required by the minimum eventual + * length, using the Space::NoGPI scopes documented for materialize(), + * then assigns the eventual length to the number of positions. + * The contained variables can remain unassigned. + */ + void close(Space& home); + /// Subscribe \a p to the addition of positions + void subscribe(Space& home, Propagator& p); + /// Cancel the subscription of \a p to the addition of positions + void cancel(Space& home, Propagator& p); + /// Reschedule \a p for the addition of positions + void reschedule(Space& home, Propagator& p); + }; + + + /** + * \brief Open list of integer variables + * \ingroup TaskModelInt + */ + class OpenIntVarList : public OpenVarList { + public: + /** + * \brief Function returning the domain for position \a i + * + * Like Factory, it must be deterministic, safe for concurrent calls, and + * must not capture space-local data. Captured data must be owned or shared. + * The function object is shared between clones. + */ + typedef std::function Domain; + using OpenVarList::OpenVarList; + /// Construct an uninitialized list + GECODE_INT_EXPORT OpenIntVarList(void); + /// Share an integer list constructed through a variable factory + OpenIntVarList(const OpenVarList& x); + /// Construct a list with maximal length \a max and full domains + GECODE_INT_EXPORT + OpenIntVarList(Space& home, int max=Int::Limits::max); + /// Construct a list using domain \a d for every position + GECODE_INT_EXPORT + OpenIntVarList(Space& home, const IntSet& d, + int max=Int::Limits::max); + /// Construct a list using domain \a d and transition function \a t + GECODE_INT_EXPORT + OpenIntVarList(Space& home, const IntSet& d, Transition t, + int max=Int::Limits::max); + /// Construct a list using \a d to create each position + GECODE_INT_EXPORT + OpenIntVarList(Space& home, Domain d, + int max=Int::Limits::max); + /// Construct a list using \a d and transition function \a t + GECODE_INT_EXPORT + OpenIntVarList(Space& home, Domain d, Transition t, + int max=Int::Limits::max); + private: + /// Convert a position-dependent domain to a variable factory + static Factory factory(Domain d); + }; + + /** + * \brief Open list of Boolean variables + * \ingroup TaskModelInt + */ + class OpenBoolVarList : public OpenVarList { + public: + using OpenVarList::OpenVarList; + /// Construct an uninitialized list + GECODE_INT_EXPORT OpenBoolVarList(void); + /// Share a Boolean list constructed through a variable factory + OpenBoolVarList(const OpenVarList& x); + /// Construct a list with maximal length \a max and domains 0..1 + GECODE_INT_EXPORT + OpenBoolVarList(Space& home, int max=Int::Limits::max); + /// Construct a list with domains 0..1 and transition function \a t + GECODE_INT_EXPORT + OpenBoolVarList(Space& home, Transition t, + int max=Int::Limits::max); + }; + +} + +namespace Gecode { + + /** + * \brief Constrain all materialized variables in \a x to be distinct + * + * The constraint is value consistent and applies to variables added + * after posting. The propagation level \a ipl is ignored. + * + * \ingroup TaskModelIntDistinct + */ + GECODE_INT_EXPORT void + distinct(Home home, OpenIntVarList x, + IntPropLevel ipl=IPL_DEF); + + /** + * \brief Constrain consecutive materialized variables in \a x by \a irt + * + * The constraint applies to variables added after posting. + * + * \ingroup TaskModelIntRel + */ + GECODE_INT_EXPORT void + rel(Home home, OpenIntVarList x, IntRelType irt, + IntPropLevel ipl=IPL_DEF); + + /** + * \brief Post a sliding sequence constraint on \a x + * + * Each complete window of size \a q, including windows completed after + * posting, contains between \a l and \a u values from \a s. + * + * \ingroup TaskModelIntSequence + */ + GECODE_INT_EXPORT void + sequence(Home home, OpenIntVarList x, const IntSet& s, + int q, int l, int u, IntPropLevel ipl=IPL_DEF); + + /** + * \brief Constrain the sum of every complete window in \a x + * + * Each complete window of size \a q, including windows completed after + * posting, has a sum between \a l and \a u. + * + * \ingroup TaskModelIntSequence + */ + GECODE_INT_EXPORT void + slidingsum(Home home, OpenIntVarList x, + int q, int l, int u, IntPropLevel ipl=IPL_DEF); + + /** + * \brief Constrain \a y to the minimum of the eventual sequence \a x + * + * The eventual sequence must be nonempty. Bounds are enforced as positions + * appear; attainment of the extremum is enforced when the list closes. + * + * \ingroup TaskModelIntArith + */ + GECODE_INT_EXPORT void + min(Home home, OpenIntVarList x, IntVar y, + IntPropLevel ipl=IPL_DEF); + + /** + * \brief Constrain \a y to the maximum of the eventual sequence \a x + * + * The eventual sequence must be nonempty. Bounds are enforced as positions + * appear; attainment of the extremum is enforced when the list closes. + * + * \ingroup TaskModelIntArith + */ + GECODE_INT_EXPORT void + max(Home home, OpenIntVarList x, IntVar y, + IntPropLevel ipl=IPL_DEF); + + /** + * \brief Constrain \a s to precede \a t in the eventual sequence \a x + * + * The constraint applies to variables added after posting. + * + * \ingroup TaskModelIntPrecede + */ + GECODE_INT_EXPORT void + precede(Home home, OpenIntVarList x, int s, int t, + IntPropLevel ipl=IPL_DEF); + + /** + * \brief Constrain successive values in \a c to precede each other in \a x + * + * The constraint applies to variables added after posting. + * + * \ingroup TaskModelIntPrecede + */ + GECODE_INT_EXPORT void + precede(Home home, OpenIntVarList x, const IntArgs& c, + IntPropLevel ipl=IPL_DEF); + } +#include + #include namespace Gecode { namespace Int { namespace Extensional { @@ -2841,6 +3173,27 @@ namespace Gecode { extensional(Home home, const BoolVarArgs& x, DFA d, IntPropLevel ipl=IPL_DEF); + /** + * \brief Post an open regular-language constraint + * + * While \a x is open, its materialized prefix must have a continuation + * accepted by \a d. Once its length equals its materialized size, the + * complete list must be accepted by \a d. + * + * \ingroup TaskModelIntExt + */ + GECODE_INT_EXPORT void + extensional(Home home, OpenIntVarList x, DFA d, + IntPropLevel ipl=IPL_DEF); + + /** + * \brief Post an open regular-language constraint on Boolean variables + * \ingroup TaskModelIntExt + */ + GECODE_INT_EXPORT void + extensional(Home home, OpenBoolVarList x, DFA d, + IntPropLevel ipl=IPL_DEF); + /** \brief Post propagator for \f$x\in t\f$. * * \li Supports domain consistency (\a ipl = IPL_DOM, default) only. @@ -5810,6 +6163,70 @@ namespace Gecode { GECODE_INT_EXPORT void branch(Home home, IntVar x, IntValBranch vals, IntVarValPrint vvp=nullptr); + /** + * \brief Branch over the eventual integer list \a x + * + * Selects the first unassigned materialized variable and its minimum + * value. Once all materialized variables are assigned, tries closing the + * list before extending it by one position. + * \ingroup TaskModelIntBranch + */ + GECODE_INT_EXPORT void + branch(Home home, OpenIntVarList x); + /** + * \brief Branch over the eventual Boolean list \a x + * \ingroup TaskModelIntBranch + */ + GECODE_INT_EXPORT void + branch(Home home, OpenBoolVarList x); + /** + * \brief Branch over an open integer list with standard selectors + * + * Selectors consider all materialized positions accepted by the filter. + * Once these variables are assigned, the brancher first tries to close at + * known_length(), then requires at least one more position and resumes + * value selection. Filters and callbacks receive the position in the list. + * With no finite application bound, exploring these lengths can be very + * expensive. + * + * To decide the length before list values, post an ordinary brancher on + * x.length() before the list brancher, for example: + * \code + * branch(home,x.length(),INT_VAL_MIN()); + * branch(home,x,INT_VAR_SIZE_MIN(),INT_VAL_MIN()); + * \endcode + * Branchers run in posting order. Once the length is assigned, propagation + * materializes that many positions before the list brancher selects values. + * + * Action and CHB selection require the complete list to be materialized + * when posting; otherwise Int::UnknownBranching is thrown. + * \ingroup TaskModelIntBranch + */ + GECODE_INT_EXPORT void + branch(Home home, OpenIntVarList x, + IntVarBranch vars, IntValBranch vals, + IntBranchFilter bf=nullptr, IntVarValPrint vvp=nullptr); + /// Branch over an open integer list with tie-breaking selectors + GECODE_INT_EXPORT void + branch(Home home, OpenIntVarList x, + TieBreak vars, IntValBranch vals, + IntBranchFilter bf=nullptr, IntVarValPrint vvp=nullptr); + /** + * \brief Branch over an open Boolean list with standard selectors + * + * The incremental branching, filter, and Action/CHB restrictions are as + * for integers. + * \ingroup TaskModelIntBranch + */ + GECODE_INT_EXPORT void + branch(Home home, OpenBoolVarList x, + BoolVarBranch vars, BoolValBranch vals, + BoolBranchFilter bf=nullptr, BoolVarValPrint vvp=nullptr); + /// Branch over an open Boolean list with tie-breaking selectors + GECODE_INT_EXPORT void + branch(Home home, OpenBoolVarList x, + TieBreak vars, BoolValBranch vals, + BoolBranchFilter bf=nullptr, BoolVarValPrint vvp=nullptr); /** * \brief Branch over \a x with variable selection \a vars and value selection \a vals * diff --git a/gecode/int/branch/cbs.hpp b/gecode/int/branch/cbs.hpp index 6c21bcf1f4..263d437428 100755 --- a/gecode/int/branch/cbs.hpp +++ b/gecode/int/branch/cbs.hpp @@ -191,13 +191,15 @@ namespace Gecode { namespace Int { namespace Branch { // We delete unvisited propagators from the log and look for the highest // solution density across all propagators. - for (const auto& kv : logProp) { - unsigned int prop_id = kv.first; - const PropInfo& info = kv.second; - if (!info.visited) - logProp.erase(prop_id); - else if (info.dens > maxSD.dens) - maxSD = {info.var_id, info.val, info.dens}; + for (auto i = logProp.begin(); i != logProp.end(); ) { + if (!i->second.visited) { + i = logProp.erase(i); + } else { + const PropInfo& info = i->second; + if (info.dens > maxSD.dens) + maxSD = {info.var_id, info.val, info.dens}; + ++i; + } } assert(maxSD.dens != -1); diff --git a/gecode/int/extensional-open-regular.cpp b/gecode/int/extensional-open-regular.cpp new file mode 100644 index 0000000000..9456c2792b --- /dev/null +++ b/gecode/int/extensional-open-regular.cpp @@ -0,0 +1,308 @@ +/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */ +/* + * Main authors: + * Mikael Zayenz Lagerkvist + * + * Copyright: + * Mikael Zayenz Lagerkvist, 2026 + * + * This file is part of Gecode, the generic constraint + * development environment: + * http://www.gecode.dev + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + +#include + +#include + +namespace Gecode { namespace Int { namespace Extensional { + + template + class OpenRegular : public Propagator { + protected: + OpenVarList list; + IntView length; + DFA dfa; + unsigned char* start; + int offset; + int subscribed; + + OpenRegular(Home home, + OpenVarList list0, DFA dfa0) + : Propagator(home), list(list0), + length(list0.length()), + dfa(dfa0), + start(static_cast(home).alloc(dfa.n_states())), + offset(0), subscribed(list0.known_length()) { + home.notice(*this,AP_DISPOSE); + for (int i=0; i(p.dfa.n_states())), + offset(p.offset), subscribed(p.subscribed) { + list.update(home,p.list); + length.update(home,p.length); + for (int i=0; i= dfa.final_fst()) && (state < dfa.final_lst()); + } + + bool + viable(void) const { + return (dfa.final_fst() < dfa.final_lst()) || + ((dfa.final_fst() == 0) && (dfa.final_lst() == 0)); + } + + bool + tail(const unsigned char* reachable, bool closed) const { + if (closed) { + for (int i=0; i(n+1) * + static_cast(k); + if (cells > + static_cast + ((std::numeric_limits::max)())) + throw OutOfLimits("Int::extensional"); + + unsigned char* backward = + r.alloc(static_cast(cells)); + for (size_t i=0; i(cells); i++) + backward[i] = 0; + + unsigned char* last = backward + static_cast(n)*k; + if (closed) { + for (int s=0; s(i)*k; + unsigned char* out = in+k; + View x(list[offset+i]); + for (ViewValues v(x); v(); ++v) + for (DFA::Transitions t(dfa,v.val()); t(); ++t) + if (out[t.o_state()] != 0) + in[t.i_state()] = 1; + } + return backward; + } + + public: + virtual Actor* + copy(Space& home) { + return new (home) OpenRegular(home,*this); + } + + virtual PropCost + cost(const Space&, const ModEventDelta&) const { + return PropCost::linear(PropCost::HI,subscribed-offset); + } + + virtual void + reschedule(Space& home) { + length.reschedule(home,*this,PC_INT_VAL); + list.reschedule(home,*this); + for (int i=offset; i(k); + unsigned char* next = r.alloc(k); + for (int s=0; s(dfa.n_symbols()); + int n_supported = 0; + const unsigned char* out = backward + static_cast(i+1)*k; + for (ViewValues v(x); v(); ++v) { + bool support = false; + for (DFA::Transitions t(dfa,v.val()); t() && !support; ++t) + support = (reachable[t.i_state()] != 0) && + (out[t.o_state()] != 0); + if (support) + supported[n_supported++] = v.val(); + } + if (n_supported == 0) + return ES_FAILED; + Iter::Values::Array v(supported,n_supported); + GECODE_ME_CHECK(x.narrow_v(home,v,false)); + + for (int s=0; s value(x); value(); ++value) + for (DFA::Transitions t(dfa,value.val()); t(); ++t) + if ((reachable[t.i_state()] != 0) && + (out[t.o_state()] != 0)) + next[t.o_state()] = 1; + unsigned char* swap = reachable; + reachable = next; + next = swap; + } + + int consumed = 0; + while ((consumed < n) && list[offset+consumed].assigned()) { + const unsigned char* live = + backward + static_cast(consumed+1)*k; + unsigned char* next = r.alloc(k); + for (int s=0; s list, DFA dfa) { + for (int i=0; i + ::post(home,list,dfa))); + } + + void + extensional(Home home, OpenBoolVarList list, DFA dfa, + IntPropLevel) { + GECODE_POST; + GECODE_ES_FAIL((Int::Extensional::OpenRegular + ::post(home,list,dfa))); + } + +} + +// STATISTICS: int-prop diff --git a/gecode/int/extensional/dfa.cpp b/gecode/int/extensional/dfa.cpp index 112c75d86d..648430eebc 100755 --- a/gecode/int/extensional/dfa.cpp +++ b/gecode/int/extensional/dfa.cpp @@ -33,6 +33,9 @@ #include +#include +#include + namespace Gecode { namespace Int { namespace Extensional { /** @@ -154,22 +157,35 @@ namespace Gecode { using namespace Extensional; Region region; - // Compute number of states and transitions - int n_states = start; + // Collect the state identifiers before allocating state-indexed storage. + // DFA specifications may use sparse external identifiers; all subsequent + // algorithms operate on a compact internal numbering. + std::vector states; + states.push_back(start); int n_trans = 0; for (Transition* t = &t_spec[0]; t->i_state >= 0; t++) { - n_states = std::max(n_states,t->i_state); - n_states = std::max(n_states,t->o_state); + states.push_back(t->i_state); + states.push_back(t->o_state); n_trans++; } for (int* f = &f_spec[0]; *f >= 0; f++) - n_states = std::max(n_states,*f); - n_states++; + states.push_back(*f); + std::sort(states.begin(),states.end()); + states.erase(std::unique(states.begin(),states.end()),states.end()); + const auto compact = [&states](int state) { + return static_cast( + std::lower_bound(states.begin(),states.end(),state)-states.begin()); + }; + int n_states = static_cast(states.size()); + start = compact(start); // Temporary structure for transitions Transition* trans = region.alloc(n_trans); - for (int i=0; i(n_states+1); bool* is_final = region.alloc(n_states+1); @@ -177,8 +193,11 @@ namespace Gecode { for (int i=0; i + * + * Copyright: + * Mikael Zayenz Lagerkvist, 2026 + * + * This file is part of Gecode, the generic constraint + * development environment: + * http://www.gecode.dev + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + +#include + +namespace Gecode { + + OpenIntVarList::OpenIntVarList(void) {} + + OpenIntVarList::Factory + OpenIntVarList::factory(Domain d) { + if (!d) + throw InvalidFunction("OpenIntVarList"); + return [d](Space& home, int i) { return IntVar(home,d(i)); }; + } + + OpenIntVarList::OpenIntVarList(Space& home, int max) + : OpenIntVarList(home, + IntSet(Int::Limits::min,Int::Limits::max),max) {} + + OpenIntVarList::OpenIntVarList(Space& home, const IntSet& d, + int max) + : OpenIntVarList(home,[d](int) { return d; },max) {} + + OpenIntVarList::OpenIntVarList(Space& home, const IntSet& d, + Transition t, int max) + : OpenIntVarList(home,[d](int) { return d; },t,max) {} + + OpenIntVarList::OpenIntVarList(Space& home, Domain d, int max) + : OpenVarList(home,factory(d),max) {} + + OpenIntVarList::OpenIntVarList(Space& home, Domain d, + Transition t, int max) + : OpenVarList(home,factory(d),t,max) {} + + OpenBoolVarList::OpenBoolVarList(void) {} + + OpenBoolVarList::OpenBoolVarList(Space& home, int max) + : OpenVarList(home, + [](Space& home, int) { return BoolVar(home,0,1); },max) {} + + OpenBoolVarList::OpenBoolVarList(Space& home, Transition t, + int max) + : OpenVarList(home, + [](Space& home, int) { return BoolVar(home,0,1); },t,max) {} + +} + +namespace Gecode { namespace Int { + + class OpenListPropagator : public Propagator { + protected: + OpenIntVarList list; + IntView length; + int posted; + + OpenListPropagator(Home home, OpenIntVarList list0) + : Propagator(home), list(list0), + length(list0.length()), + posted(0) { + length.subscribe(home,*this,PC_INT_BND); + list.subscribe(home,*this); + } + + OpenListPropagator(Space& home, OpenListPropagator& p) + : Propagator(home,p), posted(p.posted) { + list.update(home,p.list); + length.update(home,p.length); + } + + bool + closed(void) const { + return length.max() == list.known_length(); + } + + void + dispose_base(Space& home) { + length.cancel(home,*this,PC_INT_BND); + list.cancel(home,*this); + list.~OpenIntVarList(); + (void) Propagator::dispose(home); + } + + public: + virtual PropCost + cost(const Space&, const ModEventDelta&) const { + return PropCost::linear(PropCost::LO,list.known_length()-posted); + } + + virtual void + reschedule(Space& home) { + length.reschedule(home,*this,PC_INT_BND); + list.reschedule(home,*this); + } + }; + + + class OpenDistinct : public OpenListPropagator { + protected: + OpenDistinct(Home home, OpenIntVarList list) + : OpenListPropagator(home,list) {} + + OpenDistinct(Space& home, OpenDistinct& p) + : OpenListPropagator(home,p) {} + + public: + virtual PropCost + cost(const Space&, const ModEventDelta&) const { + return PropCost::linear(PropCost::LO,list.known_length()); + } + + virtual Actor* + copy(Space& home) { + return new (home) OpenDistinct(home,*this); + } + + virtual ExecStatus + propagate(Space& home, const ModEventDelta&) { + const int size = list.known_length(); + for (int i=posted; i(size); + int n = 0; + for (int i=0; i 1) { + std::sort(values,values+n); + for (int i=1; i + class OpenMinMax : public OpenListPropagator { + protected: + IntView result; + IntPropLevel ipl; + + OpenMinMax(Home home, OpenIntVarList list, + IntView result0, IntPropLevel ipl0) + : OpenListPropagator(home,list), + result(result0), ipl(ipl0) {} + + OpenMinMax(Space& home, OpenMinMax& p) + : OpenListPropagator(home,p), ipl(p.ipl) { + result.update(home,p.result); + } + + public: + virtual Actor* + copy(Space& home) { + return new (home) OpenMinMax(home,*this); + } + + virtual ExecStatus + propagate(Space& home, const ModEventDelta&) { + const int size = list.known_length(); + for (int i=posted; i 0) + seen.update(home,p.seen); + } + + public: + virtual Actor* + copy(Space& home) { + return new (home) OpenPrecede(home,*this); + } + + virtual ExecStatus + propagate(Space& home, const ModEventDelta&) { + if ((posted > 0) && seen.one()) + return home.ES_SUBSUMED(*this); + const int size = list.known_length(); + for (int i=posted; i + class OpenListBrancher : public Brancher { + protected: + typedef typename View::VarType Var; + OpenVarList list; + ViewSel* vs[n]; + ValSelCommitBase* vsc; + BrancherFilter filter; + SharedData> printer; + IntValBranch::Select values; + bool select_first; + mutable int start; + + OpenListBrancher(Home home, OpenVarList list0, + ViewSel* vs0[n], + ValSelCommitBase* vsc0, + IntValBranch::Select values0, + bool select_first0, + BranchFilter bf, VarValPrint vvp) + : Brancher(home), list(list0), vsc(vsc0), + filter(bf ? bf : [](const Space&, Var, int) { return true; }), + printer(vvp), values(values0), + select_first(select_first0), start(0) { + for (int i=0; icopy(home); + for (; copiedcopy(home); + } catch (...) { + for (int i=0; idispose(home); + if (vsc) + vsc->dispose(home); + throw; + } + } + + /// Select from a temporary array, keeping positions stable across growth + int + position(Space& home) { + if (select_first) + return start; + Region r; + ViewArray x(r,list.known_length()); + for (int i=0; iselect(home,x,start,filter); + int* ties = r.alloc(x.size()-start); + int n_ties; + vs[0]->ties(home,x,start,ties,n_ties,filter); + for (int i=1; (i1); i++) + vs[i]->brk(home,x,ties,n_ties); + return (n_ties > 1) ? vs[n-1]->select(home,x,ties,n_ties) : ties[0]; + } + + static const Choice* + value_choice(const Brancher& b, int i, IntView x) { + return new Branch::PosValuesChoice(b,Pos(i),x); + } + + static const Choice* + value_choice(const Brancher&, int, BoolView) { + GECODE_NEVER; + return nullptr; + } + + int + value(const Choice& c, unsigned int a) const { + const Branch::PosValuesChoice& pvc = + static_cast(c); + return pvc.val(values == IntValBranch::SEL_VALUES_MIN + ? a : pvc.alternatives()-1-a); + } + + public: + virtual bool + status(const Space& home) const { + for (int i=start; i list.known_length(); + } + + virtual const Choice* + choice(Space& home) { + for (int i=start; i(*this,2,Pos(p),vsc->val(home,x,p)) + : value_choice(*this,p,x); + } + return new PosValChoice(*this,2,Pos(-1),list.known_length()); + } + + virtual const Choice* + choice(const Space&, Archive& e) { + int p; + e >> p; + if ((p < 0) || vsc) { + int v; + e >> v; + return new PosValChoice(*this,2,Pos(p),v); + } + unsigned int a; + e >> a; + return new Branch::PosValuesChoice(*this,a,Pos(p),e); + } + + virtual ExecStatus + commit(Space& home, const Choice& c, unsigned int a) { + const int p = static_cast(c).pos().pos; + if (p >= 0) { + // Recomputation can replay choices before propagation grows the prefix. + if (p >= list.known_length()) { + list.materialize(home,p+1); + if (home.failed()) + return ES_FAILED; + } + View x(list[p]); + const ModEvent me = vsc + ? vsc->commit(home,a,x,p,static_cast&>(c).val()) + : x.eq(home,value(c,a)); + return me_failed(me) ? ES_FAILED : ES_OK; + } + const int size = static_cast&>(c).val(); + if (a == 0) + return me_failed(IntView(list.length()).eq(home,size)) + ? ES_FAILED : ES_OK; + list.materialize(home,size+1); + return home.failed() ? ES_FAILED : ES_OK; + } + + virtual NGL* + ngl(Space& home, const Choice& c, unsigned int a) const { + const int p = static_cast(c).pos().pos; + if (p < 0) + return (a == 0) ? new (home) Branch::EqNGL + (home,IntView(list.length()), + static_cast&>(c).val()) : nullptr; + // No-good extraction can run in an ancestor with a shorter prefix. + if (p >= list.known_length()) + return nullptr; + View x(list[p]); + return vsc + ? vsc->ngl(home,a,x,static_cast&>(c).val()) + : new (home) Branch::EqNGL(home,x,value(c,a)); + } + + virtual void + print(const Space& home, const Choice& c, unsigned int a, + std::ostream& o) const { + const int p = static_cast(c).pos().pos; + if (p < 0) { + o << "list length " << ((a == 0) ? "=" : ">") << " " + << static_cast&>(c).val(); + } else { + View x(list[p]); + const int v = vsc ? static_cast&>(c).val() + : value(c,a); + if (printer()) + printer()(home,*this,a,list[p],p,v,o); + else if (vsc) + vsc->print(home,a,x,p,v,o); + else + o << "list[" << p << "] = " << v; + } + } + + virtual Actor* + copy(Space& home) { + return new (home) OpenListBrancher(home,*this); + } + + virtual size_t + dispose(Space& home) { + home.ignore(*this,AP_DISPOSE,true); + for (int i=0; idispose(home); + if (vsc) + vsc->dispose(home); + filter.dispose(home); + printer.~SharedData>(); + list.~OpenVarList(); + (void) Brancher::dispose(home); + return sizeof(*this); + } + + template + static void + post(Home home, OpenVarList list, VarBranch vars[n], + ValSelCommitBase* vsc, + IntValBranch::Select values, + BranchFilter bf, VarValPrint vvp) { + ViewSel* vs[n]; + for (int i=0; i* + open_valselcommit(Home home, IntValBranch vals) { + return ((vals.select() == IntValBranch::SEL_VALUES_MIN) || + (vals.select() == IntValBranch::SEL_VALUES_MAX)) + ? nullptr : Branch::valselcommit(home,vals); + } + + ValSelCommitBase* + open_valselcommit(Home home, BoolValBranch vals) { + return Branch::valselcommit(home,vals); + } + + template + void + post_open_brancher(Home home, OpenVarList list, + TieBreak vars, ValBranch vals, + BranchFilter bf, + VarValPrint vvp) { + VarBranch selectors[4] = {vars.a,vars.b,vars.c,vars.d}; + int n = 1; + while ((n < 4) && (selectors[n-1].select() != VarBranch::SEL_NONE) && + (selectors[n-1].select() != VarBranch::SEL_RND) && + (selectors[n].select() != VarBranch::SEL_NONE)) + n++; + typedef typename View::VarType Var; + typename ArrayTraits>::ArgsType x(list.known_length()); + for (int i=0; i list.known_length()); + selectors[i].expand(home,x); + } + const IntValBranch::Select values = + static_cast(vals.select()); + ValSelCommitBase* vsc = open_valselcommit(home,vals); + switch (n) { + case 1: + OpenListBrancher::post + (home,list,selectors,vsc,values,bf,vvp); + break; + case 2: + OpenListBrancher::post + (home,list,selectors,vsc,values,bf,vvp); + break; + case 3: + OpenListBrancher::post + (home,list,selectors,vsc,values,bf,vvp); + break; + case 4: + OpenListBrancher::post + (home,list,selectors,vsc,values,bf,vvp); + break; + } + } + +}} + +namespace Gecode { + + void + distinct(Home home, OpenIntVarList list, IntPropLevel) { + GECODE_POST; + Int::OpenDistinct::post(home,list); + } + + void + rel(Home home, OpenIntVarList list, + IntRelType irt, IntPropLevel ipl) { + switch (irt) { + case IRT_EQ: + case IRT_NQ: + case IRT_LQ: + case IRT_LE: + case IRT_GQ: + case IRT_GR: + break; + default: + throw Int::UnknownRelation("Int::rel"); + } + GECODE_POST; + Int::OpenRel::post(home,list,irt,ipl); + } + + void + sequence(Home home, OpenIntVarList x, const IntSet& values, + int width, int lower, int upper, IntPropLevel ipl) { + Int::Limits::check(values.min(),"Int::sequence"); + Int::Limits::check(values.max(),"Int::sequence"); + Int::Limits::check(width,"Int::sequence"); + Int::Limits::check(lower,"Int::sequence"); + Int::Limits::check(upper,"Int::sequence"); + if (width < 1) + throw Int::OutOfLimits("Int::sequence"); + GECODE_POST; + lower = std::max(0,lower); + upper = std::min(width,upper); + if (upper < lower) { + rel(home,x.length(),IRT_LE,width); + return; + } + if ((lower == 0) && (upper == width)) + return; + Int::OpenSliding::post(home,x,values,width,lower,upper,ipl); + } + + void + slidingsum(Home home, OpenIntVarList list, + int width, int lower, int upper, IntPropLevel ipl) { + Int::Limits::check(width,"Int::slidingsum"); + Int::Limits::check(lower,"Int::slidingsum"); + Int::Limits::check(upper,"Int::slidingsum"); + if (width < 1) + throw Int::OutOfLimits("Int::slidingsum"); + GECODE_POST; + if (upper < lower) { + rel(home,list.length(),IRT_LE,width); + return; + } + Int::OpenSlidingSum::post(home,list,width,lower,upper,ipl); + } + + void + min(Home home, OpenIntVarList list, + IntVar result, IntPropLevel ipl) { + GECODE_POST; + Int::OpenMinMax::post(home,list,Int::IntView(result),ipl); + } + + void + max(Home home, OpenIntVarList list, + IntVar result, IntPropLevel ipl) { + GECODE_POST; + Int::OpenMinMax::post(home,list,Int::IntView(result),ipl); + } + + void + precede(Home home, OpenIntVarList list, + int before, int after, IntPropLevel) { + Int::Limits::check(before,"Int::precede"); + Int::Limits::check(after,"Int::precede"); + GECODE_POST; + Int::OpenPrecede::post(home,list,before,after); + } + + void + precede(Home home, OpenIntVarList list, + const IntArgs& values, IntPropLevel ipl) { + if (values.size() < 2) + return; + for (int i=values.size(); i--; ) + Int::Limits::check(values[i],"Int::precede"); + GECODE_POST; + for (int i=values.size()-1; i--; ) + Int::OpenPrecede::post(home,list,values[i],values[i+1]); + (void) ipl; + } + + void + branch(Home home, OpenIntVarList list) { + branch(home,list,INT_VAR_NONE(),INT_VAL_MIN()); + } + + void + branch(Home home, OpenBoolVarList list) { + branch(home,list,BOOL_VAR_NONE(),BOOL_VAL_MIN()); + } + + void + branch(Home home, OpenIntVarList list, + IntVarBranch vars, IntValBranch vals, + IntBranchFilter bf, IntVarValPrint vvp) { + branch(home,list,TieBreak(vars),vals,bf,vvp); + } + + void + branch(Home home, OpenIntVarList list, + TieBreak vars, IntValBranch vals, + IntBranchFilter bf, IntVarValPrint vvp) { + GECODE_POST; + Int::post_open_brancher(home,list,vars,vals,bf,vvp); + } + + void + branch(Home home, OpenBoolVarList list, + BoolVarBranch vars, BoolValBranch vals, + BoolBranchFilter bf, BoolVarValPrint vvp) { + branch(home,list,TieBreak(vars),vals,bf,vvp); + } + + void + branch(Home home, OpenBoolVarList list, + TieBreak vars, BoolValBranch vals, + BoolBranchFilter bf, BoolVarValPrint vvp) { + GECODE_POST; + Int::post_open_brancher(home,list,vars,vals,bf,vvp); + } + +} + +// STATISTICS: int-prop diff --git a/gecode/int/open-var-list.hpp b/gecode/int/open-var-list.hpp new file mode 100644 index 0000000000..7ca0e64510 --- /dev/null +++ b/gecode/int/open-var-list.hpp @@ -0,0 +1,366 @@ +/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */ +/* + * Main author: + * Mikael Zayenz Lagerkvist + * + * Copyright: + * Mikael Zayenz Lagerkvist, 2026 + * + * This file is part of Gecode, the generic constraint + * development environment: + * http://www.gecode.dev + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + +namespace Gecode { + + template + class OpenVarList::Object : public LocalObject { + public: + class Functions { + public: + Factory create; + Transition transition; + + Functions(Factory create0, Transition transition0) + : create(create0), transition(transition0) {} + }; + + IntVar length; + IntVar materialized; + Var* x; + int n; + int capacity; + SharedData functions; + + static int + maximum(int max) { + Int::Limits::check(max,"OpenVarList"); + if (max < 0) + throw Int::VariableEmptyDomain("OpenVarList"); + return max; + } + + static Factory + valid(Factory create) { + if (!create) + throw InvalidFunction("OpenVarList"); + return create; + } + + static Transition + valid(Transition t) { + if (!t) + throw InvalidFunction("OpenVarList"); + return t; + } + + Object(Home home, Factory create, int max) + : LocalObject(home), + length(home,0,maximum(max)), + materialized(home,0,max), + x(nullptr), n(0), capacity(0), + functions(Functions(valid(create),Transition())) { + home.notice(*this,AP_DISPOSE); + } + + Object(Home home, Factory create, Transition t, int max) + : LocalObject(home), + length(home,0,maximum(max)), + materialized(home,0,max), + x(nullptr), n(0), capacity(0), + functions(Functions(valid(create),valid(t))) { + home.notice(*this,AP_DISPOSE); + } + + Object(Space& home, Object& s) + : LocalObject(home,s), x(nullptr), n(s.n), capacity(s.n), + functions(s.functions) { + length.update(home,s.length); + materialized.update(home,s.materialized); + if (capacity > 0) { + x = heap.alloc(capacity); + try { + for (int i=0; i(x,capacity); + throw; + } + } + } + + virtual Actor* + copy(Space& home) { + return new (home) Object(home,*this); + } + + virtual size_t + dispose(Space& home) { + home.ignore(*this,AP_DISPOSE); + if (capacity > 0) + heap.free(x,capacity); + functions.~SharedData(); + return sizeof(*this); + } + + void + reserve(void) { + if (n == capacity) { + int next = (capacity < 4) ? 4 : + capacity + std::min(capacity / 2,Int::Limits::max-capacity); + x = heap.realloc(x,capacity,next); + capacity = next; + } + } + + void + append(Var y) { + x[n++] = y; + } + }; + +} + +namespace Gecode { namespace Int { + + /// Materialize positions required by the minimum eventual length + template + class OpenMaterialize : public Propagator { + protected: + OpenVarList list; + IntView length; + + OpenMaterialize(Home home, OpenVarList list0) + : Propagator(home), list(list0), length(list0.length()) { + length.subscribe(home,*this,PC_INT_BND); + } + + OpenMaterialize(Space& home, OpenMaterialize& p) + : Propagator(home,p) { + list.update(home,p.list); + length.update(home,p.length); + } + + public: + virtual Actor* + copy(Space& home) { + return new (home) OpenMaterialize(home,*this); + } + + virtual PropCost + cost(const Space&, const ModEventDelta&) const { + const int n = length.min()-list.known_length(); + return (n <= 1) ? PropCost::unary(PropCost::LO) : + PropCost::linear(PropCost::LO,n); + } + + virtual void + reschedule(Space& home) { + length.reschedule(home,*this,PC_INT_BND); + } + + virtual ExecStatus + propagate(Space& home, const ModEventDelta&) { + list.materialize(home,length.min()); + if (home.failed()) + return ES_FAILED; + if (length.assigned()) + return home.ES_SUBSUMED(*this); + return ES_FIX; + } + + virtual size_t + dispose(Space& home) { + length.cancel(home,*this,PC_INT_BND); + list.~OpenVarList(); + (void) Propagator::dispose(home); + return sizeof(*this); + } + + static void + post(Home home, OpenVarList list) { + if (!list.length().assigned()) + (void) new (home) OpenMaterialize(home,list); + } + }; + +}} + +namespace Gecode { + + template + OpenVarList::OpenVarList(void) {} + + template + OpenVarList::OpenVarList(Space& home, Factory create, int max) + : LocalHandle(new (home) Object(home,create,max)) { + Int::OpenMaterialize::post(home,*this); + } + + template + OpenVarList::OpenVarList(Space& home, Factory create, + Transition t, int max) + : LocalHandle(new (home) Object(home,create,t,max)) { + Int::OpenMaterialize::post(home,*this); + } + + forceinline + OpenIntVarList::OpenIntVarList(const OpenVarList& x) + : OpenVarList(x) {} + + forceinline + OpenBoolVarList::OpenBoolVarList(const OpenVarList& x) + : OpenVarList(x) {} + + template + void + OpenVarList::update(Space& home, OpenVarList& s) { + LocalHandle::update(home,s); + } + + template + int + OpenVarList::known_length(void) const { + return static_cast(object())->n; + } + + template + Var + OpenVarList::operator [](int i) const { + Object* s = static_cast(object()); + assert((i >= 0) && (i < s->n)); + return s->x[i]; + } + + template + IntVar + OpenVarList::length(void) const { + return static_cast(object())->length; + } + + template + void + OpenVarList::append(Space& home, Var y) { + if (home.failed()) + return; + Object* s = static_cast(object()); + if (s->n == Int::Limits::max) { + home.fail(); + return; + } + for (int i=0; in; i++) + if (!y.assigned() && !s->x[i].assigned() && + (y.varimp() == s->x[i].varimp())) + throw Int::ArgumentSame("OpenVarList::append"); + s->reserve(); + const int next = s->n + 1; + Int::IntView l(s->length); + Int::IntView m(s->materialized); + if (me_failed(l.gq(home,next)) || me_failed(m.gq(home,next))) { + home.fail(); + return; + } + s->append(y); + const Transition& transition = s->functions().transition; + if (transition) { + GECODE_VALID_FUNCTION(transition); + Space::NoGPI no_gpi(home); + transition(home,*this,next-1); + } + } + + template + void + OpenVarList::materialize(Space& home, int n) { + Space::NoGPI no_gpi(home); + if (home.failed()) + return; + Int::Limits::nonnegative(n,"OpenVarList::materialize"); + Object* s = static_cast(object()); + Int::IntView l(s->length); + if (me_failed(l.gq(home,n))) { + home.fail(); + return; + } + while (s->n < l.min()) { + const int i = s->n; + GECODE_VALID_FUNCTION(s->functions().create); + Var y = s->functions().create(home,i); + append(home,y); + if (home.failed()) + return; + } + } + + template + Var + OpenVarList::get(Space& home, int i) { + Int::Limits::nonnegative(i,"OpenVarList::get"); + if (home.failed()) + return Var(); + Object* s = static_cast(object()); + if (i >= s->length.max()) + throw Int::OutOfLimits("OpenVarList::get"); + materialize(home,i+1); + if (home.failed()) + return Var(); + return static_cast(object())->x[i]; + } + + template + void + OpenVarList::close(Space& home) { + if (home.failed()) + return; + materialize(home,length().min()); + if (home.failed()) + return; + Object* s = static_cast(object()); + if (me_failed(Int::IntView(s->length).eq(home,s->n))) + home.fail(); + } + + template + void + OpenVarList::subscribe(Space& home, Propagator& p) { + Object* s = static_cast(object()); + Int::IntView(s->materialized).subscribe(home,p,Int::PC_INT_BND); + } + + template + void + OpenVarList::cancel(Space& home, Propagator& p) { + Object* s = static_cast(object()); + Int::IntView(s->materialized).cancel(home,p,Int::PC_INT_BND); + } + + template + void + OpenVarList::reschedule(Space& home, Propagator& p) { + Object* s = static_cast(object()); + Int::IntView(s->materialized).reschedule(home,p,Int::PC_INT_BND); + } + +} + +// STATISTICS: int-var diff --git a/gecode/kernel/core.cpp b/gecode/kernel/core.cpp index 4293cfe6a8..c5ea98eb78 100644 --- a/gecode/kernel/core.cpp +++ b/gecode/kernel/core.cpp @@ -118,7 +118,7 @@ namespace Gecode { VarImpDisposerBase* Space::vd[AllVarConf::idx_d]; #endif - Space::Space(void) : mm(ssd.data().sm) { + Space::Space(void) : mm(ssd.data().sm), no_gpi(false) { #ifdef GECODE_HAS_CBS var_id_counter = 0; #endif @@ -540,7 +540,8 @@ namespace Gecode { // Process failure failed: // Count failure - ssd.data().gpi.fail(p->gpi()); + if (!p->local_info()) + ssd.data().gpi.fail(p->gpi()); // Mark as failed fail(); // Propagate top priority propagators @@ -727,7 +728,7 @@ namespace Gecode { #ifdef GECODE_HAS_CBS var_id_counter(s.var_id_counter), #endif - d_fst(&Actor::sentinel),d_cur(nullptr),d_lst(nullptr) { + no_gpi(false), d_fst(&Actor::sentinel),d_cur(nullptr),d_lst(nullptr) { #ifdef GECODE_HAS_VAR_DISPOSE for (int i=0; i= 4, + "Propagator information needs two tag bits"); + Kernel::GPI::Info* i = alloc(1); + i->init(ssd.data().gpi.next_pid(),gid); + i->afc = 0.0; + return Support::ptrjoin(i,0b10); + } + void Space::afc_unshare(void) { if (ssd.data().gpi.unshare()) { for (Propagators ps(*this); ps(); ++ps) { Propagator& p = ps.propagator(); + if (p.local_info()) + continue; Kernel::GPI::Info* gpi = ssd.data().gpi.allocate(p.gpi().pid,p.gpi().gid); if (p.disabled()) diff --git a/gecode/kernel/core.hpp b/gecode/kernel/core.hpp index 169aab6599..ed257fdbb9 100755 --- a/gecode/kernel/core.hpp +++ b/gecode/kernel/core.hpp @@ -1087,12 +1087,19 @@ namespace Gecode { /// A list of advisors (used during cloning) Gecode::ActorLink* advisors; } u; - /// A tagged pointer combining a pointer to global propagator information and whether the propagator is disabled + /** + * \brief Tagged pointer to propagator information + * + * Bit zero marks disabled propagators; bit one marks space-local + * information, which has no accumulated failure count. + */ void* gpi_disabled; /// Static cast for a non-null pointer (to give a hint to optimizer) static Propagator* cast(ActorLink* al); /// Static cast for a non-null pointer (to give a hint to optimizer) static const Propagator* cast(const ActorLink* al); + /// Whether propagator information is local to the space + bool local_info(void) const; /// Disable propagator void disable(Space& home); /// Enable propagator @@ -1104,7 +1111,7 @@ namespace Gecode { Propagator(Space& home, Propagator& p); /// Return forwarding pointer during copying Propagator* fwd(void) const; - /// Provide access to global propagator information + /// Provide access to propagator information Kernel::GPI::Info& gpi(void); public: @@ -1791,6 +1798,8 @@ namespace Gecode { friend GECODE_KERNEL_EXPORT void trace(Home home, TraceFilter tf, int te, Tracer& t); private: + /// Allocate tagged space-local propagator information + GECODE_KERNEL_EXPORT void* local_info(unsigned int gid); /// Shared data for space Kernel::SharedSpaceData ssd; /// Performs memory management for space @@ -1799,6 +1808,8 @@ namespace Gecode { /// Global counter for variable ids unsigned int var_id_counter; #endif + /// Whether new propagator information is local to this space + bool no_gpi; /// Doubly linked list of all propagators ActorLink pl; /// Doubly linked list of all branchers @@ -2037,6 +2048,57 @@ namespace Gecode { GECODE_KERNEL_EXPORT void ap_ignore_dispose(Actor* a, bool d); public: + /** + * \brief Suppress global propagator information during scoped posting + * \ingroup TaskModelScript + * + * New propagators keep their information in the space, with normal + * identifiers and groups but zero AFC. Group changes stay local to the + * space. Clones copy this information and start with ordinary posting + * enabled. Rewriting preserves the original propagator's information. + * + * UseGPI enables global information within this scope. Both contexts + * restore the previous setting on destruction, including unwinding. + * The space must outlive them; contexts for the same space must be + * destroyed in reverse order. + */ + class NoGPI { + private: + /// Space in which to suppress global information + Space& home; + /// Previous setting + bool previous; + NoGPI(const NoGPI&) = delete; + NoGPI& operator =(const NoGPI&) = delete; + public: + /// Suppress global information for new propagators in \a home + explicit NoGPI(Space& home); + /// Restore the previous setting + ~NoGPI(void); + }; + + /** + * \brief Enable global propagator information during scoped posting + * \ingroup TaskModelScript + * + * Overrides NoGPI for new postings and restores the previous setting + * on destruction. The lifetime and nesting rules of NoGPI also apply. + */ + class UseGPI { + private: + /// Space in which to enable global information + Space& home; + /// Previous setting + bool previous; + UseGPI(const UseGPI&) = delete; + UseGPI& operator =(const UseGPI&) = delete; + public: + /// Enable global information for new propagators in \a home + explicit UseGPI(Space& home); + /// Restore the previous setting + ~UseGPI(void); + }; + /** * \brief Default constructor * \ingroup TaskModelScript @@ -3556,6 +3618,28 @@ namespace Gecode { } + forceinline + Space::NoGPI::NoGPI(Space& h) : home(h), previous(h.no_gpi) { + home.no_gpi = true; + } + + forceinline + Space::NoGPI::~NoGPI(void) { + home.no_gpi = previous; + } + + + forceinline + Space::UseGPI::UseGPI(Space& h) : home(h), previous(h.no_gpi) { + home.no_gpi = false; + } + + forceinline + Space::UseGPI::~UseGPI(void) { + home.no_gpi = previous; + } + + /* * Propagator * @@ -3581,6 +3665,11 @@ namespace Gecode { return static_cast(prev()); } + forceinline bool + Propagator::local_info(void) const { + return (reinterpret_cast(gpi_disabled) & 0b10) != 0; + } + forceinline bool Propagator::disabled(void) const { return Support::marked(gpi_disabled); @@ -3600,7 +3689,7 @@ namespace Gecode { forceinline Kernel::GPI::Info& Propagator::gpi(void) { - return *static_cast(Support::funmark(gpi_disabled)); + return *static_cast(Support::funmark<2>(gpi_disabled)); } forceinline @@ -3608,6 +3697,9 @@ namespace Gecode { : gpi_disabled((home.propagator() != nullptr) ? // Inherit propagator information home.propagator()->gpi_disabled : + static_cast(home).no_gpi ? + static_cast(home).local_info + (home.propagatorgroup().gid) : // New propagator information static_cast(home).ssd.data().gpi.allocate (home.propagatorgroup().gid)) { @@ -3617,8 +3709,13 @@ namespace Gecode { } forceinline - Propagator::Propagator(Space&, Propagator& p) + Propagator::Propagator(Space& home, Propagator& p) : gpi_disabled(p.gpi_disabled) { + if (p.local_info()) { + Kernel::GPI::Info* i = home.alloc(1); + *i = p.gpi(); + gpi_disabled = Support::ptrjoin(i, p.disabled() ? 0b11 : 0b10); + } u.advisors = nullptr; assert((u.med == 0) && (u.size == 0)); // Set forwarding pointer diff --git a/gecode/kernel/gpi.hpp b/gecode/kernel/gpi.hpp index bca28ef4ee..56d18353eb 100755 --- a/gecode/kernel/gpi.hpp +++ b/gecode/kernel/gpi.hpp @@ -92,6 +92,8 @@ namespace Gecode { namespace Kernel { Info* allocate(unsigned int p, unsigned int gid); /// Allocate new actor info Info* allocate(unsigned int gid); + /// Allocate a new propagator id without allocating information + unsigned int next_pid(void); /// Return next free propagator id unsigned int pid(void) const; /// Provide access to unshare info and set to true @@ -141,6 +143,11 @@ namespace Gecode { namespace Kernel { return d; } + forceinline unsigned int + GPI::next_pid(void) { + return npid.fetch_add(1, std::memory_order_seq_cst); + } + forceinline unsigned int GPI::pid(void) const { return npid.load(std::memory_order_acquire); @@ -186,7 +193,7 @@ namespace Gecode { namespace Kernel { } c = &b->info[--b->free]; m.release(); - c->init(npid.fetch_add(1, std::memory_order_seq_cst),gid); + c->init(next_pid(),gid); return c; } diff --git a/gecode/support/marked-pointer.hpp b/gecode/support/marked-pointer.hpp index 7fa78e514a..9c0f1c117e 100644 --- a/gecode/support/marked-pointer.hpp +++ b/gecode/support/marked-pointer.hpp @@ -32,6 +32,7 @@ */ #include +#include namespace Gecode { namespace Support { @@ -43,7 +44,8 @@ namespace Gecode { namespace Support { void* unmark(void* p); /// Return marked pointer for \a p (possibly already marked) void* fmark(void* p); - /// Return unmarked pointer for a possibly marked pointer \a p + /// Clear the lowest \a bits bits of a possibly marked pointer \a p + template void* funmark(void* p); /// Split possibly marked pointer \a p into mark \a m and unmarked pointer void* ptrsplit(void* p, ptrdiff_t& m); @@ -68,10 +70,12 @@ namespace Gecode { namespace Support { fmark(void* p) { return reinterpret_cast(reinterpret_cast(p)|1); } + template forceinline void* funmark(void* p) { - return reinterpret_cast(reinterpret_cast(p)& - ~static_cast(1)); + static_assert(bits < sizeof(size_t)*CHAR_BIT, "Too many pointer tag bits"); + return reinterpret_cast(reinterpret_cast(p)& + ~((static_cast(1) << bits)-1)); } forceinline void* ptrsplit(void* p, ptrdiff_t& m) { diff --git a/misc/common-pattern/README.md b/misc/common-pattern/README.md new file mode 100644 index 0000000000..bb12170540 --- /dev/null +++ b/misc/common-pattern/README.md @@ -0,0 +1,419 @@ +# Common-pattern mining and comparisons + +`examples/common-pattern.cpp` mines frequent ordered subsequences, with optional +constraints on their length, items and language. Its decision variable is a list +of items of unknown length. DFS enumerates all qualifying patterns; BAB finds a +maximum-length qualifying pattern. + +## The mining model + +For a database of records `D`, a record supports pattern `P` when there are strictly +increasing positions in that record matching every item of `P`. Matching may skip +items. Each supporting record contributes one unit, regardless of how many +embeddings it contains; duplicate rows are distinct records. The frequency +constraint is `support(P) >= ceil(percent * |D| / 100)`. + +This separates three familiar CP decisions: + +- **Variables:** the pattern items and their length, bounded by the longest input. +- **Constraints:** sufficient support, minimum length, required items, and a pattern language. +- **Search:** left-to-right item choices, deciding at each prefix whether to close or extend. + +The constructor expresses those constraints directly: + +```cpp +pattern = OpenIntVarList(*this,database.domain(),database.max_length()); +rel(*this,pattern.length(),IRT_GQ,opt.min_length()); +frequency = PatternMining::frequent(*this,pattern,database,opt.support()); +if (opt.language() != PatternMining::NONE) + extensional(*this,pattern,PatternMining::language(opt.language(),database)); +if (!opt.required().empty()) { + REG alphabet(IntArgs(database.alphabet)); + for (int item : opt.required()) + extensional(*this,pattern,*alphabet + REG(item) + *alphabet); +} +branch(*this,pattern,INT_VAR_NONE(),INT_VAL_MIN()); +``` + +`frequent` is private example support, not a new Gecode library constraint. Its +returned `IntVar` gives the exact record count when the pattern is complete; the +example prints that count without searching the database again for every solution. +Length, membership and regular constraints apply to the **pattern**. They do not +constrain which input positions match it. This follows the distinction between +pattern, cover, embedding and output constraints in Negrevergne and Guns, +[Constraint-based sequence mining using constraint programming](https://arxiv.org/abs/1501.01178), +CPAIOR 2015. All frequent patterns, a longest pattern, closed patterns (no proper +supersequence with the same support), maximal frequent patterns (no proper +frequent supersequence), and top-k by support are different output queries. This +example implements the first two. + +## Why use an open list? + +The pattern's actual length is unknown. An `OpenIntVarList` constructs its +positions as needed, avoiding an end marker, unused suffix variables, and padding +transitions in additional pattern languages. Constraints follow growth; when no +frequent extension remains, the list closes. `open-route` is the smaller +introduction to construction, cloning and search. + +`known_length()` counts the positions already constructed, including positions +whose values are still unassigned. `length()` is the variable for the eventual +list length. + +The private frequency propagator uses prefix projection: after assigning an item, +it retains the input suffixes that can extend the current pattern. One earliest +matching cursor per supporting record suffices for ordinary subsequences. It +filters locally infrequent items from constructed positions and bounds further +growth by the remaining supporting suffix lengths. Immutable, rank-compressed +data are shared between spaces; each space owns a compact array of its supporting +suffixes. Cloning copies only live entries. A last-occurrence index counts each +item once per suffix without scanning repeated occurrences. The open propagator +reuses its frequent-item set and length bound when growth has not changed the +assigned prefix. Sparse integer IDs are preserved in output. + +This adapts Kemmar et al., +[PREFIX-PROJECTION Global Constraint for Sequential Pattern Mining](https://loudni.users.greyc.fr/Papers/cp15final.pdf), +CP 2015, DOI [10.1007/978-3-319-23219-5_17](https://doi.org/10.1007/978-3-319-23219-5_17), +which uses a fixed positional array and termination value. The open representation +also addresses a cost identified in Aoga, Guns and Schaus, +[An Efficient Algorithm for Mining Frequent Sequence with Constraint Programming](https://arxiv.org/abs/1604.01166), +ECML PKDD 2016, §4.2: filtering and restoring future array positions that the search +may never use. Their implementation filters only the next position and optimizes +suffix scans and state restoration. The shared helper uses their last-occurrence idea for frequency counting, while +restoration uses Gecode cloning. It does not implement their incremental counting +or reversible-vector algorithm. The comparisons below distinguish variable +representation from filtering strength. + +The input scope is sequences of **individual items**, not sequences of itemsets. +Gap, span, timestamps and event attributes are outside the model. Earliest matching +alone would not suffice with embedding restrictions: in `AXBAB`, an adjacent `AB` +exists at the end although matching the first `A` cannot find it adjacently. + +## Use the example + +With no arguments, the example enumerates `AC` and `ABC` from `ABCBC,BABC,ABDC`, +requiring all records and the language `A.*C`. The paper's Table 1, with minimum +support two out of four records and no language restriction, is: + +```sh +build/common-pattern-benchmark/bin/common-pattern \ + -sequences ABCBC,BABC,AB,BCD -support 50 -language none -search dfs +``` + +It enumerates nine patterns, including `AC` with support 2/4. Use `-search bab` +for a longest pattern, `-min-length 3` for a length restriction, and `-required A,C` +to require both items. Support is a percentage in `(0,100]` with up to six decimal +places; the threshold is the exact ceiling of that fraction of the record count. + +`-language` accepts `none`, `motif`, `re10`, `re14`, or `re2`. The last three are +Section 5(d)'s expressions, retained as comparison presets. Explicit `-language` +overrides `-motif`; the default language uses `-motif` (enabled by default). Letters mean item IDs `A=1` through +`Z=26`. Named expressions on integer data require that same mapping; the parser +does not infer or remap dataset labels. The motif's interior and RE2's middle +position accept any item in the input alphabet. + +| Language | Accepted pattern | +| --- | --- | +| `none` | Any nonempty sequence over the input alphabet | +| `motif` | `A.*C` | +| `re10` | `A*B(B\|C)D*EF*(G\|H)I*` | +| `re14` | `A*(Q\|BS*(B\|C))D*E(I\|S)*(F\|H)G*R` | +| `re2` | `(S\|T).(R\|K)` | + +Here juxtaposition means concatenation, `|` means alternative, `*` means zero or +more repetitions, and `.` means one item from the actual input alphabet. + +For larger databases use `-file` and select a format: + +- `-format letters`: one nonempty A..Z string per line. +- `-format integers`: one sequence of positive integer IDs per line, separated by spaces. +- `-format spmf`: singleton itemsets separated by `-1`, with `-2` ending each sequence. + For example, `1 -1 2 -1 3 -1 -2` represents ABC. SPMF metadata/comment lines + beginning with `@`, `#`, or `%` are skipped. Multi-item itemsets are rejected; + silently flattening them would change the mining problem. + +Empty lines are skipped. Every retained row has its own support identity. Required +items use comma-separated letters in letter mode and integer IDs otherwise: + +```sh +build/common-pattern-benchmark/bin/common-pattern \ + -file /absolute/path/database.txt -format spmf \ + -support 1 -min-length 3 -required 1001,2002 -language none -search dfs +``` + +## Build + +Run from the repository root. The companion is compiled against the normal Gecode +libraries; it adds no CMake targets. Regression tests use the existing Gecode test +harness in `test/int/open-var-list.cpp`. + +```sh +cmake -S . -B build/common-pattern-benchmark -G Ninja \ + -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF \ + -DGECODE_ENABLE_SET_VARS=OFF -DGECODE_ENABLE_FLOAT_VARS=OFF \ + -DGECODE_ENABLE_FLATZINC=OFF -DGECODE_ENABLE_CPPROFILER=OFF \ + -DGECODE_ENABLE_MPFR=OFF +cmake --build build/common-pattern-benchmark --target common-pattern -j 6 +c++ -std=c++17 -O3 -DNDEBUG \ + -I build/common-pattern-benchmark -I . misc/common-pattern/compare.cpp \ + -L build/common-pattern-benchmark \ + -Wl,-rpath,"$PWD/build/common-pattern-benchmark" \ + -lgecodeminimodel -lgecodeint -lgecodesearch -lgecodekernel -lgecodesupport \ + -o build/common-pattern-benchmark/bin/common-pattern-compare +``` + +Use the same compiler and compatible build settings, including macOS deployment +targets, for the libraries and companion. Keep the executable in `BUILD/bin/` +and libraries in `BUILD/`; that layout is fingerprinted for resume. Rebuild the +companion after changing its source or private header. The build label records +compiler and flags but does not verify them automatically. + +## Compare equivalent mining queries + +| Variant | Pattern representation | Filtering | +| --- | --- | --- | +| `open-projection` | `OpenIntVarList` | Local item support and remaining-suffix length bound, including initial filtering | +| `padded-projection` | Fixed array, zero termination | Same extra pruning, applied to all preallocated positions | +| `paper-projection` | Fixed array, zero termination | Algorithm 2 filtering rules with initial pruning, without suffix-length pruning | +| `open-dfa`, `padded-dfa` | Open list or padded array | Per-input subsequence DFAs; require all-input support | + +All three projection variants use the same compact suffixes and last-occurrence +index. All filter initially: omitting that step caused thousands of avoidable +failures on globally infrequent first items and made the old paper baseline +misleadingly slow. The first two variants help assess the representation using the +same extra pruning. +Their regular constraints still propagate differently because the open constraint +sees constructed positions and the ordinary constraint sees the entire array. +The paper variant distinguishes the effect of additional pruning. Nodes and +propagation calls represent different amounts of work across implementations. +All variants use single-threaded DFS, ascending left-to-right item decisions, +and exhaustive enumeration; BAB is excluded from mining comparisons. + +The default smoke matrix covers six workloads at 100%, 50%, and 25% support, +with three projection variants and five repetitions: 54 correctness invocations +followed by 270 measured invocations, serially, each with a 30-second timeout. +These small inputs exercise loss of support, repeated items and disjoint records. + +```sh +uv run --script misc/common-pattern/benchmark.py run \ + --name frequency --binary build/common-pattern-benchmark/bin/common-pattern-compare \ + --build-label 'your compiler; Release; -O3 -DNDEBUG' --dry-run +uv run --script misc/common-pattern/benchmark.py run \ + --name frequency --binary build/common-pattern-benchmark/bin/common-pattern-compare \ + --build-label 'your compiler; Release; -O3 -DNDEBUG' +uv run --script misc/common-pattern/benchmark.py analyze --name frequency +``` + +`--suite scaling --support 100` adds database-count, input-length, pattern-length, +and the paper's regex workloads. Lower support on long inputs can produce very +large outputs; start with a bounded query. For a real database, use the same +formats as the example: + +```sh +uv run --script misc/common-pattern/benchmark.py run \ + --name database --binary build/common-pattern-benchmark/bin/common-pattern-compare \ + --build-label 'your compiler; Release; -O3 -DNDEBUG' \ + --database /absolute/path/database.txt --format spmf \ + --support 5 2 1 --min-length 3 --required 1001 2002 --language none +``` + +`--bound max` follows the paper's longest-record bound. `--bound shortest` and +DFA variants are valid only when the computed support count requires every record. +Select DFAs explicitly with `--support 100 --variants open-dfa padded-dfa +open-projection padded-projection paper-projection`. The default companion +invocation from the previous comparison remains valid. + +Before timing, the runner checks duplicate output and item/length/language constraints. +It compares exact output with an independent oracle when available; otherwise it +checks actual record support. All variants must enumerate exactly the same set. +An independent oracle enumerates subsequences of the `n-k+1` shortest records: +every pattern supported by `k` out of `n` records occurs in at least one of those +records. The oracle runs when each chosen record has at most 16 items and their +combined subset budget is at most 200,000. Otherwise feasibility and agreement are +checked, with independent completeness explicitly unavailable. The smoke matrix +meets the oracle budget at every threshold. For a larger custom query, `--reference` +accepts the exact output of an independent miner normalized to one positive-integer +pattern per line. It requires one database and one support threshold. Reference +validation compares the entire set and is labelled separately from exhaustive +subset enumeration. The caller must match the database, support rounding, length +and other constraints; the runner checks the reference file's content on resume. + +Measured runs count solutions without printing. The target timer includes rank +compression, model construction, complete DFS and solution disposal; it excludes +file parsing, startup and final engine destruction. End-to-end wall time includes +those costs. Validation runs warm caches and are excluded from timing. Ordering +is shuffled with the saved seed. Small timings should not determine a performance +ranking. The example driver's runtime excludes database import; it is a separate +metric from the companion's model-plus-search timer. + +Named results live under `build/common-pattern-results/`, with configuration, +normalized integer input, validation evidence, raw samples and stdout/stderr. +One writer per run; collection resumes unchanged terminal records. `--limit N` +bounds new timed invocations, while correctness runs still precede measurement. +Changed inputs, queries, build, helper, runner, timeout or repetition plan require +another name. Missing/malformed records are rerun and their partial logs replaced. +Errors, invalid output and timeouts remain terminal evidence and cause a nonzero +collection exit. Analysis invokes no targets, retains older format-1 results, and +reports failures/unfinished work beside successful medians and ranges in seconds. + +The authors' project link +required Google sign-in when checked on 2026-10-13. These baselines are +reimplementations, not their executable. Public SPMF datasets now provide the real-data comparison below. Their bytes and +label mappings are not verified against the authors' copies. Historical CPU seconds +on the paper's Xeon X5670 are not a runtime baseline for this machine. + +## Real-data performance and independent comparison + +The [SPMF dataset collection](https://www.philippe-fournier-viger.com/spmf/index.php?link=datasets.php) +provides Bible and Leviathan copies whose record counts, alphabets and length +statistics match Table 2. The current public FIFA file has a different mean length, +so it is excluded from comparison with the paper. No dataset or external executable +is bundled with Gecode. + +On 2026-10-13, full Bible mining at 1% support produced the paper's 23,340 patterns. +An independent [SPMF PrefixSpan](https://www.philippe-fournier-viger.com/spmf/PrefixSpan.php) +run agreed on the complete pattern set, not only its size. Filtering that output by +its exact support counts also supplies the references at 5% (774 patterns) and 10% +(174 patterns). This provides an independent completeness check beyond the small +subset oracle's budget. + +The before/after runs use AppleClang 21, `-O3 -DNDEBUG`, macOS 26.6.2 / arm64, +serial single-threaded searches, three shuffled repetitions, and the maximum-input +length bound. Times below are median model construction plus complete enumeration +in seconds, counting solutions without printing. Input parsing is excluded. + +| Bible query | Patterns | Open before | Open now | Padded now | Paper-style now | +| --- | ---: | ---: | ---: | ---: | ---: | +| Support 10% | 174 | 0.313 | 0.199 | 0.197 | 0.178 | +| Support 5% | 774 | 0.814 | 0.495 | 0.497 | 0.462 | +| Support 1% | 23,340 | 8.359 | 4.120 | 4.411 | 4.314 | +| Support 1%, length ≥3, contains IDs 10 and 356 | 8,449 | — | 17.132 | 7.153 | — | + +The padded model before these changes took 8.268 seconds at 1% support, so shared +projection changes improve both representations. The actual example also printed +all 23,340 patterns with exact PrefixSpan support counts in 4.391 seconds +end-to-end in one correctness run, timed through process completion before +reference validation. Its output no longer triggers one full database scan per +pattern. These frequent patterns have lengths 1–11 although the safe input-length +bound is 100; the open model creates actual positions as the pattern grows. + +Required-item constraints favour the padded model here: its future positions let +regular constraints detect impossible completions earlier. The open regular +constraint checks an extendable prefix, so it explores more prefixes before +proving that a required item cannot occur. These are the same output query, not +different mining semantics. That propagation tradeoff remains. + +A controlled repetitive workload makes the representation cost visible: 64 records +contain 600–1,230 copies of one item. At 100% support, exactly 600 patterns exist. +The reference is the independently derived set of lengths 1 through 600. Median +model-plus-search times in **milliseconds** were: + +| Length bound | Open projection | Padded projection | Paper-style projection | +| --- | ---: | ---: | ---: | +| Longest input, 1,230 | 2.747 | 15.492 | 17.291 | +| Shortest input, 600 | 2.790 | 6.796 | 6.679 | + +Even with the tighter valid bound, the open model avoids handling unused suffix +positions for shorter patterns. This is a controlled case, not evidence that open +lists win on every database. Before the shared optimizations, the longest-bound +open and padded variants took 14.070 and 26.202 milliseconds respectively. + +The open and improved fixed-array models are close on unrestricted Bible mining. +These results do not establish a general open-list speed advantage. The example's +strength is representing actual pattern positions and composing ordinary CP +constraints without a termination convention. The original DFA timings answer a +different algorithm question and should not be used to judge projection-based +open lists. + +A repeatable independent-reference comparison is: + +```sh +curl -L -A 'Mozilla/5.0' \ + https://www.philippe-fournier-viger.com/spmf/publicdatasets/BIBLE.txt -o BIBLE.txt +# Download spmf.jar from the SPMF release page. +java -jar spmf.jar run PrefixSpan BIBLE.txt bible-patterns.spmf 1% 1 100 false +python3 - <<'PYTHON' > bible-patterns.txt +from pathlib import Path +for line in Path('bible-patterns.spmf').read_text().splitlines(): + if line.startswith('@'): + continue + tokens = line.split('#SUP:')[0].split() + assert len(tokens) % 2 == 0 and all(t == '-1' for t in tokens[1::2]) + print(' '.join(tokens[::2])) +PYTHON +uv run --script misc/common-pattern/benchmark.py run \ + --name bible --binary build/common-pattern-benchmark/bin/common-pattern-compare \ + --build-label 'your compiler; Release; -O3 -DNDEBUG' \ + --database BIBLE.txt --format spmf --support 1 --reference bible-patterns.txt +uv run --script misc/common-pattern/benchmark.py analyze --name bible +``` + +Reference generation is outside the target timer. SPMF's reported algorithm time +and the native model-plus-search time have different boundaries, so these runs +establish query agreement rather than an equal-cost timing comparison with Java. +Raw configurations, outputs and samples remain in `bible-before`, +`bible-original-1`, `bible-final-1`, `bible-final-5`, `bible-final-10`, +`bible-final-required`, `repetitive-original`, `repetitive-final`, and +`repetitive-final-shortest` under `build/common-pattern-results/`. The +shared last-occurrence index uses additional immutable storage; both open and +padded models share it across clones. + +## Literature and comparison scope + +Backward citation tracing from CP2015 identifies projected pattern growth, +vertical occurrence lists, CP embedding models, and regular-language restrictions. +Projection is one way to calculate support, not the definition of the problem. +The following primary sources give useful alternative views: + +| Work | Relationship and relevance | +| --- | --- | +| Pei et al., [PrefixSpan](https://hanj.cs.illinois.edu/pdf/span01.pdf), ICDE 2001 | Cited by CP2015; prefix-projected pattern growth predates its CP global. The original also handles sequences of itemsets. | +| Zaki, [SPADE](https://www.cs.rpi.edu/~zaki/PaperDir/MLJ01.pdf), Machine Learning 2001 | Cited by CP2015; temporal joins of vertical occurrence lists provide a different support computation. | +| Negrevergne and Guns, [CP sequence mining](https://arxiv.org/abs/1501.01178), CPAIOR 2015 | Cited and compared by CP2015; distinguishes a global existence-of-embedding constraint from an explicit embedding formulation. Our DFA baseline is neither formulation. | +| Aoga, Guns and Schaus, [efficient CP sequence mining](https://arxiv.org/abs/1604.01166), ECML PKDD 2016 | Cites CP2015; improves projection, future-position filtering and restoration. Motivates measuring these costs separately. | +| Kemmar et al., [prefix projection and top-k](https://loudni.users.greyc.fr/Papers/Cons17final.pdf), Constraints 2017 | Extends the CP2015 line with a separate top-k query. Maximum length is not top-k by support. | +| Hosseininasab, van Hoeve and Ciré, [SPM with decision diagrams](https://arxiv.org/abs/1811.06086), AAAI 2019 | Cites later CP projection work; represents the database with an MDD and handles constraints on event attributes. It is not an open-versus-padded representation comparison. | +| Wang et al., [Seq2Pat](https://ojs.aaai.org/index.php/AAAI/article/view/21542), AAAI 2022 | Builds a declarative interface over the decision-diagram approach, with attribute constraints including gap, span, average and median. These constrain embeddings, unlike the example's pattern language. | + +The CPKB search confirmed CP2015's outgoing references and incoming citations from +ClosedPattern (CP 2016) and CoverSize (CP 2017). Those two globals concern unordered +itemsets; their closure and cover algorithms do not transfer directly to sequential +mining. Locally available references also led to the later sequential papers +above, which were read on the web. The local corpus did not contain an integrated +sequential successor; that is a corpus limit, not a claim that none exists. + +The resulting example keeps the query independent of support computation and +uses ordinary CP constraints for pattern restrictions. The comparison keeps the +paper's data and language presets available alongside integer/SPMF input, arbitrary +support thresholds, and independent enumeration checks. A comparison with another +miner must match item-versus-itemset semantics, support rounding, pattern and +embedding restrictions, and the output query before comparing counts or time. +There is no MDD, vertical-join or embedding-decomposition baseline here. + +## Historical DFA comparison at commit 4f929ea7c3 + +The following measurements predate the projection-based example and broader +support queries; their raw records remain readable and are not reinterpreted as +measurements of the current implementation. + +On 2026-10-13, the 24-case scaling suite completed with both length bounds: +720/720 measured samples succeeded, with 144/144 independent enumeration checks +and no disagreements. Each configuration used five repetitions, seed 20261013, +AppleClang 21, a Release Gecode build, and `-O3 -DNDEBUG` for the companion on +macOS 26.6.2 / arm64. These were serial local runs, without CPU pinning. + +Selected medians below are **model construction plus exhaustive search in +milliseconds**, with the paper's maximum length bound. Raw per-sample ranges, +node counts and propagation counts are in the named run `release-max-100`. + +| Case | Open DFA | Padded DFA | Paper projection | +| --- | ---: | ---: | ---: | +| 128 inputs, no language restriction | 8.227 | 7.766 | 0.450 | +| 128 inserted input items, no restriction | 3.915 | 4.106 | 0.281 | +| Common pattern length 12, no restriction | 13.292 | 11.578 | 3.228 | +| RE14 workload | 2.922 | 1.730 | 0.719 | + +The projection implementation was cheaper on these workloads. Open DFA did not +show a consistent timing advantage over padded DFA. Its useful modelling +property remains the absence of padded decision positions; a runtime advantage +is not established. These small planted workloads do not establish performance +on the paper's large mining databases or at lower support thresholds. diff --git a/misc/common-pattern/benchmark.py b/misc/common-pattern/benchmark.py new file mode 100755 index 0000000000..b2bb49fe40 --- /dev/null +++ b/misc/common-pattern/benchmark.py @@ -0,0 +1,735 @@ +#!/usr/bin/env -S uv run --script +# /// script +# requires-python = ">=3.11" +# dependencies = [] +# /// +"""Compare open and padded prefix projection for constrained frequent subsequences. + +One writer per named run. See README.md for the build and comparison limits. +""" + +import argparse +import hashlib +import json +import math +import os +import platform +import random +import re +import signal +import statistics +import subprocess +import sys +import time +from collections import Counter +from decimal import ROUND_CEILING, Decimal +from pathlib import Path + +VARIANTS = ("open-projection", "padded-projection", "paper-projection") +ALL_VARIANTS = VARIANTS + ("open-dfa", "padded-dfa") +LANGUAGES = { + "none": r"[A-Z]+", + "motif": r"A[A-Z]*C", + "re10": r"A*B(B|C)D*EF*(G|H)I*", + "re14": r"A*(Q|BS*(B|C))D*E(I|S)*(F|H)G*R", + "re2": r"(S|T)[A-Z](R|K)", +} +METRICS = ("solutions", "nodes", "failures", "propagations", "model_search_seconds") + + +def digest(path: Path) -> str: + return hashlib.sha256(path.read_bytes()).hexdigest() + + +def save_json(path: Path, value: object) -> None: + temporary = path.with_suffix(".tmp") + temporary.write_text(json.dumps(value, indent=2) + "\n") + temporary.replace(path) + + +def planted(rng: random.Random, pattern: str, count: int, noise: int) -> list[str]: + """Keep the pattern's order while inserting independently sampled items.""" + sequences = [] + for _ in range(count): + text = list(pattern) + for _ in range(noise): + text.insert(rng.randrange(len(text) + 1), rng.choice("DEFGHIJKLMNOP")) + sequences.append("".join(text)) + return sequences + + +def read_database(path: Path, format: str) -> list[list[int]]: + sequences = [] + for line in path.read_text().splitlines(): + if not line or (format == "spmf" and line[0] in "#%@"): + continue + if format == "letters": + if not re.fullmatch("[A-Z]+", line): + raise ValueError("expected nonempty A..Z sequences") + sequence = [ord(a) - ord("A") + 1 for a in line] + else: + tokens = [int(token) for token in line.split()] + if format == "spmf": + if ( + not tokens + or tokens[-1] != -2 + or len(tokens) % 2 != 1 + or any(tokens[i] != -1 for i in range(1, len(tokens) - 1, 2)) + ): + raise ValueError( + "SPMF sequences require singleton itemsets and -2 termination" + ) + sequence = tokens[:-1:2] + else: + sequence = tokens + if not sequence or any(item < 1 or item > 2147483646 for item in sequence): + raise ValueError("expected positive Gecode integer items") + sequences.append(sequence) + if not sequences: + raise ValueError("empty database") + return sequences + + +def support_count(percent: str, records: int) -> int: + if not re.fullmatch(r"(?:[0-9]+(?:\.[0-9]{1,6})?|\.[0-9]{1,6})", percent): + raise ValueError("support needs a percentage with at most six decimals") + value = Decimal(percent) + if not 0 < value <= 100: + raise ValueError("support must be in (0,100]") + return int((records * value / 100).to_integral_value(rounding=ROUND_CEILING)) + + +def cases( + seed: int, + suite: str, + database: Path | None, + restriction: str, + format: str, + supports: list[str], + min_length: int, + required: list[int], +) -> list[dict]: + if database: + base = [ + { + "id": "input", + "sequences": read_database(database, format), + "language": restriction, + } + ] + else: + rng = random.Random(seed) + workloads = [ + ("paper-table1", ["ABCBC", "BABC", "AB", "BCD"], ["none"]), + ("example", ["ABCBC", "BABC", "ABDC"], ["none", "motif"]), + ("repeated", ["AAAAAA", "AAAAAAAA", "AAAAAAAAAA"], ["none", "motif"]), + ("no-common", ["ABC", "DEF"], ["none"]), + ] + if suite == "scaling": + for count in (8, 32, 128): + workloads.append( + ( + f"database-{count}", + planted(rng, "ABCABC", count, 10), + ["none", "motif"], + ) + ) + for noise in (8, 32, 128): + workloads.append( + ( + f"input-noise-{noise}", + ["ABCBC"] + planted(rng, "ABCBC", 7, noise), + ["none", "motif"], + ) + ) + for length in (4, 8, 12): + pattern = ("ABC" * 4)[:length] + workloads.append( + ( + f"pattern-{length}", + [pattern] + planted(rng, pattern, 7, 12), + ["none"], + ) + ) + workloads.extend( + [ + ( + "paper-re10", + ["AABCDDEFFGII"] + planted(rng, "AABCDDEFFGII", 7, 8), + ["re10"], + ), + ( + "paper-re14", + ["AABCDDEISHGGR"] + planted(rng, "AABCDDEISHGGR", 7, 8), + ["re14"], + ), + ("paper-re2", ["SAR"] + planted(rng, "SAR", 7, 16), ["re2"]), + ] + ) + base = [ + { + "id": f"{name}-{language}", + "language": language, + "sequences": [[ord(a) - ord("A") + 1 for a in s] for s in sequences], + } + for name, sequences, languages in workloads + for language in languages + ] + result = [ + { + **case, + "id": f"{case['id']}-support-{percent}", + "support_percent": percent, + "min_support": support_count(percent, len(case["sequences"])), + "min_length": min_length, + "required": required, + } + for case in base + for percent in supports + ] + if len({case["id"] for case in result}) != len(result): + raise ValueError("duplicate support thresholds") + return result + + +def accepts(pattern: tuple[int, ...], case: dict) -> bool: + if len(pattern) < case["min_length"] or not set(case["required"]).issubset(pattern): + return False + language = case["language"] + if language == "none": + return True + if language == "motif": + return len(pattern) >= 2 and pattern[0] == 1 and pattern[-1] == 3 + if language == "re2": + return len(pattern) == 3 and pattern[0] in (19, 20) and pattern[-1] in (18, 11) + text = "".join(chr(64 + a) if 1 <= a <= 26 else "?" for a in pattern) + return re.fullmatch(LANGUAGES[language], text) is not None + + +def frequent_patterns(case: dict) -> set[tuple[int, ...]] | None: + """Every k-supported pattern occurs in at least one of the n-k+1 shortest records.""" + sequences: list[list[int]] = case["sequences"] + cover = sorted(sequences, key=len)[: len(sequences) - case["min_support"] + 1] + if any(len(s) > 16 for s in cover) or sum(2 ** len(s) for s in cover) > 200000: + return None + candidates: set[tuple[int, ...]] = set() + for sequence in cover: + local: set[tuple[int, ...]] = {()} + for item in sequence: + local |= {prefix + (item,) for prefix in local} + candidates |= local + return { + pattern + for pattern in candidates + if accepts(pattern, case) + and sum(is_subsequence(pattern, s) for s in sequences) >= case["min_support"] + } + + +def read_patterns(path: Path) -> set[tuple[int, ...]]: + """Read an independent miner's output normalized to one integer pattern per line.""" + patterns = [tuple(map(int, line.split())) for line in path.read_text().splitlines()] + if len(set(patterns)) != len(patterns) or any( + not p or any(item < 1 or item > 2147483646 for item in p) for p in patterns + ): + raise ValueError("expected distinct nonempty positive integer patterns") + return set(patterns) + + +def is_subsequence(pattern: tuple[int, ...], sequence: list[int]) -> bool: + items = iter(sequence) + return all(item in items for item in pattern) + + +def execute(command: list[str], stdout: Path, stderr: Path, timeout: float) -> dict: + """Capture one invocation, including startup, and reap its process group.""" + start = time.perf_counter() + with stdout.open("w") as out, stderr.open("w") as err: + try: + process = subprocess.Popen( + command, stdout=out, stderr=err, start_new_session=True + ) + except OSError as error: + return { + "status": "error", + "detail": str(error), + "wall_seconds": time.perf_counter() - start, + } + try: + returncode = process.wait(timeout=timeout) + except subprocess.TimeoutExpired: + kill_process_group(process) + return {"status": "timeout", "wall_seconds": time.perf_counter() - start} + except BaseException: + kill_process_group(process) + raise + elapsed = time.perf_counter() - start + if returncode: + return {"status": "error", "returncode": returncode, "wall_seconds": elapsed} + try: + metrics = json.loads(stderr.read_text()) + if not isinstance(metrics, dict) or set(metrics) != set(METRICS): + raise ValueError("unexpected target metrics") + for key in METRICS: + value = metrics[key] + if ( + type(value) not in (int, float) + or value < 0 + or not math.isfinite(value) + or (key != "model_search_seconds" and type(value) is not int) + ): + raise ValueError(f"invalid {key}") + except (ValueError, TypeError) as error: + return {"status": "invalid", "detail": str(error), "wall_seconds": elapsed} + return {"status": "ok", "wall_seconds": elapsed, "metrics": metrics} + + +def kill_process_group(process: subprocess.Popen) -> None: + try: + os.killpg(process.pid, signal.SIGKILL) + except ProcessLookupError: + pass + process.wait() + + +def check_patterns( + result: dict, + output: Path, + case: dict, + expected: set[tuple[int, ...]] | None, + oracle: str = "exhaustive", +) -> dict: + if result["status"] != "ok": + return result + try: + patterns = [ + tuple(map(int, line.split())) for line in output.read_text().splitlines() + ] + except ValueError: + return {**result, "status": "invalid", "detail": "non-integer pattern output"} + actual = set(patterns) + if ( + len(patterns) != result["metrics"]["solutions"] + or len(actual) != len(patterns) + or any(not accepts(p, case) for p in patterns) + or ( + actual != expected + if expected is not None + else any( + sum(is_subsequence(p, s) for s in case["sequences"]) + < case["min_support"] + for p in patterns + ) + ) + ): + return { + **result, + "status": "invalid", + "detail": "incorrect pattern enumeration", + } + fingerprint = hashlib.sha256(json.dumps(sorted(actual)).encode()).hexdigest() + return { + **result, + "patterns_sha256": fingerprint, + "oracle": oracle if expected is not None else "feasibility", + } + + +def valid_record(path: Path, identity: dict, validation: bool = False) -> dict | None: + if not path.exists(): + return None + try: + record = json.loads(path.read_text()) + if not isinstance(record, dict): + raise TypeError("record must be an object") + if any(record.get(key) != value for key, value in identity.items()): + raise ValueError("record identity mismatch") + if record.get("status") not in ("ok", "timeout", "error", "invalid"): + raise ValueError("missing terminal status") + elapsed = record["wall_seconds"] + if ( + type(elapsed) not in (int, float) + or not math.isfinite(elapsed) + or elapsed < 0 + ): + raise ValueError("invalid wall time") + if record["status"] == "ok": + metrics = record["metrics"] + if not isinstance(metrics, dict) or set(metrics) != set(METRICS): + raise ValueError("missing metrics") + for key, value in metrics.items(): + if ( + type(value) not in (int, float) + or not math.isfinite(value) + or value < 0 + or (key != "model_search_seconds" and type(value) is not int) + ): + raise ValueError("invalid saved metrics") + if validation and ( + not re.fullmatch("[0-9a-f]{64}", record.get("patterns_sha256", "")) + or record.get("oracle") + not in ("exhaustive", "reference", "feasibility") + ): + raise ValueError("missing correctness evidence") + return record + except (ValueError, TypeError, KeyError) as error: + print(f"Unfinished record {path.name}: {error}", file=sys.stderr) + return None + + +def command( + binary: str, case: dict, variant: str, database: Path, output: str, bound: str +) -> list[str]: + required = ",".join(map(str, case["required"])) or "-" + return [ + binary, + variant, + case["language"], + str(database), + output, + bound, + case["support_percent"], + str(case["min_length"]), + required, + "integers", + ] + + +def collect(args: argparse.Namespace, directory: Path) -> None: + binary = args.binary.resolve(strict=True) + workloads = cases( + args.seed, + args.suite, + args.database, + args.language, + args.format, + args.support, + args.min_length, + args.required, + ) + variants = args.variants + if args.reference and (not args.database or len(workloads) != 1): + raise ValueError("reference output requires one custom database query") + reference = read_patterns(args.reference) if args.reference else None + if len(set(variants)) != len(variants): + raise ValueError("duplicate variants") + if any(case["min_support"] < len(case["sequences"]) for case in workloads) and ( + args.bound == "shortest" or any(v.endswith("dfa") for v in variants) + ): + raise ValueError("DFA models and shortest bound require all-input support") + # Mutable shared libraries count as part of the target, not just the executable. + libraries = sorted( + { + p.resolve() + for p in binary.parent.parent.glob("libgecode*") + if p.suffix in (".so", ".dylib", ".a") + } + ) + if not libraries: + raise ValueError("expected binary in BUILD/bin and Gecode libraries in BUILD") + config = { + "format": 2, + "binary": str(binary), + "binary_sha256": digest(binary), + "libraries": {str(p): digest(p) for p in libraries}, + "build_label": args.build_label, + "runner_sha256": digest(Path(__file__)), + "source_sha256": digest(Path(__file__).with_name("compare.cpp")), + "helper_sha256": digest( + Path(__file__).resolve().parents[2] / "examples/common-pattern.hh" + ), + "machine": { + "system": platform.platform(), + "node": platform.node(), + "processor": platform.processor(), + }, + "cases": workloads, + "repetitions": args.repetitions, + "seed": args.seed, + "timeout_seconds": args.timeout, + "bound": args.bound, + "variants": variants, + } + if args.reference: + config["reference"] = { + "path": str(args.reference.resolve()), + "sha256": digest(args.reference), + } + print( + f"{len(workloads)} cases; {len(workloads) * len(variants)} correctness runs; " + f"{len(workloads) * len(variants) * args.repetitions} measured runs; " + f"{args.timeout}s timeout per invocation; bound={args.bound}" + ) + print( + "Serial, shuffled repetitions; model construction + exhaustive DFS; " + "measured runs count solutions without printing them." + ) + if args.dry_run: + print( + " ".join( + command( + str(binary), + workloads[0], + variants[0], + directory / "inputs" / (workloads[0]["id"] + ".txt"), + "count", + args.bound, + ) + ) + ) + return + if directory.exists(): + if json.loads((directory / "config.json").read_text()) != config: + raise ValueError("configuration changed; use a new run name") + else: + directory.mkdir(parents=True) + save_json(directory / "config.json", config) + for part in ("inputs", "validation", "samples"): + (directory / part).mkdir(exist_ok=True) + passed = set() + for case in workloads: + database = directory / "inputs" / (case["id"] + ".txt") + database.write_text( + "\n".join(" ".join(map(str, s)) for s in case["sequences"]) + "\n" + ) + oracle = reference if reference is not None else frequent_patterns(case) + checks = [] + for variant in variants: + identity = {"case": case["id"], "variant": variant} + path = directory / "validation" / f"{case['id']}-{variant}.json" + record = valid_record(path, identity, validation=True) + if record is None: + cmd = command(str(binary), case, variant, database, "print", args.bound) + record = execute( + cmd, + path.with_suffix(".stdout"), + path.with_suffix(".stderr"), + args.timeout, + ) + record = check_patterns( + record, + path.with_suffix(".stdout"), + case, + oracle, + "reference" if reference is not None else "exhaustive", + ) + record.update(identity) + save_json(path, record) + checks.append(record) + if ( + all(r["status"] == "ok" for r in checks) + and len({r["patterns_sha256"] for r in checks}) == 1 + ): + passed.add(case["id"]) + else: + print(f"{case['id']}: correctness failed or incomplete; timings skipped") + schedule = [ + (case, variant, repeat) + for repeat in range(args.repetitions) + for case in workloads + for variant in variants + ] + random.Random(args.seed).shuffle(schedule) + executed = 0 + failures = 0 + for case, variant, repeat in schedule: + if case["id"] not in passed: + continue + identity = {"case": case["id"], "variant": variant, "repeat": repeat} + path = directory / "samples" / f"{case['id']}-{variant}-{repeat}.json" + saved = valid_record(path, identity) + if saved is not None: + failures += saved["status"] != "ok" + continue + if args.limit is not None and executed >= args.limit: + break + database = directory / "inputs" / (case["id"] + ".txt") + cmd = command(str(binary), case, variant, database, "count", args.bound) + record = execute( + cmd, path.with_suffix(".stdout"), path.with_suffix(".stderr"), args.timeout + ) + checked = json.loads( + (directory / "validation" / f"{case['id']}-{variant}.json").read_text() + ) + if record["status"] == "ok" and ( + record["metrics"]["solutions"] != checked["metrics"]["solutions"] + or path.with_suffix(".stdout").read_text() + ): + record.update(status="invalid", detail="count run differs from validation") + record.update(identity) + save_json(path, record) + executed += 1 + failures += record["status"] != "ok" + print(f"{case['id']} / {variant} / {repeat}: {record['status']}") + print(f"Collected {executed} new measured samples in {directory}") + if len(passed) != len(workloads) or failures: + raise ValueError( + "comparison has failed or timed-out work; inspect saved records" + ) + + +def analyze(directory: Path) -> None: + config = json.loads((directory / "config.json").read_text()) + print( + f"Build: {config['build_label']}; bound: {config['bound']}; " + "per-case sequence support; all-pattern enumeration" + ) + print("Model+search seconds: median [min, max]; only validated successful samples.") + print("End-to-end wall seconds include process startup and teardown.") + print( + "case | variant | ok/expected | other | patterns | model+search s | wall s | nodes | propagations" + ) + totals = Counter() + validation_counts = Counter() + mismatched_cases = 0 + for case in config["cases"]: + checks = [ + valid_record( + directory / "validation" / f"{case['id']}-{v}.json", + {"case": case["id"], "variant": v}, + validation=True, + ) + for v in config["variants"] + ] + comparable = ( + all(r is not None and r["status"] == "ok" for r in checks) + and len({r["patterns_sha256"] for r in checks if r is not None}) == 1 + ) + validation_counts.update(r["status"] if r else "unfinished" for r in checks) + if ( + all(r is not None and r["status"] == "ok" for r in checks) + and not comparable + ): + mismatched_cases += 1 + for variant in config["variants"]: + records = [ + valid_record( + directory / "samples" / f"{case['id']}-{variant}-{repeat}.json", + {"case": case["id"], "variant": variant, "repeat": repeat}, + ) + for repeat in range(config["repetitions"]) + ] + counts = Counter(r["status"] if r else "unfinished" for r in records) + totals.update(counts) + successful = ( + [r for r in records if r and r["status"] == "ok"] if comparable else [] + ) + other = ( + ",".join( + f"{key}:{value}" for key, value in counts.items() if key != "ok" + ) + or "-" + ) + if not successful: + print( + f"{case['id']} | {variant} | 0/{config['repetitions']} | {other} " + "| unavailable (correctness or collection incomplete)" + ) + continue + seconds = [r["metrics"]["model_search_seconds"] for r in successful] + wall = statistics.median(r["wall_seconds"] for r in successful) + metrics = successful[0]["metrics"] + print( + f"{case['id']} | {variant} | {len(successful)}/{config['repetitions']} | " + f"{other} | {metrics['solutions']} | {statistics.median(seconds):.6f} " + f"[{min(seconds):.6f}, {max(seconds):.6f}] | {wall:.6f} | " + f"{metrics['nodes']} | {metrics['propagations']}" + ) + print(f"Measured sample status: {dict(totals)}") + print( + f"Correctness status: {dict(validation_counts)}; " + f"cases with disagreeing pattern sets: {mismatched_cases}" + ) + print( + "Paper-projection is an Algorithm 2 reimplementation, " + "not the authors' executable or a replication of their dataset timings." + ) + + +def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument( + "--results-root", type=Path, default=Path("build/common-pattern-results") + ) + subparsers = parser.add_subparsers(dest="action", required=True) + run = subparsers.add_parser("run", help="collect or resume a named comparison") + run.add_argument("--name", required=True) + run.add_argument("--binary", type=Path, required=True) + run.add_argument( + "--build-label", required=True, help="compiler, flags and build configuration" + ) + run.add_argument("--suite", choices=("smoke", "scaling"), default="smoke") + run.add_argument( + "--database", type=Path, help="custom database, one sequence per line" + ) + run.add_argument( + "--reference", + type=Path, + help="exact independent output for one custom query; integer patterns, one per line", + ) + run.add_argument( + "--language", + choices=tuple(LANGUAGES), + default="none", + help="restriction for a custom database", + ) + run.add_argument( + "--format", choices=("letters", "integers", "spmf"), default="letters" + ) + run.add_argument( + "--support", + nargs="+", + default=["100", "50", "25"], + help="minimum-support percentages (up to six decimals)", + ) + run.add_argument("--min-length", type=int, default=1) + run.add_argument( + "--required", type=int, nargs="*", default=[], help="required positive item IDs" + ) + run.add_argument( + "--variants", choices=ALL_VARIANTS, nargs="+", default=list(VARIANTS) + ) + run.add_argument("--bound", choices=("max", "shortest"), default="max") + run.add_argument("--repetitions", type=int, default=5) + run.add_argument("--timeout", type=float, default=30) + run.add_argument("--seed", type=int, default=20261013) + run.add_argument( + "--limit", type=int, help="collect at most this many new timed samples" + ) + run.add_argument("--dry-run", action="store_true") + report = subparsers.add_parser( + "analyze", help="summarize saved measurements without running targets" + ) + report.add_argument("--name", required=True) + args = parser.parse_args() + if not re.fullmatch(r"[A-Za-z0-9][A-Za-z0-9_.-]*", args.name): + parser.error("name must be one safe path component") + directory = args.results_root.resolve() / args.name + try: + if args.action == "run": + if ( + args.repetitions < 1 + or not math.isfinite(args.timeout) + or args.timeout <= 0 + or (args.limit is not None and args.limit < 0) + ): + parser.error( + "repetitions and timeout must be positive; limit must be nonnegative" + ) + if ( + args.min_length < 1 + or args.min_length > 2147483646 + or any(item < 1 or item > 2147483646 for item in args.required) + ): + parser.error( + "length and required item IDs must be positive Gecode integers" + ) + collect(args, directory) + else: + analyze(directory) + except (ValueError, OSError) as error: + parser.exit(1, f"{error}\n") + + +if __name__ == "__main__": + main() diff --git a/misc/common-pattern/compare.cpp b/misc/common-pattern/compare.cpp new file mode 100644 index 0000000000..b52e8e69d3 --- /dev/null +++ b/misc/common-pattern/compare.cpp @@ -0,0 +1,332 @@ +/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */ +/* + * Benchmark companion to examples/common-pattern.cpp. + * Copyright Mikael Zayenz Lagerkvist, 2026. + * Distributed under the MIT license; see LICENSE. + */ + +#include +#include + +#include +#include +#include +#include +#include +#include + +using namespace Gecode; +using namespace PatternMining; + +namespace { + + /// The representations compared on identical enumeration problems + enum class Model { + OpenDFA, PaddedDFA, OpenProjection, PaddedProjection, PaperProjection + }; + + /// Earliest-match subsequence DFA, optionally accepting trailing zeroes + DFA + subsequences(const Database& database, int sequence, bool padded) { + const int start = (sequence == 0) ? 0 : database.ends[sequence-1]; + const int n = database.ends[sequence]-start; + std::vector next(database.alphabet.size(),-1); + std::vector transitions; + for (int i=n; i--; ) { + next[database.items[start+i]] = i+1; + for (int a=0; a= 0) + transitions.emplace_back(i,database.alphabet[a],next[a]); + } + if (padded) { + for (int i=0; i<=n+1; i++) + transitions.emplace_back(i,0,n+1); + } + transitions.emplace_back(-1,0,0); + const int states = n+1+static_cast(padded); + std::vector finals(states+1); + for (int i=0; i { + protected: + Projection projection; + /// Number of consumed contiguous pattern positions + int consumed; + /// Match the open projection's suffix-length cap + bool bounded; + public: + PaperProjection(Space& home, ViewArray& x, + const Database& database, int support, bool cap) + : NaryPropagator(home,x), + projection(home,database,support), consumed(0), bounded(cap) { + home.notice(*this,AP_DISPOSE); + // Filter infrequent items at the root in every projection baseline. + Int::IntView::schedule(home,*this,Int::ME_INT_VAL); + } + + PaperProjection(Space& home, PaperProjection& p) + : NaryPropagator(home,p), + projection(home,p.projection), consumed(p.consumed), bounded(p.bounded) {} + + virtual Actor* copy(Space& home) { + return new (home) PaperProjection(home,*this); + } + + virtual PropCost cost(const Space&, const ModEventDelta&) const { + return PropCost::linear(PropCost::HI,projection.data.items.size()); + } + + virtual size_t dispose(Space& home) { + home.ignore(*this,AP_DISPOSE); + projection.~Projection(); + (void) NaryPropagator::dispose(home); + return sizeof(*this); + } + + virtual ExecStatus propagate(Space& home, const ModEventDelta&) { + for (;;) { + while ((consumed < x.size()) && x[consumed].assigned()) { + const int item = x[consumed].val(); + if (item == 0) { + for (int j=consumed+1; j& required) + : model(m) { + if (minimum_length > bound) { + fail(); + return; + } + const bool growing = (model == Model::OpenDFA) || + (model == Model::OpenProjection); + if (growing) { + open = OpenIntVarList(*this,database.domain(),bound); + rel(*this,open.length(),IRT_GQ,minimum_length); + if (model == Model::OpenDFA) { + for (int i=0; i values(1,0); + values.insert(values.end(),database.alphabet.begin(),database.alphabet.end()); + padded = IntVarArray(*this,bound,IntSet(values.data(),values.size())); + for (int i=0; i x(*this,IntVarArgs(padded)); + (void) new (*this) PaperProjection(*this,x,database,support, + model == Model::PaddedProjection); + } + } + if (restriction != NONE) { + REG expression = language(restriction,database); + if (growing) + extensional(*this,open,expression); + else + extensional(*this,padded,expression + *REG(0)); + } + if (!required.empty()) { + REG alphabet(IntArgs(database.alphabet.size(),database.alphabet.begin())); + for (int item : required) { + REG contains = *alphabet + REG(item) + *alphabet; + if (growing) + extensional(*this,open,contains); + else + extensional(*this,padded,contains + *REG(0)); + } + } + if (growing) + branch(*this,open,INT_VAR_NONE(),INT_VAL_MIN()); + else + branch(*this,padded,INT_VAR_NONE(),INT_VAL_MIN()); + } + + Pattern(Pattern& s) : Space(s), model(s.model) { + if ((model == Model::OpenDFA) || (model == Model::OpenProjection)) + open.update(*this,s.open); + else + padded.update(*this,s.padded); + } + + virtual Space* copy(void) { return new Pattern(*this); } + + /// Emit actual items only, in the same format for all representations + void print(Format format) const { + const bool growing = (model == Model::OpenDFA) || + (model == Model::OpenProjection); + const int n = growing ? open.known_length() : padded.size(); + for (int i=0; i('A'+item-1); + else { + if (i > 0) + std::cout << ' '; + std::cout << item; + } + } + std::cout << '\n'; + } + }; + + /// Strictly parse positive query integers without accepting trailing text + int + positive_integer(const std::string& text) { + const std::vector items = read_sequence(text,INTEGERS); + if (items.size() != 1) + throw std::invalid_argument("Expected one positive integer"); + return items[0]; + } + + std::vector + required_items(const std::string& text) { + std::vector required; + if (text == "-") + return required; + if (text.empty() || (text.back() == ',')) + throw std::invalid_argument("Expected comma-separated positive required items"); + std::istringstream stream(text); + std::string item; + while (std::getline(stream,item,',')) + required.push_back(positive_integer(item)); + return required; + } + +} + +int +main(int argc, char* argv[]) { + if ((argc < 6) || (argc > 10)) { + std::cerr << "Usage: compare MODEL none|motif|re10|re14|re2 FILE " + << "print|count max|shortest [SUPPORT_PERCENT [MIN_LENGTH " + << "[REQUIRED_ITEMS [letters|integers|spmf]]]]\n" + << "Models: open-dfa, padded-dfa, open-projection, " + << "padded-projection, paper-projection\n"; + return 1; + } + try { + const std::string variant(argv[1]), restriction(argv[2]), + output(argv[4]), length_bound(argv[5]); + Model model; + if (variant == "open-dfa") model = Model::OpenDFA; + else if (variant == "padded-dfa") model = Model::PaddedDFA; + else if (variant == "open-projection") model = Model::OpenProjection; + else if (variant == "padded-projection") model = Model::PaddedProjection; + else if (variant == "paper-projection") model = Model::PaperProjection; + else throw std::invalid_argument("Unknown comparison model"); + Language query; + if (restriction == "none") query = NONE; + else if (restriction == "motif") query = MOTIF; + else if (restriction == "re10") query = RE10; + else if (restriction == "re14") query = RE14; + else if (restriction == "re2") query = RE2; + else throw std::invalid_argument("Unknown pattern language"); + if (((output != "print") && (output != "count")) || + ((length_bound != "max") && (length_bound != "shortest"))) + throw std::invalid_argument("Expected print|count and max|shortest"); + Format format = LETTERS; + if (argc > 9) { + const std::string name(argv[9]); + if (name == "integers") format = INTEGERS; + else if (name == "spmf") format = SPMF; + else if (name != "letters") + throw std::invalid_argument("Unknown database format"); + } + const std::string percent = (argc > 6) ? argv[6] : "100"; + (void) minimum_support(percent,1); + const int minimum_length = (argc > 7) ? positive_integer(argv[7]) : 1; + const std::vector required = required_items((argc > 8) ? argv[8] : "-"); + std::ifstream file(argv[3]); + const Sequences input = read_database(file,format); + + const auto start = std::chrono::steady_clock::now(); + const Database database(input); + const int support = minimum_support(percent,database.ends.size()); + if ((support != database.ends.size()) && + ((model == Model::OpenDFA) || (model == Model::PaddedDFA) || + (length_bound == "shortest"))) + throw std::invalid_argument("DFA models and shortest bound require all-input support"); + int bound = database.max_length(); + if (length_bound == "shortest") + for (const std::vector& sequence : input) + bound = std::min(bound,static_cast(sequence.size())); + Pattern* root = new Pattern(database,model,query,bound,support, + minimum_length,required); + Search::Options options; + options.threads = 1; + options.clone = false; + DFS engine(root,options); + unsigned long long solutions = 0; + while (Pattern* solution = engine.next()) { + solutions++; + if (output == "print") + solution->print(format); + delete solution; + } + const auto end = std::chrono::steady_clock::now(); + const Search::Statistics stats = engine.statistics(); + std::cerr << "{\"solutions\":" << solutions + << ",\"nodes\":" << stats.node + << ",\"failures\":" << stats.fail + << ",\"propagations\":" << stats.propagate + << ",\"model_search_seconds\":" + << std::chrono::duration(end-start).count() << "}\n"; + return 0; + } catch (const std::exception& error) { + std::cerr << error.what() << '\n'; + return 1; + } +} diff --git a/test/afc.cpp b/test/afc.cpp index eceff77137..a5441e0416 100644 --- a/test/afc.cpp +++ b/test/afc.cpp @@ -36,6 +36,8 @@ #include "test/test.hh" +#include + namespace Test { /// %Test for %AFC infrastructure @@ -132,6 +134,189 @@ namespace Test { } }; + /// Scoped suppression of global propagator information + class NoGPI : public Test::Base { + /// Space with variables for posting and rewriting relations + class TestSpace : public Gecode::Space { + public: + Gecode::IntVar x, y; + Gecode::BoolVar b; + TestSpace(void) : x(*this,0,10), y(*this,0,10), b(*this,0,1) {} + TestSpace(TestSpace& s) : Space(s) { + x.update(*this,s.x); y.update(*this,s.y); b.update(*this,s.b); + } + virtual Space* copy(void) { return new TestSpace(*this); } + /// Find a surviving propagator by its identifier + Gecode::Propagator* find(unsigned int id) { + for (Propagators ps(*this); ps(); ++ps) + if (ps.propagator().id() == id) + return &ps.propagator(); + return nullptr; + } + /// Post a non-subsumed relation and return its propagator + Gecode::Propagator& post(Gecode::PropagatorGroup g = + Gecode::PropagatorGroup::def) { + Gecode::rel((*this)(g), x, Gecode::IRT_LE, y); + Gecode::Propagator* p = nullptr; + for (Propagators ps(*this); ps(); ++ps) + if ((p == nullptr) || (ps.propagator().id() > p->id())) + p = &ps.propagator(); + return *p; + } + }; + + /// Check nesting, unwinding, isolation, and posting in a clone + bool scopes(void) { + using namespace Gecode; + TestSpace s, other; + if (s.post().afc() != 1.0) + return false; + { + Space::NoGPI outer(s); + if ((s.post().afc() != 0.0) || (other.post().afc() != 1.0)) + return false; + try { + Space::NoGPI inner(s); + if (s.post().afc() != 0.0) + return false; + throw 1; + } catch (int) {} + if (s.post().afc() != 0.0) + return false; + { + Space::UseGPI use(s); + if (s.post().afc() != 1.0) + return false; + { + Space::NoGPI suppress(s); + if (s.post().afc() != 0.0) + return false; + } + if (s.post().afc() != 1.0) + return false; + } + if (s.post().afc() != 0.0) + return false; + try { + Space::UseGPI use(s); + if (s.post().afc() != 1.0) + return false; + throw 1; + } catch (int) {} + if (s.post().afc() != 0.0) + return false; + (void) s.status(); + std::unique_ptr c(static_cast(s.clone())); + if (c->post().afc() != 1.0) + return false; + } + try { + Space::NoGPI context(s); + throw 1; + } catch (int) {} + return s.post().afc() == 1.0; + } + + /// Check local groups, disabled pointer tags, and lifetime after cloning + bool lifetime(void) { + using namespace Gecode; + std::unique_ptr s(new TestSpace); + PropagatorGroup a, b; + unsigned int id; + { + Space::NoGPI context(*s); + Propagator& p = s->post(a); + id = p.id(); + if ((p.group() != a) || (s->post().id() == id)) + return false; + } + a.disable(*s); + (void) s->status(); + std::unique_ptr c(static_cast(s->clone())); + // The first call marks the shared pool; the second really unshares. + s->afc_unshare(); + c->afc_unshare(); + Propagator* p = c->find(id); + if (!p || !p->disabled() || (p->afc() != 0.0)) + return false; + b.move(*c,id); + if ((p->group() != b) || (s->find(id)->group() != a)) + return false; + s.reset(); + b.enable(*c); + if (p->disabled() || (c->status() == SS_FAILED)) + return false; + b.kill(*c); + return (c->find(id) == nullptr) && (b.size(*c) == 0); + } + + /// Check AFC failure accounting, initialization, and rescaling + bool failure(bool local) { + using namespace Gecode; + TestSpace s; + Propagator* p; + if (local) { + Space::NoGPI context(s); + p = &s.post(); + } else { + p = &s.post(); + } + (void) s.status(); + std::unique_ptr c(static_cast(s.clone())); + // Force rescaling on failure for the ordinary propagator. + IntAFC afc(*c,IntVarArgs() << c->x << c->y,1.0e-300,false); + c->afc_unshare(); + Propagator* q = c->find(p->id()); + if (!q || (q->afc() != (local ? 0.0 : 1.0))) + return false; + rel(*c,c->x,IRT_EQ,5); + rel(*c,c->y,IRT_EQ,4); + if (c->status() != SS_FAILED) + return false; + return local ? ((q->afc() == 0.0) && (p->afc() == 0.0)) : + ((q->afc() > 1.0) && (p->afc() < 1.0)); + } + + /// A real reified propagator must retain its information when rewritten + bool rewrite(bool local) { + using namespace Gecode; + TestSpace s; + PropagatorGroup g; + if (local) { + Space::NoGPI context(s); + rel(s(g),s.x,IRT_EQ,s.y,Reify(s.b)); + } else { + rel(s(g),s.x,IRT_EQ,s.y,Reify(s.b)); + } + (void) s.status(); + Gecode::Propagators ps(s,PropagatorGroup::all); + unsigned int id = ps.propagator().id(); + rel(s,s.b,IRT_EQ,1); + if (local) { + Space::UseGPI context(s); + (void) s.status(); + } else { + Space::NoGPI context(s); + (void) s.status(); + } + Propagator* p = s.find(id); + if (!p || (p->group() != g) || + (p->afc() != (local ? 0.0 : 1.0))) + return false; + rel(s,s.x,IRT_EQ,3); + return (s.status() == SS_SOLVED) && s.y.assigned() && (s.y.val() == 3); + } + + public: + NoGPI(void) : Test::Base("AFC::NoGPI") {} + virtual bool run(void) { + return scopes() && lifetime() && failure(false) && failure(true) && + rewrite(false) && rewrite(true); + } + }; + + NoGPI no_gpi; + AFC afc; } diff --git a/test/branch/int.cpp b/test/branch/int.cpp index 33837242ec..ab0ab575c3 100644 --- a/test/branch/int.cpp +++ b/test/branch/int.cpp @@ -36,6 +36,8 @@ #include #include +#include + namespace Test { namespace Branch { /// Space for testing filtered random tie selection @@ -131,6 +133,62 @@ namespace Test { namespace Branch { FilteredRndTies filtered_rnd_ties; +#ifdef GECODE_HAS_CBS + /// Independent permutations leave one CBS cache entry after another expires + class CBSSpace : public Gecode::Space { + public: + Gecode::IntVarArray x; + CBSSpace(bool local) : x(*this,8,0,3) { + if (local) { + NoGPI suppress(*this); + post(); + } else { + post(); + } + Gecode::cbsbranch(*this,x); + } + void post(void) { + using namespace Gecode; + distinct(*this,IntVarArgs() << x[0] << x[1] << x[2] << x[3],IPL_VAL); + distinct(*this,IntVarArgs() << x[4] << x[5] << x[6] << x[7],IPL_VAL); + } + CBSSpace(CBSSpace& s) : Space(s) { + x.update(*this,s.x); + } + virtual Space* copy(void) { + return new CBSSpace(*this); + } + }; + + /// Cache removal must preserve choices from surviving propagators + class CBS : public Base { + public: + CBS(void) : Base("Int::Branch::CBS",TestTags::check()) {} + virtual bool run(void) { + using namespace Gecode; + for (bool local : {false,true}) { + CBSSpace root(local); + Search::Options o; + o.c_d = 2; + o.a_d = 1; + DFS engine(&root,o); + int n = 0; + while (std::unique_ptr s{engine.next()}) { + for (int i=0; ix.size(); i++) + if (!s->x[i].assigned()) + return false; + n++; + } + if (n != 24*24) + return false; + } + return true; + } + }; + + CBS cbs; +#endif + /// %Test brancher with distinct propagator class Int : public IntTest { public: diff --git a/test/int/extensional.cpp b/test/int/extensional.cpp index be05c3b53b..4103fae99b 100755 --- a/test/int/extensional.cpp +++ b/test/int/extensional.cpp @@ -450,6 +450,54 @@ namespace Test { namespace Int { } }; + /// %Test compacting sparse external DFA state identifiers + class RegSparseStateNumbering : public Test { + public: + /// Create and register test + RegSparseStateNumbering(void) + : Test("Extensional::Reg::Sparse::StateNumbering", + 2,0,1,false,Gecode::IPL_DOM) {} + /// %Test whether \a x is solution + virtual bool solution(const Assignment& x) const { + return (x[0] == 0) && (x[1] == 1); + } + /// Post constraint on \a x + virtual void post(Gecode::Space& home, Gecode::IntVarArray& x) { + using namespace Gecode; + DFA d(1000000, + { + {1000000,0,2000000}, + {2000000,1,3000000} + }, + {3000000},false); + extensional(home,x,d); + } + }; + + /// %Test repeated final states in a sparse DFA specification + class RegDuplicateFinals : public Test { + protected: + bool minimize; + public: + RegDuplicateFinals(bool minimize0) + : Test(std::string("Extensional::Reg::DuplicateFinals::")+ + (minimize0 ? "Minimize" : "Keep"), + 1,0,1,false,Gecode::IPL_DOM), minimize(minimize0) {} + + virtual bool + solution(const Assignment& x) const { + return x[0] == 0; + } + + virtual void + post(Gecode::Space& home, Gecode::IntVarArray& x) { + using namespace Gecode; + DFA d(100,{{100,0,200}}, + {200,200,200,200,200,200,200,200},minimize); + extensional(home,x,d); + } + }; + /// %Test the Boolean-view regular posting route class RegBoolCyclicFrontier : public Test { public: @@ -802,6 +850,278 @@ namespace Test { namespace Int { } }; + /// Space used by open regular tests + class OpenRegularSpace : public Gecode::Space { + public: + Gecode::IntVarArray x; + Gecode::OpenIntVarList list; + + OpenRegularSpace(Gecode::DFA d, int max=8) + : x(*this,3,0,2), list(*this,max) { + Gecode::extensional(*this,list,d); + } + + OpenRegularSpace(OpenRegularSpace& s) + : Gecode::Space(s) { + x.update(*this,s.x); + list.update(*this,s.list); + } + + virtual Gecode::Space* + copy(void) { + return new OpenRegularSpace(*this); + } + }; + + /// Space used by open list materialization tests + class OpenListSpace : public Gecode::Space { + public: + Gecode::OpenIntVarList list; + + OpenListSpace(void) + : list(*this, + [](int i) { + return Gecode::IntSet(i,i); + },6) {} + + OpenListSpace(OpenListSpace& s) + : Gecode::Space(s) { + list.update(*this,s.list); + } + + virtual Gecode::Space* + copy(void) { + return new OpenListSpace(*this); + } + }; + + /// Test automatic and explicit list materialization + class OpenListMaterialize : public ::Test::Base { + public: + OpenListMaterialize(void) + : ::Test::Base("Int::OpenList::Materialize",TestTags::check()) {} + + virtual bool + run(void) { + using namespace Gecode; + OpenListSpace source; + rel(source,source.list.length(),IRT_GQ,3); + if ((source.status() == SS_FAILED) || + (source.list.known_length() != 3)) + return false; + for (int i=0; i<3; i++) + if (!source.list[i].assigned() || + (source.list[i].val() != i)) + return false; + + OpenListSpace* clone = + static_cast(source.clone()); + rel(*clone,clone->list.length(),IRT_GQ,5); + const bool clone_ok = + (clone->status() != SS_FAILED) && + (clone->list.known_length() == 5) && + clone->list[4].assigned() && + (clone->list[4].val() == 4); + delete clone; + if (!clone_ok || (source.list.known_length() != 3)) + return false; + + OpenListSpace direct; + IntVar x = direct.list.get(direct,3); + return (direct.list.known_length() == 4) && + (direct.list.length().min() == 4) && + x.assigned() && (x.val() == 3) && + (direct.status() != SS_FAILED); + } + }; + + /// Test appending and closing an open regular list + class OpenRegularIncremental : public ::Test::Base { + public: + OpenRegularIncremental(void) + : ::Test::Base("Int::Extensional::OpenReg::Incremental", + TestTags::check()) {} + + virtual bool + run(void) { + using namespace Gecode; + DFA d(0,{{0,0,1},{1,1,2}},{2},false); + OpenRegularSpace s(d); + + if (s.status() == SS_FAILED) + return false; + s.list.append(s,s.x[0]); + if ((s.status() == SS_FAILED) || + !s.x[0].assigned() || (s.x[0].val() != 0)) + return false; + s.list.append(s,s.x[1]); + if ((s.status() == SS_FAILED) || + !s.x[1].assigned() || (s.x[1].val() != 1)) + return false; + s.list.close(s); + return (s.status() != SS_FAILED) && + s.list.length().assigned() && + (s.list.length().val() == 2); + } + }; + + /// Test notification when the eventual length is already ahead + class OpenRegularLengthWake : public ::Test::Base { + public: + OpenRegularLengthWake(void) + : ::Test::Base("Int::Extensional::OpenReg::LengthWake") {} + + virtual bool + run(void) { + using namespace Gecode; + DFA d(0,{{0,0,1},{1,1,2}},{2},false); + OpenRegularSpace s(d,3); + rel(s,s.list.length(),IRT_GQ,2); + if (s.status() == SS_FAILED) + return false; + return (s.list.known_length() == 2) && + s.list[0].assigned() && + (s.list[0].val() == 0) && + s.list[1].assigned() && + (s.list[1].val() == 1); + } + }; + + /// Test backward pruning after appending a restricted variable + class OpenRegularBackward : public ::Test::Base { + public: + OpenRegularBackward(void) + : ::Test::Base("Int::Extensional::OpenReg::Backward") {} + + virtual bool + run(void) { + using namespace Gecode; + DFA d(0, + { + {0,0,1}, {0,1,2}, + {1,0,3}, {2,1,4}, + {3,2,5}, {4,2,5} + }, + {5},false); + OpenRegularSpace s(d); + rel(s,s.x[1],IRT_EQ,0); + s.list.append(s,s.x[0]); + if ((s.status() == SS_FAILED) || + (s.x[0].min() != 0) || (s.x[0].max() != 1)) + return false; + s.list.append(s,s.x[1]); + return (s.status() != SS_FAILED) && + s.x[0].assigned() && (s.x[0].val() == 0); + } + }; + + /// Test domain notification on an appended variable + class OpenRegularDomainWake : public ::Test::Base { + public: + OpenRegularDomainWake(void) + : ::Test::Base("Int::Extensional::OpenReg::DomainWake") {} + + virtual bool + run(void) { + using namespace Gecode; + DFA d(0, + { + {0,0,1}, {0,1,2}, + {1,0,3}, {2,1,4}, + {3,2,5}, {4,2,5} + }, + {5},false); + OpenRegularSpace s(d); + s.list.append(s,s.x[0]); + s.list.append(s,s.x[1]); + if ((s.status() == SS_FAILED) || s.x[0].assigned()) + return false; + rel(s,s.x[1],IRT_EQ,0); + return (s.status() != SS_FAILED) && + s.x[0].assigned() && (s.x[0].val() == 0); + } + }; + + /// Test independent extension after cloning + class OpenRegularClone : public ::Test::Base { + public: + OpenRegularClone(void) + : ::Test::Base("Int::Extensional::OpenReg::Clone",TestTags::check()) {} + + virtual bool + run(void) { + using namespace Gecode; + DFA d(0,{{0,0,1},{1,1,2}},{2},false); + OpenRegularSpace source(d); + source.list.append(source,source.x[0]); + if (source.status() == SS_FAILED) + return false; + + OpenRegularSpace* clone = + static_cast(source.clone()); + clone->list.append(*clone,clone->x[1]); + clone->list.close(*clone); + const bool clone_ok = + (clone->status() != SS_FAILED) && + (clone->list.known_length() == 2); + delete clone; + + source.list.close(source); + const bool source_failed = source.status() == SS_FAILED; + return clone_ok && source_failed && + (source.list.known_length() == 1); + } + }; + + /// Test empty words and automata without accepting states + class OpenRegularEmpty : public Test { + protected: + int kind; + public: + OpenRegularEmpty(int k) + : Test("Extensional::OpenReg::Empty::"+str(k),1,0,0), kind(k) {} + virtual bool solution(const Assignment&) const { return kind == 0; } + virtual void post(Gecode::Space& home, Gecode::IntVarArray&) { + using namespace Gecode; + OpenIntVarList list(home,8); + if (kind == 0) { + extensional(home,list,DFA()); + } else if (kind == 1) { + extensional(home,list,DFA(0,{{0,0,1}},{1},false)); + } else { + extensional(home,list, + DFA(0,{{0,0,0}},std::initializer_list{},false)); + } + if (kind != 2) + list.close(home); + } + }; + + /// Test closed open regular with the standard domain-consistency checks + class OpenRegularClosed : public Test { + public: + OpenRegularClosed(void) + : Test("Extensional::OpenReg::Closed",3,0,2,false,Gecode::IPL_DOM) {} + virtual bool solution(const Assignment& x) const { + int parity = 0; + for (int i=0; i + * + * Copyright: + * Mikael Zayenz Lagerkvist, 2026 + * + * This file is part of Gecode, the generic constraint + * development environment: + * http://www.gecode.dev + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + +#include "test/int.hh" +#include "examples/common-pattern.hh" + +#include + +#ifdef GECODE_HAS_SET_VARS +#include +#endif +#ifdef GECODE_HAS_FLOAT_VARS +#include +#endif + +#include +#include + +namespace Test { namespace Int { + + namespace OpenList { + + class BranchSpace : public Gecode::Space { + public: + Gecode::OpenIntVarList list; + + BranchSpace(void) + : list(*this, + [](int i) { + return Gecode::IntSet(i,i+1); + },3) { + Gecode::branch(*this,list); + } + + BranchSpace(BranchSpace& s) + : Gecode::Space(s) { + list.update(*this,s.list); + } + + virtual Gecode::Space* + copy(void) { + return new BranchSpace(*this); + } + }; + + class Branch : public ::Test::Base { + public: + Branch(void) + : ::Test::Base("Int::OpenList::Branch",TestTags::check()) {} + + virtual bool + run(void) { + using namespace Gecode; + Search::Options options; + options.threads = 1; + options.c_d = 1000; + options.a_d = 1000; + BranchSpace* root = new BranchSpace; + DFS engine(root,options); + delete root; + + int solutions = 0; + while (BranchSpace* solution = engine.next()) { + const int size = solution->list.known_length(); + bool valid = + solution->list.length().assigned() && + (solution->list.length().val() == size); + for (int i=0; ilist[i].assigned(); + delete solution; + if (!valid) + return false; + solutions++; + } + return solutions == 15; + } + }; + + class BranchOrderSpace : public Gecode::Space { + public: + Gecode::OpenIntVarList list; + + enum Order { INCREMENTAL, LENGTH_MIN, LENGTH_MAX }; + + BranchOrderSpace(Order order) + : list(*this,Gecode::IntSet(0,1),3) { + using namespace Gecode; + DFA accepts_one(0,{ + {0,0,0}, {0,1,1}, + {1,0,1}, {1,1,1} + },{1}); + extensional(*this,list,accepts_one); + if (order == LENGTH_MIN) + branch(*this,list.length(),INT_VAL_MIN()); + else if (order == LENGTH_MAX) + branch(*this,list.length(),INT_VAL_MAX()); + branch(*this,list); + } + + BranchOrderSpace(BranchOrderSpace& s) + : Gecode::Space(s) { + list.update(*this,s.list); + } + + virtual Gecode::Space* + copy(void) { + return new BranchOrderSpace(*this); + } + }; + + class BranchOrder : public ::Test::Base { + protected: + static bool + check(BranchOrderSpace::Order order, int first_length) { + using namespace Gecode; + Search::Options options; + options.threads = 1; + options.c_d = 1000; + options.a_d = 1000; + BranchOrderSpace* root = new BranchOrderSpace(order); + DFS engine(root,options); + delete root; + + int solutions = 0; + int first = -1; + while (BranchOrderSpace* solution = engine.next()) { + if (solutions == 0) + first = solution->list.known_length(); + solutions++; + delete solution; + } + return (first == first_length) && (solutions == 11); + } + + public: + BranchOrder(void) + : ::Test::Base("Int::OpenList::BranchOrder") {} + + virtual bool + run(void) { + using namespace Gecode; + return check(BranchOrderSpace::INCREMENTAL,3) && + check(BranchOrderSpace::LENGTH_MIN,1) && + check(BranchOrderSpace::LENGTH_MAX,3); + } + }; + + class SelectorSpace : public Gecode::Space { + public: + Gecode::OpenIntVarList list; + + SelectorSpace(Gecode::IntValBranch vals, bool length_first=false) + : list(*this,[](int i) { return Gecode::IntSet(i,i+1); },3) { + using namespace Gecode; + if (length_first) + branch(*this,list.length(),INT_VAL_MIN()); + branch(*this,list,tiebreak(INT_VAR_SIZE_MIN(),INT_VAR_MAX_MAX()),vals); + } + + SelectorSpace(SelectorSpace& s) : Gecode::Space(s) { + list.update(*this,s.list); + } + + virtual Gecode::Space* + copy(void) { + return new SelectorSpace(*this); + } + }; + + class Selectors : public ::Test::Base { + public: + Selectors(void) : ::Test::Base("Int::OpenList::Selectors") {} + + virtual bool + run(void) { + using namespace Gecode; + const IntValBranch values[] = { + INT_VAL_MIN(), INT_VAL_MAX(), INT_VAL_MED(), INT_VAL_RND(Rnd(1)), + INT_VAL_SPLIT_MIN(), INT_VAL_SPLIT_MAX(), + INT_VAL_RANGE_MIN(), INT_VAL_RANGE_MAX(), + INT_VALUES_MIN(), INT_VALUES_MAX(), + INT_VAL([](const Space&, IntVar x, int) { return x.max(); }) + }; + for (const IntValBranch& vals : values) + for (bool length_first : {false,true}) { + SelectorSpace root(vals,length_first); + Search::Options options; + options.threads = 1; + options.c_d = 1000; + options.a_d = 1000; + DFS engine(&root,options); + int solutions = 0; + while (SelectorSpace* solution = engine.next()) { + bool valid = solution->list.length().assigned() && + (solution->list.length().val() == solution->list.known_length()); + for (int i=0; ilist.known_length(); i++) + valid &= solution->list[i].assigned() && + (solution->list[i].val() >= i) && + (solution->list[i].val() <= i+1); + delete solution; + if (!valid) + return false; + solutions++; + } + if (solutions != 15) + return false; + } + return true; + } + }; + + class NoGoods : public ::Test::Base { + public: + NoGoods(void) : ::Test::Base("Int::OpenList::NoGoods") {} + + virtual bool + run(void) { + using namespace Gecode; + SelectorSpace root(INT_VAL_MIN()); + root.list.materialize(root,1); + Search::NodeStop stop(6); + Search::Options options; + options.stop = &stop; + options.threads = 1; + options.nogoods_limit = 100; + std::unique_ptr engine + (Search::dfsengine(&root,options)); + bool found[16] = {}; + const auto record = [&found](SelectorSpace* solution) { + int code = 1; + for (int i=0; ilist.known_length(); i++) + code = 2*code + solution->list[i].val()-i; + found[code] = true; + delete solution; + }; + while (Space* solution = engine->next()) + record(static_cast(solution)); + if (!engine->stopped()) + return false; + // Deeper choices refer to positions absent from the restart root. + engine->nogoods().post(root); + DFS restarted(&root); + while (SelectorSpace* solution = restarted.next()) + record(solution); + // Extraction may omit literals, but must retain every unvisited word. + for (int code=2; code<16; code++) + if (!found[code]) + return false; + return true; + } + }; + + class SelectorChoiceSpace : public Gecode::Space { + public: + Gecode::OpenIntVarList list; + + SelectorChoiceSpace(Gecode::IntValBranch vals) + : list(*this,Gecode::IntSet({0,2,5}),3) { + using namespace Gecode; + list.materialize(*this,3); + branch(*this,list, + tiebreak(INT_VAR_SIZE_MIN(), + INT_VAR_MERIT_MAX([](const Space&, IntVar, int i) { + return i; + })),vals, + [](const Space&, IntVar, int i) { return i != 1; }, + [](const Space&, const Brancher&, unsigned int, IntVar, + int i, const int& value, std::ostream& out) { + out << i << ":" << value; + }); + } + + SelectorChoiceSpace(SelectorChoiceSpace& s) : Gecode::Space(s) { + list.update(*this,s.list); + } + + virtual Gecode::Space* + copy(void) { + return new SelectorChoiceSpace(*this); + } + }; + + class SelectorChoice : public ::Test::Base { + public: + SelectorChoice(void) : ::Test::Base("Int::OpenList::SelectorChoice") {} + + virtual bool + run(void) { + using namespace Gecode; + for (int multi=0; multi<2; multi++) { + SelectorChoiceSpace source(multi ? INT_VALUES_MAX() : INT_VAL_MAX()); + if (source.status() != SS_BRANCH) + return false; + const Choice* original = source.choice(); + Archive archive; + original->archive(archive); + const Choice* restored = source.choice(archive); + bool valid = restored->alternatives() == (multi ? 3U : 2U); + for (unsigned int a=0; aalternatives(); a++) { + SelectorChoiceSpace* clone = + static_cast(source.clone()); + clone->commit(*restored,a); + const int expected[] = {5,2,0}; + valid &= !clone->failed() && !clone->list[0].assigned() && + !clone->list[1].assigned(); + if (multi || (a == 0)) + valid &= clone->list[2].assigned() && + (clone->list[2].val() == expected[a]); + else + valid &= !clone->list[2].in(5); + delete clone; + } + SelectorChoiceSpace* excluded = + static_cast(source.clone()); + NGL* literal = excluded->ngl(*restored,0); + valid &= (literal != nullptr) && (literal->status(*excluded) == NGL::NONE); + if (literal) + valid &= (literal->prune(*excluded) != ES_FAILED) && + !excluded->list[2].in(5); + delete excluded; + std::ostringstream printed; + source.print(*restored,0,printed); + valid &= printed.str() == "2:5"; + delete restored; + delete original; + if (!valid) + return false; + } + return true; + } + }; + + class BoolSpace : public Gecode::Space { + public: + Gecode::OpenBoolVarList list; + + BoolSpace(bool length_first) + : list(*this,3) { + using namespace Gecode; + DFA accepts_one(0,{{0,0,0},{0,1,1},{1,0,1},{1,1,1}},{1}); + extensional(*this,list,accepts_one); + if (length_first) + branch(*this,list.length(),INT_VAL_MIN()); + branch(*this,list, + BOOL_VAR_MERIT_MAX([](const Space&, BoolVar, int i) { return i; }), + BOOL_VAL_MAX()); + } + + BoolSpace(BoolSpace& s) : Gecode::Space(s) { + list.update(*this,s.list); + } + + virtual Gecode::Space* + copy(void) { + return new BoolSpace(*this); + } + }; + + class BoolList : public ::Test::Base { + public: + BoolList(void) : ::Test::Base("Int::OpenList::Bool",TestTags::check()) {} + + virtual bool + run(void) { + using namespace Gecode; + for (bool length_first : {false,true}) + for (int recompute=0; recompute<2; recompute++) { + BoolSpace root(length_first); + Search::Options options; + options.threads = 1; + options.c_d = recompute ? 1000 : 1; + options.a_d = options.c_d; + DFS engine(&root,options); + int solutions = 0; + while (BoolSpace* solution = engine.next()) { + bool valid = solution->list.length().assigned() && + (solution->list.length().val() == solution->list.known_length()); + int ones = 0; + for (int i=0; ilist.known_length(); i++) { + valid &= solution->list[i].assigned(); + ones += solution->list[i].val(); + } + delete solution; + if (!valid || (ones == 0)) + return false; + solutions++; + } + if (solutions != 11) + return false; + } + return true; + } + }; + + class FactorySpace : public Gecode::Space { + public: +#ifdef GECODE_HAS_SET_VARS + Gecode::OpenVarList sets; +#endif +#ifdef GECODE_HAS_FLOAT_VARS + Gecode::OpenVarList floats; +#endif + + FactorySpace(void) { + using namespace Gecode; +#ifdef GECODE_HAS_SET_VARS + sets = OpenVarList(*this, + [](Space& home, int i) { + return SetVar(home,IntSet(i,i),IntSet(i,i)); + },3); + sets.materialize(*this,1); +#endif +#ifdef GECODE_HAS_FLOAT_VARS + floats = OpenVarList(*this, + [](Space& home, int i) { return FloatVar(home,i,i); },3); + floats.materialize(*this,1); +#endif + } + + FactorySpace(FactorySpace& s) : Gecode::Space(s) { +#ifdef GECODE_HAS_SET_VARS + sets.update(*this,s.sets); +#endif +#ifdef GECODE_HAS_FLOAT_VARS + floats.update(*this,s.floats); +#endif + } + + virtual Gecode::Space* + copy(void) { + return new FactorySpace(*this); + } + }; + + class Factory : public ::Test::Base { + public: + Factory(void) : ::Test::Base("Int::OpenList::Factory",TestTags::check()) {} + + virtual bool + run(void) { + using namespace Gecode; + FactorySpace source; + if (source.status() == SS_FAILED) + return false; + FactorySpace* clone = static_cast(source.clone()); +#ifdef GECODE_HAS_SET_VARS + clone->sets.materialize(*clone,3); + clone->sets.close(*clone); + source.sets.close(source); +#endif +#ifdef GECODE_HAS_FLOAT_VARS + clone->floats.materialize(*clone,3); + clone->floats.close(*clone); + source.floats.close(source); +#endif + bool valid = (clone->status() != SS_FAILED) && + (source.status() != SS_FAILED); +#ifdef GECODE_HAS_SET_VARS + valid &= (source.sets.known_length() == 1) && + (clone->sets.known_length() == 3) && + (clone->sets.length().val() == 3) && + clone->sets[2].assigned() && (clone->sets[2].glbMin() == 2); +#endif +#ifdef GECODE_HAS_FLOAT_VARS + valid &= (source.floats.known_length() == 1) && + (clone->floats.known_length() == 3) && + (clone->floats.length().val() == 3) && + clone->floats[2].assigned() && (clone->floats[2].min() == 2); +#endif + delete clone; + return valid; + } + }; + + class FixedStatistics : public ::Test::Base { + public: + FixedStatistics(void) : ::Test::Base("Int::OpenList::FixedStatistics") {} + + virtual bool + run(void) { + using namespace Gecode; + for (int chb=0; chb<2; chb++) { + SelectorSpace open(INT_VAL_MIN()); + bool rejected = false; + try { + branch(open,open.list, + chb ? INT_VAR_CHB_MIN() : INT_VAR_ACTION_MIN(1.0), + INT_VAL_MIN()); + } catch (const Gecode::Int::UnknownBranching&) { + rejected = true; + } + if (!rejected) + return false; + SelectorChoiceSpace fixed(INT_VAL_MIN()); + branch(fixed,fixed.list, + chb ? INT_VAR_CHB_MIN() : INT_VAR_ACTION_MIN(1.0), + INT_VAL_MIN()); + DFS engine(&fixed); + int solutions = 0; + while (SelectorChoiceSpace* solution = engine.next()) { + solutions++; + delete solution; + } + if (solutions != 27) + return false; + } + return true; + } + }; + + Factory factory; + FixedStatistics fixed_statistics; + Selectors selectors; + NoGoods no_goods; + SelectorChoice selector_choice; + BoolList bool_list; + + class TransitionSpace : public Gecode::Space { + public: + Gecode::OpenIntVarList list; + + TransitionSpace(void) + : list(*this,Gecode::IntSet(0,4), + [](Gecode::Space& home, Gecode::OpenIntVarList x, int i) { + using namespace Gecode; + if (i == 0) { + rel(home,x[i],IRT_EQ,0); + } else { + linear(home,IntArgs({-1,1}), + IntVarArgs({x[i-1],x[i]}),IRT_EQ,1); + } + },4) { + Gecode::branch(*this,list); + } + + TransitionSpace(TransitionSpace& s) + : Gecode::Space(s) { + list.update(*this,s.list); + } + + virtual Gecode::Space* + copy(void) { + return new TransitionSpace(*this); + } + }; + + class Transition : public ::Test::Base { + public: + Transition(void) + : ::Test::Base("Int::OpenList::Transition") {} + + virtual bool + run(void) { + using namespace Gecode; + Search::Options options; + options.threads = 1; + options.c_d = 1000; + options.a_d = 1000; + TransitionSpace* root = new TransitionSpace; + DFS engine(root,options); + delete root; + + int solutions = 0; + while (TransitionSpace* solution = engine.next()) { + bool valid = + solution->list.length().assigned() && + (solution->list.length().val() == + solution->list.known_length()); + for (int i=0; ilist.known_length(); i++) + valid &= solution->list[i].assigned() && + (solution->list[i].val() == i); + delete solution; + if (!valid) + return false; + solutions++; + } + return solutions == 5; + } + }; + + + /// Test the relations on a closed open list with the integer harness + class Constraint : public Test { + public: + enum Kind { DISTINCT, REL, SLIDING, SLIDING_SUM, MIN_MAX, PRECEDE }; + protected: + Kind kind; + public: + Constraint(const std::string& name, Kind k, int size) + : Test("OpenList::"+name,size,0,2), kind(k) {} + + virtual bool + solution(const Assignment& x) const { + switch (kind) { + case DISTINCT: + for (int i=0; i= x[i]) + return false; + return true; + case SLIDING: + for (int i=1; i(source.clone()); + clone->list.materialize(*clone,2); + clone->list.close(*clone); + const bool valid = + (clone->status() != SS_FAILED) && + clone->list[1].assigned() && + (clone->list[1].val() == 2) && + clone->minimum.assigned() && (clone->minimum.val() == 0) && + clone->maximum.assigned() && (clone->maximum.val() == 2); + delete clone; + return valid && (source.list.known_length() == 1); + } + }; + + class CallbackSpace : public Gecode::Space { + public: + Gecode::OpenIntVarList list; + + CallbackSpace(Gecode::OpenIntVarList::Domain domain, + Gecode::OpenIntVarList::Transition transition) + : list(*this,domain,transition,8) {} + + CallbackSpace(CallbackSpace& s) : Gecode::Space(s) { + list.update(*this,s.list); + } + + virtual Gecode::Space* + copy(void) { + return new CallbackSpace(*this); + } + }; + + class GroupSpace : public Gecode::Space { + public: + enum Kind { REL, SUM, PRECEDE }; + Gecode::OpenIntVarList list; + Gecode::PropagatorGroup group; + + GroupSpace(Kind kind, bool close) + : list(*this,Gecode::IntSet(0,2),3) { + using namespace Gecode; + switch (kind) { + case REL: + rel((*this)(group),list,IRT_NQ); + break; + case SUM: + slidingsum((*this)(group),list,2,2,2); + break; + case PRECEDE: + precede((*this)(group),list,0,1); + break; + } + list.materialize(*this,2); + if (close) + list.close(*this); + } + + GroupSpace(GroupSpace& s) : Gecode::Space(s), group(s.group) { + list.update(*this,s.list); + } + + virtual Gecode::Space* + copy(void) { + return new GroupSpace(*this); + } + }; + + /// Test group control after an open constraint has posted its children + class Group : public ::Test::Base { + protected: + GroupSpace::Kind kind; + bool kill; + public: + Group(const std::string& name, GroupSpace::Kind kind0, bool kill0) + : ::Test::Base("Int::OpenList::Group::"+name+ + (kill0 ? "::Kill" : "::Disable")), + kind(kind0), kill(kill0) {} + + virtual bool + run(void) { + using namespace Gecode; + for (int close=0; close<2; close++) { + GroupSpace source(kind,close != 0); + if (source.status() == SS_FAILED) + return false; + if (kill) + source.group.kill(source); + else + source.group.disable(source); + // These values remain in the domains but violate each constraint. + rel(source,source.list[0],IRT_EQ, + kind == GroupSpace::PRECEDE ? 2 : 0); + rel(source,source.list[1],IRT_EQ, + kind == GroupSpace::PRECEDE ? 1 : 0); + if (source.status() == SS_FAILED) + return false; + if (!kill) { + source.group.enable(source); + if (source.status() != SS_FAILED) + return false; + } + } + return true; + } + }; + + Group group_rel_kill("Rel",GroupSpace::REL,true); + Group group_rel_disable("Rel",GroupSpace::REL,false); + Group group_sum_kill("Sum",GroupSpace::SUM,true); + Group group_sum_disable("Sum",GroupSpace::SUM,false); + Group group_precede_kill("Precede",GroupSpace::PRECEDE,true); + Group group_precede_disable("Precede",GroupSpace::PRECEDE,false); + + class Dispose : public ::Test::Base { + public: + Dispose(void) + : ::Test::Base("Int::OpenList::Dispose",TestTags::check()) {} + + virtual bool + run(void) { + using namespace Gecode; + std::shared_ptr domain(new int(0)); + std::shared_ptr transition(new int(0)); + CallbackSpace* source = new CallbackSpace( + [domain](int) { return IntSet(0,1); }, + [transition](Space&, OpenIntVarList, int) {}); + source->list.materialize(*source,2); + DFA dfa(0,{{0,0,0},{0,1,0}},{0}); + extensional(*source,source->list,dfa); + if (source->status() == SS_FAILED) { + delete source; + return false; + } + CallbackSpace* clone = static_cast(source->clone()); + delete source; + const bool retained = (domain.use_count() > 1) && + (transition.use_count() > 1); + delete clone; + return retained && (domain.use_count() == 1) && + (transition.use_count() == 1); + } + }; + + class CallbackLength : public ::Test::Base { + public: + CallbackLength(void) + : ::Test::Base("Int::OpenList::CallbackLength",TestTags::check()) {} + + virtual bool + run(void) { + using namespace Gecode; + for (int assign=0; assign<2; assign++) + for (int close=0; close<2; close++) { + CallbackSpace source([](int) { return IntSet(0,1); }, + [assign](Space& home, OpenIntVarList list, int i) { + if (i == 0) + rel(home,list.length(),assign ? IRT_EQ : IRT_GQ,3); + }); + rel(source,source.list.length(),IRT_GQ,1); + if (close) + source.list.close(source); + if ((source.status() == SS_FAILED) || + (source.list.known_length() != 3)) + return false; + } + return true; + } + }; + + /// Callback posting scopes, selected AFC, and nested list growth + class NoGPI : public ::Test::Base { + protected: + static void + post(Gecode::Space& home, Gecode::PropagatorGroup group) { + Gecode::IntVar x(home,0,10), y(home,0,10); + Gecode::rel(home(group),x,Gecode::IRT_LE,y); + } + + static int + count(const Gecode::Space& home, Gecode::PropagatorGroup group, + double afc) { + int n = 0; + for (Gecode::Propagators ps(home,group); ps(); ++ps) { + if (ps.propagator().afc() != afc) + return -1; + n++; + } + return n; + } + + public: + NoGPI(void) + : ::Test::Base("Int::OpenList::NoGPI",TestTags::check()) {} + + virtual bool + run(void) { + using namespace Gecode; + CallbackSpace home([](int) { return IntSet(0,1); }, + [](Space&, OpenIntVarList, int) {}); + PropagatorGroup factory, transition, selected, ordinary, suppressed; + OpenVarList list(home, + [factory,selected](Space& home, int) { + post(home,factory); + { + Space::UseGPI use_gpi(home); + post(home,selected); + } + return IntVar(home,0,10); + }, + [transition,selected](Space& home, OpenVarList list, int i) { + post(home,transition); + if (i == 3) + throw 1; + { + Space::UseGPI use_gpi(home); + post(home,selected); + if (i == 0) + list.materialize(home,2); + post(home,selected); + } + post(home,transition); + },4); + + list.materialize(home,1); + post(home,ordinary); + if ((list.known_length() != 2) || + (count(home,factory,0.0) != 2) || + (count(home,transition,0.0) != 4) || + (count(home,selected,1.0) != 6)) + return false; + { + Space::NoGPI no_gpi(home); + { + Space::UseGPI use_gpi(home); + list.append(home,IntVar(home,0,10)); + post(home,ordinary); + } + post(home,suppressed); + } + bool threw = false; + try { + list.append(home,IntVar(home,0,10)); + } catch (int) { + threw = true; + } + post(home,ordinary); + return threw && (count(home,factory,0.0) == 2) && + (count(home,transition,0.0) == 7) && + (count(home,selected,1.0) == 8) && + (count(home,ordinary,1.0) == 3) && + (count(home,suppressed,0.0) == 1) && + (home.status() != SS_FAILED); + } + }; + + class FailedGet : public ::Test::Base { + public: + FailedGet(void) + : ::Test::Base("Int::OpenList::FailedGet") {} + + virtual bool + run(void) { + using namespace Gecode; + CallbackSpace source([](int) { return IntSet(0,1); }, + [](Space& home, OpenIntVarList, int) { home.fail(); }); + IntVar x = source.list.get(source,4); + return source.failed() && (x.varimp() == nullptr); + } + }; + + class ValueCommit : public ::Test::Base { + public: + ValueCommit(void) + : ::Test::Base("Int::OpenList::ValueCommit") {} + + virtual bool + run(void) { + using namespace Gecode; + CallbackSpace source([](int) { return IntSet(0,1); }, + [](Space& home, OpenIntVarList, int i) { + if (i == 1) + home.fail(); + }); + source.list.materialize(source,1); + branch(source,source.list); + if (source.status() != SS_BRANCH) + return false; + const Choice* choice = source.choice(); + bool valid = true; + for (unsigned int alternative=0; alternative<2; alternative++) { + CallbackSpace* clone = static_cast(source.clone()); + rel(*clone,clone->list.length(),IRT_GQ,2); + clone->commit(*choice,alternative); + valid &= !clone->failed() && (clone->list.known_length() == 1) && + clone->list[0].assigned() && + (clone->list[0].val() == static_cast(alternative)); + valid &= clone->status() == SS_FAILED; + delete clone; + } + delete choice; + return valid; + } + }; + + /// Replay value choices after propagation has extended the original list + class ValueReplay : public ::Test::Base { + public: + ValueReplay(void) + : ::Test::Base("Int::OpenList::ValueReplay",TestTags::check()) {} + + virtual bool + run(void) { + using namespace Gecode; + CallbackSpace source([](int) { return IntSet(0,1); }, + [](Space& home, OpenIntVarList list, int i) { + if (i == 0) { + BoolVar zero(home,0,1); + rel(home,list[0],IRT_EQ,0,Reify(zero)); + rel(home,list.length(),IRT_GQ,2,Reify(zero,RM_IMP)); + } + }); + source.list.materialize(source,1); + branch(source,source.list); + if (source.status() != SS_BRANCH) + return false; + std::unique_ptr first(source.choice()); + std::unique_ptr replay + (static_cast(source.clone())); + source.commit(*first,0); + if ((source.status() != SS_BRANCH) || + (source.list.known_length() != 2)) + return false; + std::unique_ptr second(source.choice()); + // Recomputation commits the path without propagating between choices. + replay->commit(*first,0); + replay->commit(*second,0); + return (replay->status() != SS_FAILED) && + (replay->list.known_length() == 2) && + replay->list[0].assigned() && (replay->list[0].val() == 0) && + replay->list[1].assigned() && (replay->list[1].val() == 0); + } + }; + + class ImpossibleWindow : public ::Test::Base { + public: + ImpossibleWindow(void) + : ::Test::Base("Int::OpenList::ImpossibleWindow") {} + + virtual bool + run(void) { + using namespace Gecode; + for (int sum=0; sum<2; sum++) + for (int size=0; size<3; size++) { + CallbackSpace source([](int) { return IntSet(0,1); }, + [](Space&, OpenIntVarList, int) {}); + if (sum) + slidingsum(source,source.list,2,2,1); + else + Gecode::sequence(source,source.list,IntSet(0,1),2,3,3); + rel(source,source.list.length(),IRT_EQ,size); + const bool failed = source.status() == SS_FAILED; + if (failed != (size == 2)) + return false; + if (!failed && (source.list.known_length() != size)) + return false; + } + return true; + } + }; + + /// Search model for the private common-pattern projection + class PatternSpace : public Gecode::Space { + public: + Gecode::OpenIntVarList list; + Gecode::IntVar frequency; + + PatternSpace(const PatternMining::Database& data, int support) + : list(*this,data.domain(),data.max_length()) { + Gecode::rel(*this,list.length(),Gecode::IRT_GQ,1); + frequency = PatternMining::frequent(*this,list,data,support); + Gecode::branch(*this,list); + } + + PatternSpace(PatternSpace& s) : Gecode::Space(s) { + list.update(*this,s.list); + frequency.update(*this,s.frequency); + } + + virtual Gecode::Space* copy(void) { + return new PatternSpace(*this); + } + }; + + /// Compare complete solution sets with independently enumerated subsequences + class PatternEnumeration : public ::Test::Base { + public: + PatternEnumeration(void) + : ::Test::Base("Int::OpenList::Pattern::Enumeration", + TestTags::check()) {} + + virtual bool run(void) { + using namespace Gecode; + const PatternMining::Sequences inputs[] = { + {{17,1000000,17},{17,1000000,17},{1000000,17,42},{17,42}}, + {{1,1},{1,2},{2,1}} + }; + for (const PatternMining::Sequences& input : inputs) { + std::set> candidates; + for (const std::vector& row : input) + for (unsigned int mask=1; mask<(1U< pattern; + for (unsigned int i=0; i(input.size())}; + for (int threshold : thresholds) { + std::set> expected, found; + for (const std::vector& pattern : candidates) { + int support = 0; + for (const std::vector& row : input) { + auto next = row.begin(); + bool matches = true; + for (int item : pattern) { + next = std::find(next,row.end(),item); + if (next == row.end()) { + matches = false; + break; + } + ++next; + } + support += matches; + } + if (support >= threshold) + expected.insert(pattern); + } + PatternSpace root(data,threshold); + Search::Options options; + options.threads = 1; + options.c_d = 1000; + options.a_d = 1000; + DFS search(&root,options); + while (PatternSpace* solution = search.next()) { + std::unique_ptr owned(solution); + if (!solution->list.length().assigned() || + (solution->list.length().val() != + solution->list.known_length())) + return false; + std::vector pattern; + for (int i=0; ilist.known_length(); i++) { + if (!solution->list[i].assigned()) + return false; + pattern.push_back(solution->list[i].val()); + } + if (!solution->frequency.assigned() || + (solution->frequency.val() != data.support(pattern)) || + !found.insert(pattern).second) + return false; + } + if (found != expected) + return false; + } + } + return true; + } + }; + + /// Exercise projection state through growth, cloning, and late assignments + class PatternGrowth : public ::Test::Base { + public: + PatternGrowth(void) + : ::Test::Base("Int::OpenList::Pattern::Growth",TestTags::check()) {} + + virtual bool run(void) { + using namespace Gecode; + const PatternMining::Database data({{1,2,1},{1,2,2},{1,1,2}}); + PatternSpace source(data,2); + source.list.materialize(source,1); + rel(source,source.list[0],IRT_EQ,1); + if (source.status() == SS_FAILED) + return false; + std::unique_ptr clone + (static_cast(source.clone())); + clone->list.materialize(*clone,2); + rel(*clone,clone->list[1],IRT_EQ,1); + if ((clone->status() == SS_FAILED) || + !clone->list.length().assigned() || + (clone->list.length().val() != 2) || + (source.list.known_length() != 1) || + (source.list.length().min() != 1)) + return false; + source.list.materialize(source,2); + rel(source,source.list[1],IRT_EQ,2); + if ((source.status() == SS_FAILED) || + !source.list.length().assigned() || + (source.list.length().val() != 2) || + (clone->list[1].val() != 1)) + return false; + + // Assigning a later position must not advance the projected prefix. + PatternSpace later(data,2); + later.list.materialize(later,2); + rel(later,later.list[1],IRT_EQ,2); + if ((later.status() == SS_FAILED) || later.list[0].assigned()) + return false; + std::unique_ptr invalid + (static_cast(later.clone())); + rel(*invalid,invalid->list[0],IRT_EQ,2); + if (invalid->status() != SS_FAILED) + return false; + rel(later,later.list[0],IRT_EQ,1); + if (later.status() == SS_FAILED) + return false; + + // Both singleton prefixes are frequent, but no extension is frequent. + const PatternMining::Database terminal({{1,1},{1,2},{2,1}}); + for (int item=1; item<=2; item++) { + PatternSpace leaf(terminal,2); + leaf.list.materialize(leaf,1); + rel(leaf,leaf.list[0],IRT_EQ,item); + if ((leaf.status() == SS_FAILED) || + !leaf.list.length().assigned() || + (leaf.list.length().val() != 1)) + return false; + } + return true; + } + }; + + /// Input validation and exact rounding of percentage support + class PatternInput : public ::Test::Base { + public: + PatternInput(void) + : ::Test::Base("Int::OpenList::Pattern::Input",TestTags::check()) {} + + virtual bool run(void) { + using namespace PatternMining; + std::istringstream rows("# comment\n17 -1 1000000 -1 -2\r\n" + "17 -1 1000000 -1 -2\n"); + if (read_database(rows,SPMF) != Sequences({{17,1000000},{17,1000000}}) || + read_sequence("ABA",LETTERS) != std::vector({1,2,1}) || + read_sequence("17 1000000",INTEGERS) != + std::vector({17,1000000}) || + (minimum_support("33.333333",3) != 1) || + (minimum_support("33.333334",3) != 2) || + (minimum_support("100",2000000000) != 2000000000) || + (minimum_support("0.000001",2000000000) != 20)) + return false; + for (const char* text : {"1 2 -1 -2", "1 -2", "1 -1", + "1 -1 -2 2", "2147483648 -1 -2"}) { + bool rejected = false; + try { + (void) read_sequence(text,SPMF); + } catch (const std::invalid_argument&) { + rejected = true; + } + if (!rejected) + return false; + } + for (const char* text : {"0", "101", "0.0000001", + "184467440737095516160"}) { + bool rejected = false; + try { + (void) minimum_support(text,3); + } catch (const std::invalid_argument&) { + rejected = true; + } + if (!rejected) + return false; + } + return true; + } + }; + + PatternEnumeration pattern_enumeration; + PatternGrowth pattern_growth; + PatternInput pattern_input; + + ValueCommit value_commit; + ValueReplay value_replay; + ImpossibleWindow impossible_window; + + Dispose disposal; + CallbackLength callback_length; + NoGPI no_gpi; + FailedGet failed_get; + + Branch branch; + BranchOrder branch_order; + Transition transition; + Constraint distinct("Distinct",Constraint::DISTINCT,3); + Constraint relation("Rel",Constraint::REL,3); + Constraint sliding("Sliding",Constraint::SLIDING,4); + Constraint sliding_sum("SlidingSum",Constraint::SLIDING_SUM,4); + Constraint min_max("MinMax",Constraint::MIN_MAX,3); + Constraint precedence("Precede",Constraint::PRECEDE,3); + EmptyMinimum empty_minimum; + IncrementalConstraints incremental_constraints; + + } + +}} + +// STATISTICS: test-int