Looking for a list of historically significant virtual or abstract machines for Prolog

Out of curiosity went looking for a list of historically significant virtual or abstract machines for Prolog and really could not find one.

The problems in searching are

  • They are sometimes listed with virtual machines like JVM making it hard to tell if it was for Prolog.
  • Seem to all use the word abstract in their name which is often associated with virtual in the results so they get lost in the noise.
  • WAM is basically the only one mentioned in many results and even in research papers that talk about many abstract or virtual machines.
  • Unless you know of a few others such as BAM, VAM and SLG-WAM you can not even give examples to help the search. Even then that does not get much better results.
  • Sometimes you find a larger list but from years ago that oftens include many research machines that were only just that.

Here are some that I am aware of, what are others.

  • BAM (Bytecode Abstract Machine) is a low-level virtual machine used by many Prolog systems to execute Prolog code. It provides a platform-independent representation of Prolog code, allowing Prolog programs to be executed on any machine that has a BAM interpreter.

  • WAM (Warren Abstract Machine) is another popular virtual machine used by Prolog systems. It was developed by Alan Warren and is widely used for its efficiency and flexibility. The WAM is used to execute compiled Prolog code, and it provides a platform-independent representation of Prolog code.

  • VAM (Virtual Abstract Machine) is another virtual machine used by Prolog systems. Like the BAM and WAM, it provides a platform-independent representation of Prolog code and is used to execute compiled Prolog code.

  • SLG-WAM (Stratified Logic Programming WAM) is a variant of the WAM that is optimized for use with constraint logic programming. The SLG-WAM provides efficient support for constraint solving and has been used in a wide range of applications, including natural language processing, constraint solving, and theorem proving.

2 Likes

This might give you some of what you’re looking for: 1983-1993: The Wonder Years Of Sequential Prolog Implementation by Peter Van Roy. I found it from Google Scholar’s page for Peter Van Roy. The original Postscript seems to be here: https://www.info.ucl.ac.be/~pvr/official_report.ps and his home page has a link to the Aquarius compiler.

2 Likes

Thanks.

That was one of the papers I found in checking. It was so good I checked if it was listed in Useful Prolog References, it was.

IIRC it was where I found VAM.

It was a very informative paper and also noted:

  • VLSI-BAM
  • PLM

One thing that was hard in a cursory search of the paper was that the word machine is often used, but does that mean a physical machine, virtual machine or abstract machine. You have to read each section in detail to know which is correct when used.

It is also a very old paper: 1994.


  • SICStus Prolog—the first 25 years
    – SICStus Abstract Machine (SAM) and RISCified SAM (RISS) (Haygood 1994).

  • The BinProlog Experience: …
    – BinWAM

Working my way down the list of references from Reinventing paper

I assume you’ve looked at the SWI-Prolog bibliography – it has pointers to a few abstract machines (including the one that SWI-Prolog is based on: Bowen et al)

And, off the top of my head: A Hitchhiker’s Guide to Reinventing a Prolog Machine (and there are some other papers and slides by Paul Tarau, e.g. on BinProlog). See also the references in the Reinventing paper.

Thanks.

Not yet because I have been through many of those papers a few times and know there is only a handful of such machines noted in those papers that made it into a production system and I think I have them all in the list and also know that Jan W. could tell me of one not in my list faster than I can search all of them. :slightly_smiling_face:

That is one I don’t ever recall seeing, will visually scan it for info.

Thanks, will run that down.

This post is interesting as I was curious if there was a Prolog book akin to Christian Queinnec’s Lisp in Small Pieces.

The SWI manual states it is based on the ZIP Virtual Machine.

An early paper describing it:

1 Like