Final version as submitted.

git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1901 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
kostis 2007-06-09 15:47:30 +00:00
parent 85ba8812a3
commit 93e64a9358
1 changed files with 8 additions and 12 deletions

View File

@ -92,7 +92,7 @@
\authorrunning{V. Santos Costa, K. Sagonas and R. Lopes}
\institute{
University of Porto, Portugal
LIACC- DCC/FCUP, University of Porto, Portugal
\and
National Technical University of Athens, Greece
}
@ -184,13 +184,13 @@ remarks.
% Indexing in Prolog systems:
Many Prolog systems still only support
indexing on the main functor symbol of the first argument. Some
others, like YAP version 4, can look inside some compound
others, such as YAP version 4, can look inside some compound
terms~\cite{YAP}. SICStus Prolog supports \emph{shallow
backtracking}~\cite{ShallowBacktracking@ICLP-89}; choice points are
fully populated only when it is certain that execution will enter the
clause body. While shallow backtracking avoids some of the performance
problems of unnecessary choice point creation, it does not offer the
full benefits that indexing can provide. Other systems like
full benefits that indexing can provide. Other systems such as
BIM-Prolog~\cite{IndexingProlog@NACLP-89}, SWI-Prolog~\cite{SWI} and
XSB~\cite{XSB} allow for user-controlled multi-argument indexing.
Notably, ilProlog~\cite{ilProlog} uses compile-time heuristics and
@ -229,7 +229,7 @@ Nevertheless, it is true that unless the modes of
predicates are known we run the risk of doing indexing on output
arguments, whose only effect is an unnecessary increase in compilation
times and, more importantly, in code size. In a programming language
like Mercury~\cite{Mercury@JLP-96} where modes are known the compiler
such as Mercury~\cite{Mercury@JLP-96} where modes are known the compiler
can of course avoid this risk; indeed in Mercury modes (and types) are
used to guide the compiler generate good indexing tables. However, the
situation is different for a language like Prolog. Getting accurate
@ -239,7 +239,7 @@ do not come with one. More importantly, it requires a lot of
discipline from the programmer (e.g., that applications use the module
system religiously and never bypass it). As a result, most Prolog
systems currently do not provide the type of indexing that
applications require. Even in systems like Ciao~\cite{Ciao@SCP-05},
applications require. Even in systems such as Ciao~\cite{Ciao@SCP-05},
which do come with a built-in static analyzer and more or less force
such a discipline on the programmer, mode information is not used for
multi-argument indexing.
@ -846,7 +846,7 @@ The observant reader has no doubt noticed that
Algorithm~\ref{alg:construction} provides multi-argument indexing but
only for the main functor symbol. For clauses with compound terms that
require indexing in their sub-terms we can either employ a program
transformation like \emph{unification
transformation such as \emph{unification
factoring}~\cite{UnifFact@POPL-95} at compile time or modify the
algorithm to consider index positions inside compound terms. This is
relatively easy to do but requires support from the register allocator
@ -933,11 +933,6 @@ table thus is killed in several steps:
\item Walk the table and release any references it may hold.
\item Physically recover space.
\end{enumerate}
%% It is interesting to observe that at the end of an \emph{itemset-node}
%% the emulator can remove references to the current index, hence freeing
%% the code it is currently executing. This happens on the last member of
%% the \emph{itemset-node}, so the emulator reads all the instruction's
%% arguments before executing the instruction.
\section{Implementation in XXX and in YAP} \label{sec:impl}
@ -1216,7 +1211,8 @@ from one to more than two orders of magnitude.
\item[\Susi] learns from shopping patterns;
\item[\Mesh] learns rules for finite-methods mesh design;
\item[\Carcino, \Choline, \Pyrimidines] try to predict chemical
properties of compounds and store them as tables;
properties of compounds and store them as tables, given their
chemical composition and major properties;
\item[\Thermolysin] also manipulates chemical compounds but learns
from the 3D-structure of a molecule's conformations.
\end{description}