Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
1.8 kB · 44 lines
at develop
123456789101112131415161718192021222324252627282930313233343536373839404142434445%% Main authors:% Guido Tack <tack@gecode.org>%% Copyright:% Guido Tack, 2007%% This file is part of Gecode, the generic constraint% development environment:% http://www.gecode.org%% 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.%%predicate gecode_range(array[int] of var int: x, int: xoff, var set of int: s, var set of int: t);predicate fzn_range(array[int] of var int: x, var set of int: s, var set of int: t) = if (min(index_set(x)) >= 0) then gecode_range(x,min(index_set(x)),s,t) else forall(i in ub(s)) (i in s -> x[i] in t) /\ forall(i in ub(t)) ( i in t -> exists(j in ub(s)) ( j in s /\ x[j] == i ) ) endif;