Predicates Related to Sets

The following predicates are relevant to sets, but are not in library(sets):


length(-List, +Integer)
built-in predicate: do not use this if Set might contain duplicates. See ref-all for more information.
append(+*List1, +*List2, +*List3)
built-in predicate: only use append/3 this way when Set1 and Set2 are known to be disjoint, and put a comment in your code explaining the hack.
member(?Elem, ?Set)
in library(basics) (lib-lis-basics-member)
memberchk(?Elem, ?Set)
in library(basics) (lib-lis-basics-memberchk)
subseq0(+Set, ?SubSet)
in library(lists) (lib-lis-lists): you can only use subseq0/2 to generate subsets of a given Set, not to test whether a given SubSet is a subset of a given Set, because subseq0/2 preserves the order of the elements, which is irrelevant to sets. However, you can use it to generate subsets of an ordered set, as the order of the elements does matter there.
subseq1(+Set, ?ProperSubSet)
in library(lists) (lib-lis-lists): you can only use subseq1/2 to generate proper subsets of a given Set, not to test whether a given SubSet is a proper subset of a given Set, because subseq1/2 preserves the order of the elements, which is irrelevant to sets. However, you can use it to generate proper subsets of an ordered set, as the order of the elements does matter there.