A language with Finite Sets embedded in the CLP-scheme


Problems and solutions related to the introduction of finite set formers and basic operations on sets in a Logic Programming language are discussed. In particular it is shown that a good solution is to begin with a CLP-scheme whose signature ∑ is endowed with two functional symbols: Ø for the empty set and with for the set construction symbol, using the symbols ∈, ∉, =, ≠ as constraint predicate symbols. The axioms of the selected set theory are described, along with the corresponding algebraic interpretation and the constraint satisfiability algorithm. Other usual set operators (such as ⊑, ∪, etc.) are shown to be definable in the extended language. Also, such an approach turns out to be well suited to accommodate for intensional set formers, providing the language is endowed with some form of negation.