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}
|
\authorrunning{V. Santos Costa, K. Sagonas and R. Lopes}
|
||||||
|
|
||||||
\institute{
|
\institute{
|
||||||
University of Porto, Portugal
|
LIACC- DCC/FCUP, University of Porto, Portugal
|
||||||
\and
|
\and
|
||||||
National Technical University of Athens, Greece
|
National Technical University of Athens, Greece
|
||||||
}
|
}
|
||||||
@ -184,13 +184,13 @@ remarks.
|
|||||||
% Indexing in Prolog systems:
|
% Indexing in Prolog systems:
|
||||||
Many Prolog systems still only support
|
Many Prolog systems still only support
|
||||||
indexing on the main functor symbol of the first argument. Some
|
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
|
terms~\cite{YAP}. SICStus Prolog supports \emph{shallow
|
||||||
backtracking}~\cite{ShallowBacktracking@ICLP-89}; choice points are
|
backtracking}~\cite{ShallowBacktracking@ICLP-89}; choice points are
|
||||||
fully populated only when it is certain that execution will enter the
|
fully populated only when it is certain that execution will enter the
|
||||||
clause body. While shallow backtracking avoids some of the performance
|
clause body. While shallow backtracking avoids some of the performance
|
||||||
problems of unnecessary choice point creation, it does not offer the
|
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
|
BIM-Prolog~\cite{IndexingProlog@NACLP-89}, SWI-Prolog~\cite{SWI} and
|
||||||
XSB~\cite{XSB} allow for user-controlled multi-argument indexing.
|
XSB~\cite{XSB} allow for user-controlled multi-argument indexing.
|
||||||
Notably, ilProlog~\cite{ilProlog} uses compile-time heuristics and
|
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
|
predicates are known we run the risk of doing indexing on output
|
||||||
arguments, whose only effect is an unnecessary increase in compilation
|
arguments, whose only effect is an unnecessary increase in compilation
|
||||||
times and, more importantly, in code size. In a programming language
|
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
|
can of course avoid this risk; indeed in Mercury modes (and types) are
|
||||||
used to guide the compiler generate good indexing tables. However, the
|
used to guide the compiler generate good indexing tables. However, the
|
||||||
situation is different for a language like Prolog. Getting accurate
|
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
|
discipline from the programmer (e.g., that applications use the module
|
||||||
system religiously and never bypass it). As a result, most Prolog
|
system religiously and never bypass it). As a result, most Prolog
|
||||||
systems currently do not provide the type of indexing that
|
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
|
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
|
such a discipline on the programmer, mode information is not used for
|
||||||
multi-argument indexing.
|
multi-argument indexing.
|
||||||
@ -846,7 +846,7 @@ The observant reader has no doubt noticed that
|
|||||||
Algorithm~\ref{alg:construction} provides multi-argument indexing but
|
Algorithm~\ref{alg:construction} provides multi-argument indexing but
|
||||||
only for the main functor symbol. For clauses with compound terms that
|
only for the main functor symbol. For clauses with compound terms that
|
||||||
require indexing in their sub-terms we can either employ a program
|
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
|
factoring}~\cite{UnifFact@POPL-95} at compile time or modify the
|
||||||
algorithm to consider index positions inside compound terms. This is
|
algorithm to consider index positions inside compound terms. This is
|
||||||
relatively easy to do but requires support from the register allocator
|
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 Walk the table and release any references it may hold.
|
||||||
\item Physically recover space.
|
\item Physically recover space.
|
||||||
\end{enumerate}
|
\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}
|
\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[\Susi] learns from shopping patterns;
|
||||||
\item[\Mesh] learns rules for finite-methods mesh design;
|
\item[\Mesh] learns rules for finite-methods mesh design;
|
||||||
\item[\Carcino, \Choline, \Pyrimidines] try to predict chemical
|
\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
|
\item[\Thermolysin] also manipulates chemical compounds but learns
|
||||||
from the 3D-structure of a molecule's conformations.
|
from the 3D-structure of a molecule's conformations.
|
||||||
\end{description}
|
\end{description}
|
||||||
|
Reference in New Issue
Block a user