This package defines operations on ordered sets. Ordered sets are sets
represented as lists with the elements ordered in a standard
order. The ordering is defined by the @<
family of term
comparison predicates and it is the ordering produced by the
built-in predicate sort/2
(see Term Compare).
To load the package, enter the query
| ?- use_module(library(ordsets)).
is_ordset(
+Set)
Set is an ordered set.
list_to_ord_set(
+List,
?Set)
Set is the ordered representation of the set denoted by the unordered representation List. Example:
| ?- list_to_ord_set([p,r,o,l,o,g], P). P = [g,l,o,p,r]
ord_add_element(
+Set1,
+Element
?Set2)
Set2 is Set1 with Element inserted in it, preserving the order. Example:
| ?- ord_add_element([a,c,d,e,f], b, N). N = [a,b,c,d,e,f]
ord_del_element(
+Set1,
+Element,
?Set2)
Set2 is like Set1 but with Element removed.
ord_disjoint(
+Set1,
+Set2)
The two ordered sets have no elements in common.
ord_intersect(
+Set1,
+Set2)
The two ordered sets have at least one element in common.
ord_intersection(
+Set1,
+Set2,
?Intersect)
Intersect is the ordered set representation of the intersection
between Set1 and Set2.
ord_intersection(
+Set1,
+Set2,
?Intersect,
?Diff)
ord_intersection(
+Sets,
?Intersection)
| ?- ord_intersection([[1,2,3],[2,3,4],[3,4,5]], I). I = [3]
ord_member(
+Elt,
+Set)
is true when Elt is a member of Set.
ord_seteq(
+Set1,
+Set2)
Is true when the two arguments represent the same set. Since they
are assumed to be ordered representations, they must be identical.
ord_setproduct(
+Set1,
+Set2,
?SetProduct)
SetProduct is the Cartesian Product of the two Sets. The product is represented as pairs: Elem1-Elem2 where Elem1 is an element from Set1 and Elem2 is an element from Set2. Example
| ?- ord_setproduct([1,2,3], [4,5,6], P). P = [1-4,1-5,1-6,2-4,2-5,2-6,3-4,3-5,3-6]
ord_subset(
+Set1,
+Set2)
Every element of the ordered set Set1 appears in the ordered set
Set2.
ord_subtract(
+Set1,
+Set2,
?Difference)
Difference contains all and only the elements of Set1 that are not also in Set2. Example:
| ?- ord_subtract([1,2,3,4], [3,4,5,6], S). S = [1,2]
ord_symdiff(
+Set1,
+Set2,
?Difference)
Difference is the symmetric difference of Set1 and Set2. Example:
| ?- ord_symdiff([1,2,3,4], [3,4,5,6], D). D = [1,2,5,6]
ord_union(
+Set1,
+Set2,
?Union)
Union is the union of Set1 and Set2.
ord_union(
+Set1,
+Set2,
?Union,
?New)
ord_union(
+Sets,
?Union)
| ?- ord_union([[1,2,3],[2,3,4],[3,4,5]], U). U = [1,2,3,4,5]