Hostname: page-component-89b8bd64d-9prln Total loading time: 0 Render date: 2026-05-10T20:12:19.094Z Has data issue: false hasContentIssue false

Fifty Years of Prolog and Beyond

Published online by Cambridge University Press:  17 May 2022

PHILIPP KÖRNER
Affiliation:
Institut für Informatik, Universität Düsseldorf, Universitätsstr. 1, D-40225 Düsseldorf, Germany (e-mails: p.koerner@uni-duesseldorf.de, leuschel@uni-duesseldorf.de)
MICHAEL LEUSCHEL
Affiliation:
Institut für Informatik, Universität Düsseldorf, Universitätsstr. 1, D-40225 Düsseldorf, Germany (e-mails: p.koerner@uni-duesseldorf.de, leuschel@uni-duesseldorf.de)
JOÃO BARBOSA
Affiliation:
Department of Computer Science, Faculty of Science of the University of Porto, Porto, Portugal (e-mails: joao.barbosa@fc.up.pt, vscosta@fc.up.pt)
VÍTOR SANTOS COSTA
Affiliation:
Department of Computer Science, Faculty of Science of the University of Porto, Porto, Portugal (e-mails: joao.barbosa@fc.up.pt, vscosta@fc.up.pt)
VERÓNICA DAHL
Affiliation:
Computing Sciences Department, Simon Fraser University, Burnaby, Canada (e-mail: veronica dahl@sfu.ca)
MANUEL V. HERMENEGILDO
Affiliation:
IMDEA Software Institute and Universidad Politécnica de Madrid (UPM), Madrid, Spain (e-mails: manuel.hermenegildo@imdea.org, josef.morales@imdea.org)
JOSE F. MORALES
Affiliation:
IMDEA Software Institute and Universidad Politécnica de Madrid (UPM), Madrid, Spain (e-mails: manuel.hermenegildo@imdea.org, josef.morales@imdea.org)
JAN WIELEMAKER
Affiliation:
Centrum voor Wiskunder en Informatica (CWI), Amsterdam, Netherlands (e-mail: J.Wielemaker@cwi.nl)
DANIEL DIAZ
Affiliation:
Centre de Recherche en Informatique, University Paris-1, Paris, France (e-mail: daniel.diaz@univ-paris1.fr)
SALVADOR ABREU
Affiliation:
NOVA-LINCS, University of Évora, Evora, Portugal (e-mail: spa@uevora.pt)
GIOVANNI CIATTO
Affiliation:
Department of Computer Science and Engineering, Alma Mater Studiorum—Univerità di Bologna, Bologna, Italy (e-mail: giovanni.ciatto@unibo.it)
Rights & Permissions [Opens in a new window]

Abstract

Both logic programming in general and Prolog in particular have a long and fascinating history, intermingled with that of many disciplines they inherited from or catalyzed. A large body of research has been gathered over the last 50 years, supported by many Prolog implementations. Many implementations are still actively developed, while new ones keep appearing. Often, the features added by different systems were motivated by the interdisciplinary needs of programmers and implementors, yielding systems that, while sharing the “classic” core language, in particular, the main aspects of the ISO-Prolog standard, also depart from each other in other aspects. This obviously poses challenges for code portability. The field has also inspired many related, but quite different languages that have created their own communities. This article aims at integrating and applying the main lessons learned in the process of evolution of Prolog. It is structured into three major parts. First, we overview the evolution of Prolog systems and the community approximately up to the ISO standard, considering both the main historic developments and the motivations behind several Prolog implementations, as well as other logic programming languages influenced by Prolog. Then, we discuss the Prolog implementations that are most active after the appearance of the standard: their visions, goals, commonalities, and incompatibilities. Finally, we perform a SWOT analysis in order to better identify the potential of Prolog and propose future directions along with which Prolog might continue to add useful features, interfaces, libraries, and tools, while at the same time improving compatibility between implementations.

Information

Type
Original Article
Creative Commons
Creative Common License - CCCreative Common License - BY
This is an Open Access article, distributed under the terms of the Creative Commons Attribution-ShareAlike licence (http://creativecommons.org/licenses/by/4.0/), which permits re-use, distribution, and reproduction in any medium, provided the same Creative Commons licence is used to distribute the re-used or adapted article and the original article is properly cited.
Copyright
© The Author(s), 2022. Published by Cambridge University Press
Figure 0

Fig. 1. Approximate timeline of some early Prolog systems (up to the ISO Standard).

Figure 1

Fig. 2. Prolog Heritage. Systems with a dark gray background are not supported any more. Arrows denote influences and inspiration of systems. The bottom section of each block includes just some highlight(s); see the text for more details. Quick legend: JIT $=$ “Just in Time [Compiler]”, JVM $=$ “Java Virtual Machine”, TOAM $=$ “Tree-Oriented Abstract Machine”.

Figure 2

Table 1. Unique features and Foci of Prolog systems

Figure 3

Table 2. Feature Overview of Several Maintained Prolog(-like) Systems. Constraint Logic Programming (CLP) abbreviations: $\mathcal{FD}$ = finite-domain, $\cal Q$ = rational numbers, $\cal R$ = real numbers, $\cal B$ = boolean variables. Indexing Strategy abbreviations: FA = first argument, N-FA = non-first argument, MA = multiple-argument, JIT = just-in-time, all = all aforementioned strategies

Figure 4

Table 3. SWOT analysis