English

Indexing dif/2

Programming Languages 2016-07-07 v1

Abstract

Many Prolog programs are unnecessarily impure because of inadequate means to express syntactic inequality. While the frequently provided built-in `dif/2` is able to correctly describe expected answers, its direct use in programs often leads to overly complex and inefficient definitions --- mainly due to the lack of adequate indexing mechanisms. We propose to overcome these problems by using a new predicate that subsumes both equality and inequality via reification. Code complexity is reduced with a monotonic, higher-order if-then-else construct based on `call/N`. For comparable correct uses of impure definitions, our approach is as determinate and similarly efficient as its impure counterparts.

Keywords

Cite

@article{arxiv.1607.01590,
  title  = {Indexing dif/2},
  author = {Ulrich Neumerkel and Stefan Kral},
  journal= {arXiv preprint arXiv:1607.01590},
  year   = {2016}
}
R2 v1 2026-06-22T14:46:57.208Z