Personal tools
You are here: Home Projects Prolog
Document Actions

Prolog and Logic Programming Historical Sources Archive

by Paul McJones last modified 2019-06-25 15:41

A collection of artifacts from logic programming languages beginning with Marseille Prolog.

 

Paul McJones, editor
- paul@mcjones.org - https://mcjones.org/dustydecks/
Software Preservation Group
Computer History Museum

 

Abstract

The goal of this project is to preserve and present primary and secondary source materials (including specifications, source code, manuals, and papers discussing design and implementation) from the history of logic programming, beginning with Marseille Prolog. Wherever possible, we hope to identify implementations that were either originally distributed in source form or have become open source. Comments, suggestions, and donations of additional materials are greatly appreciated.

 

Contents

 

Aix-Marseille University

Alain Colmerauer's interest in parsing algorithms and natural language processing (e.g. automatic translation and question-answering) led to the development of the Prolog programming language. He receiving his Ph.D. for his work in precedence grammars from the University of Grenoble in 1967. Then he went to the University of Montréal, where he designed a tree rewriting language called Q-systems that was used in the Automatic Translation Project to construct an automatic English-to-French translation system. Colmerauer considered the Q-systems to be the ancestor of Prolog. Other influences on Colmeraiuer and his team included Robert Floyd's paper "Nondeterministic Algorithms", J. Alan Robinson's work on resolution logic, and Robert Kowalski's work on SL-resolution. Kowalski visited the team in Marseille for a week in 1971 and two months in 1972.

This paper is the primary source for the creation of Prolog:

 

Preliminary Prolog (Prolog 0), fall 1972

In 1971 the team had constructed a "primitive natural-language communication system" using Q-systems for the natural language aspects and a theorem prover written in ALGOL-W. But in 1972 two ideas occured to them that led to the creation of a new programming language that could handle both kinds of computing:
  1. "After the departure of Robert, Alain ultimately found a way [which he called metamorphosis grammars] of developing powerful analyzers. He associated a binary predicate N(x,y) with each nonterminal symbol N of the grammar, signifying that x and y are terminal strings for which the string u defined by x = uy exists and can be derived from N. By representing x and y by lists, each grammar rule can then be encoded by a clause having exactly the same number of literals as occurrences of nonterminal symbols. It was thus possible to do without list concatenation. (This technique is now known as 'The difference lists technique.') Alain also introduced additional parameters into each nonterminal to propagate and compute information. As in Q-systems, the analyzer not only verified that the sentence was correct but also extracted a formula representing the information that it contained. Nothing now stood in the way of the creation of a man-machine communication system entirely in 'logic'."
  2. "A draconian decision was made: at the cost of incompleteness, we chose linear resolution with unification only between the heads of clauses. Without knowing it, we had discovered the strategy that is complete when only Horn clauses are used. Robert Kowalski demonstrated this point later and together with Maarten van Emden, he would go on to define the modern fixed point semantics of Horn clause programming."
[Colmerauer and Roussel 1996]

This first version of Prolog was implemented by Philippe Roussel in ALGOL-W on the IBM 360-67 machine (running the CP-CMS operating system) at the University of Grenoble computing center. This report describes the language Prolog and the man-machine communication system written in it:

  • Alain Colmerauer, Henry Kanoui, Robert Pasaro and Philippe Roussel. Un systèm de communication en français, rapport préliminaire de fin de contrat IRIA, Groupe Intelligence Artificielle, Faculté des Sciences de Luminy, Université Aix-Marseille II, France, Oct. 1972.
  • Alain Colmerauer, Henry Kanoui, Philippe Roussel and Robert Pasaro. Un systèm de communication homme-machine en Français, by A. Colmerauer et al., Groupe de recherche en Intelligence Artificielle, Faculté des Sciences de Luminy, 1973. Online at alain.colmerauer.free.fr

For more information about the implementation of Prolog 0, see section 7.4 of [Colmerauer and Roussel 1996].

Applications

  • The man-machine communication system.
  • A computer algebra system.
    • Marc Bergman and Henry Kanoui. Application of mechanical theorem proving to symbolic calculus. Third International Colloquium on Advanced Computing Methods in Theoretical Physics, Marseilles, France, June 1973.
    • Marc Bergman. Résolution par la démonstration automatique de quelques problèmes en integration symbolique sur calculateur, 3ème cycle thesis, Groupe Intelligence Artificielle, Faculté des Sciences de Luminy, Université Aix-Marseille II, France, Oct. 1973.
    • Henry Kanoui. Application de la demonstration automatique aux manipulations algébriques et à l'intégration formelle sur ordinateur, 3ème cycle thesis, Groupe Intelligence Artificielle, Faculté des Sciences de Luminy, Université Aix-Marscilie II, France, Oct. 1973.
  • Sugiton greneral problem-solving system.
    • Michel Joubert. Un système de résolution de problèmes à tendance naturelle, 3ème cycle thesis, Groupe Intelligence Artificielie, Faculté des Sciences de Luminy, Université Aix-Marseille ii, France, Feb. 1974.
  • Pasero, Robert, Représentation du français en logique du premier ordre en vue de dialoguer avec un ordinateur, thèse de 3ème cycle, Groupe Intelligence Artificielle, Faculté des Sciences de Luminy, Université Aix-Marseille 11, France, May 1973.
  • A. Colmerauer. Les grammaires de metamorphose, Groupe d'Intelligence Artificielle, Universit6 de Marseille-Luminy (November 1975). Appears as "Metamorphosis Grammars" in: L. Bole (Ed.), Natural Language Communication with Computers, (Springer, Berlin, May 1978).

 

Final Prolog (Prolog 1), summer-fall 1973

"Between February and April 1973, at the invitation of Robert Kowalski, Philippe visited the School of Artificial Intelligence at the University of Edinburgh, which was within the Department of Computational Logic directed by Bernard Meltzer. Besides the many discussions with the latter and with David Warren, Philippe also met Roger Boyer and Jay Moore. They had constructed an implementation of resolution using an extremely ingenious method based on a structure-sharing technique to represent the logical formulae generated during a deduction. The result of this visit and the laboratory's need to acquire a true programming language prompted our decision to lay the foundations for a second Prolog. In May and June 1973, we laid out the main lines of the language, in particular the choice of syntax, basic primitives, and the interpreter's computing methods, all of which tended toward a simplification of the initial version. From June to the end of the year, Gérard Battani, Henry Meloni, and Rent Bazzoli, postgraduate students at the time, wrote the interpreter in FORTRAN and its supervisor in Prolog. " [Colmerauer and Roussel 1996]

For more information about the implementation of Prolog 1, see section 7.5 of [Colmerauer and Roussel 1996] and [Kluźniak 1984].

Source code

There are no known surviving copies, but see Warsaw for a modification and port of the final Marseille interpreter to an ODRA computer.

Documentation

  • Gérard Battani and Henry Meloni. Interpréter du langage de programmation PROLOG. Report de DEA, Groupe d'Intelligence Artificielle, Faculté des Sciences de Luminy, Université Aix-Marseille II, France, 1973. Online at alain.colmerauer.free.fr
  • Philippe Roussel. Prolog, manuel de référence et d'utilisation, Groupe de recherche en Intelligence Artificielle, Faculté des Sciences de Luminy, Université Aix-Marseille II, France, Sept. 1975. Online at alain.colmerauer.free.fr

Distribution

"Gérard Battani and Henry Meloni were kept very busy with the distribution of Prolog. They sent it to Budapest, Warsaw, Toronto, and Waterloo (Canada) and traveled to Edinburgh to assist David Warren in installing it on a PDP 10. A former student, Hélène Le Gloan, installed it at the University of Montréal. Michel Van Caneghem did the same at the IRIA in Paris before coming to work with us. Finally, Maurice Bruynooghe took Prolog to Leuven (Belgium) after a three-month stay in Marseilles (October through December 1975). Indeed, as David Warren has pointed out, Prolog spread as much, or more, by people becoming interested and taking away copies either directly from Marseilles or from intermediaries such as Edinburgh. Thus, Prolog was not really distributed; rather it 'escaped' and 'multiplied.'" [Colmerauer and Roussel 1996]

"After my return [from Marseille] to Edinburgh Pietzrykowski contacted me for a possible visit to Waterloo. As the arrangements firmed up, he told me he hadn't managed to get a copy of Marseilles Prolog and could I bring one. And so it was that I arrived in Waterloo in January 1975 with two presents: a plastic bag with cuttings of the Papyrus plant and a box with a foot-long stack of punched cards. Sometime in the spring of 1975 two students of Pietrzykowski, Lewis Baxter (later to invent a fast unification algorithm) and Larry Rendell, got the Fortran of the interpreter translated to the local dialect. Thus was established the first Prolog installation in North America.

This was not the first propagation of Marseilles Prolog via Edinburgh. In December 1974 the mathematicians and logicians Hajnal Andreka and Istvan Nemeti obtained their foot-long box of cards and took it back with them to Budapest. Without much delay it got into the hands of Peter Szeredi." [van Emden 2006]

Applications

  • Marc Bergman and Henry Kanoui. SYCOPHANTE, système de calcul formel sur ordinateur, final report for a DRET contract (Direction des Recherches et Etudes Techniques), Groupe Intelligence Artificielle, Faculté des Sciences de Luminy, Université Aix-Marseille II, France, 1975
  • Henry Kanoui. Some aspects of symbolic integration via predicate logic programming. ACM SIGSAM Bulletin, 1976. ACM Digital Library
  • Gérard Battani et Henry Meloni. Mise en oeuvre des contraintes phonologiques, syntuxiques et sémantiques dans un systéme de compréhension automatique de la parole, 3ème cycle thesis, Groupe Intelligence Artificielle, Faculté des Sciences de Luminy, Université Aix-Marseille II, France, June 1975.
  • David H. D. Warren. Warplan, A System for Generating Plans, research report, University of Edimburgh, Department of Computational Logic, memo 76, June 1974.
  • David H. D. Warren. PROLOG to DEC 10 Machine Code Compiler, 1975.

 

Prolog II, 1977–1982

"Already in 1976, Alain felt constraints were the next giant leap needed in logic programming− a dream that spawned two most influential further contributions. The first was the move from unification to equations and inequations over infinite trees (late 70’s/early 80’s), which materialised in award-winning software and paved the way for many of the accomplishments in Constraint LP that flourished as from the mid-80’s.

Alain’s second crucial contribution to CP were his highly innovative extensions of constraint solving and its semantic underpinnings into richer domains: from Prolog II’s infinite trees and non-equality predicate* − admirably implemented with Michel van Caneghem on a very primitive personal computer with floppy disk virtual memory ..."

[Dahl 2017]

* Prolog II included the dif/2 predicate, which had been part of Prolog 0 but not Prolog 1 or Edinburgh Prolog.

  • Veronica Dahl. In Memoriam: Alain Colmerauer (24 January 1941 – 12 May 2017). Association for Logic Programming Newsletter. Online at cs.nmsu.edu
  • PrologII+. Manuel de référence, PrologIA, Marseille. PDF at alain.colmerauer.free.fr
  • Francis Giannesini, Henry Kanoui, Robert Pasero, Michel van Caneghem. Prolog, International Computer Science Series, Addison-Wesley, 1986. (Published in French, English, German, Spanish, and Italian editions.)
  • Alain Colmerauer. Theoretical model of Prolog II. In: M. Van Caneghem and D. Warren, editors. Logic programming and its application, Ablex Publishing Corporation, pages 3-31, 1986.
  • Alain Colmerauer. Prolog in 10 figures, Communications of the ACM, Volume 28, Number 12, pagers 1296-1310, December 1985.

 

Prolog III, 1983–1990, PrologIA as well as University of Marseille

"Prolog was initially designed to process natural languages. Its application in various problem solving areas has demonstrated its capabilities, but has also made clear its limitations. Some of these limitations have been overcome as a result of increasingly efficient implementations and ever richer environments. The fact remains, however, that the core of Prolog, namely, Alan Robinson’s unification algorithm, has not changed fundamentally since the time of the first Prolog implementations. Moreover, it is becoming less and less significant compared to the ever-increasing number of external procedures as, for example, the procedures used for numerical processing. These external procedures are not easy to use. Their evocation requires that certain parameters be completely known, and this is not in line with the general Prolog philosophy that it should be possible anywhere and at any time to talk about an unknown object x.

In order to improve this state of affairs, we have fundamentally reshaped Prolog by integrating at the unification level: 1) a refined manipulation of trees, including infinite trees, together with a specific treatment of lists; 2) a complete treatment of two-valued Boolean algebra; 3) a treatment of the operations of addition, subtraction, multiplication by a constant and of the relations <, ≤, >, ≥ 4) the general processing of the relation ≠. By doing so, we replace the very concept of unification by the concept of constraint solving in a chosen mathematical structure. By mathematical structure, we mean here a domain equipped with operations and relations, the operations being not necessarily defined everywhere." [Colmerauer 1990]

 

Prolog IV, 1990–1996, PrologIA

"... to the beautiful formalization of interval reasoning and the unifying presentation of the heterogeneous solvers in Prolog IV; to generalising the idea of constraint solving by intervals narrowing into general constraints. ..." [Dahl 2017]

"What is Prolog IV?

  • The leaves of a tree can be real numbers. The Boolean values are as simple as 0 and 1, which are integers, which are rational numbers, which are real numbers.
  • 120 evaluable predicates which generate constraints.
  • ISO-standard syntax. P. Deransart, A Ed-Dbali and L. Cervoni, Prolog: The Standard, Springer, 1996.
  • It utilizes mainly an algorithm of approximate resolution by computing a fixed point. This was the basis of BNR-Prolog."
[Colmerauer 2011]

  • Alain Colmerauer. Les bases de Prolog IV. Publication interne du LIM, Marseille, 1996. PDF at alain.colmerauer.free.fr.
  • F. Benhamou, P. Bouvier, A. Colmerauer, H. Garetta, B. Giletta, J.L. Massat, G.A. Narboni, S. N’Dong, R. Pasero, J.F. Pique, Touraîvane, M. Van Caneghem et E. Vétillard. Le manuel de Prolog IV. PrologIA, Marseille, June 1996.PDF at alain.colmerauer.free.fr
  • Alain Colmerauer. From natural language processing to Prolog. Lecture slides, Academy of Mathematics and Systems Science, Beijing, April 8, 2011. PDF at alain.colmerauer.free.fr

 

Université de Montréal

 

Q-systems

Before he went to Marseille, Alain Colmerauer led the TAUM (Traduction Automatique de l'Université de Montréal) project for automatic translation from English to French. He designed a tree rewriting language called Q-systems for use in this project.

"The Q-systems were written in ALGOL by Alain Colmerauer and were operational by October 1969. Michel van Caneghem and Franqois Stellin, then completing a master's degree, developed a FOR- TRAN version, and Gilles Steward developed an ultra-fast version in machine language for the CDC 6400 computer of the University of Montreal. These Q-systems were used by the entire TAUM project team to construct a complete chain of automatic English-French translations. The English morphology was written by Brian Harris, Richard Kittredge wrote a substantial grammar for the analysis of English, Gilles Stewart wrote the transfer phase, Jules Danserau wrote the grammar for the French synthesis, and Michel van Caneghem developed a complete French morphology [Taum 1971]. The Q-systems were also used a few years later to write the METEO system, a current industrial version of which produces daily translations of Canadian weather forecasts from English into French." [Colmerauer and Roussel 1996]

  • Alain Colmerauer. Les systèmes-q ou un formalisme pour analyser et synthétiser des phrases surordinateur. Internal publication no 43, Département d’Informatique de l’Université de Montréal, September 1970. Online at alain.colmerauer.free.fr
  • TAUM 71, Annual report, Projet de Traduction Automatique de l'Université de Montréal, Jan. 1971.

 

Marseille Prolog for Control Data 6000

"A former student, Hélène Le Gloan, installed [Marseille Prolog] at the University of Montreal." [Colmerauer and Roussel 1996]
  • Hélène Le Gloan. Implantation de PROLOG, Internal report, Université de Montréal, 1974.

"The first installation of Prolog in Warsaw was that of a version prepared by Le Gloan (1974) for the CDC6000 series. The principal difference with respect to the original version (Battani and Meloni, 1973) was the manner in which the interpreter's tables were accessed. The CDC machines were very fast, but had only up to 128K words of memory; each word had 60 bits, though, so the potential amount of data items - addresses in various linked data structures - was three times as large. Le Gloan replaced all array accesses with calls to simple packing/unpacking routines.

The loss in execution speed was considerable. This was compounded by the fact that the interpreter was not a Prolog interpreter really: it could only interpret the internal representation of a Prolog program in its tables. The 'real' Prolog interpreter (i.e. the program which could read and store Prolog clauses, read and write terms, and the like) was itself a Prolog program (Roussel, 1975) executed by the FORTRAN interpreter.

The effect was that our CDC CYBER 73, which ran at approximately 1.2 million instructions per second, read in Prolog programs at the average speed of 5 seconds per clause. As the machine was constantly labouring under a heavy load of multiprocessed jobs flowing in from a number of remote card-reader/printer terminals, it was impracticable to run Prolog for longer than a minute or so. In spite of all the packing, one needed to run in a low-priority storage class (we needed at least 72 000 (octal) words, as opposed to the standard of 54 000 (octal) for FORTRAN compilations, etc.), so a one-minute job used to hang in the input queue for up to 10 hours. Longer runs had to wait until the weekend.

Fortunately, the interpreter's internal state could be saved on a file between successive runs, so in spite of all this, Prolog was used for various small tasks, even by students. S. Szpakowicz even wrote his PhD program - a parser for a significant subset of Polish - in Prolog. With the low tum-around, reading in ten clauses at a time, it took him several months to get the program into the machine: spectacular evidence of Prolog's ability to captivate the mind!" [Kluźniak 1984]

 

University of Edinburgh

"One dark morning in October 1972 in Edinburgh, Bob Kowalski sat me down on the couch in his living room. `I'll show you something interesting. We call it programming in logic.'

I had flown in from California the day before to take up my appointment at the Department of Machine Intelligence under the direction of Donald Michie."

...

As a follow-up to our session on Bob's couch upon my arrival in Edinburgh in the fall of 1972, Bob arranged a few meetings as a sort of crash course for new arrivals in resolution and programming in predicate logic. These included David Warren and Austin Tate, two new students who were also to work under Michie.

David and I attended Bob's crash course. If there were any others, they couldn't have been more than one or two. By November it was clear that the fixpoint characterization applied to logic programs. In the spring of 1973 Bob and I made good progress with this work. I found it very exciting. I learned about the compactness theorem and we used it. Bob was not happy with it. He had the feeling it could be simpler. When we split for the summer, he suggested I leave it with him to see if he could find a more satisfactory exposition. By the time I returned, he had found the beautifully simple one-step inference characterization that can be found in our JACM paper.

In the course of 1973 Colmerauer and Roussel visited. They reported on their Prolog implementation, which had control annotations on the clauses. Our reaction was lukewarm: it seemed too far removed from logic.

I enjoyed programming in logic, though we couldn't run anything. We had learned how to append lists from the Marseilles people. When I told Bob my latest brainwave:

member(x,y) <- append(u,x.v,y)

he was gratifyingly surprised.

...

What little interest in Prolog there might have been that summer in Edinburgh continued to evaporate until David Warren returned from his visit to Marseilles in February 1974. He brought two things: a program and a foot-long box of cards. The program was WARPLAN, a one-page program that Bob, I, and others studied for years afterwards. The box contained the new Prolog. This was the second implementation, done in Fortran by Battani and Meloni.

The effect was electrifying. Actually being able to run programs (an opportunity obligingly arranged by David on the new PDP-10 computer in Edinburgh) made a huge difference, though it shouldn't have from a rational point of view. Moreover, the formerly ubiquitous control annotations had gone, being replaced by an occasional cut, which was much less obtrusive.

...

Some of the 1974 visitors were unreservedly interested not only in logic programming, but even in Prolog. These included Keith Clark from Queen Mary College, Luis Pereira from Lisbon, and Tomasz Pietrzykowski from the University of Waterloo in Canada."

[van Emden 2006]

 

Logic Programming

  • Robert Kowalski and Donald Kuehner. Linear Resolution with Selection Function In Artificial Intelligence, Vol. 2, 1971, pp. 227-60. Reprinted in: Anthology of Automated Theorem-Proving Papers, Vol. 2, Springer-Verlag, 1983, pp. 542-577. Online at doc.ic.ac.uk
  • Robert Kowalski. Predicate Logic as Programming Language. In: Proceedings IFIP Congress, Stockholm, North Holland Publishing Co., 1974, pp. 569-574. Reprinted in Computers for Artificial Intelligence Applications, (eds. Wah, B. and Li, G.-J.), IEEE Computer Society Press, Los Angeles, 1986, pp. 68-73. Online at doc.ic.ac.uk
  • M. H. van Emden and R. A. Kowalski. The Semantics of Predicate Logic as a Programming Language Journal of the ACM, Vol. 23, No. 4, 1976, pp. 733-742. Online at doc.ic.ac.uk
  • Maarten van Emden. The Early Days of Logic Programming: A Personal Perspective. Assocation for Logic Programming Newsletter, Vol. 19 n. 3, August 2006. Online at dtai.cs.kuleuven.be

 

PROLOG to DEC 10 Machine Code Compiler, Version 13 Sep 1975.

This compiler was written in Marseille Prolog by David H. D. Warren. Computer History Museum Lot #X6167.2011, gift of Maarten van Emden. Posted here with permission of David H. D. Warren.

  • David H. D. Warren. Listing. PDF
  • David H. D. Warren. Example 1: Quicksort. Circa 1975. Example of generated code from PROLOG to DEC 10 Machine Code Compiler. PDF
  • David H. D. Warren. Example 2: Illustrates the improved scheme for indexing clauses. Circa 1975. Example of generated code from PROLOG to DEC 10 Machine Code Compiler. PDF

 

DECsystem-10 PROLOG

Source code

  • Bruce Baumgart, archivist. Stanford AI Lab W.A.I.T.S. backup tapes. The source files include versions modified to run on the Stanford system, as well as original versions.

Documentation

  • Luis Moniz Pereira, Fernando C. N. Pereira, and David H. D. Warren. Technical Report 03/13/5570, Labortório Nacional De Engenharia Civil, Lisbon, September-October, 1978. Provisional version. Interpreter version 1.32 and compiler version 1.11. PDF at userweb.fct.unl.pt/~lmp - ASCII at saildart.org
  • Lawrence Byrd, Fernando Pereira, and David Warren. A Guide to Version 3 of DEC-10 Prolog. Department of Artificial Intelligence, University of Edinburgh, June 1980. ASCII at saildart.org
  • Lawrence Byrd. Prolog Debugging Facilities. Technical note, Department of Artificial Intelligence, Edinburgh University, 1980. ASCII at saildart.org
  • D.L. Bowen (editor), L. Byrd, F.C.N. Pereira, L.M. Pereira, and D.H.D. Warren. DECsystem-10 Prolog User's Manual. University of Edinburgh, Department of Artificial Intelligence, 10 November 1982. Prolog version 3.47. ASCII at CMU AI Repository

Papers

  • D. H. D. Warren. Implementation of an efficient predicate logic interpreter based on Earley deduction. Research proposal to the Science Research Council, Dept. of AI, University of Edinburgh (1975).
  • D. H. D. Warren, L. M. Pereira and F. Pereira. Prolog - the Language and its Implementation compared with Lisp, Proc. ACM Symposium on Artificial Intelligence and Programming Languages, Rochester, N.Y., 1977. ACM Digital Library PDF at researchgate.net
  • D. H. D. Warren, Implementing Prolog-Compiling Predicate Logic Programs. Research Reports 39 and 40, Department of Artificial Intelligence, University of Edinburgh, 1977. Superseded by Warren's thesis?
  • David H. D. Warren. Applied logic : its use and implementation as a programming tool. Ph.D. thesis, University of Edinburgh, 1978. Online at ed.ac.uk - Online at sri.com
  • David H. D. Warren. PROLOG on the DECsystem-10. Pages 112-121 in [Michie 1979]. Discusses tail-recursion optimization.
  • David H. D. Warren. An Improved PROLOG implementation which optimises tail recursion. Research Paper 156, Dept. of Artificial Intelligence, University of Edinburgh, Scotland, 1980; also published in [Tärnlund 1980]
  • D. H. D. Warren. Perpetual Processes - an Unexploited Prolog Technique. Logic Programming Newsletter, number 3, Universidade Nova de Lisboa, 1982.
  • David H. D. Warren. Optimizing Tail Recursion in Prolog. In: Michel van Caneghem and David H. D. Warren, eds. Logic Programming and its Application. Ablex, 1986.
  • Donald Michie, editor. Expert Systems in the Micro-Electronic Age. Edinburgh University Press, 1979.
  • S-A. Tärnlund, editor. Proceedings of the Logic Programming Workshop, Debrecen, Hungary, 1980.

Applications

  • D. H. D. Warren. Generating conditional plans and programs. Procs. AISB Conf., p.34-354, Edinburgh. July 1976.
  • David H. D. Warren. Logic programming and compiler writing. Software: Practice and Experience, Vol. 10, February 1980, pages 97-125. Online at wiley.com Online at sovietov.com
  • Fernando C. N. Pereira and David H. D. Warren. Definite clause grammars for language analysis — A survey of the formalism and a comparison with augmented transition networks. Artificial Intelligence, Vol. 13, Issue 3, May 1980, pages 231-278. ScienceDirect CiteSeerX

    "This formalism -- the main subject of our paper -- we call definite clause grammars (DCGs). DCGs are a special case of Colmerauer's (1975) "metamorphosis grammars", which are for Chomsky type-0 grammars what DCGs are for CFGs. Although metamorphosis grammars can be translated into definite clauses, the correspondence is not nearly so direct as that for DCGs."

  • David H. D. Warren. Efficient Processing of Interactive Relational Data Base Queries expressed in Logic. Procedings of 7th Very Large Data Bases Conference, September 9-11, 1981, Cannes, France, Proceedings, pages 272-281.
  • Fernando Carlos Neves Pereira. Logic for Natural Language Analysis. Ph.D. thesis, University of Edinburgh, 1982. era (Edinburgh Research Archive)
  • David H. D. Warren and Fernando C. N. Pereira. Chat-80 prototype natural language question answering system.
  • Leon Sterling, Alan Bundy, Lawrence Byrd, Richard O'Keefe, and Bernard Silver. Symbolic reasoning with PRESS. In Computer Algebra (J. Calmet, ed.), Lecture Notes in Computer Science 144, Springer-Verlag, 1982.

 

PDP-11 Prolog

  • C. Mellish. Minimal documentation of the PDP-11 Prolog system. Dept. of Artificial Intelligence, University of Edinburgh, 1978. (Informal note.) Cited in [Warren 1979].
  • Clocksin, W.F. and Chris S. Mellish, The UNIX Prolog System Software Report 5, Department of Artificial Intelligence, University of Edinburg. Cited in Clocksin and Mellish, Programming in Prolog, first edition.
  • W. Clocksin, C. Mellish, and R. Fisher. The RT-11 Prolog System. Software Report 5a (revised), Department of Artificial Intelligence, University of Edinburgh, Edinburgh, Scotland, 1980. Cited in Clocksin and Mellish, Programming in Prolog, first edition.
  • C. S. Mellish. An Alternative to Structure Sharing in the Implementation of a PROLOG Interpreter. Research Paper 150, Department of Artificial Intelligence, University of Edinburgh, 1980.
  • C. S. Mellish. An Alternative to Structure Sharing in the Implementation of a PROLOG Interpreter. Pages 99-106 of: [Clark and Tärnlund 1982]. Condensed from [Mellish 1980].

 

EMAS Prolog

In 1980, Luís Damas wrote a Prolog in the IMP programing language for Edinburgh Multi-Access System (EMAS) running on ICL 2900 computers. [F. Pereira, C-Prolog read.me, 1982]

  • Lawrence Byrd, editor. User's guide to EMAS Prolog. Occasional Paper 26, Department of Artificial Intelligence, University of Edinburgh, 1981.

Applications

  • James R. Cowls. Analysis of Descriptive Texts. ANLC '83 Proceedings of the first conference on Applied natural language processing. PDF at aclweb.org
    "The code for the system is written in PROLOG (Clocksin and Mellish, 1981) as implemented on the Edinburgh Multi Access System (Byrd, 1981). This is a standard implementation of the language, with the single enhancement of a second internal database which is accessed using a hashing algorithm rather than a linear search. This has been used to improve the efficiency of the dictionary search procedures. "

 

C-Prolog

C-Prolog was written by Fernando Pereira around 1982 in the EdCAAD project in the Department of Architecture at the University of Edinburgh. It was based on EMAS Prolog, written by Luís Damas. There were also contributions by Lawrence Byrd. [F. Pereira, read.me, 1982]

"C-Prolog was designed for machines with a large, uniform, address space, and assumes a pointer cell 32 bits wide. At the time of writing, it has been tested on VAX machines under the UNIX and VAX/VMS operating systems, on the Sun workstation under 4.1/2 UNIX, and has been ported with minor changes to other MC68000-based workstations and to the Three Rivers PERQ."
[F. Pereira, C-Prolog User's Manual, 1982]

Source code

Documentation

 

Prolog-X

"Prolog-X was designed just before I left Edinburgh in 1980. Workstations (such as the Apollo, Sun, etc) were the latest thing, and we (Lawrence Byrd, David Bowen, and I) wanted a workstation Prolog system compatible with DEC-10 Prolog. We reckoned there would be a ready market for such software. We were also envious of the Lisp Machine developments, and wanted to do the same thing for Prolog. Using pseudocode notes that we wrote, I wrote a 'reference' implementation in Pascal, and at about the same time I moved to Oxford to take up a research post in the Robot Welding Group to develop image processing algorithms for real-time control of a robot arc-welding system. I therefore had less time to work on Prolog-X. The reference implementation sort of worked, and the 'test' was to run Chat-80 on it (a program written by David Warren and Fernando Pereira) to answer questions in English about world geography, e.g. "What is the capital of Upper Volta?"), which I ran on a PDP-11/10 bought to control the robot welder. At Edinburgh, David Bowen had more time to work on a version of Prolog-X called NIP, so that made some progress.

Meanwhile, in Oxford I made contact with Tim [Robinson] from High Level Hardware, who had developed a microcoded workstation called the Orion (there is a good Wikipedia article on this machine). Tim wanted a Prolog system for the Orion, so I gave him the Prolog-X reference implementation. He microcoded it, and we reckoned it would have amazing performance because of that. However, several simultaneous events conspired to halt the microcoded Prolog on the Orion.

  1. I had by that time moved to Cambridge, where I was running an Orion, but had no time to make further development on the Prolog system. I used the Orion essentially as a very nice graphics workstation for my robotics research.
  2. Computer architecture had moved on; microcoding was no longer where the performance was. We found that running C-Prolog on a new 32-bit microprocessor chip (by Fairchild) was actually faster than the microcoded Prolog!
  3. At Cambridge I began collaborating with Acorn during its transition into ARM, and they had a workstation called the Archimedes using their own RISC chip on which I got Prolog-X running. However, this project folded as the transition to ARM matured and they decided not to offer consumer workstations."
[William Clocksin, personal communication, 11 June 2019]

  • David L. Bowen, Lawrence M. Byrd, and William F. Clocksin. A Portable Prolog Compiler. In Logic Programming Workshop, pages 74–83, Algarve, Portugal, 1983. Online at researchgate.net
  • William F. Clocksin. Design and Simulation of a Sequential Prolog Machine. In Journal of New Generation Computing (NGC), pages 101–120, vol. 3, no. 1, 1985. SpringerLink

    "In this paper we describe an abstract Prolog machine, called the ZIP machine, which is suitable for implementation in software, microcode, or hardware.

    ...

    The first version of the Prolog-X system was written in Pascal under VMS for the DEC VAX in 1982. It was then ported to the ICL 2980 under VME, and the bytecode emulator was subsequently translated into the VME systems programming language S3. The first version was also used as the basis of a separate Prolog implementation design study. The second (and current) version of Prolog-X is a translation of the first version into the C language. This version runs on the following machines: the ICL Perq under PNX (similar to System III Unix), the HLH Orion (made by High Level Hardware, Ltd.) under Berkeley Unix 4.1, the DEC VAX under Berkeley Unix 4.2, and the IBM 3081 (370 architecture) under MVS."

  • Lisa Robinson. High Level Hardware Orion. Informational web site, circa 2009. Online at hlhco.info

 

New Implementation of Prolog (NIP)

"At Edinburgh, David Bowen had more time to work on a version of Prolog-X called NIP, so that made some progress." [William Clocksin, personal communication, 11 June 2019]

"3.2.5 NIP (CYLK, AJL)

NIP, the New Implementation of Prolog from Edinburgh, is now complete. It has been distributed by RAL to 29 research groups for use on a large range of UNIX based systems. A range of utilities and tools developed on the DEC 10 at Edinburgh are distributed with NIP and are available independently over the networks for users of other Prologs.

Release 1.1 of NIP was received from AIAI at the end of January. This was unloaded onto the following machines:

  • SUN2: fileserver, richard and harold
  • VAX: rlvd
  • Pyramid: rlya
  • Atlas-10

The installation of NIP required a few alterations to a Makefile which determined where the NIP executable files were to be found after installation. Then they were compiled and linked (all with the supplied makefile) . The compiled binaries were then copied to the destination directories for general access. All but the Pyramid were relatively straight forward; the Pyramid was most frustrating due to compiler problems. (Similar problems have prevented a Whitechapel installation).

There have been two new releases of NIP. Release 1.2 arrived at the beginning of February and was successfully installed on the SUNs, VAX and Atlas-10.

Release 1.3 arrived at the end of April (24th) and has been installed on the SUNs, Orion and VAX.

Release 1.3 manuals were received from AIAI and 10 copies of these were made and set to various Prolog users within the Division." [IKBS section, 1985-1986 Annual Report, Informatics Department, Rutherford Appleton Laboratory, Chilton]

  • A. M. J. Hutchings, editor and D. L. Bowen, L. Byrd, P. W. H. Chung, F. C. N. Pereira, L. M. Pereira, R. Rae, and D. H. D. Warren. Edinburg Prolog (The New Implementation) User’s Manual - version 1.4. Department of Artificial Intelligence, University of Edinburgh, 1984.
  • A. M. J. Hutchings, editor and D. L. Bowen, L. Byrd, P. W. H. Chung, F. C. N. Pereira, L. M. Pereira, R. Rae, and D. H. D. Warren. Edinburgh Prolog (The New Implementation) User's Manual. Report AIAI/PSGm1/86, AI Applications Institute, University of Edinburg, 1986.

 

Katholieke Universiteit Leuven

"Finally, Maurice Bruynooghe took Prolog to Leuven (Belgium) after a three-month stay in Marseilles (October through December 1975)." [Colmerauer and Roussel 1996]

"I visited Prof. Kowalski at Imperial College, in June 1975. I remember I came home with 2 boxes of punched cards, a copy of the Marseille Prolog system. (I also remember it did not run, I figured out some card was missing in the first 10 lines).

I visited Prof. Colmerauer in Marseille from October to December 1975."
[Maurice Bruynooghe, personal communication, 7 May 2019]

 

PDP-11 Prolog

"... my own Prolog implementation for PDP 11, 64K bytes, which likely was in the period 1979-1981." [Maurice Bruynooghe, personal communication, 7 May 2019]

 

BIM-Prolog (with the BIM company)

  • André Mariën. Improving the Compilation of Prolog in the Framework of the Warren Abstract Machine. Ph.D. dissertation, Katholieke Universiteit Leuven, September 1993.

 

University of Waterloo

"After my return to Edinburgh [Tomasz] Pietzrykowski contacted me for a possible visit to Waterloo. As the arrangements firmed up, he told me he hadn't managed to get a copy of Marseilles Prolog and could I bring one. And so it was that I arrived in Waterloo in January 1975 with two presents: a plastic bag with cuttings of the Papyrus plant and a box with a foot-long stack of punched cards. Sometime in the spring of 1975 two students of Pietrzykowski, Lewis Baxter (later to invent a fast unification algorithm*) and Larry Rendell, got the Fortran of the interpreter translated to the local dialect. Thus was established the first Prolog installation in North America." [van Emden 2006]

* See for example: Lewis Denver Baxter. A Practically Linear Unification Algorithm. Research Report CS-76-13, Department of Computer Science, University of Waterloo, February 1976. PDF at waterloo.ca

 

Waterloo Prolog for IBM System/370

"In 1976 Grant Roberts, a Master's student, was looking for a project. If not writing a compiler, then at least implementing an interesting language. Prolog seemed suitable. As I was the only faculty member who was at least a user of Prolog, Grant was steered in my direction.

Grant was famous in Waterloo, because as an undergraduate he had been on the Waterloo team in the Putnam competition that had done very well in the year he was on it. Grant did not share the computer scientists' disdain of the IBM 370. In fact, he loved this machine. Not because he liked programming in Fortran, or in Cobol, or in PL/I. No, he programmed in assembler. At least that was all that an outsider could make out of his activities. What he actually programmed in was his own programming language, a macro processor.

There are very few people who can do this. There are even fewer who tell about it. One of the exceptions is Mark Halpern in his memoirs in the 1991 Annals of the History of Computing where he says something about his XPOP macroprocessor. But these few tend to perform incredible programming feats. In the case of Roberts the feat was to complete in 1977 a beautifully stable Prolog implementation, the fastest in the world." [van Emden 2006]

"The most completely engineered logic programming systems to date are the PROLOG systems (cf. P. Roussel [1975], G. Roberts[1977], D. Warren et ai.[1977],), which are based on ideas of Kowalski, Colmerauer, Roussel, Hayes, and Boyer and Moore (cf. Kowalski [1974], p.573)." [Kenneth Bowen 1979]

[Roberts 1977] describes the language and its implementation, which uses the structure-sharing approach, following the Marseille interpreter.

  • Grant Maxwell Roberts. An Implementation of PROLOG. Master's thesis, University of Waterloo, Waterloo, Ontario, Canada, 1977. Posted with the permission of Grant Roberts. PDF

Source code

  • Grant Roberts. Waterloo Prolog source code assembly listing, version 1.2, 13 March 1982. PDF
  • Michigan Terminal System, Distribution 6.0, April 1988, contains some locally-produced documentation for Waterloo Prolog 1.7 from 1985, but, for licensing reasons, no Waterloo/Intralogic files. Online at archive.michigan-terminal-system.org

User manual

  • Grant Roberts. Waterloo Prolog User's Guide, version 1.4. With handwritten corrections by author. PDF Grayscale PDF

Commercialization

Roberts later formed a company called Intralogic Inc. to develop and distribute Waterloo Prolog commercially. This was a sideline to Roberts' main business, which was an application software development firm. Intralogic developed another PROLOG implementation in C for Unix but that was not commercially successful. Roberts decided to focus on his primary business, scaling back Intralogic and just distributing the original IBM System/370 PROLOG with some enhancements. He recalls there were about 90 licensees worldwide at the peak in the 1980's, tapering off to a few licensees by the late 1990's when he terminated Intralogic. [Source: Grant Roberts, personal communication, 17 April 2019]

 

Waterloo Unix Prologs

In the 1970s and 1980s, several students implemented versions of Prolog for Unix.
  • R.J. Ferguson, 1977.
    • R.J. Ferguson: An Implementation of Prolog in C. Master's Thesis, Department of Computer Science, University of Waterloo, 1977.
    • Maarten H. van Emden. An Algorithm for Interpreting PROLOG Programs. Technical Report CS-81-28, Department of Computer Science, University of Waterloo, September 1981. PDF at uwaterloo.ca

      "Many thanks to Ron Ferguson for some very helpful discussions."

  • T. Y. Ng, 1982.
    • T. Y. Ng. Prolog Implementation. M. Math. Thesis, Department of Computer Science, University of Waterloo, 1982.
    • M. H. van Emden. An interpreting algorithm for Prolog programs. First International Logic Programming Conference, University of Marseille, 1982. Also published in: [Campbell 1984]. Posted by permission of Maarten van Emden. PDF

      "Many thanks to Ron Ferguson for some very helpful discussions and to Paul Ng for his willingness to use the algorithm in this form as basis for his implementation work."

    • J. A. Campbell, editor, Implementations of Prolog, Ellis Horwood, 1984.
  • Mantis Hoi Ming Cheng, 1984.
    • R. G. Goebel and M. H. M. Cheng. Waterloo Unix Prolog Reference Manual. Logic Programming Group, University of Waterloo, 1983.
    • M. H. M. Cheng and R. G. Goebel. Waterloo Unix Prolog Implementation Manual. Logic Programming Group, University of Waterloo, 1984.
    • M. H. van Emden and R. Goebel. Waterloo Unix Tutorial Version 1.2. Logic Programming Group, University of Waterloo, 1984
    • Mantis H. M. Cheng. Design and implementation of the Waterloo Unix Prolog environment. Master's thesis, Department of Computer Science, University of Waterloo, December 1984. PDF at uwaterloo.ca
    • Mantis H. M. Cheng. Applications of Waterloo Unix Prolog.
      • Waterloo Unix Prolog and Lisp Environment (WUPL). A functional programming language based on LispKit Lisp and integrated into the Waterloo Unix Prolog interactive programming environment. Report with User Manual, Implementor Manual, and source code listing. PDF
      • FPL. A typed functional programming language supporting lazy evaluation, higher-order functions and universal polymorphism. Originally written for Waterloo Unix Prolog, but ported to ALS Prolog. Scanned listing includes manual, source code, and many example FPL definitions. August 1, 1988. PDF

 

Warsaw University

These projects were carried out at the Institute of Informatics, Warsaw University. All the quotations in this section are taken from:
  • Feliks Kluźniak. The `Marseille Interpreter' -- a personal perspective. In [Campbell 1984]. Posted by permission of Feliks Kluźniak. PDF

 

First installation of Marseille Prolog in Warsaw

Hélène Le Gloane's port of Marseille Prolog to the Control Data 6000 at the Université de Montréal was installed on a CDC CYBER 73 at Warsaw University; see Kluźniak's description here.

 

Port of Marseille Prolog to ODRA 1305 (ICL 1906-compatible)

"In 1978 we obtained funding for porting Prolog to an ODRA 1305 (essentially an ICL 1900). The machine was much slower, but it had 24-bit words, so there was no question of packing: we had high hopes that the result would be a faster interpreter (in the end it turned out to be twice as fast as on the CYBER). The memory was also only 128K, but we could have all of it, as the machine had only a very simple executive program and was operated in open shop." [Kluźniak 1984]

For a detailed description of this implementation, which is based on the Marseille interpreter, see [Kluźniak 1984].

Source code

  • Snapshot of ODRA Prolog. Gift of Janusz Bień. ZIP archive Unpacked Kluźniak [1984] notes: "The Prolog system was in the form of four decks of cards."
    • "There was the interpreter proper, which consisted of about 2000 FORTRAN cards."" odra.3
    • "Another FORTRAN program - about 350 cards - was used to create a binary file with the interpreter's internal state. This program, which we called 'The Initiator', could only read in Prolog programs in a very low-level form - essentially a character representation of the internal form of Prolog clauses. The interpreter used Prefix Polish representation of trees, so we called this low-level language Prefix Prolog. To give an example of its distinctive flavour, here is the well-known procedure APPEND(*):
                  1.2APPEND3NIL000NIL0
                  3.2APPEND3.2012.203.2APPEND3123NIL0
                  
      (*) The first digit is the number of variables. Each functor is followed by its arity and variables are represented by integer offsets (not ambiguous, as numbers greater than 9 are not allowed)."
      odra.4
    • "The third deck - about 75 cards - started with a card defining the character set, followed by 17 cards of integer sequences defining the interpreter state's 'kernel' (the representation of NIL, etc.). Seven cards declared the non-character functors and predicates used in the Prefix Prolog program which followed, 'The Bootstrapper', which could read and execute programs written in what we called 'Prolog B'. This was rather primitive, but already similar to full Prolog ('Prolog C'). One could write:
                  +APPEND(NIL,*L,*L)
                  +APPEND(.(*EL,*L), *L2, .(*EL,*L3)) -APPEND(*L,*L2,*L3)
      " odra.5
    • "The last deck consisted of about 400 cards in Prolog B, defining the full Prolog Monitor (interpreter with 'real' diagnostics, high-level input/output routines, etc.). The Monitor was written in a style apparently-designed to squeeze the last ounce of advantage from unification's ability to deal with multi-purpose arguments. Despite repeated attempts to read it, we could not at first understand more than small isolated fragments of this program, so for a long time we did it no harm apart from changing French diagnostic messages to Polish." odra.6

 

IIUW Prolog for CDC CYBER

"After we finished with the ODRA, a Pascal interpreter was written for the CYBER [Kluźniak, 1981]. This used no bootstrapping and a different program representation,* but otherwise -- on a conceptual level - the general design of Marseille Prolog. It was very successful: reading time was about 20 clauses per second and small programs could be run in 54 000 (octal) words -- the turn-around for our Prolog class was not worse than for FORTRAN. We used it quite extensively until the telephone line to the CYBER was cut off in December 1981.
> * Direct tree representation, but tightly-packed print-names."
[Kluźniak 1984]
  • Feliks Kluźniak, IIUW-Prolog, Logic Programming Newsletter 1, 1981.

Books

  • Barbara Dunin-Kęplicz and Stanisław Szpakowicz. Język programowani PROLOG (Polish). Institute of Computer Science, Polish Academy of Science, 1979. Online at waw.pl
  • Feliks Kluźniak and Stanisław Szpakowicz. Prolog (Polish). Wydawnictwa Naukowo-Techniczne (Warszawa), 1983.
  • Feliks Kluźniak & Stanisław Szpakowicz, with a contribution by Janusz S. Bień. Prolog for Programmers. Academic Press Inc. (London), 1987, ISBN 0-12-416521-4. Online
    Source code for C and Pascal versions of Toy Pascal are provided on the web site.

 

Imperial College London and Logic Programming Associates (LPA)

 

IC-PROLOG

  • K. L. Clark and F. McCabe. Programmers' Guide to IC-PROLOG. CCD Report 79/7, Imperial College, University of London, 1979.
  • Keith L. Clark and Frank McCabe. The control facilities of IC-Prolog. Pages 122–149 of: D. Michie, (ed). Expert systems in the micro-electronic age. Edinburgh, Scotland: Edinburgh University Press, 1979.
  • Keith L. Clark, Frank G. McCabe, and Steve Gregory. IC-PROLOG — language features. Pages 253–266 of: [Clark and Tärnlund 1982].
  • Keith L. Clark and Frank G. McCabe. IC-PROLOG — aspects of its implementation. In [Clark and Tärnlund 1982].
  • Keith L. Clark and Sten-Åke Tärnlund (eds). Logic programming. London: Academic Press, 1982.

 

micro-PROLOG

  • Keith L. Clark and Frank G. McCabe. Micro-Prolog - programming in logic. Prentice Hall international series in computer science, Prentice Hall, 1984.
  • Manuals and decompiled executables. Online at github.com/oldcompcz/micro-PROLOG

 

PARLOG, IC-Prolog ][

  • Keith L. Clark and Steve Gregory. A relational language for parallel programming, Proceedings of the 1981 conference on Functional programming languages and computer architecture, p.171-178, October 18-22, 1981, Portsmouth, New Hampshire, United States. ACM Digital Library
  • K. L. Clark and S. Gregory. PARLOG: A parallel logic programming language. Res. rep. DOC 83/5, Dept. of Computing, Imperial College, London, May 1983.
  • K. L. Clark and S. Gregory., Notes on systems programming in PARLOG. In Proceedings of the International Conference on Fifth Generation Computer Systems (Tokyo, Nov. 1984), pages 299-306.
  • K. L. Clark and S. Gregory. Notes on the implementation of PARLOG. J. Logic Program. 2, 1 (Apr. 1985), pages 17-42.
  • Keith Clark and Steve Gregory. PARLOG: parallel programming in logic. ACM Trans. Program. Lang. Syst. 8, 1 (January 1986), pages 1-49. ACM Digital Library
  • Keith L. Clark. PARLOG: the language and its applications. Pages 30–53 of: J. W. de Bakker, A. J. Nijman, and Philip C. Treleaven (eds). Proceedings of the conference on parallel architectures and languages europe (PARLE). Volume II: Parallel languages. Lecture Notes in Computer Science, vol. 259. Eindhoven, The Netherlands: Springer Verlag, 1987.
  • David Gilbert. PARLOG: a tutorial introduction, Current trends in Parallel Processing and Supercomputing, organised by the Belgian Institute for Automatic Control. November 19-20, Antwerp, 1987. .ps.gz at brunel.ac.uk
  • Parallel Logic Programming Ltd. (dissolved in October 2015) Online at parlog.com

 

Sussex University

 

Poplog Prolog

"During 1982, Chris Mellish and Steve Hardy devised a model for implementing Prolog, using Pop-11 closures to represent Prolog continuations, and Chris implemented a Prolog in Pop-11, while he was learning Pop-11. It worked, but was somewhat slow compared with high performance Prolog systems.

One reason for comparative slowness was that we decided that it was particularly useful to enable Prolog to share data-structures with Pop-11. This meant that it was not always possible to infer that because a Prolog program could no longer access some structures they were inaccessible. They might still be accessible if they had been handed to a Pop-11 program and stored somewhere for later use. This meant that structures that could be allocated using a stack in a stand-alone Prolog, had to be on a garbage collectable heap in Poplog. The use of garbage collections could slow things down, though the more memory was available the less this mattered, since having more memory reduced the frequency of garbage collections.

There were other inefficiencies in the original implementation, which led John Gibson to extend the Pop-11 virtual machine to provide additional mechanisms specifically to support Prolog. For example, instead of Prolog continuations being Pop-11 closures allocated on the heap (and therefore requiring garbage collections), they were allocated on a special stack reserved for Prolog continuations. Additional changes were made to speed up backtracking and unification.

It was as a result of such changes for Prolog that we started referring to the Poplog virtual machine rather than the Pop-11 virtual machine." [Sloman 1989]

Source code

Documentation

Papers and implementation documentation

  • Chris Mellish and Steve Hardy. Integrating Prolog into the POPLOG environment. Proceedings of the Eighth International Joint Conference on Artificial Intelligence, Vol. 1, 1983. PDF at ijcai.org
    A slightly expanded version of this paper appears as Chapter 25 of Robin Popplestone's unfinished book. Chapter 26 of the book is a description of those datatypes and procedures built into POPLOG which are intended for the support of Prolog. Online at cs.bham.ac.uk
  • Aaron Sloman. The Evolution of POPLOG and Pop-11 at Sussex University. In: POP-11 Comes of Age: The Advancement of an AI Programming Language, Ed. J. A.D.W.Anderson, Ellis Horwood, pp 30-54, 1989. PDF and HTML at cs.bham.ac.uk
  • R. Smith, A. Sloman and J. Gibson. POPLOG's two-level virtual machine support for interactive languages, In: D. Sleeman and N. Bernsen, editors. Research Directions in Cognitive Science Volume 5: Artificial Intelligence, Lawrence Erlbaum Associates, 1992, pages 203-231. Online at cs.bham.ac.uk

 

Syracuse University

 

LogLisp

"I first encountered Lisp when John McCarthy rang my doorbell the day after we moved into a house in Menlo Park in the summer of 1965. I had published the Resolution paper a few months earlier and McCarthy had (in 2 hours!) written and run a Lisp program embodying the proof procedure, with, he said, minimal debugging. This seemed a miracle to me, who had for years been flailing about, first with assembly languages and then with Fortran. The gruff McCarthy, who was by then already well known, was also something of an astonishing revelation, but that is another story. I bought a copy of the Lisp 1.5 manual, and found it brilliant but with strangely clumsy but MIT-ishly bold and naïve blunders (involving QUOTE and functions as objects, FUNARGS and all that, eventually fixed years later in SCHEME but still there in Common Lisp)." [Interview with Alan Robinson, inventor of resolution logic, van Emden 2010]

"Some of the visitors [to Edinburgh in 1974] were not swept up in the anti-theorem proving campaign emanating from MIT. They believed that there was a lot of valuable potential in resolution theorem-proving. But when these people heard that we actually wanted to program in logic rather than in Lisp, the atmosphere would turn chilly. A prime example was Robinson himself. We thought he would be delighted to see resolution used to turn logic into an actual programming language complete with a beautiful fixpoint theory. He was not. His first and only love in programming was Lisp. Mechanize theorem-proving, by all means. But do it in Lisp. Later, Robinson was to give valuable support to logic programming in many ways, such as the founding of the [Journal of Logic Programming]. He was in favour of research in logic programming. But for him, programming was something you do in Lisp." [van Emden 2006]

"Our own early attempts (as devoted users of LISP) to use PROLOG convinced us that it would be worth the effort to create within LISP a faithful implementation of Kowalski's logic programming idea. We felt it would be very convenient to be able to set up a knowledge base of assertions inside a LISP workspace, and to compute the answers to queries simply by executing appropriate function calls. What seemed to be required was an extension of LISP consisting of a group of new primitives designed to support unification, LUSH resolution, and so on, as efficiently as possible. We set out to honor the principle of the separation of logic from control (no CUT, no preferred ordering of assertions within procedures nor of atomic sentences within hypotheses of assertions) by making the logic programming engine 'purely denotative'. Instead of the PROLOG method of generating the LUSH resolution proof tree one branch at a time by backtracking, we decided to generate all branches in quasi-parallel so that heuristic control techniques could be brought to bear on deciding which branch to develop at each step and so that our design would lend itself to multiprocessing at a later stage." [Robinson and Sibert 1982]

  • J. A. Robinson and E. E. Sibert. Logic Programming in LISP. Technical Report 8-80, E. E. School of Computer and Information Science, Syracuse University, November 1980. Also in Rome Air Deveopment Center Technical Report RADC 80-379, volume 1, 1980.
  • J. A. Robinson and E. E. Sibert. LOGLISP Implementation Notes. Technical Report, School of Computer and Information Science, Syracuse University, December 1981.
  • J. A. Robinson and E. E. Sibert. The LOGLISP User's Manual. Describes version V2M3 of LOGLISP, December 1981. Herbert Stoyan collection on LISP programming, Computer History Museum. TO BE SCANNED. computerhistory.org
  • (J. A. Robinson and E. E. Sibert.) LOGLISP program listing. Printed by P. Bessiere at CICG Grenoble, France, on June 2, 1982. Herbert Stoyan collection on LISP programming, Computer History Museum. TO BE SCANNED. computerhistory.org
  • J. A. Robinson and E. E. Sibert. LOGLISP: an alternative to PROLOG. In: J.E. Hayes, Donald Michie, and Y-H. Pao, editors, Machine_Intelligence 10, Ellis Horwood Ltd., Chicester, England, 1982. Online at aitopics.org
  • J. A. Robinson and E. E. Sibert. LOGLISP: Motivation, design and implementation. In: [Clark and Tärnlund], pages 299-313, 1982.
  • Robert C. Schrag. Notes on the Conversion of LogLisp from Rutgers/UCI-LISP to Interlisp. Rome Air Development Center, Final Technical Report RADC-TM-83-1, January 1983. PDF dtic.mil
  • J. A. Robinson and E. E. Sibert. LOGLISP Implementation Notes. Technical Report, Logic Programming Research Group, Syracuse University, February, 1984.
  • Robert C. Schrag. Lisp Implementation Baseline Investigation. Rome Air Development Center, In House Report RADC-TR-84-151, June 1984. Online at dtic.mil
  • Robert C. Schrag. LogLisp Sequential Forms with Resolution Semantics. Rome Air Development Center, Final Technical Report RADC-TM-84-13, July 1984. Online at dtic.mil
  • Robert C. Schrag. Compilation and Environment Optimizations for LogLisp. Rome Air Development Center, Final Technical Report RADC-TM-84-14, July 1984. Online dtic.mil
  • J. A. Robinson, E. E. Sibert and K. J. Greene. The LOGLISP Programming System. Rome Air Development Center, Final Technical Report RADC-TR-85-89, May 1985. Online at dtic.mil
  • Sanjai Narain. Mycin: Implementing the Expert System in Loglisp. IEEE Software, Volume 2, Issue 3, May 1985. IEEE Xplore
  • J. A. Robinson. Beyond LOGLISP: combining functional and relational programming in a reduction setting. In: J. E. Hayes, Donald Michie, and J. Richards, editors. Machine Intelligence 11, Clarendon Press, 1988.
  • Maarten van Emden, interviewer. Interview with Alan Robinson, inventor of resolution logic. A Programmer's Place Blog, June 8, 2010. Online at vanemden.wordpress.com

 

Syracuse/Argonne Prolog

See ALS Prolog below.

 

University of Uppsala

See also this list of early Computer Science Department reports.

UPMAIL stands for Uppsala Programming Methodology and Artificial Intelligence Laboratory.

 

FOOLOG

  • Martin Nilsson. FOOLOG--A Small and Efficient Prolog Interpreter. Report 20, June 1983.
  • M. Nilsson. The world's shortest Prolog interpreter? Pages 87-92 in [Campbell 1984].

 

YAQ (Yet Another QLOG)

Source code

Papers about YAQ

  • M. Carlsson. (Re)Implementing PROLOG in LISP or YAQ - Yet another QLOG. UPMAIL 81/1, Box 2059, S-75002, Uppsala, Sweden, 1981.
  • T. Risch. A Data Base Extension of Prolog and its Implementation. UPMAIL, Dept. of Computer Science, Uppsala University, Sweden, 1982. PDF at it.uu.se

 

LM-Prolog

"LM-Prolog is an implementation of Prolog for the MIT family of Lisp Machines. The Prolog dialect differs quite a bit from the Edinburgh Prolog family of dialects both in terms of syntax and built-in predicates. The bulk of the code was written in 1983, when the authors were at Uppsala University. The work was supported by the Swedish National Board for Technical Development (STU).

Ken Kahn wrote two precursors to the present implementation, one in Pure Lisp and one based on flavors and message passing and implemented libraries of built-in predicates and demo programs. The present implementation compiles Prolog predicates to Lisp functions, using success continuations to emulate the Prolog control structure. Mats Carlsson implemented the compiler and runtime support including microcode extensions for LMI CADRs and Lambdas." [Ken Kahn and Mats Carlsson, README, 1989]

Source code

Papers about LM-Prolog

  • K. M. Kahn. A Grammar Kit in Prolog. In New Horizons in Educational Computing, edited by M. Yazdani, Ellis Horwood Ltd., Chichester, U.K., 1983, and in Proc. AISB Easter Conference on Artificial Intelligence and Education, April 1983, and UPMAIL Technical Report 14C, revised February 1985.
  • K. M. Kahn. Unique Features of LISP Machine Prolog. UPMAIL Technical Report 14, 1983 and Report 15B, revised February 1985.
  • K. M. Kahn. A Primitive for the Control of Logic Programs. Proc. 1984 Symposium on Logic Programming, Atlantic City, and UPMAIL Technical Report 16, February 1983.
  • M. Carlsson. LM-Prolog - The Language and its Implementation. UPMAIL Technical Report 30, October 1984.
  • Mats Carlsson. On implementing Prolog in functional programming. New Generation Computing, December 1984, Volume 2, Issue 4, pages 347–359. SpringerLink
  • K. M. Kahn and M. Carlsson. How to implement Prolog on a LISP Machine. Pages 117-134 in [Campbell 1984].

 

Tricia

  • Executables for Tricia 0.9b and 0.95, for Macintosh Classic OS. CMU AI Repository
    "Credits to: Jonas Barklund, Monika Danielsson, Jan Gabrielsson, Per Mildner, Per-Eric Olsson and Jan Wünsche. The compiler was kindly contributed by Mats Carlsson. The editor and top level was contributed by e (a.k.a. Doug Currie)."

Papers about Tricia

  • J. Barklund, L. Oestreicher, Å. Hugosson, M. Nylén. Tricia User's Guide, Computing Science Department, Uppsala University, Sept. 1986.
  • J. Barklund, H. Millroth, Garbage Cut for Garbage Collection of Iterative Prolog Programs, in 1986 Symposium on Logic Programming , Salt Lake City, Sept. 1986.
  • J. Barklund, H. Millroth, Code Generation and Runtime System for Tricia, UPMAIL Technical Report 36, Uppsala, in preparation.
  • M. Carlsson. Compilation for Tricia and Its Abstract Machine, UPMAIL Technical Report 35, Uppsala, Sept. 1986.
  • J. Barklund. Efficient interpretation of Prolog programs. Papers of the Symposium on Interpreters and interpretive techniques (SIGPLAN '87), Richard L. Wexelblat (Ed.). SIGPLAN Not. 22, 7 (July 1987), 132-137. ACM Digital Library
  • Jonas Barklund, Efficient Interpretation of Prolog Programs. Report 39, April 1987. Expanded version of previous paper. (PDF at it.uu.se)
  • Jonas Barklund and Håkan Millroth, Integrating Complex Data Structures in Prolog. UPMAIL Technical Report 42, Uppsala, October 1987. (PDF at it.uu.se)

 

Nova Prolog

  • Jonas Barklund and Håkan Millroth. Nova Prolog. UPMAIL Technical Report 52, Uppsala, July 1988.

 

Reform Prolog

TODO: add additional works cited by these reports:
  • Håkan Millroth. Reforming Compilation of Logic Programs, July 1991. (Report 67). PDF at it.uu.se
  • Håkan Millroth. Using the Reform Inference System for Parallel Prolog, January 1992. (Report 69) PDF at it.uu.se
  • Johan Bevemyr and Thomas Lindgren and Håkan Millroth, Exploiting Recursion-Parallelism in Prolog, November 1993. (Report 75)PDF at it.uu.se
  • Johan Bevemyr, Thomas Lindgren and Håkan Millroth. Reform Prolog: The Language and its Implementation, November 1993. (Report 76) PDF at it.uu.se

 

Applied Logic Systems (ALS)

 

ALS Prolog

"In the early 1980's, Kenneth Bowen and the Logic Programming Research Group at Syracuse University (Hamid Bacha, Kevin Buettner, Ilyas Cicekli, Keith Hughes, and Andrew Turk) were exploring meta-level extensions to Logic Programming systems, and to Prolog in particular. Desiring a Prolog implementation on which to experiment, they worked co-operatively with a group at Argonne National Laboratories (Tim Lindholm, Rusty Lusk, and Ross Overbeek), and initially developed a Prolog byte-code interpreter running on a Data General MV/8000, and later on a VAX 780. They found the system performance disappointing, and in late 1984, set out to develop a portable compiler-based system utilizing a byte-code interpreter for D. Warren's WAM design, implemented over C.

This came on line by fall, 1985. It contained a resident incremental compiler (from Prolog to WAM), and supported a module system, garbage compaction, and implemented assert/retract using on-the-fly compilation and decompilation techniques, the latter also utilized in a four-port debugger. The system performance was markedly better than the original byte-code interpreter. It was used as the starting point for two versions of a meta-prolog extension.

A number of the group members decided to explore commercial possibilities in the PC arena and set out to reimplement the Research Group system design, targeting the then-current 16-bit systems, later extended to 32 bits. Applied Logic Systems, Inc. (ALS) was formed in 1984 to carry this out. The initial version, named ALS Prolog (or alspro), for the IBM PC/DOS, appeared in 1985, and implemented the compiler/WAM byte-code interpreter design from the research group. This was followed by a version for the Macintosh/MacOS. A native code compiler optimizing the WAM was developed for the IBM PC/DOS, and partially built for the Macintosh/MacOS. At the time, the native code compiler for the 386 chip was quite fast, and temporarily won the "naive reverse LIPS (Logical Inferences Per Second)" speed wars. However, the difficulty of maintaining and porting these native code compilers led to the development of a respectably efficient portable threaded code system which was subsequently used on all platforms.

These PC and Macintosh systems were followed relatively quickly (1987) by a version for Sun Workstations (Sun/SunOS/Solaris[m68000, later SPARC]), and then for other Unix workstations (Silcon Graphics/IRIX, HP/HPUX, IBM/AIX), VAX (a new version), NeXT/NeXTStep, and systems utilizing the Motorola 88k chip. An embeddable logic engine was developed under contract for Apple (plus a control interface for the Macintosh Programmer's Workshop (MPW)). It was delivered, but never released by Apple. In addition, tools for direct interfaces to dBase and R:Base were developed for the PC.

In the late 1980's - early 1990's, most of the original staff of ALS obtained their degrees from Syracuse University, and moved on to other employment. The remainder of ALS moved to Newton, MA (and later Cambridge, MA), where Chuck Houpt joined the company (and remains involved as a GitHub core memeber). XWindows interfaces were developed for the Unix workstations, and a port to Microsoft Windows was carried out via Win32. Later a port to Cygwin was developed and utilized for subsequent ports to Windows. A port to Linux was carried out, which later provided the basis for a Mac OSX version. Further database interface tools included ODBC and AccSys, tgoether with ODBC-based interfaces to Microsoft Access, Microsoft SQL Server, mySQL and Oracle.

Extensions/improvements during the 1990's included:

  • Foreign language interfaces to Tcl/Tk, Python, and Java;
  • A basic integrated windowed development environment (alsdev) built using Tcl/Tk;
  • Delay/freeze support;
  • A platform agnostic I/O system (i.e. read/write different line-endings);
  • Improved ISO Prolog conformance.
The system has been converted to open source, and now is accessible on GitHub at github.com/AppliedLogicSystems/ALSProlog. Documentation and releases are available at alsprolog.com."

[Kenneth Bowen, personal communication, 11 June 2019]

Source code

Documentation and papers

  • Kenneth A. Bowen. Prolog. In Proceedings of the 1979 annual conference (ACM '79), Arvid L. Martin and James L. Elshoff (Eds.). ACM, New York, NY, USA, 14-23. ACM Digital Library
  • Kenneth A. Bowen and Tobias Weinberg. A Meta-Level Extension of Prolog. Proceedings of the 1985 Symposium on Logic Programming, Boston, Massachusetts, USA, July 15-18, 1985, pages 48-53. Also: University of Syracuse, Electrical Engineering and Computer Science Technical Report 36. Online at syr.edu
  • Kenneth A. Bowen, Kevin A. Buettner, Ilyas Cicekli, and Andrew Turk. The Design and Implementation of a High-Speed Incremental Portable Prolog Compiler. Proceedings of Third International Conference on Logic Programming, Imperial College of Science and Technology, London, United Kingdom, July 14-18, 1986, pages 650-656, SpringerLink. Also Technical Report. 35, Electrical Engineering and Computer Science, Syracuse University, 1985. Online at syr.edu
  • Prolog Execution Model. Applied Logic Systems, Inc. March 20, 1998 PDF at github.com

Applications

 

Bell-Northern Research (BNR)

William J. Older of the Computing Research Laboratory, Bell-Northern Research, and his colleagues developed a series of Prolog implementations starting in 1986 and eventually encompassing the handling of cyclic structures, breadth-first unification, variable functors, variadic structures, and relational interval arithmetic. [Older 1994] gives the basic history as well as a detailed overview of the system as of 1994.

 

XMS Prolog

"The forerunner of BNR Prolog was XMS Prolog, which was developed in 1986-87 within the XMS Project at BNR by William Older and Bruce Spencer. The first four versions of XMS Prolog were toy implementations of a structure-sharing interpreter written in BNR Pascal, but were valuable learning exercises. Some features, such as the State Space and context stack were already present at this early date. In 1987 the interpreter was totally redesigned and reimplemented in 68000 Assembler by W. Older to become Version 5 of XMS Prolog. The handling of cyclic structures, breadth-first unification, variable functors, and variadic structures all date from this period." [Older 1994]

XMS Prolog ran on BNR's XMS operating system:

  • Marek Fridrich and William J. Older. Helix: The Architecture of the {XMS} Distributed File system. IEEE Software, Vol. 2, No. 3, 1985, pages 21-29. Online at ieee.org

 

BNR Prolog

"BNR Prolog developed from XMS Prolog during 1988-89. Much of the Version 5 XMS Prolog core structure was retained, but ported into UCSD Pascal to run on Macs. Variable name retention was added at this time as well as freeze, and the syntax was changed radically to bring in it into conformance with the evolving Prolog standards. Also added was the relational interval subsystem based on the ideas of Dr. John Cleary of the U. of Calgary.(*) A major portion of the work was aimed at adapting the system from a conventional command line interpreter, to a relatively complete graphics-oriented programming environment with high level access to many of the Mac capabilities.

The development team consisted of William Older, John Rummell, Susan Antoft, Rick Snapper, Bijan Farrahi, Peter Hoddinott, Andre Vellino, Al Sary, and Marianne Morin, all under the direction of Rick Workman. Many contributions were made by other people during this period and in the next couple of years. In particular, Peter Cashin, the director of CRL, initiated (among other things) the Panels subsystem which was developed further by Rick Workman.

The Mac versions of BNR Prolog (and the associated manuals) were distributed to many in the academic community and other researchers around the world from 1989 to 1992. Several universities, such as Karlsruhe in Germany and Laval in Quebec, have adopted it as a teaching language at one time or another, so that many thousands of students have come into contact with it in various places. The interval arithmetic system has attracted much interest in the constraint programming community, and the technology has been copied several times: Interlog (Dassault Electronique, Fr.), ILOG Solver (Fr.), 1994 release of VM Prolog (IBM, Paris), and very likely by future Prolog IV (Marseille) and Prince (an Esprit project), as well as in several non-commercial systems.

The Unix versions of BNR Prolog originated in 1991 with William Older’s design for a WAM-style compiler extended for BNR Prolog and its corresponding byte-coded interpreter. A wholly new core system based on this design was implemented in C in 1992-93 by John Rummell, and an alternate interpreter in 68K Assembler was done by W. Older. A team of developers under Jean Jervis developed the X-system interface in 1993 and reimplemented the GUI tools on top. A greatly extended new design for the relational interval arithmetic subsystem, renamed CLP(BNR), was developed by William Older and Frederic Benhamou and implemented in 1993 and subsequently upgraded in 1994." [Older 1994]

(*) See:

Source code

  • Source Archive of final BNR Prolog release, V5.0.5, 1999 for Unix platform(s) of that time. Online at github.com/ridgeworks

    "This archive is provided as is under the MIT license even though individual files do not have copyright notices..."

  • Re-implementation of CLP(BNR) in Prolog and packaged as an SWI-Prolog module. Online at github.com/ridgeworks

Documentation

  • BNR Prolog Reference Manual (Macintosh Version). PDF

Papers about BNR Prolog

  • William J. Older and André Vellino. Extending Prolog with Constraint Arithmetic on Real Intervals. Proceedings of the Canadian Conference on Electric and Computer Engineering, 1990. [Colmerauer 2011] notes "[This paper will] be important for Prolog IV." PDF at ridgeworks.github.io
  • William J. Older. Inside BNR Prolog, or, Wendezvous with WAMA. Computational Research Laboratory, Bell-Northern Research, 1994. PDF at ridgeworks.github.io
  • BNR Prolog Papers: Collection of formal and informal papers covering design and use of BNR Prolog (1988-1995). Online at ridgeworks.github.io
  • W. J. Older and J. A. Rummell. An Incremental Garbage Collector for WAM-Based Prolog, Proceedings of the Joint International Conference and Symposium on Logic Programming, MIT Press, Cambridge, Mass., 1992.
  • TODO: William Older. Notes from graduate-level course on the CLP components of BNR Prolog. Carleton University, 1995.

 

University of Cambridge

 

DelPhi Parallel Inference Machine

"[After Prolog-X] I felt the only way forward in performance was to exploit multiprocessing, and realised that Prolog was an ideal language for running OR-parallel (now called 'embarrassingly parallel' programs), and devised a novel architecture for running it on a network of loosely coupled multiple processors. I persuaded DEC to donate 25 micro-VAXes to me, and ran parallel Prolog on that for a while. I became interested in other research topics, so this work came to an end. However, I think it is still worth preserving as an interesting idea with unexploited potential for the future." [William Clocksin, personal communication, 11 June 2019]

"... the DelPhi principle ... states that the construction of computation state for each path (from the topmost goal node to a given terminal node) of a OR-only proof tree should be computed by a single processor associated with the path. Given multiple processors, the way to deploy them according to this principle is to enumerate all paths of the proof tree, and to associate each path with a processor. A path is represented by an oracle, a list of the nodes along a path. An oracle always begins with the root node of the tree, and terminates with either a success or failure node. The important thing about an oracle is that it is compact and context-free (contains no computation state such as variable bindings). For example, the complete OR-only binary tree of depth n has 2n oracles, which are all binary strings of length n bits. Because a path of an OR-only tree contains no decisions and does not require state from ‘across’ the tree, a given processor in possession of the program is in principle capable of computing the path (choosing clauses as directed by the oracle and performing a series of unifications) without further inter-processor communications until the oracle is exhausted. A tree containing AND nodes may be converted to an OR-only forest by standard methods. Assuming the two subpaths of a binary AND-node are to be executed in sequence, the execution may be determined by an oracle string of the length of the sum of the lengths of the two subpaths. In practice, the forest is not constructed, but is tracked as execution proceeds ..." [Clocksin 1992]

  • W. F. Clocksin and H. Alshawi. A Method for Efficiently Executing Horn Clause Programs using Multiple Processors. Technical Report, Computer Laboratory, University of Cambridge, 1986.
  • W. F. Clocksin. Principles of the DelPhi Parallel Inference Machine. The Computer Journal, Volume 30, Issue 5, October 1987, Pages 386–392. Oxford Academic (open access)
  • W. F. Clocksin and H. Alshawi. A Method for Efficiently Executing Horn Clause Programs using Multiple Processors. New Generation Computing, March 1988, Volume 5, Issue 4, pages 361–376. SpringerLink
  • H. Alshawi and D.B. Moran. The Delphi model and some preliminary experiments. Proceedings 5th Conf. Symp. Logic Programming (Kowalski and Bowen, editors.), MIT Press, 1989, pages 578-1589.
  • K. L. Wrench. A distributed and-or parallel prolog network. PhD dissertation. Available in summary form as Technical Report 212, Computer Laboratory, University of Cambridge, 1990.
  • C. S. Klein. Exploiting or-parallelism in Prolog using multiple sequential machines. PhD dissertation. Reprinted as Technical Report 216, Computer Laboratory, University of Cambridge, 1991.
  • W. F. Clocksin. The DelPhi multiprocessor inference computer. Workshop #6 (parallel and distributed implementations), 1992 International Joint Conference and Symposium on Logic Programming, Washington, 1992. ps.Z at cliplab.org - PDF (repaired)
  • W. F. Clocksin. The DelPhi multiprocessor inference computer. In 4th UK Conference on Logic Programming (K. Boda, ed), Springer Verlag, 1993. SpringerLink
  • Project summary, circa 1993. Online at cl.cam.ac.uk
  • S. Saraswat. Performance Evaluation of the Delphi Machine. Ph.D. thesis, Computer Laboratory, Cambridge University, England, Dec. 1995. Reprinted as Technical Report No. 385.
  • Ian Lewis. PrologPF: Parallel Logic and Functions on the Delphi Machine. Ph.D. thesis, Girton College, University of Cambridge, 1998. University of Cambridge Repository

    "PrologPF is a parallelising compiler targeting a distributed system of general purpose workstations connected by a relatively low performance network. The source language extends standard Prolog with the integration of higher-order functions. ..."

 

Swedish Institute of Computer Science (SICS)

 

SICStus Prolog

"1985–1990. SICS is founded and recruits the first author, who joins the Logic Programming Systems laboratory, headed by Seif Haridi. The laboratory’s first and main field of research was or-parallel execution of Prolog. The first author’s first task at SICS is to develop the Prolog engine that will be the subject of parallelization (Gupta et al. 2001). This happens in the informal Aurora project (Lusk et al. 1990) involving David H.D. Warren and researchers from Manchester and ANL, who provide schedulers and visualizers. Subsequently, another SICStus-based or-parallel effort, MUSE (Ali and Karlsson 1990a; Ali and Karlsson 1990b), doing more copying and less sharing than Aurora, is being pursued by other SICS researchers. At the same time, SICS begins distribution of SICStus Prolog, which quickly becomes popular mainly in the academy. Visitors Carl Kesselman and Ralph Haygood develop execution profilers and native code compilers, respectively." [Carlsson and Mildner 2012]

Documentation

Papers about SICStus Prolog

  • M. Carlsson. Freeze, indexing, and other implementation issues in the WAM. Swedish Institute of Computer Science, Report R86011B, 1986.
  • M. Carlsson. Internals of Sicstus Prolog version 0.6. Internal Report, Gigalips Project, November, 1987.
  • M. Carlsson. Design and Implementation of an OR-Parallel Prolog Engine. SICS Dissertation Series 02, 1990.
  • M. Carlsson and P. Mildner. SICStus Prolog—The first 25 years. Theory and Practice of Logic Programming, 12(1-2), 2012, pages 35-66. Cambridge Core - Draft at arxiv.org

Web site

 

Muse Prolog

"... Subsequently, another SICStus-based or-parallel effort, MUSE (Ali and Karlsson 1990a; Ali and Karlsson 1990b), doing more copying and less sharing than Aurora, is being pursued by other SICS researchers. [Carlsson and Mildner 2012]"

  • K. Ali and R. Karlsson. The Muse or-parallel Prolog model and its performance. In Proc. of the North American Conference on Logic Programming (NACLP ’90). MIT Press, Cambridge, 757–776.
  • K. Ali and R. Karlsson. The Muse approach to or-parallel Prolog. International Journal of Parallel Programming 19, 2, 129–162, Springer.

 

Acknowledgments

Thanks to:

  • Alain Colmerauer
  • André Vellino
  • Janusz Bień
  • Ken Bowen
  • Lars Brinkhoff
  • Maurice Bruynooghe
  • Mats Carlsson
  • Peter Cashin
  • Mantis Cheng
  • William F. Clocksin
  • Maarten van Emden
  • Randy Goebel
  • Chuck Houpt
  • Feliks Kluźniak
  • Jan Komorowski
  • William Older
  • Elena Pereira
  • Fernando C. N. Pereira
  • Grant Roberts
  • Robert Schrag
  • Brian D. Steel
  • Stanisław Szpakowicz
  • André Vellino
  • David H. D. Warren
  • Rick Workman
« June 2019 »
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
 

Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: