Next: Constraints
Up: The Integer Sets Library
Previous: Ground Integer Sets
  Index
Subsections
Set variables are variables which can eventually take a ground integer
set as their value. They are characterized by a lower bound (the set
of elements that are definitely in the set) and an upper bound (the
set of elements that may be in the set). A set variable can be
declared as follows:
SetVar :: []..[1,2,3,4,5,6,7]
If the lower bound is the empty set (like in this case) 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, one can also declare it like
intset(SetVar, 1, 7)
which is equivalent to the above.
The predicates to declare sets are:
- ?Set :: ++Lwb..++Upb
- Set is an integer set within the given bounds
- 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
Set variables are by default printed in a particular way, e.g.
?- X :: [2,3]..[1,2,3,4], write(X).
X{[2, 3] \/ ([] .. [1, 4]) : _308{[2 .. 4]}}
The curly brackets contain
- 1.
- the lower bound of the set
- 2.
- the union symbol
- 3.
- the set of optional values (that may or may not be in the set)
- 4.
- a colon
- 5.
- a finite domain indicating the admissible cardinality for the set
- potential_members(?Set, -List)
- List is the list of elements of whose membership in Set is currently uncertain
- set_range(?Set, -Lwb, -Upb)
- Lwb and Upb are the current lower and upper bounds on Set
Next: Constraints
Up: The Integer Sets Library
Previous: Ground Integer Sets
  Index
Warwick Harvey
2004-08-07