The (Lazy) Functional Side of Logic Programming
S. Etalle, J. Mountjoy

TL;DR
This paper explores the relationship between logic programming and functional programming, showing that many features thought unique to logic programming are also present in lazy functional languages, through a broader translation approach.
Contribution
It introduces a simple translation method that applies to a wider range of logic programs, challenging the belief that certain features are exclusive to logic programming.
Findings
Features like complex logical variables are found in lazy functional languages.
The translation approach broadens the understanding of logic-programming features.
Current restrictions on logic program translation are overly limiting.
Abstract
The possibility of translating logic programs into functional ones has long been a subject of investigation. Common to the many approaches is that the original logic program, in order to be translated, needs to be well-moded and this has led to the common understanding that these programs can be considered to be the ``functional part'' of logic programs. As a consequence of this it has become widely accepted that ``complex'' logical variables, the possibility of a dynamic selection rule, and general properties of non-well-moded programs are exclusive features of logic programs. This is not quite true, as some of these features are naturally found in lazy functional languages. We readdress the old question of what features are exclusive to the logic programming paradigm by defining a simple translation applicable to a wider range of logic programs, and demonstrate that the current…
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.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Logic, Reasoning, and Knowledge · Formal Methods in Verification
