Set operations

Author(s): Lena Flood.

This module implements set operations. Sets are just ordered lists.

Documentation on exports

PREDICATEinsert/3

Usage:insert(Set1,Element,Set2)

It is true when Set2 is Set1 with Element inserted in it, preserving the order.

PREDICATEord_delete/3

Usage:ord_delete(Set0,X,Set)

It succeeds if Set is Set0 without element X.

PREDICATEord_member/2

Usage:ord_member(X,Set)

It succeeds if X is member of Set.

  • The following properties should hold at call time:
    (term_typing:nonvar/1)X is currently a term which is not a free variable.
    (term_typing:nonvar/1)Set is currently a term which is not a free variable.

Usage:ord_test_member(Set,X,Result)

If X is member of Set then Result=yes. Otherwise Result=no.

Usage:ord_subtract(Set1,Set2,Difference)

It is true when Difference contains all and only the elements of Set1 which are not also in Set2.

  • The following properties should hold at call time:
    (term_typing:nonvar/1)Set1 is currently a term which is not a free variable.
    (term_typing:nonvar/1)Set2 is currently a term which is not a free variable.

Usage:ord_intersection(Set1,Set2,Intersection)

It is true when Intersection is the ordered representation of Set1 and Set2, provided that Set1 and Set2 are ordered lists.

  • The following properties should hold at call time:
    (term_typing:nonvar/1)Set1 is currently a term which is not a free variable.
    (term_typing:nonvar/1)Set2 is currently a term which is not a free variable.

Usage:ord_intersection_diff(Set1,Set2,Intersect,NotIntersect)

Intersect contains those elements which are both in Set1 and Set2, and NotIntersect those which are in Set1 but not in Set2.

Usage:ord_intersect(Xs,Ys)

Succeeds when the two ordered lists have at least one element in common.

  • The following properties should hold at call time:
    (term_typing:nonvar/1)Xs is currently a term which is not a free variable.
    (term_typing:nonvar/1)Ys is currently a term which is not a free variable.

PREDICATEord_subset/2

Usage:ord_subset(Xs,Ys)

Succeeds when every element of Xs appears in Ys.

  • The following properties should hold at call time:
    (term_typing:nonvar/1)Xs is currently a term which is not a free variable.
    (term_typing:nonvar/1)Ys is currently a term which is not a free variable.

Usage:ord_subset_diff(Set1,Set2,Difference)

It succeeds when every element of Set1 appears in Set2 and Difference has the elements of Set2 which are not in Set1.

PREDICATEord_union/3

Usage:ord_union(Set1,Set2,Union)

It is true when Union is the union of Set1 and Set2. When some element occurs in both sets, Union retains only one copy.

  • The following properties should hold at call time:
    (term_typing:nonvar/1)Set1 is currently a term which is not a free variable.
    (term_typing:nonvar/1)Set2 is currently a term which is not a free variable.

Usage:ord_union_diff(Set1,Set2,Union,Difference)

It succeeds when Union is the union of Set1 and Set2, and Difference is Set2 set-minus Set1.

Usage:ord_union_symdiff(Set1,Set2,Union,Diff)

It is true when Diff is the symmetric difference of Set1 and Set2, and Union is the union of Set1 and Set2.

Usage:ord_union_change(Set1,Set2,Union)

Union is the union of Set1 and Set2 and Union is different from Set2.

PREDICATEmerge/3

Usage:merge(Set1,Set2,Union)

See ord_union/3.

  • The following properties should hold at call time:
    (term_typing:nonvar/1)Set1 is currently a term which is not a free variable.
    (term_typing:nonvar/1)Set2 is currently a term which is not a free variable.

Usage:ord_disjoint(Set1,Set2)

Set1 and Set2 have no element in common.

  • The following properties should hold at call time:
    (term_typing:nonvar/1)Set1 is currently a term which is not a free variable.
    (term_typing:nonvar/1)Set2 is currently a term which is not a free variable.

PREDICATEsetproduct/3

Usage:setproduct(Set1,Set2,Product)

Product has all two element sets such that one element is in Set1 and the other in set2, except that if the same element belongs to both, then the corresponding one element set is in Product.

Documentation on imports

This module has the following direct dependencies: