Harman Patil (Editor)

Comparison of Prolog implementations

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit

The following Comparison of Prolog implementations provides a reference for the relative feature sets and performance of different implementations of the Prolog computer programming language.

Contents

Portability

There are Prolog implementations that are radically different, with different syntax and different semantics (e.g. Visual Prolog) and sub-communities have developed around different implementations.

Code that strictly conforms to the ISO-Prolog core language is portable across ISO-compliant implementations. However, the ISO standard for modules was never accepted by most Prolog implementors.

Factors that can adversely affect portability include: use of bounded vs. unbounded integer arithmetic, additional types such as string objects, advanced numeric types (rationals, complex), feature extensions such as Unicode, threads, and tabling. Use of libraries unavailable in other implementations and library organisation:

Currently, the way predicates are spread over the libraries and system built-ins differs enormously. [...] Fortunately, there are only few cases where we find predicates with the same name but different semantics (e.g. delete/3)

Benchmarks

  • Benchmarking issues: Odd Prolog benchmarking, Performance differences.
  • Benchmarking software: older, Dobry, Aquarius benchmark suite, (Bothe, 1990), (Demoen et al. 2001), benchmark descriptions
  • Benchmarking results: B-Prolog, SICStus, XSB, SICStus vs Yap vs hProlog
  • Benchmarking results: Survey of java prolog engines by Michael Zeising
  • Benchmarking results: OpenRuleBench yearly open-source benchmark of rule engines
  • References

    Comparison of Prolog implementations Wikipedia