General Information: This article contains the answers to some
Frequently Asked Questions (FAQ) often seen in
news://comp.lang.prolog/. It is posted (twice a month, currently on
the 2nd and 16th) to help reduce volume in this newsgroup and to
provide hard-to-find information of general interest.

To keep up with the current state of logic programming technology,
readers can join the Association for Logic Programming (ALP) and
receive their Newsletter. For details on how to join or send in
contributions, check http://www.cs.nmsu.edu/ALP/ or contact

Sandro Etalle <etalle@cs.utwente.nl>

The Prolog Resource Guide (v0.6) was printed in issue 5/1 of the
Newsletter (Feb. 1992). This lists information concerning Prolog
Archives, Books, Suppliers, etc. It is now maintained by Mark
Kantrowitz (<Mark.Kantrowitz@glinda.oz.cs.cmu.edu>), and used to be
posted periodically to news://comp.lang.prolog.

2. Where can I get a free Prolog for system X (PC, Mac, Unix or other)?

The following are anonymous-FTP sites for free Prologs (or related
languages) which are either in the public domain or are “copy-lefted”
(permitted to be copied with some restrictions on commercial use).

(Please note that for extensive development work, users will probably
want a robust interpreter or compiler with good debugging facilities
and a standard syntax, among other things. While public-domain systems
are a valuable service to the community, they do not necessarily have
all these things, and users should weigh carefully what they want to do
against the capabilities and costs of the available systems.)

+ Platforms: Win32
+ Available: http://www.arity.com/?Tab=products&tab2=prolog
+ Info: Arity/Prolog32 provides a complete Prolog programming
environment in which you can write, debug, and run Prolog
programs in 32-bit Windows environments (95/98/NT/2000).
Arity/Prolog32 is a powerful, highly optimized, and extended
version of the logic programming language Prolog.
Arity/Prolog32 is a complete compiler and interpreter written
in Prolog, C, and Assembly language and is a superset of
Clocksin and Mellish Prolog.

+ Platforms: Java-based
+ Available: http://www.jiprolog.com/
+ Info: Java Internet Prolog is a cross-platform pure Java 100%
prolog interpreter that supplies Java world with the power of
prolog language and provides prolog language with a technology
to implement new predicates in Java.

+ Platforms: Various Unixes, including Sun, Dec Alpha, HP and
many others. Also a Win32 version is available. Sources
available for other combinations.
+ Available: At the Free Poplog Web/FTP site, including full
sourceshttp://www.cs.bham.ac.uk/research/poplog/freepoplog.html
Mirror sites at http://www.poplog.org/resources/dist/new/
+ E-mail: queries may be posted to news://comp.lang.pop/, or to
<pop-forum@cs.bham.ac.uk> or <A.Sloman@cs.bham.ac.uk> (Last
resort!)
+ Info: Robust incremental compiler, part of the multi-language
Poplog system (including Common Lisp, Pop-11 and Standard ML).
Unix, Linux & VMS versions include full support for X window
facilities/Motif. More information athttp://www.cs.bham.ac.uk/research/poplog/poplog.info.html
Licence modelled on XFree86. Can be freely distributed, though
copyright is owned by Sussex University and ISL.

+ Platforms: UNIX-based platforms and Windows
+ Available: http://www.ncc.up.pt/~vsc/Yap/
+ E-mail: Vitor Santos Costa <vsc@ncc.up.pt>
+ Info: Yap is entirely written in C and Prolog and should be
portable to most 32-bit and 64-bit Unix based platforms. A
Windows port is also available. Yap4.2 is distributed under
Perl’s artistic license and can be freely distributed.

3. What commercial systems are available? What about systems available
for a price from research institutions?

Many commercial systems are listed in the Prolog Resource Guide. The
Resource Guide also lists many systems which are not exactly
“commercial”, but available for a price from research institutions. The
list of such systems was originally compiled by Chris Moss, of Imperial
College. The rest of the Resource Guide was originally compiled by Dag
Wahlberg, of Uppsala University.

These debates rarely result in any productive discussion. To some
extent, one’s favourite language is based on irrational ideology.

However, many people now agree that different languages are good for
different things. Prolog seems to be good for problems in which logic
is intimately involved, or whose solutions have a succinct logical
characterization. Like other interactive, symbolic languages, Prolog is
also good for rapid prototyping.

Also, note that there are many different “Prologs” and other logic
programming languages available, all with different capabilities.

6. What are the recent developments?

There are some languages in development which do not have Prolog
syntax, but do subsume and generalize Prolog’s logic programming
abilities.

If your instructor assigned it to you, he or she probably wanted you to
do it yourself. If it’s an introductory Prolog course, your question
might be elementary to most readers, so it might be a waste of network
resources to ask it. Please ask your instructor, a friend, a teaching
assistant, or a local newsgroup for help first.

That being said, there are news://comp.lang.prolog/ readers who would
be glad to help people making a legitimate attempt to learn Prolog.

8. Can you suggest some books on Prolog?

The Prolog Resource Guide (see above) contains a listing of Prolog
books. It is maintained by Mark Kantrowitz
(<Mark.Kantrowitz@glinda.oz.cs.cmu.edu>), and posted periodically on
news://comp.lang.prolog.

11. How does the WAM (Warren Abstract Machine) work? How do I write a
WAM-based compiler or a WAM emulator?

Reportedly the best tutorial is Hassan Ait-Kaci’s book “Warren’s
Abstract Machine: A Tutorial Reconstruction” (MIT Press, 1991). The
book is out of print, and available online athttp://wambook.sourceforge.net.

12. Is there a WWW page on logic programming?

Yes, there is one by Jonathan Bowen; the URL ishttp://www.afm.sbu.ac.uk/logic-prog/. He invites us to mail him at
<jonathan.bowen@sbu.ac.uk> with any relevant information for inclusion.

Logtalk ships with support for various syntax highlighters, also usable
for Prolog. These include support for Pygments (used e.g. on Trac),
GeSHi (used e.g. on Wikis), Source-highlight, Highlight, and SHJS
(JavaScript highlighter for web pages).

Acknowledgements

Thank you to all the people who helped put together the first version
of this FAQ, and everyone who has contributed to it over the years.
Special thanks to John Dowding for suggesting a good format for the
list, and to Chris Moss, Dag Wahlberg, and Mark Kantrowitz for their
work on the Prolog Resource Guide.

Special thanks to Jamie Andrews, Dirk-Jan Faber and Remko Troncon, who
have been maintaining and posting the FAQ in the past.