
TL;DR
This paper introduces a new predicate for Prolog that unifies equality and inequality, simplifying code and improving efficiency through better indexing and higher-order constructs.
Contribution
A novel reified predicate that subsumes equality and inequality, enhancing Prolog's expressiveness and efficiency while reducing code complexity.
Findings
Comparable efficiency to impure counterparts for correct uses
Reduces code complexity with higher-order if-then-else
Improves indexing mechanisms for inequality handling
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.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsNatural Language Processing Techniques · Data Mining Algorithms and Applications · Rough Sets and Fuzzy Logic
