On the Representation and Management of Finite Sets in CLP-languages


We review and compare the main techniques considered to represent finite sets in logic languages. We present a technique that combines the benefits of the previous techniques, avoiding their drawbacks. We show how to verify satisfiability of any conjunction of (positive and negative) literals based on =, ⊆, ∈, and ∪, ∩, , and ||, viewed as predicate symbols, in a (hybrid) universe of finite sets. We also show that ∪ and || (i.e., disjointness of two sets) are sufficient to represent all the above mentioned operations.