YAP 7.1.0

the library_directory path (set by the LIBDIR
variable in the Makefile for YAP) Several files in the library are originally from the publicdomain Edinburgh Prolog library
Modules  
Extension of arg/3  
Association Maps  
The following association list manipulation predicates are available once included with the use_module(library(assoc)) command.  
SWILike autoloader  
AVL Trees  
Supports constructing AVL trees.  
Backtrackable Hash Tables  
Block Diagram  
This library provides a way of visualizing a prolog program using modules with blocks.  
Concurrent Alarms  
This library provides a concurrent signals.  
Operations on Sequences of Codes.  
Term to sequence of codes conversion, mostly replaced by engine code.  
Clause Manipulation  
This library supports a number of useful utilities that come up over and over again when manipulating Prolog programs.  
Old Call Cleanup  
% call_cleanup/1 and call_cleanup/2 allow predicates to register code for execution after the call is finished  
CoLogic Programming  
Nonbacktrackable queues in YAP.  
A library to implement queues of NB Terms.  
Memory Usage in Prolog DataBase  
This library provides a set of utilities for studying memory usage in YAP.  
Directed Graphs  
The following graph manipulation routines use the redblack tree library to try to avoid lineartime scans of the graph for all graph operations.  
Exo Intervals  
This package assumes you use exocompilation, that is, that you loaded the pedicate using the exo option to load_files/2 , In this case, YAP includes a package for improved search on intervals of integers.  
Flag Manipulation in Prolog  
 
Generate a new symbol.  
 
Heaps  
A heap is a labelled binary tree where the key of each node is less than or equal to the keys of its sons.  
Tries for ILP  
MPI Interface  
This library provides a set of utilities for interfacing with LAM MPI.  
Line Manipulation Utilities  
This package provides a set of useful predicates to manipulate sequences of characters codes, usually first read in as a line.  
Apply a predicate to all arguments of a term  
Map List and Term Operations  
 
MATLAB Package Interface  
The MathWorks MATLAB is a widely used package for array processing.  
Matrix Library  
This package provides a fast implementation of multidimensional matrices of integers and floats.  
NonBacktrackable Data Structures  
The following routines implement wellknown datastructures using global nonbacktrackable variables (implemented on the Prolog stack)  
Ordered Sets  
The following ordered set manipulation routines are available once included with the use_module(library(ordsets)) command.  
Automating test generation  
This library aims at facilitating test generation in a logic program, namely when interfacing to foreign code.  
Queues  
The following queue manipulation routines are available once included with the use_module(library(queues)) command.  
Random Number Generator  
Since YAP4.3.19 YAP uses the O'Keefe publicdomain algorithm, based on the "Applied Statistics" algorithm AS183.  
RedBlack Trees  
Reading Lines and Files  
Read full lines and a full file in a single call.  
Regular Expressions  
This library includes routines to determine whether a regular expression matches part or all of a string.  
RangeList (RL) trees  
Splay Trees  
Splay trees are explained in the paper "Selfadjusting Binary Search
Trees", by D.D.  
Operating System Functionality  
Portable Interaction with the OS, be it Unix, Linux, OSX, or Windows.  
Utilities On Terms  
The next routines provide a set of commonly used utilities to manipulate terms.  
Calls With Timeout  
The time_out/3 command relies on the alarm/3 builtin to implement a call with a maximum time of execution.  
Updatable Binary Trees  
The following queue manipulation routines are available once included with the use_module(library(trees)) command.  
Trie DataStructure  
Engine Independent trie library.  
Unweighted Graphs  
The following graph manipulation routines are based in code originally written by Richard O'Keefe.  
Undirected Graphs  
The following graph manipulation routines use the redblack tree graph library to implement undirected graphs.  
Variabilize term.  
Weighted Directed Graphs  
Weighted Graphs  
Weighted Graph Processing Utilities.  
Weighted Undirected Graphs  
Yap PreProcessing  
Lowlevel access  
List Predicates in the Prolog Library  
SICStus compatible socket library  
uses SWI code  
class rannum/1 
@groupdef prandom Van Gelder Random Number Generator
% % The following code produces the same random numbers as my previous ranpkg.pl, but is more accurately documented and slightly more efficient
ranpkg.pl random number package Allen Van Gelder, Stanford % rannum produces a random nonnegative integer whose low bits are not all that random, so it should be scaled to a smaller range in general The integer is in the range 0 2^(w1)  1, where w is the word size available for integers, e.g., 18 for DEC10, and 16 or 32 for VAX and most IBM % ranunif produces a uniformly distributed nonnegative random integer over a callerspecified range If range is R, the result is in 0 R1 % ranstart must be called before the first use of rannum or ranunif, and may be called later to redefine the seed ranstart/0 causes a builtin seed to be used ranstart(N), N an integer, varies this, but the same N always produces the same sequence of numbers % According to my reading of Knuth, Vol 2, this generator has period 2^(w1) and potency w/2 , i.e., 8, 9, or 16 in practice Knuth says potency should be at least 5, so this looks more than adequate Its drawback is the lack of randomness of loworder bits
rannum( I)
Produces a random nonnegative integer I whose low bits are not all that random, so it should be scaled to a smaller range in general The integer I is in the range 0 2^(w1)  1 You can use:
to obtain a floating point number uniformly distributed between 0 and 1