\(\{\log\}\): A language for programming in logic with finite sets. (English) Zbl 0874.68056

Summary: An extended logic programming language is presented, that embodies the fundamental form of set designation based on the (nesting) element insertion operator. The kind of sets to be handled is characterized both by adaption of a suitable Herbrand universe and via axioms. Predicates \(\in\) and = designating set membership and equality are included in the base language, along with their negative counterparts \(\notin\) and \(\neq\). A unification algorithm that can cope with set terms is developed and proved correct and terminating. It is proved that by incorporating this new algorithm into SLD resolution and providing suitable treatment of \(\in\), \(\neq\), and \(\notin\) as constraints, one obtains a correct management of the distinguished set predicates. Restricted universal quantifiers are shown to be programmable directly in the extended language and thus are added to the language as a convenient syntactic extension. A similar solution is shown to be applicable to intensional set-formers, provided either a built-in set collection mechanism or some form of negation in goals and clause bodies is made available.


68N17 Logic programming
68N15 Theory of programming languages


Full Text: DOI