509 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			509 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								%			SWI-Prolog document-style
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								% Test for PDF generation using pdflatex
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\usepackage{ifpdf}
							 | 
						|||
| 
								 | 
							
								%Old tex versions
							 | 
						|||
| 
								 | 
							
								%\newif\ifpdf
							 | 
						|||
| 
								 | 
							
								%\ifx\pdfoutput\undefined
							 | 
						|||
| 
								 | 
							
								%   \pdffalse
							 | 
						|||
| 
								 | 
							
								%\else
							 | 
						|||
| 
								 | 
							
								%   \pdfoutput=1
							 | 
						|||
| 
								 | 
							
								%   \pdftrue
							 | 
						|||
| 
								 | 
							
								%\fi
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								% Get hyperrefs to work
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\usepackage{makeidx}
							 | 
						|||
| 
								 | 
							
								\usepackage{url}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\ifpdf
							 | 
						|||
| 
								 | 
							
								  \usepackage[pdftex,colorlinks=true,urlcolor=blue]{hyperref}
							 | 
						|||
| 
								 | 
							
								  \pdfcompresslevel=9
							 | 
						|||
| 
								 | 
							
								%  \pdfcatalog{
							 | 
						|||
| 
								 | 
							
								%    /PageMode /UseOutLines
							 | 
						|||
| 
								 | 
							
								%  }
							 | 
						|||
| 
								 | 
							
								  \usepackage[pdftex]{graphicx}
							 | 
						|||
| 
								 | 
							
								  \DeclareGraphicsExtensions{.pdf,.jpg,.png}
							 | 
						|||
| 
								 | 
							
								\else
							 | 
						|||
| 
								 | 
							
								  \usepackage[dvips]{graphicx}
							 | 
						|||
| 
								 | 
							
								  \DeclareGraphicsExtensions{.eps,.ps}
							 | 
						|||
| 
								 | 
							
								\fi
							 | 
						|||
| 
								 | 
							
								\graphicspath{{figs/}{./}}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								%	Other styles
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\usepackage{a4wide}
							 | 
						|||
| 
								 | 
							
								\usepackage{longtable}
							 | 
						|||
| 
								 | 
							
								\usepackage{ifthen}
							 | 
						|||
| 
								 | 
							
								\usepackage{dcolumn}
							 | 
						|||
| 
								 | 
							
								\usepackage{calc}
							 | 
						|||
| 
								 | 
							
								\setlongtables
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\catcode`\^^A=8% downarrow are for subscripts
							 | 
						|||
| 
								 | 
							
								\catcode`\_=\active
							 | 
						|||
| 
								 | 
							
								\def_{\ifmmode\else\_\fi}
							 | 
						|||
| 
								 | 
							
								\def\vobeyspaces{\@vobeyspaces}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\newcommand{\onlinebreak}{}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								%	References
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\newcommand{\secref}[1]{section~\ref{sec:#1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\appref}[1]{appendix~\ref{sec:#1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\chapref}[1]{chapter~\ref{sec:#1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\figref}[1]{figure~\ref{fig:#1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\tabref}[1]{table~\ref{tab:#1}}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\newcommand{\Secref}[1]{Section~\ref{sec:#1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\Appref}[1]{Appendix~\ref{sec:#1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\Chapref}[1]{Chapter~\ref{sec:#1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\Figref}[1]{Figure~\ref{fig:#1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\Tabref}[1]{Table~\ref{tab:#1}}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\newcommand{\tm}{$^{tm}$}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\newcommand{\reffont}{\tt}
							 | 
						|||
| 
								 | 
							
								\newcommand{\predref}[2]{%		% functor/arity
							 | 
						|||
| 
								 | 
							
									\mbox{\reffont #1/#2}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\dcgref}[2]{%		% functor//arity
							 | 
						|||
| 
								 | 
							
									\mbox{\reffont #1//#2}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\qpredref}[3]{%		% module:functor/arity
							 | 
						|||
| 
								 | 
							
									\mbox{\reffont #1:#2/#3}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\qdcgref}[3]{%		% module:functor//arity
							 | 
						|||
| 
								 | 
							
									\mbox{\reffont #1:#2//#3}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\nopredref}[2]{%		% functor/arity (external)
							 | 
						|||
| 
								 | 
							
									\mbox{\reffont #1/#2}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\functor}[2]{%		% functor/arity (no predicate)
							 | 
						|||
| 
								 | 
							
									\mbox{\reffont #1/#2}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\manref}[2]{%		% page(n)
							 | 
						|||
| 
								 | 
							
									\mbox{{\reffont #1(}{\rm #2}{\tt )}}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\funcref}[2]{%		% function(Args...)
							 | 
						|||
| 
								 | 
							
									\mbox{{\reffont #1(}{\it #2}{\tt )}}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\prologflag}[1]{%
							 | 
						|||
| 
								 | 
							
									\mbox{\reffont #1}}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								%	Descriptions (definitions) of various things
							 | 
						|||
| 
								 | 
							
								%	Note: I do not know where the 1ex comes from. This should fit
							 | 
						|||
| 
								 | 
							
								%	exactly, but appearently some dimension is missing.  I suspect
							 | 
						|||
| 
								 | 
							
								%	a space creaping in somewhere.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\def\@nodescription{false}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\newcommand{\defentry}[1]{\definition{#1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\definition}[1]{%
							 | 
						|||
| 
								 | 
							
									\onlinebreak%
							 | 
						|||
| 
								 | 
							
									\ifthenelse{\equal{\@nodescription}{true}}{%
							 | 
						|||
| 
								 | 
							
									    \def\@nodescription{false}%
							 | 
						|||
| 
								 | 
							
									    \makebox[-\leftmargin]{\mbox{}}\makebox[\linewidth+\leftmargin-1ex][l]{\bf #1}\\}{%
							 | 
						|||
| 
								 | 
							
									    \item[{\makebox[\linewidth+\leftmargin-1ex][l]{#1}}]}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\nodescription}{\def\@nodescription{true}}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\makeatletter
							 | 
						|||
| 
								 | 
							
								\def\cmdlineoptionitem{\@ifstar{\@gluedcmdoptitem}{\@cmdoptitem}}
							 | 
						|||
| 
								 | 
							
								\def\@gluedcmdoptitem#1#2{\definition{\texttt{#1}\var{#2}}}
							 | 
						|||
| 
								 | 
							
								\def\@cmdoptitem#1#2{\definition{\texttt{#1} \var{#2}}}
							 | 
						|||
| 
								 | 
							
								\makeatother
							 | 
						|||
| 
								 | 
							
								\newcommand{\longoptionitem}[2]{%
							 | 
						|||
| 
								 | 
							
									\ifthenelse{\equal{}{#2}}{%
							 | 
						|||
| 
								 | 
							
									    \definition{-{}-#1}}{%
							 | 
						|||
| 
								 | 
							
									    \definition{-{}-#1={\it #2}}}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\newcommand{\longoption}[2]{%
							 | 
						|||
| 
								 | 
							
									\ifthenelse{\equal{}{#2}}{%
							 | 
						|||
| 
								 | 
							
									    \mbox{\reffont -{}-#1}}{%
							 | 
						|||
| 
								 | 
							
									    \mbox{\reffont -{}-#1={\it #2}}}}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\newcommand{\traceoption}[3]{%
							 | 
						|||
| 
								 | 
							
									\definition{{\tt #1} (#2)}#3%
							 | 
						|||
| 
								 | 
							
									\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\newcommand{\pleaseoption}[3]{%
							 | 
						|||
| 
								 | 
							
									\definition{#1 {\it #2} {\rm(default: \it #3)}}%
							 | 
						|||
| 
								 | 
							
									\ignorespaces}
							 | 
						|||
| 
								 | 
							
								%\prologflagitem{Name}{Type}{Access}
							 | 
						|||
| 
								 | 
							
								\newcommand{\prologflagitem}[3]{%
							 | 
						|||
| 
								 | 
							
									\definition{#1 {\it (#2%
							 | 
						|||
| 
								 | 
							
									    \ifthenelse{\equal{rw}{#3}}{, changeable}{})}}%
							 | 
						|||
| 
								 | 
							
									\index{flag:#1}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\newcommand{\escapeitem}[1]{%
							 | 
						|||
| 
								 | 
							
									\definition{\Sesc{\tt #1}}
							 | 
						|||
| 
								 | 
							
									\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\newcommand{\fmtchar}[1]{%
							 | 
						|||
| 
								 | 
							
									\item[\tt #1]%
							 | 
						|||
| 
								 | 
							
									\ignorespaces}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								%	\directive{Name}{Arity}{Args}
							 | 
						|||
| 
								 | 
							
								%	\predicate[Attibutes]{Name}{Arity}{Args}
							 | 
						|||
| 
								 | 
							
								%	\infixop{Name}{Left}{Right}
							 | 
						|||
| 
								 | 
							
								%	\prefixop{Name}{Right}
							 | 
						|||
| 
								 | 
							
								%	\dcg[Attibutes]{Name}{Arity}{Args}
							 | 
						|||
| 
								 | 
							
								%
							 | 
						|||
| 
								 | 
							
								%	Predicate   descriptions.   Must   appear   in   a   description
							 | 
						|||
| 
								 | 
							
								%	environment.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\newcommand{\resitem}[1]{%
							 | 
						|||
| 
								 | 
							
									\defentry{#1}%
							 | 
						|||
| 
								 | 
							
									\index{#1}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\makeatletter
							 | 
						|||
| 
								 | 
							
								\def\predatt#1{\hfill{\it\footnotesize[#1]}}
							 | 
						|||
| 
								 | 
							
								\def\predicate{\@ifnextchar[{\@attpredicate}{\@predicate}}
							 | 
						|||
| 
								 | 
							
								\def\qpredicate{\@ifnextchar[{\@attqpredicate}{\@qpredicate}}
							 | 
						|||
| 
								 | 
							
								\def\@predicate#1#2#3{%
							 | 
						|||
| 
								 | 
							
									\ifthenelse{\equal{#2}{0}}{%
							 | 
						|||
| 
								 | 
							
									    \defentry{#1}}{%
							 | 
						|||
| 
								 | 
							
									    \defentry{#1({\it #3})}}%
							 | 
						|||
| 
								 | 
							
									\index{#1/#2}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\def\@attpredicate[#1]#2#3#4{%
							 | 
						|||
| 
								 | 
							
									\ifthenelse{\equal{#3}{0}}{%
							 | 
						|||
| 
								 | 
							
									    \defentry{#2\predatt{#1}}}{%
							 | 
						|||
| 
								 | 
							
									    \defentry{#2({\it #4})\predatt{#1}}}%
							 | 
						|||
| 
								 | 
							
									\index{#2/#3}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\def\@qpredicate#1#2#3#4{%
							 | 
						|||
| 
								 | 
							
									\ifthenelse{\equal{#3}{0}}{%
							 | 
						|||
| 
								 | 
							
									    \defentry{#1:#2}}{%
							 | 
						|||
| 
								 | 
							
									    \defentry{#1:#2({\it #4})}}%
							 | 
						|||
| 
								 | 
							
									\index{#1/#2}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\def\@attqpredicate[#1]#2#3#4#5{%
							 | 
						|||
| 
								 | 
							
									\ifthenelse{\equal{#4}{0}}{%
							 | 
						|||
| 
								 | 
							
									    \defentry{#2:#3\predatt{#1}}}{%
							 | 
						|||
| 
								 | 
							
									    \defentry{#2:#3({\it #5})\predatt{#1}}}%
							 | 
						|||
| 
								 | 
							
									\index{#2/#3}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\def\directive{\@ifnextchar[{\@attdirective}{\@directive}}
							 | 
						|||
| 
								 | 
							
								\def\@directive#1#2#3{%
							 | 
						|||
| 
								 | 
							
									\ifthenelse{\equal{#2}{0}}{%
							 | 
						|||
| 
								 | 
							
									    \defentry{:- #1}}{%
							 | 
						|||
| 
								 | 
							
									    \defentry{:- #1({\it #3})}}%
							 | 
						|||
| 
								 | 
							
									\index{#1/#2}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\def\@attdirective[#1]#2#3#4{%
							 | 
						|||
| 
								 | 
							
									\ifthenelse{\equal{#3}{0}}{%
							 | 
						|||
| 
								 | 
							
									    \defentry{:- #2\predatt{#1}}}{%
							 | 
						|||
| 
								 | 
							
									    \defentry{:- #2({\it #4})\predatt{#1}}}%
							 | 
						|||
| 
								 | 
							
									\index{#2/#3}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\def\dcg{\@ifnextchar[{\@attdcg}{\@dcg}}
							 | 
						|||
| 
								 | 
							
								\def\@dcg#1#2#3{%
							 | 
						|||
| 
								 | 
							
									\ifthenelse{\equal{#2}{0}}{%
							 | 
						|||
| 
								 | 
							
									    \defentry{#1}}{%
							 | 
						|||
| 
								 | 
							
									    \defentry{#1({\it #3}) \texttt{//}}}%
							 | 
						|||
| 
								 | 
							
									\index{#1/#2}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\def\@attdcg[#1]#2#3#4{%
							 | 
						|||
| 
								 | 
							
									\ifthenelse{\equal{#3}{0}}{%
							 | 
						|||
| 
								 | 
							
									    \defentry{#2 \texttt{//}\predatt{#1}}}{%
							 | 
						|||
| 
								 | 
							
									    \defentry{#2({\it #4}) \texttt{//}\predatt{#1}}}%
							 | 
						|||
| 
								 | 
							
									\index{#2//#3}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\def\infixop{\@ifnextchar[{\@attinfixop}{\@infixop}}
							 | 
						|||
| 
								 | 
							
								\def\@infixop#1#2#3{%
							 | 
						|||
| 
								 | 
							
									\defentry{{\it #2} #1 {\it #3}}%
							 | 
						|||
| 
								 | 
							
									\index{#1/2}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\def\@attinfixop[#1]#2#3#4{%
							 | 
						|||
| 
								 | 
							
									\defentry{{\it #3} #2 {\it #4}\predatt{#1}}%
							 | 
						|||
| 
								 | 
							
									\index{#2/2}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\def\prefixop{\@ifnextchar[{\@attprefixop}{\@prefixop}}
							 | 
						|||
| 
								 | 
							
								\def\@prefixop#1#2{%
							 | 
						|||
| 
								 | 
							
									\defentry{#1 {\it #2}}%
							 | 
						|||
| 
								 | 
							
									\index{#1/1}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\def\@attprefixop[#1]#2#3{%
							 | 
						|||
| 
								 | 
							
									\defentry{#2 {\it #3}\predatt{#1}}%
							 | 
						|||
| 
								 | 
							
									\index{#2/1}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\makeatother
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								%	\termitem{functor}{Args}
							 | 
						|||
| 
								 | 
							
								%	\infixtermitem{functor}{Left}{Right}
							 | 
						|||
| 
								 | 
							
								%	\prefixtermitem{functor}{Right}
							 | 
						|||
| 
								 | 
							
								%	\postfixtermitem{functor}{Left}
							 | 
						|||
| 
								 | 
							
								%
							 | 
						|||
| 
								 | 
							
								%	Terms in description lists. Typically used to describe various
							 | 
						|||
| 
								 | 
							
								%	possible values or types for a term.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\newcommand{\termitem}[2]{%
							 | 
						|||
| 
								 | 
							
									\ifthenelse{\equal{}{#2}}{%
							 | 
						|||
| 
								 | 
							
									    \definition{#1}}{%
							 | 
						|||
| 
								 | 
							
									    \definition{#1({\it #2})}}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\newcommand{\infixtermitem}[3]{%
							 | 
						|||
| 
								 | 
							
									    \definition{{\it #2} #1 {\it #3}}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\newcommand{\prefixtermitem}[2]{%
							 | 
						|||
| 
								 | 
							
									    \definition{#1 {\it #2}}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\newcommand{\postfixtermitem}[2]{%
							 | 
						|||
| 
								 | 
							
									    \definition{{\it #2} #1}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								%	\term{functor}{Args}
							 | 
						|||
| 
								 | 
							
								%	\infixterm{functor}{Left}{Right}
							 | 
						|||
| 
								 | 
							
								%	\prefixterm{functor}{Right}
							 | 
						|||
| 
								 | 
							
								%	\postfixterm{functor}{Left}
							 | 
						|||
| 
								 | 
							
								%
							 | 
						|||
| 
								 | 
							
								%	Terms used in running text.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\def\term{}
							 | 
						|||
| 
								 | 
							
								\renewcommand{\term}[2]{%
							 | 
						|||
| 
								 | 
							
									\ifthenelse{\equal{\protect}{\protect#2}}{%
							 | 
						|||
| 
								 | 
							
									    {\reffont #1}}{%
							 | 
						|||
| 
								 | 
							
									    {\reffont #1}({\it #2})}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\infixterm}[3]{{\it #2} #1 {\it #3}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\prefixterm}[2]{#1 {\it #2}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\postfixterm}[2]{{\it #2} #1}
							 | 
						|||
| 
								 | 
							
								\newcommand{\errorterm}[2]{\mbox{\tt%
							 | 
						|||
| 
								 | 
							
									\ifthenelse{\equal{}{#2}}{%
							 | 
						|||
| 
								 | 
							
									    #1}{%
							 | 
						|||
| 
								 | 
							
									    #1(#2)}}}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\newcommand{\cfunction}[3]{%
							 | 
						|||
| 
								 | 
							
									\defentry{{\tt #1} #2{\rm (}{\it #3}{\rm )}}%
							 | 
						|||
| 
								 | 
							
									\index{#2()}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\newcommand{\constructor}[2]{%
							 | 
						|||
| 
								 | 
							
									\defentry{#1::#1{\rm (}{\it #2}{\rm )}}%
							 | 
						|||
| 
								 | 
							
									\index{#1::#1()}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\newcommand{\destructor}[1]{%
							 | 
						|||
| 
								 | 
							
									\defentry{#1::\Stilde{}#1{\rm ()}}%
							 | 
						|||
| 
								 | 
							
									\index{#1::\Stilde{}#1()}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\newcommand{\cppcast}[2]{%
							 | 
						|||
| 
								 | 
							
									\defentry{#1::operator #2{\rm ({\it void})}}%
							 | 
						|||
| 
								 | 
							
									\index{#1::operator #2()}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\newcommand{\cdecl}[2]{{\tt #1} {\em #2}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\cmacro}[3]{%
							 | 
						|||
| 
								 | 
							
									\defentry{{\it #1} #2({\it #3})}%
							 | 
						|||
| 
								 | 
							
									\index{#2()}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\newcommand{\constitem}[1]{%
							 | 
						|||
| 
								 | 
							
									\definition{#1}%
							 | 
						|||
| 
								 | 
							
									\index{#1}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\newcommand{\cglobalvar}[1]{{\tt #1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\classitem}[1]{%
							 | 
						|||
| 
								 | 
							
									\definition{Class #1}%
							 | 
						|||
| 
								 | 
							
									\index{#1 \string\idxtype{class}}\ignorespaces}
							 | 
						|||
| 
								 | 
							
								\newcommand{\menuitem}[2]{%
							 | 
						|||
| 
								 | 
							
									\ifthenelse{\equal{\protect}{\protect#2}}{%
							 | 
						|||
| 
								 | 
							
									    \definition{\textsf #1}}{%
							 | 
						|||
| 
								 | 
							
									    \definition{\textsf #1 ({\it #2})}}%
							 | 
						|||
| 
								 | 
							
									\index{#1 \string\idxtype{menu}}%
							 | 
						|||
| 
								 | 
							
									\ignorespaces}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								%	\tag{Keyword}
							 | 
						|||
| 
								 | 
							
								%
							 | 
						|||
| 
								 | 
							
								%	PlDoc @keyword expansion.  \mtag{Keyword} is a multi-valued tag
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\newcommand{\tag}[1]{%
							 | 
						|||
| 
								 | 
							
									\item[#1]}
							 | 
						|||
| 
								 | 
							
								\newcommand{\mtag}[1]{%
							 | 
						|||
| 
								 | 
							
									\item[#1]\mbox{}\\}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\newcommand{\bnfmeta}[1]{\ifmmode{\langle\mbox{\it #1}\rangle}\else$\langle\mbox{\it #1}\rangle$\fi}
							 | 
						|||
| 
								 | 
							
								\newcommand{\bnfor}{\ifmmode\mid\else$\mid$\fi}
							 | 
						|||
| 
								 | 
							
								\newcommand{\isa}{& ::= &}
							 | 
						|||
| 
								 | 
							
								\newcommand{\ora}{& $\mid$ &}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\renewcommand{\arg}[1]{\ifmmode\mbox{\em #1}\else{\it #1}\fi}
							 | 
						|||
| 
								 | 
							
								\newcommand{\class}[1]{{\em #1}\index{#1 \string\idxtype{class}}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\classs}[1]{{\em #1s}\index{#1 \string\idxtype{class}}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\demo}[1]{{\sf #1}\index{#1 \string\idxtype{demo}}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\pllib}[1]{{\texttt{#1}}\index{#1 \string\idxtype{library}}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\clib}[1]{{\tt #1}\index{#1 \string\idxtype{library}}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\tool}[1]{{\em #1}\index{#1 \string\idxtype{tool}}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\menuref}[1]{\textsf{#1}\index{#1 \string\idxtype{menu}}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\constf}[1]{{\reffont #1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\const}[1]{{\tt #1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\plflag}[1]{{\tt #1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\type}[1]{{\reffont #1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\idx}[1]{#1\index{#1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\foreseen}[1]{\footnote{#1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\metafile}[1]{\mbox{\tt #1}}
							 | 
						|||
| 
								 | 
							
								\newcommand\file{\begingroup \urlstyle{tt}\Url}
							 | 
						|||
| 
								 | 
							
								\newcommand\email{\begingroup \urlstyle{tt}\Url}
							 | 
						|||
| 
								 | 
							
								\newcommand{\env}[1]{\mbox{\tt #1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\except}[1]{\mbox{\tt #1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\exam}[1]{\mbox{\tt #1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\module}[1]{\mbox{\reffont #1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\fileext}[1]{\mbox{\texttt{.#1}}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\option}[1]{\mbox{\tt #1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\resource}[1]{\mbox{\reffont #1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\cmdlineoption}[1]{\mbox{\tt #1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\argoption}[2]{\mbox{\tt #1 \em #2}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\ctype}[1]{{\texttt{#1}}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\op}[1]{{\tt #1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\program}[1]{\texttt{#1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\manpage}[2]{{\bf #1}(#2)}
							 | 
						|||
| 
								 | 
							
								\newcommand{\chr}[1]{{\tt #1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\jargon}[1]{{\em #1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\strong}[1]{{\bf #1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\texcmd}[1]{{\Sesc}{\tt #1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\texenv}[1]{{\tt #1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\texmode}[1]{{\tt #1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\HTML}[1]{{\bf #1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\libdoc}[2]{\section{\pllib{#1}: #2}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\key}[1]{{\sf #1}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\menu}[2]{%
							 | 
						|||
| 
								 | 
							
									{\sf #1}%
							 | 
						|||
| 
								 | 
							
									\ifthenelse{\equal{#2}{}}{%
							 | 
						|||
| 
								 | 
							
									    }{%
							 | 
						|||
| 
								 | 
							
									    ~(\texttt{#2})}}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\newcommand\satom{\begingroup \urlstyle{tt}\Url}
							 | 
						|||
| 
								 | 
							
								\newcommand\fmtseq{\begingroup \urlstyle{tt}\Url}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\urldef{\Sexe}\satom{#!}		% #!
							 | 
						|||
| 
								 | 
							
								\urldef{\Scgt}\satom{#>}		% #>
							 | 
						|||
| 
								 | 
							
								\urldef{\Scge}\satom{#>=}		% #>=
							 | 
						|||
| 
								 | 
							
								\urldef{\Sclt}\satom{#<}		% #<
							 | 
						|||
| 
								 | 
							
								\urldef{\Scle}\satom{#=<}		% #=<
							 | 
						|||
| 
								 | 
							
								\urldef{\Sceq}\satom{#=}		% #=
							 | 
						|||
| 
								 | 
							
								\urldef{\Scne}\satom{#\=}		% #\=
							 | 
						|||
| 
								 | 
							
								\urldef{\Scnot}\satom{#\}		% #\
							 | 
						|||
| 
								 | 
							
								\urldef{\Scor}\satom{#\/}		% #\/
							 | 
						|||
| 
								 | 
							
								\urldef{\Scand}\satom{#/\}		% #/\
							 | 
						|||
| 
								 | 
							
								\urldef{\Sequiv}\satom{#<=>}            % #<=>
							 | 
						|||
| 
								 | 
							
								\urldef{\Slimpl}\satom{#<=}             % #<=
							 | 
						|||
| 
								 | 
							
								\urldef{\Srimpl}\satom{#=>}             % #=>
							 | 
						|||
| 
								 | 
							
								\urldef{\Slimplies}\satom{#<==}         % #<==
							 | 
						|||
| 
								 | 
							
								\urldef{\Srimplies}\satom{#==>}         % #==>
							 | 
						|||
| 
								 | 
							
								\urldef{\Scequal}\satom{#<==>}          % #<==>
							 | 
						|||
| 
								 | 
							
								\urldef{\Scieq}\satom{#=:=}		% #=:=
							 | 
						|||
| 
								 | 
							
								\urldef{\Scine}\satom{#=\=}		% #=\=
							 | 
						|||
| 
								 | 
							
								\urldef{\Scut}\satom{!}			% !
							 | 
						|||
| 
								 | 
							
								\urldef{\Scomma}\satom{,}		% ,
							 | 
						|||
| 
								 | 
							
								\urldef{\Sifthen}\satom{->}		% ->
							 | 
						|||
| 
								 | 
							
								\urldef{\Ssoftcut}\satom{*->} 		% *->
							 | 
						|||
| 
								 | 
							
								\urldef{\Sdot}\satom{.} 		% .
							 | 
						|||
| 
								 | 
							
								\urldef{\Ssemicolon}\satom{;} 		% ;
							 | 
						|||
| 
								 | 
							
								\urldef{\Slt}\satom{<} 			% <
							 | 
						|||
| 
								 | 
							
								\urldef{\Sxor}\satom{><} 		% ><
							 | 
						|||
| 
								 | 
							
								\urldef{\Seq}\satom{=} 			% =
							 | 
						|||
| 
								 | 
							
								\urldef{\Suniv}\satom{=..} 		% =..
							 | 
						|||
| 
								 | 
							
								\urldef{\Saeq}\satom{=:=} 		% =:=
							 | 
						|||
| 
								 | 
							
								\urldef{\Sle}\satom{=<} 		% =<
							 | 
						|||
| 
								 | 
							
								\urldef{\Sel}\satom{<=} 		% <=
							 | 
						|||
| 
								 | 
							
								\urldef{\Sequal}\satom{==} 		% ==
							 | 
						|||
| 
								 | 
							
								\urldef{\Sstructeq}\satom{=@=} 		% =@=
							 | 
						|||
| 
								 | 
							
								\urldef{\Sstructneq}\satom{\=@=} 	% \=@=
							 | 
						|||
| 
								 | 
							
								\urldef{\Sane}\satom{=\=} 		% =\=
							 | 
						|||
| 
								 | 
							
								\urldef{\Sgt}\satom{>} 			% >
							 | 
						|||
| 
								 | 
							
								\urldef{\Sge}\satom{>=} 		% >=
							 | 
						|||
| 
								 | 
							
								\urldef{\Stlt}\satom{@<} 		% @<
							 | 
						|||
| 
								 | 
							
								\urldef{\Stle}\satom{@=<} 		% @=<
							 | 
						|||
| 
								 | 
							
								\urldef{\Stgt}\satom{@>} 		% @>
							 | 
						|||
| 
								 | 
							
								\urldef{\Stge}\satom{@>=} 		% @>=
							 | 
						|||
| 
								 | 
							
								\urldef{\Snot}\satom{\+} 		% \+
							 | 
						|||
| 
								 | 
							
								\urldef{\Sne}\satom{\=} 		% \=
							 | 
						|||
| 
								 | 
							
								\urldef{\Snequal}\satom{\==} 		% \==
							 | 
						|||
| 
								 | 
							
								\urldef{\Shat}\satom{^} 		% ^
							 | 
						|||
| 
								 | 
							
								\urldef{\Sbar}\satom{|} 		% |
							 | 
						|||
| 
								 | 
							
								\urldef{\Stimes}\satom{*}		% *
							 | 
						|||
| 
								 | 
							
								\urldef{\Spow}\satom{**}		% **
							 | 
						|||
| 
								 | 
							
								\urldef{\Splus}\satom{+}		% +
							 | 
						|||
| 
								 | 
							
								\urldef{\Sminus}\satom{-}		% -
							 | 
						|||
| 
								 | 
							
								\urldef{\Sdiv}\satom{/}			% /
							 | 
						|||
| 
								 | 
							
								\urldef{\Sidiv}\satom{//}		% //
							 | 
						|||
| 
								 | 
							
								\urldef{\Sand}\satom{/\}		% /\
							 | 
						|||
| 
								 | 
							
								\urldef{\Slshift}\satom{<<}		% <<
							 | 
						|||
| 
								 | 
							
								\urldef{\Srshift}\satom{>>}		% >>
							 | 
						|||
| 
								 | 
							
								\urldef{\Sneg}\satom{\}			% \
							 | 
						|||
| 
								 | 
							
								\urldef{\Sesc}\satom{\}			% \
							 | 
						|||
| 
								 | 
							
								\urldef{\Sor}\satom{\/}			% \/
							 | 
						|||
| 
								 | 
							
								\urldef{\Sdollar}\satom{$}		% $
							 | 
						|||
| 
								 | 
							
								\urldef{\Squest}\satom{?}		% ?
							 | 
						|||
| 
								 | 
							
								\urldef{\Smodule}\satom{:}		% :
							 | 
						|||
| 
								 | 
							
								\urldef{\Sneck}\satom{:-}		% :-
							 | 
						|||
| 
								 | 
							
								\urldef{\Sdirective}\satom{?-}		% ?-
							 | 
						|||
| 
								 | 
							
								\urldef{\Sdcg}\satom{-->}		% -->
							 | 
						|||
| 
								 | 
							
								\urldef{\Bc}\satom{\c}			% \c
							 | 
						|||
| 
								 | 
							
								\urldef{\Bn}\satom{\n}			% \n
							 | 
						|||
| 
								 | 
							
								\urldef{\Br}\satom{\r}			% \r
							 | 
						|||
| 
								 | 
							
								\urldef{\Bl}\satom{\l}			% \l
							 | 
						|||
| 
								 | 
							
								\urldef{\BB}\satom{\\}			% \\
							 | 
						|||
| 
								 | 
							
								\urldef{\Stilde}\satom{~}		% ~
							 | 
						|||
| 
								 | 
							
								\urldef{\Spercent}\satom{%}		% %
							 | 
						|||
| 
								 | 
							
								\urldef{\Shash}\satom{#}		% #
							 | 
						|||
| 
								 | 
							
								\urldef{\Scurl}\satom{{}}		% {}
							 | 
						|||
| 
								 | 
							
								\urldef{\SxXX}\satom{xXX..\}		% xXX..\
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\newcommand{\bug}[1]{\footnote{BUG: #1}}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\newcommand{\mod}[2]{#1 \mbox{\rm mod} #2}
							 | 
						|||
| 
								 | 
							
								\newcommand{\rem}[2]{#1 \mbox{\rm rem} #2}
							 | 
						|||
| 
								 | 
							
								\newcommand{\pow}[2]{{#1}^{#2}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\bsl}[0]{\Sesc}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								%	Index handling
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\newcommand{\idxtype}[1]{{\small\em #1}}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								%	Prolog predicate summary
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\newenvironment{summarylist}[1]{\begin{longtable}[l]{#1}}{\end{longtable}}
							 | 
						|||
| 
								 | 
							
								\newcommand{\predicatesummary}[3]{#1/#2 & #3 \\}
							 | 
						|||
| 
								 | 
							
								\newcommand{\oppredsummary}[5]{#1/#2 & #5 \\}
							 | 
						|||
| 
								 | 
							
								\newcommand{\functionsummary}[3]{#1/#2 & #3 \\}
							 | 
						|||
| 
								 | 
							
								\newcommand{\opfuncsummary}[5]{#1/#2 & #5 \\}
							 | 
						|||
| 
								 | 
							
								\newcommand{\opsummary}[4]{#3 & #1 & #2 & #4 \\}
							 | 
						|||
| 
								 | 
							
								\newcommand{\hook}[1]{(hook)}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
							 | 
						|||
| 
								 | 
							
								%			CODE environment			%
							 | 
						|||
| 
								 | 
							
								%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\usepackage{fancyvrb}
							 | 
						|||
| 
								 | 
							
								\usepackage{color}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								%\definecolor{codeboxcolor}{rgb}{0.7,0.7,0.7}
							 | 
						|||
| 
								 | 
							
								\definecolor{codeboxcolor}{rgb}{0.4,0.4,0.4}
							 | 
						|||
| 
								 | 
							
								\DefineVerbatimEnvironment%
							 | 
						|||
| 
								 | 
							
								  {code}{Verbatim}
							 | 
						|||
| 
								 | 
							
								  {frame=single,
							 | 
						|||
| 
								 | 
							
								   framerule=0.2pt,
							 | 
						|||
| 
								 | 
							
								   rulecolor=\color{codeboxcolor},
							 | 
						|||
| 
								 | 
							
								  }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
							 | 
						|||
| 
								 | 
							
								%			INCLUDE FIGURES				%
							 | 
						|||
| 
								 | 
							
								%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								%	PostScript figures
							 | 
						|||
| 
								 | 
							
								%	\postscriptfig[width=5in]{label}{Title}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\makeatletter
							 | 
						|||
| 
								 | 
							
								\def\postscriptfig{\@ifnextchar[{\@scaledpostscriptfig}{\@postscriptfig}}
							 | 
						|||
| 
								 | 
							
								\def\@scaledpostscriptfig[#1]#2#3{%
							 | 
						|||
| 
								 | 
							
									\begin{figure}%
							 | 
						|||
| 
								 | 
							
									    \centerline{\includegraphics[#1]{#2}}
							 | 
						|||
| 
								 | 
							
									    \caption{#3}
							 | 
						|||
| 
								 | 
							
									    \label{fig:#2}
							 | 
						|||
| 
								 | 
							
									\end{figure}}
							 | 
						|||
| 
								 | 
							
								\def\@postscriptfig#1#2{%
							 | 
						|||
| 
								 | 
							
									\begin{figure}%
							 | 
						|||
| 
								 | 
							
									    \centerline{\includegraphics{#1}}
							 | 
						|||
| 
								 | 
							
									    \caption{#2}
							 | 
						|||
| 
								 | 
							
									    \label{fig:#1}
							 | 
						|||
| 
								 | 
							
									\end{figure}}
							 | 
						|||
| 
								 | 
							
								\makeatother
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								%	\begin{tabularlp}{longest-text}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\newlength{\tabDright}
							 | 
						|||
| 
								 | 
							
								\newlength{\tabDleft}
							 | 
						|||
| 
								 | 
							
								\newcommand{\PreserveBackslash}[1]{\let\temp=\\#1\let\\=\temp}
							 | 
						|||
| 
								 | 
							
								\newcommand{\raggedrightcolumn}{\PreserveBackslash\raggedright\hspace{0pt}}
							 | 
						|||
| 
								 | 
							
								\newenvironment{tabularlp}[1]%
							 | 
						|||
| 
								 | 
							
									{\settowidth{\tabDleft}{#1}%
							 | 
						|||
| 
								 | 
							
									 \setlength{\tabDright}{\linewidth-\columnsep*3-\tabDleft}%
							 | 
						|||
| 
								 | 
							
									 \begin{tabular}{|p{\tabDleft}|>{\raggedrightcolumn}p{\tabDright}|}}%
							 | 
						|||
| 
								 | 
							
									{\end{tabular}}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								%	\begin{tags} ... \end{tags}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\newenvironment{tags}%
							 | 
						|||
| 
								 | 
							
									{\begin{quote}\begin{description}%
							 | 
						|||
| 
								 | 
							
										\setlength{\itemsep}{0pt}%
							 | 
						|||
| 
								 | 
							
										\footnotesize}%
							 | 
						|||
| 
								 | 
							
									{\end{description}\end{quote}}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								%	\begin{parameters} ... \end{parameters}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								\newenvironment{parameters}%
							 | 
						|||
| 
								 | 
							
									{\par%
							 | 
						|||
| 
								 | 
							
									 \makebox[\linewidth]{\hfill\footnotesize Parameters}
							 | 
						|||
| 
								 | 
							
									 \begin{tabular*}{\linewidth}{lp{0.7\linewidth}}
							 | 
						|||
| 
								 | 
							
									 \hline}%
							 | 
						|||
| 
								 | 
							
									{\end{tabular*}}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 |