#(?Set, ?Card)- Card is the cardinality of the integer set Set
?Set :: ++Lwb..++Upb- Set is an integer set within the given bounds
all_disjoint(+Sets)- Sets is a list of integers sets which are all disjoint
all_intersection(+Sets, ?Intersection)- Intersection is the intersection of all the sets in the list Sets
all_ordered(?, ?)- No description available
all_union(+Sets, ?SetUnion)- SetUnion is the union of all the sets in the list Sets
all_union_lex(?, ?)- No description available
difference(?Set1, ?Set2, ?Set3)- Set3 is the difference of the integer sets Set1 and Set2
difference_lex(?, ?, ?)- No description available
?Set1 disjoint ?Set2- The integer sets Set1 and Set2 are disjoint
get_set_attribute(?Set, -Attr)- Get the set-attribute corresponding to Set
?X in ?Set- The integer X is member of the integer set Set
in(?X, ?Set, ?Bool)- Reified version of the set membership constraint
?Set in_set_range ++Lwb..++Upb- Set is an integer set within the given bounds
?Set1 includes ?Set2- Set1 includes (is a superset of) the integer set Set2
insetdomain(?Set, ?CardSel, ?ElemSel, ?Order)- Instantiate Set to a possible value
int_geq_than(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)- No description available
int_leq_than(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)- No description available
intersect_atmost_n(?, ?, ?, ?)- No description available
intersect_lex(?, ?, ?)- No description available
intersection(?Set1, ?Set2, ?Set3)- Set3 is the intersection of the integer sets Set1 and Set2
intset(?Set, +Min, +Max)- Set is a set containing numbers between Min and Max
intsets(?Sets, ?N, +Min, +Max)- Sets is a list of N sets containing numbers between Min and Max
is_solver_type(?Term)- Succeeds if Term is a ground set or a set variable
is_solver_var(?Term)- Succeeds if Term is a set variable
labeling_ff(?, ?, ?, ?)- No description available
labeling_lex(?)- No description available
labeling_lex(?, ?, ?, ?)- No description available
labeling_smallest_glb(?)- No description available
leq(?, ?)- No description available
less(?, ?)- No description available
lex_min_max(?, ?, ?)- No description available
lex_set_range(?, ?, ?)- No description available
local_intersect_atmost_n(?, ?, ?, ?)- No description available
membership_booleans(?Set, ?BoolArr)- BoolArr is an array of booleans describing Set
next_lex_min(?, ?, ?)- No description available
?X notin ?Set- The integer X is not a member of the integer set Set
potential_members(?Set, -List)- List is the list of elements of whose membership in Set is currently uncertain
prev_lex_max(?, ?, ?)- No description available
safe_set_range(?, ?, ?)- No description available
?Set1 sameset ?Set2- The sets Set1 and Set2 are equal
satisfies(?, ?)- No description available
set_lex_max(?, ?, ?)- No description available
set_lex_min(?, ?, ?)- No description available
set_range(?Set, -Lwb, -Upb)- Lwb and Upb are the current lower and upper bounds on Set
?Set1 subset ?Set2- Set1 is a (non-strict) subset of the integer set Set2
?Set1 subsetof ?Set2- Set1 is a (non-strict) subset of the integer set Set2
symdiff(?Set1, ?Set2, ?Set3)- Set3 is the symmetric difference of the integer sets Set1 and Set2
union(?Set1, ?Set2, ?Set3)- Set3 is the union of the integer sets Set1 and Set2
union_lex(?, ?, ?)- No description available
watch(?)- No description available
weight(?Set, ++ElementWeights, ?Weight)- According to the array of element weights, the weight of set Set is Weight

struct int_sets(dom, lex_min, lex_max, lex_glb, lex_lub, lex_dirty, off, lcard, ucard, added, removed, add, rem, min_susp, max_susp, card, booleans, value)- Attribute structure for set variables (and constants)

export op(500, yfx, \)export op(700, xfx, in_set_range)export op(700, xfx, disjoint)export op(700, xfx, sameset)export op(700, xfx, in)export op(700, xfx, notin)export op(700, xfx, includes)export op(700, xfx, subset)export op(700, xfx, subsetof)export op(700, xfx, less)export op(700, xfx, satisfies)export op(700, xfx, leq)

(Ground) integer sets are represented simply as sorted, duplicate-free lists of integers e.g.

SetOfThree = [1,3,7] EmptySet = []

SetVar :: []..[1,2,3,4,5,6,7],Since the lower bound is the empty set, this can be written as

SetVar subset [1,2,3,4,5,6,7],If the lower bound is the empty set and the upper bound is a set of consecutive integers, you can also write

intset(SetVar, 1, 7)

- membership
- non-membership
- inclusion (subset)
- equality
- intersection
- union
- difference
- symmetric difference
- disjointness
- cardinality

On most argument positions where sets are expected, set expressions are allowed, e.g.

Set1 /\ Set2 % intersection Set1 \/ Set2 % union Set1 \ Set2 % differenceas well as references to array elements like Set[3].

**Author:**Joachim Schimpf, Neng-Fa Zhou, Andrew Sadler**Copyright ©**Cisco Systems, Inc.**Date:**$Date: 2010/07/25 13:29:05 $

Generated from ic_hybrid_sets.eci on 2017-09-08 15:30