Overview of Prolog Systems

Please mail additions and corrections to ulrich@complang.tuwien.ac.at

For ISO compliance see syntax conformity assessment.

NameMain DeveloperISO
Part I
AvailabilitySourceCLPCHRCommercial Applications,
References, Remarks
SICStus 3SICSfullcommercialnoyesyesyesfloatyesyesreferences, Clarissa, Edgarscan, Tacton
SWIJ. WielemakerfullLGPLLGPLyes yesyesfloatyesapplications
YAPLIACCfullartisticyes yesyesyesfloatyes
Prolog IVPrologIAfullcommercial yesyesyesintervalreferences
IF/PrologIF Computerfullcommercial yesyesyesyesapplications!!!
ECLiPSeIC-ParcCisco-MPL yesyesyesfloatyesapplications
SICStus 4SICSfullcommercialyesyesyesmerge of SICStus 3 and Quintus
CiaoM. HermenegildopartialGNUGNU yesyesfloatyesoriginally based on older SICStus
XSBSUNYLGPLLGPL yesyescompany: industries served
B-PrologNeng-Fa Zhoupartialcommercial yesyesyes
Prolog II+PrologIAyesfree yes
NuL. Naishacademicyes yes
CHIPCosyteccommercial yesyesapplications!!!, references
GNU PrologD. DiazfullGNUGNU yesTOPS
Prolog systems without constraints (with mostly many other extensions)
MINERVAIF Computerfullcommercialruns in Java browser!!!, showcase
ALS Applied Logic Systemsyes Free/MIT GitHub
LPAyescommercialapplications, news
StrawberryD.D. Dobrevcommercial
Close-to-Prolog systems (mostly type or mode restricted)
Visual PrologPDCcommercialapplications, Borland Turbo Prolog's successor
MercuryZ. SomogyiGNUGNU
HALteam?? float?

Speed comparison

The following comparison tests the overheads incurred by unify_with_occurs_check/2. Significant overheads are not inherent: The 496 logical inferences executed require a total of 465 unifications with occurs check. But 435 unify a variable with a constant, 30 unify a variable with a ground list of the form [integer].
Pentium III 1GHzMlips
systemversiondefaultoccurs checkslowdown
SWI 5.4.0 1.8 1.2 * 1.5
SICStus 3.11.2 11.8 2.7 4.3
Yap 4.4.4 19.5 7.8 2.5
Ciao 1.10#5 6.6 2.0 3.3
GNU 1.2.16 10.9 5.8 1.9
B 6.6 #2 14.5 n.a -
*: Since version 5.6.38, SWI provides the runtime Prolog-flag occurs_check to enable occurs check. LIPS are the same with and without occurs check!