A list of implementations of Prolog, and of related languages (Lambda Prolog, Datalog, and beyond), and related resources. A work in progress!
- Ciao Prolog, “a modern Prolog implementation that builds up from a logic-based simple kernel designed to be portable, extensible, and modular.”
- erlog, a Prolog interpreter implemented in Erlang.
- GNU Prolog, GNU Prolog.
- GUPU, “Gesprächsunterstützende Programmierübungsumgebung” (an environment specialized for Prolog and constraint programming, at TU Wien).
- Ichiban Prolog, an embeddable ISO Prolog interpreter in Go.
- JIProlog, “A Prolog interpreter, pure Java 100%, cross-platform and Open Source” (@jiprolog)
- Logtalk, a declarative object-oriented logic programming language (@LogtalkDotOrg)
- Mercury, “a logic/functional programming language.” (@MercuryLang)
- Natlog is a lightweight Prolog-like system (implemented in Python) designed to smoothly interoperate with deep learning tools like PyTorch, JAX, GPT.
- Strand, a parallel Prolog dialect, described in “Strand: New Concepts for Parallel Programming”, Ian Foster & Stephen Taylor (1990, Prentice-Hall). See also Fleng (below).
- Scryer Prolog, an ISO Prolog implemented in Rust.
- SWI-Prolog, “Robust, mature, free. Prolog for the real world.”
- Tau Prolog, An open source Prolog interpreter in JavaScript (@tau_prolog)
- Trealla Prolog, a compact, efficient Prolog interpreter written in plain-old C
- XSB, “a Logic Programming and Deductive Database system for Unix and Windows..”
- The Power of Prolog, online book introducing modern Prolog.
- ELPI, Embeddable Lambda Prolog Interpreter: “implements a variant of λProlog enriched with Constraint Handling Rules”
- Teyjus, a Lambda Prolog implementation
- AbcDatalog, Easy Datalog for research & pedagogy.
- Cozo, A transactional, relational-graph-vector database that uses Datalog for query.
- Datahike, A fast, immutable, distributed & compositional Datalog engine for everyone.
- Datalevin, A simple, fast and versatile Datalog database.
- DataScript, Immutable database and Datalog query engine for Clojure, ClojureScript and JS.
- Datomic, “The fully transactional, cloud-ready, distributed database”
- Differential Datalog, DDlog is a programming language for incremental computation. It is well suited for writing programs that continuously update their output in response to input changes.
- Eclair, “A lightning-fast logical query language for solving complex search- and graph-based problems.”
- Eqlog, Datalog with equality for rust.
- Formulog, a “Datalog with support for SMT queries and first-order functional programming”.
- Soufflé, “Logic Defined Static Analysis”
- Ascent, a logic programming language (similar to Datalog) embedded in Rust via macros
- Clingo, and the Potsdam Answer Set Solving Collection (@potassco)
- Curry, a truly integrated functional logic programming language
- Fleng, a compiler for the concurrent logic programming languages FGHC, Strand, KL1 and PCN.
- Flix, a principled functional, imperative, and logic programming language.
- Logic & Objects – the class template language (F. McCabe PhD thesis, 1989).
- Logica, a declarative logic programming language for data manipulation.
- MiniZinc, “a high-level constraint modelling language that allows you to easily express and solve discrete optimisation problems.”
- Picat, “a simple, and yet powerful, logic-based multi-paradigm programming language aimed for general-purpose applications.”
- Popper, An inductive logic programming system
- PyNeuraLogic, PyNeuraLogic lets you use Python to create Differentiable Logic Programs.
- Slog, a parallel logic programming engine with first-class facts/data.