Cours started out with SWI Prolog, tutoriel & guide de travaux pratiques en pdf.
A rule
✤ jealous(X,Y) :- loves(X,Z),loves(Y,Z).
✤ to be read as: an individual X will be jealous of an individual Y if there is some individual Z that X loves, and Y loves that same individual Z too.
✤ So the query:
✤ jealous(marcellus,W).
✤ means: can you find an individual W such that Marcellus is jealous of W?
✤ The answer is: vincent.
Started out with SWI Prolog
✤ Stable and free, source available. Written in C(++). From Amsterdam.
✤ JPL interface to JVM
✤ Implemented in native library (dll) per platform
✤ Works very well but consistent installation trouble and complaints from associates
✤ Decided to simplify the architecture by choosing a Prolog implementation in pure Java
Free and Open Source
✤ Jlog
✤ tuProlog
✤ jTrolog
JLog
✤ Good performance reviews
✤ Source available; very C++ like implementation in Java; needs separate text based configuration file for predicates – hmm
✤ Can also interface using BSF
✤ Initial Theory load has a bad (exponential) performance bug
✤ Did not try to fix due to ugliness and hermetical quality of source code
tuProlog
✤ Italian implementation from University of Turin
✤ Source available and nice architecture
✤ Good documentation of Java interface
✤ Actively developed
✤ General performance qualm: not blindingly fast
jTrolog
✤ Performance oriented re-write of (parts of) tuProlog by Ivar Ørstavik
✤ Lightning fast load of initial Theory
✤ No real documentation, but:
✤ Source code very approachable
✤ http://java.net/projects/jtrolog
✤ not very active as a project, unfortunately
I chose jTrolog
✤ In spite of its strange name (Trollgatan, Norway?)
✤ For speed and modifiability
✤ Rebuilt own version of it
✤ Added (and sometimes took out) some NetRexx specific features