@INPROCEEDINGS{Hanus24WLP,
author    = "Hanus, M.",
title     = "Can Logic Programming Be Liberated from Predicates and Backtracking?",
year      = "2024",
booktitle = "Proc.\ of the 38th Workshop on(Constraint) Logic Programming (WLP 2024)",
abstract = {
Logic programming has a long history.
The representative of logic programming in practice, the language Prolog,
has been introduced more than 50 years ago.
The main features of Prolog are still present today:
a Prolog program is a set of predicate definitions
executed by resolution steps with a backtracking search strategy.
The use of backtracking was justified by efficiency reasons
when Prolog was invented. However, its incompleteness
destroys the elegant connection of logic programming
and the underlying Horn clause logic and causes
difficulties to teach logic programming.
Moreover, the restriction to predicates hinders
an adequate modeling of real world problems, which are
often functions from input to output data,
and leads to unnecessarily inefficient executions.
In this paper we show a way to overcome these problems.
By transforming predicates and goals into functions
and nested expressions, one can evaluate them with
a demand-driven strategy which might reduce the number
of computation steps and avoid infinite search spaces.
Replacing backtracking by complete search strategies
with new implementation techniques closes the gap
between the theory and practice of logic programming.
In this way, we can keep the ideas of logic programming
in future programming systems.
}
}
