10 The Prolog Library

The Prolog library comprises a number of packages that are thought to be useful in a number of applications. Note that the predicates in the Prolog library are not built-in predicates. One has to explicitly load each package to get access to its predicates.

To load a library package Package, you will normally enter a query

     | ?- use_module(library(Package)).

A library package normally consists of one or more hidden (see ref-mod) modules. The following packages are provided:

aggregate (see lib-aggregate)
provides an aggregation operator for data-base-style queries.
assoc (see lib-assoc)
uses unbalanced binary trees trees to implement “association lists”, i.e. extendible finite mappings from terms to terms.
atts (see lib-atts)
provides a means of associating with variables arbitrary attributes, i.e. named properties that can be used as storage locations as well as hooks into Prolog's unification.
avl (see lib-avl)
uses AVL trees to implement “association lists”, i.e. extendible finite mappings from terms to terms.
bags (see lib-bags)
defines operations on bags, or multisets
bdb (see lib-bdb)
provides an interface to Berkeley DB, for storage and retrieval of terms on disk files with user-defined multiple indexing.
between (see lib-between)
provides some means of generating integers.
codesio (see lib-codesio)
defines I/O predicates that read from, or write to, a code-list.
file_systems (see lib-file_systems)
accesses files and directories.
heaps (see lib-heaps)
implements binary heaps, the main application of which are priority queues.
lists (see lib-lists)
provides basic operations on lists.
logarr (see lib-logarr)
provides an implementation of extendible arrays with logarithmic access time.
objects (see lib-objects)
provides a package for object-oriented programming, and can be regarded as a high-level alternative to library(structs).
odbc (see lib-odbc)
provides an interface to an ODBC database driver.
ordsets (see lib-ordsets)
defines operations on sets represented as lists with the elements ordered in Prolog standard order.
process (see lib-process)
provides process creation primitives.
queues (see lib-queues)
defines operations on queues (FIFO stores of information).
random (see lib-random)
provides a random number generator.
rem (see lib-rem)
provides Rem's algorithm for maintaining equivalence classes.
samsort (see lib-samsort)
provides generic sorting.
sets (see lib-sets)
defines operations on sets represented as lists with the elements unordered.
sockets (see lib-sockets)
provides an interface to sockets.
structs (see lib-structs)
provides access to C data structures, and can be regarded as a low-level alternative to library(objects).
system (see lib-system)
provides access to operating system services.
terms (see lib-terms)
provides a number of operations on terms.
timeout (see lib-timeout)
Meta-call with limit on execution time.
trees (see lib-trees)
uses binary trees to represent non-extendible arrays with logarithmic access time. The functionality is very similar to that of library(logarr), but library(trees) is slightly more efficient if the array does not need to be extendible.
types (see lib-types)
Provides type checking.
ugraphs (see lib-ugraphs)
Provides an implementation of directed and undirected graphs with unlabeled edges.
varnumbers (see lib-varnumbers)
An inverse of numbervars/3.
wgraphs (see lib-wgraphs)
provides an implementation of directed and undirected graphs where each edge has an integral weight.
xml (see lib-xml)
provides an XML parser.
linda/client (see lib-linda)
linda/server (see lib-linda)
provides an implementation of the Linda concept for process communication.
chr (see lib-chr)
provides Constraint Handling Rules
clpfd (see lib-clpfd)
provides constraint solving over Finite (Integer) Domains
clpb (see lib-clpb)
provides constraint solving over Booleans
clpq (see lib-clpqr)
clpr (see lib-clpqr)
provides constraint solving over Q (Rationals) or R (Reals)
fdbg (see lib-fdbg)
provides a debugger for finite domain constraint programs
zinc (see lib-zinc)
provides an interpreter for FlatZinc programs
pillow (see lib-pillow)
The PiLLoW Web Programming Library,
tcltk (see lib-tcltk)
An interface to the Tcl/Tk language and toolkit.
gauge (see lib-gauge)
is a profiling tool for Prolog programs with a graphical interface based on tcltk.
jasper (see lib-jasper)
Access Prolog from Java.
prologbeans (see lib-prologbeans)
Access Prolog from Java and .NET.
comclient (see lib-comclient)
An interface to Microsoft COM automaton objects.

For the purpose of migrating code from release 3, the following deprecated library modules are also provided. For documentation, please see the release 3 documentation for the corresponding library module with the trailing ‘3’ removed from its name:

arrays3
assoc3
lists3
queues3
random3
system3

Send feedback on this subject.