Skip to main content Skip to main navigation


Finite Domains and Exclusions as First-Class Citizens

Harold Boley
DFKI, DFKI Research Reports (RR), Vol. 94-07, 1994.


Languages based on logical variables can regard finite domains, finite exclusions, and, generally, types as values. Like a variable can be bound to a non-ground structure which can be later specialized through in-place assignment of some inner variables, it can also be bound to, say, a domain structure which can be specialized later through 'in-place deletion' of some of its elements (e.g. by intersection with other domain structures). While finite domains prescribe the elements of a disjunctive structure, the complementary finite exclusions forbid the elements of a conjunctive structure. Domains and exclusions can be values of variables oroccur inside clauses as/in terms or within an occurrence-binding construct (useful to name arbitrary terms).In a relational-functional language (e.g., RELFUN) they can also be returned as values of functions. Altogether, domainsand exclusions become first-class citizens. Because they are completely handled by an extended unification routine, they do not require delay techniques needed in (more expressive) constraint systems. Still, their backtracking-superseding 'closed' representation leads to smaller proof trees (efficiency), and abstracted, intensional answers (readability). Anti-unification (for generalization) exchanges the roles of domains and exclusions. The operational semantics of domains, exclusions, and occurrence bindings is specified by a RELFUN meta-unify function (and implemented in pure LISP).