What is GNU Prolog
GNU Prolog is a free Prolog compiler with constraint solving over finite domains developed by Daniel Diaz.
GNU Prolog accepts Prolog+constraint programs and produces native binaries (like gcc does from a C source). The obtained executable is then stand-alone. The size of this executable can be quite small since GNU Prolog can avoid to link the code of most unused built-in predicates. The performances of GNU Prolog are very encouraging (comparable to commercial systems).
Beside the native-code compilation, GNU Prolog offers a classical interactive interpreter (top-level) with a debugger.
The Prolog part conforms to the ISO standard for Prolog with many extensions very useful in practice (global variables, OS interface, sockets,...).
GNU Prolog also includes an efficient constraint solver over Finite Domains (FD). This opens contraint logic programming to the user combining the power of constraint programming to the declarativity of logic programming.
# Prolog system:
* conforms to the ISO standard for Prolog (floating point numbers, streams, dynamic code,...).
* a lot of extensions: global variables, definite clause grammars (DCG), sockets interface, operating system interface,...
* more than 300 Prolog built-in predicates.
* Prolog debugger and a low-level WAM debugger.
* line editing facility under the interactive interpreter with completion on atoms.
* powerful bidirectional interface between Prolog and C.
* native-code compiler producing stand alone executables.
* simple command-line compiler accepting a wide variety of files: Prolog files, C files, WAM files,...
* direct generation of assembly code 15 times faster than wamcc + gcc.
* most of unused built-in predicates are not linked (to reduce the size of the executables).
* compiled predicates (native-code) as fast as wamcc on average.
* consulted predicates (byte-code) 5 times faster than wamcc.
# Constraint solver:
* FD variables well integrated into the Prolog environment (full compatibility with Prolog variables and integers). No need for explicit FD declarations.
* very efficient FD solver (comparable to commercial solvers).
* high-level constraints can be described in terms of simple primitives.
* a lot of predefined constraints: arithmetic constraints, boolean constraints, symbolic constraints, reified constraints,...
* several predefined enumeration heuristics.
* the user can define his own new constraints.
* more than 50 FD built-in constraints/predicates.
constraints (in terms of the primitive), the solver is open and extensible (as opposed to black-box solvers like CHI
Supported Platforms & Last Changes
Currently the following architectures are supported:
* ix86 / GNU/Linux
* ix86 / Win32 using Cygwin (see file src/WINDOWS)
* ix86 / Win32 using MinGW (see file src/WINDOWS)
* ix86 / Win32 using MSVC++ (see file src/WINDOWS)
* ix86 / SCO
* ix86 / Solaris
* ix86 / FreeBSD
* ix86 / OpenBSD
* ix86 / NetBSD
* ix86 / Darwin (Mac OS X)
* x86_64 / GNU/Linux
* x86_64 / Solaris
* x86_64 / Win64 using MinGW64 (see file src/WINDOWS64)
* x86_64 / Win64 using MSVC++ (see file src/WINDOWS64)
* PowerPC / GNU/Linux
* PowerPC / Darwin (Mac OS X)
* PowerPC / NetBSD
* sparc / SunOS (4.1.3 or higher)
* sparc / Solaris
* sparc / NetBSD
* alpha / GNU/Linux
* alpha / OSF1
* mips / irix
What is GNU Prolog