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:
parent
85ba8812a3
commit
93e64a9358
@ -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}
|
||||
|
Reference in New Issue
Block a user