\documentclass[twocolumn]{jarticle}

\newcommand{\Tab}{ \hspace{1em} }
\newcommand{\If}{ {\Tab \makebox{if} \;} }
\newcommand{\Where}{ {\Tab \makebox{where} \;} }

\newcommand{\Def}{ _{\makebox{\tiny def}} }

\title{
 DKLIC $B=hM}7O$K$*$1$kJ,;6O@M}JQ?t$N;q8;4IM}(B \\
 DKLIC resource management for distributed logic variables }

\author{
 $BAa0pEDBg3XBg3X1!(B $BM}9)3X8&5f2J(B $B>pJs2J3X@l96(B $B9bLZM42p(B \\
 TAKAGI Yusuke }

\date{ 2001-12-04 }
\begin{document}
\maketitle

%---------------------------------------------------------------

\section{ $BGX7J(B }

$BJ#?t$N%W%m%;%9$,6(D4=hM}$r9T$&J,;6%"%W%j%1!<%7%g%s$N<BAu$O!"(B
$BC`<!%"%W%j%1!<%7%g%s$N<BAu$KHf$Y$FHs>o$KFq$7$$!#(B
%
$B4{$KIa5Z$7$F$$$k<jB3$-7?8@8l$NJ,;63HD%$O(B
$B%M%C%H%o!<%/F)2a@-$,IT==J,$G$"$k$?$a!"(B
$BC`<!%"%W%j%1!<%7%g%s$rC1=c$KJ,;63HD%$9$k$3$H$,$G$-$J$$!#(B

$B4{B8$NJ,;6%W%m%0%i%_%s%05!9=$H$7$F!"<!$N$h$&$J$b$N$,$"$k!#(B
%
\begin{enumerate}
\item
$B%=%1%C%H$O1s3V%W%m%;%9$HDL?.$9$k$?$a$N5!9=$G$"$k!#(B
%
$B%5!<%S%9$rMW5a$9$k%/%i%$%"%s%H$H%5!<%S%9$rDs6!$9$k%5!<%P$+$i@.$k!"(B
$B%/%i%$%"%s%H(B/$B%5!<%P%b%G%k$K4p$E$$$F$$$k!#(B
%
$B%=%1%C%H$O(B BSD $B$KM3Mh$9$k$,!"(B
C $B8@8l$N%=%1%C%H%$%s%?%U%'%$%9$O(B System V $B7O$d(B Windows $B$X$b0\?"$5$l$?!#(B
Java $B$G$O%=%1%C%H%$%s%?%U%'%$%9$,8@8l%l%Y%k$GDj5A$5$l$F$$$k!#(B

\item
RPC (Remote Procedure Call) $B$d(B Java RMI $B$O!"(B
$B<jB3$-!&4X?t$r8F$S=P$97A<0$G1s3V$N%5!<%S%9$r<u$1$k5!9=$G$"$k!#(B
%
$B%=%1%C%H$X$NF~NO$,8F$S=P$7$N0z?t$H$7$F!"(B
$B%=%1%C%H$+$i$N=PNO$,4X?t$NCM$H$7$F!"F)L@2=$5$l$k!#(B
%
$BF)L@2=$,IT40A4$G$"$k$N$O!"(B
$B%*%V%8%'%/%H$KBP$7$F;2>H!&5U;2>H$NA`:n$rL@<($9$k$;$$$G$"$k!#(B

\item
CORBA (ORB) $B$d(B Jini $B$OJ,;6%*%V%8%'%/%H$r4IM}$7!"(B
$B1s3V$N%5!<%S%9!J%*%V%8%'%/%H!K$KBP$9$kMW5a$rCg2p$9$k5!9=$G$"$k!#(B
%
RPC $B$H$NK\<AE*$J:9$O!"(B
$BJ,;6%*%V%8%'%/%H$NEPO?!&8!:w(B (Name Service) $B$K$h$k(B capability $B$N<hF@$K$"$k!#(B

\item
$B%b%P%$%k%(!<%8%'%s%H$O!"(B
$B<B9T>uBV$r4^$`%W%m%;%9$N0\F0$K$h$C$FDL?.$rF)L@2=$9$k5!9=$G$"$k!#(B
%
RPC $B$d(B ORB $B$H$N:9$O!"(B
$BDL?.$5$l$k%a%C%;!<%8$,C1$J$k%G!<%?$G$O$J$/(B
$B<+N'E*$K7W;;!&0\F0$r9T$&%W%m%;%9$G$"$kE@$K$"$k!#(B
\end{enumerate}
%
$B$3$l$i4{B8$NJ,;6%W%m%0%i%_%s%05!9=$O(B
C $B$d(B Java $B$J$I$N<jB3$-7?8@8l$K4p$E$$$F$*$j!"(B
$B;2>H$N%M%C%H%o!<%/F)2a@-$,IT==J,$G$"$k!#(B

%---------------------------------------------------------------

\section{ $BJ,;6(B KL1 $B8@8l$ND)@o(B }

KL1 $B8@8l$O:G$bC1=c$JJB9TO@M}7?8@8l$N0l$D$G$"$k!#(B
%
$B=R8l8F$S=P$7$K$h$C$FJB9T%W%m%;%9$rF0E*@8@.$7!"(B
$BO@M}JQ?t$rDL?.O)$H$7$FHsF14|%W%m%;%94VDL?.$r9T$&!#(B
%
$BO@M}JQ?t$r4^$`%a%C%;!<%8$rDL?.O)$KN.$9$3$H$K$h$C$F!"(B
$BO@M}%M%C%H%o!<%/$rF0E*9=@.$9$k$3$H$,$G$-$k!#(B

$B%f!<%6$d1s3V%W%m%;%9$b$^$?!"JB9T%W%m%;%9$N0l<o$G$"$k$H9M$($i$l$k!#(B
%
$B=>$C$F!"JB9T%W%m%;%9$HHsF14|%W%m%;%94VDL?.$rMQ$$$k(B
KL1 $B8@8l$N%W%m%0%i%_%s%0%9%?%$%k$O!"(B
$BJ,;6%W%m%;%9$K$h$k6(D4=hM}$N5-=R$KE,$7$F$$$k$H8@$($k!#(B

$BO@M}JQ?t$ODL?.O)$G$"$k!#(B
%
$BNc$($P!"<!$N(B append $B=R8l$O(B
$B%j%9%H(B X $B$H(B Y $B$rO"7k$7$?%j%9%H(B Z $B$rJV$9!#(B
\begin{verbatim}
append(X, Y, Z) :- X = [] |
  Z = Y.
append(X, Y, Z) :- X = [A | X1] |
  Z = [A | Z1],
  append(X1, Y, Z1).
\end{verbatim}
$B%/%i%$%"%s%H$,$3$N=R8l$r8F$S=P$9$H(B append $B%W%m%;%9$,@8@.$5$l$k!#(B
%
$B4X?t7?8@8l$G$O(B X $B$NCf?H$,40A4$K3NDj$7$?;~$K(B Z $B$rA4$F3NDj$9$k!#(B
%
$B$7$+$7!"$3$N%W%m%;%9$O(B X $B$NCf?H$,IT3NDj$J$i$PCfCG$7!"(B
X $B$NCf?H$,=y!9$K3NDj$9$k$K$D$l$F(B Z $B$NCf?H$rA0$+$i3NDj$7$F$$$/!#(B

$B$9$J$o$A!"(B
append $B%W%m%;%9$O0l<o$N%5!<%P$G$"$k!#(B
X $B$H(B Y $B$O%/%i%$%"%s%H$+$i%5!<%P$X$NDL?.O)$G$"$j!"(B
Z $B$O%5!<%P$+$i%/%i%$%"%s%H$X$NDL?.O)$G$"$k!#(B
%
$B$^$?!"(B
X, Y, Z $B$NMWAG$ODL?.O)$KN.$l$k%a%C%;!<%8$G$"$k!#(B

X, Y, Z $B$KN.$l$k%a%C%;!<%8$,@0?t$d5-9f%"%H%`$J$I$NC1=c$J$b$N$G$"$l$P!"(B
Unix $BF~=PNO%9%H%j!<%`$d(B RPC $B$G4JC1$K<BAu$9$k$3$H$,2DG=$G$"$k!#(B

$B$7$+$7!"(B
KL1 $B8@8l$G$OO@M}JQ?t$r4^$`J#;($J%a%C%;!<%8$rDL?.O)$KN.$9$3$H$K$h$C$F!"(B
$BDL?.O)$rF0E*@8@.$9$k$3$H$,2DG=$G$"$k!#(B
%
$BJ#;($JDL?.%W%m%H%3%k$N@k8@E*5-=R$r5v$9$?$a$K!"(B
$BJ,;6(B KL1 $B8@8l=hM}7O$OO@M}JQ?t$NM"=PF~$H(B
$BJ,;6C10l2=$r<B8=$7$J$1$l$P$J$i$J$$!#(B

%---------------------------------------------------------------

\section{ DKLIC $B=hM}7O$NL\I8(B }

DKLIC $B=hM}7O$N4pK\%5!<%P(B dklic $B$O!"(B
$B0J2<$N$h$&$J@k8@7?9-0hJ,;6%W%m%0%i%_%s%0$r2DG=$K$9$k!#(B

$B<!$N(B chat $B%5!<%P$O!"(B
$BJ#?t$N%/%i%$%"%s%H$NH/8@$r$=$l$>$l%V%m!<%I%-%c%9%H$9$k!#(B
%
\begin{verbatim}
main :- true |
  dklic:bind(line_io, R),
  main(R).

main(R) :- R = normal(ServerSocket) |
  generic:new(merge, Clients, Broadcast),
  chat(ServerSocket, Clients, Broadcast).

chat(Chat, Clients, Broadcast) :-
    Chat = [accept(R) | Chat1] |
  chat(R, Chat1, Clients, Broadcast).
alternatively.
chat(Chat, Clients, Broadcast) :-
    Broadcast = [Line | Broadcast1] |
  chat(Chat, Clients, Broadcast1).

chat(R, Chat, Clients, Broadcast) :-
    R = normal(I, O) |
  Clients = {I, Clients1},
  O = Broadcast,
  chat(Chat, Clients1, Broadcast).
\end{verbatim}
%
$B%/%i%$%"%s%H$H$NDL?.O)(B Client, Broadcast
$B$O!"H/8@$,;~7ONs=g$KJB$V%9%H%j!<%`$H$7$F8+$($k!#(B

$B%/%i%$%"%s%HB&$O(B Client = [] $B$K$h$C$FH/8@%9%H%j!<%`$rJD$8!"(B
Broadcast $B$X$N;2>H$r<N$F$k$@$1$GNI$$!#(B
$B$9$k$H(B Broadcast $B$X$N;2>H$,$J$/$J$C$?$3$H$r(B
dklic $B$,8!=P$7!"8e;OKv$r$9$k!#(B
%
$B$3$l$OJ,;6O@M}JQ?t$NM"=PF~I=$K$*$$$F(B
$B%(%s%H%j$N:o=|$r9T$&$3$H$K$h$C$F!"=i$a$F2DG=$H$J$k!#(B

chat $B%5!<%P$O?M4VF1;N$,C1=c$JJ8;zNs$r$d$j$H$j$9$k$@$1$G$"$k$,!"(B
$B$4$/4JC1$J2~B$$K$h$C$F!"(B
$B5!3#F1;N$,J#;($J%W%m%H%3%k$GDL?.$79g$&%5!<%P$r<B8=$G$-$k!#(B

%---------------------------------------------------------------

\section{ DKLICP $B8@8l(B }

\begin{enumerate}
\item $B@5B'J8K!(B \( lex : String \rightarrow Token^* \).
KL1 $B8@8l$N;z6g2r@O$HF1$8(B

\item $BJ8L.<+M3J8K!(B \( parse : Token^* \rightarrow Term^* \).
KL1 $B8@8l$N9=J82r@O$HF1$8(B

\item $BJ8L.0MB8J8K!(B
\( unmarshal =\Def marshal^{-1} : (String \rightarrow) Term^* \).
$BJ,;6O@M}JQ?t!&M"=PF~I=$,Dj5A$9$k(B

\item $B0UL#O@(B.
$B!J%f!<%6Dj5A!K%5!<%P$K$h$C$FDj5A$5$l$k(B
\end{enumerate}

\( lex, parse \) $B$r(B KL1 $B8@8l$H6&M-$9$k$3$H$K$h$C$F!"(B
DKLIC $B=hM}7O$O(B KL1 $B8@8l$N4{B8%Q!<%6$r$=$N$^$^MxMQ$9$k$3$H$,2DG=$G$"$k!#(B

\newcommand{\M}[1]{ \makebox{`#1'} }
\newcommand{\NEW}[1]{ \M{NEW\_\(#1\)} }
\newcommand{\OLD}[1]{ \M{\_\(#1\)}}

\begin{enumerate}
\item
$B%Q%1%C%H$N7gB;$dDI$$1[$7$,$J$$%M%C%H%o!<%/$rA0Ds$H$9$k!#(B

\item
$BO@M}JQ?t$rAw?.$9$k;~$O!"2<@~$KB3$1$F(B
$B$=$NO@M}JQ?t$N(B ID $B$r%M%C%H%o!<%/$KN.$9!#(B
%
$BO@M}JQ?t0J30$N9`$O!"$=$N9`$N(B
KL1 $B%W%m%0%i%`$K$*$1$kJ8;zNsI=8=$r%M%C%H%o!<%/$KN.$9!#(B
%
$B$9$J$o$A!"(BKL1 $B9`$+$iJ8;zNs$X$NJQ49(B
\\\( marshal: Term \rightarrow String \) $B$K$*$$$F!"(B
\vspace{1em}
\\
\( marshal(t) = \M{\(t\)} \If t \in Atomic \)
\\
\( marshal(t) = \OLD{} + marshal(id)
\\ \If t \in Var \wedge (id, t) \in table \)
\\
\( marshal(t) = \NEW{} + marshal(id)
\\ \If t \in Var \wedge (id, t) \not\in table
\\ \Where add(table, ns, t) = (id, table_1, ns_1) \)
\\
\( marshal(t) =
\\ \Tab \M{[} + marshal(x) + \M{\(|\)} + marshal(y) + \M{]}
\\ \If t = [x|y] \in Cons \)
\\
\( marshal(t) = marshal(f) +
\\ \Tab \M{(} + marshal(x_1) + \cdots + marshal(x_n) + \M{)}
\\ \If t = f(x_1, \ldots, x_n) \in Functor \)
\end{enumerate}

%---------------------------------------------------------------

\section{ dklic $B$N@_7W(B }


\subsection{ Layers }

\newcommand{\E}{ distributed }
\newcommand{\T}{ variable\_table }

\begin{enumerate}
\item $BJ,;6O@M}JQ?t(B \E
\item $BM"=PF~I=(B \T ( \( \Leftrightarrow \) ID manager )
\item $BJQ?tF~=PNO%=%1%C%H(B io
\end{enumerate}


\subsection{ $BJ,;6O@M}JQ?t(B \E }

\newcommand{\ID}{ ID }
\newcommand{\Report}{ Report }
\newcommand{\Unify}{ unify }
\newcommand{\GC}{ gc }
\newcommand{\Bound}{ bound }
\newcommand{\GCed}{ moved }

\( (id, var) \in Dist =\Def ID \times Var \)

\begin{verbatim}
d(ID, X, Report) :- wait(X) |
  Report = [bound(ID, X)].
alternatively.
d(ID, X, Report) :- unified(X) |
  Report = [unified(ID, X) | Report1],
  d(ID, X, Report1).
d(ID, X, Report) :- garbage(X) |
  Report = [collected(ID)].
\end{verbatim}

$B35G0E*$K$O>e$N$h$&$J%/%i%9(B \E $B$r:n$j$?$$$N$@$,!"(B
GC $B$5$l$?(B \E $B$O<+J,$N8e;OKv$r$G$-$J$$$N$G!"(B
$B?F$G$"$kM"=PF~I=$,8e;OKv$9$kI,MW$,$"$k!#(B

\begin{enumerate}
\item $B%3%s%9%H%i%/%?(B +\ID -Address ?\Report

\item $B%$%Y%s%H(B \Unify ?Any
\\
$B%m!<%+%k%[%9%HFb$G(B \E $B$,C10l2=$5$l$?$3$H$r<($9%$%Y%s%H$G$"$k!#(B

$B%m!<%+%k%[%9%HFb$N@)Ls5-21!JC10l2=$NMzNr!K$r(B \( constraints \) $B$H$9$k$H!"(B
\\
\( \Unify: Dist \times Constraints \times Term \rightarrow
\\ \Tab Constraints \times \{ bound/2, unified/2 \} \)
\\
\( \Unify(id, var, constraints, term) =
\\ \Tab (constraints \cup \{ var=term \},
\\ \Tab message(id, term))
\\ \Where
\\ \Tab message = bound \If term \in Bound
\\ \Tab message = unified \If term \not\in Bound \)
\\
\E $B$r(B Generator Object $B$H$7$F<BAu$9$k$3$H$K$h$C$F!"(B
\E $BF1;N$NC10l2=$r8!=P$G$-$J$$$@$m$&$+(B?

\item $B%$%Y%s%H(B \GC (-Address)
\\
$B%m!<%+%k%[%9%HFb$G(B GC $B$,9T$o$l!"(B
$B%f!<%6%W%m%;%9$+$i$3$N%*%V%8%'%/%H$X$N;2>H$,@8B8$7$F$$$k$N$G!"(B
$B$3$N%*%V%8%'%/%H$r?7NN0h$X%3%T!<$9$kI,MW$,$"$k$3$H$r<($9%$%Y%s%H$G$"$k!#(B

$BM"=PF~I=$+$i$3$N%*%V%8%'%/%H$X$N;2>H$O!V@8B8$7$F$$$J$$!W$N$G!"(B
$B$=$l0J30$N;2>H$,@8B8$7$F$$$J$$>l9g!"$3$N%*%V%8%'%/%H$O(B
$B5lNN0h$X<h$j;D$5$l!"GQIJ$H$7$F2s<}$5$l$k!#(B
\\
\( \GC: ID \rightarrow \GCed \)
\\
\( \GC(id) = \GCed(id) \)
\end{enumerate}


\subsection{ ID manager (Name Server) }

Name Server $B$O35G0E*$KMM!9$J%l%Y%k$G8=$l$k!#(B
%
$BNc$($P!"(B
\begin{enumerate}
\item DNS $B$O%[%9%HL>$r(B IP $B%"%I%l%9$KBP1~IU$1$k!#(B
\item $B%=%1%C%H$O%]!<%HHV9f$r%5!<%P$KBP1~IU$1$k!#(B
\item ID manager $B$O(B ID $B$rJ,;6O@M}JQ?t$KBP1~IU$1$k!#(B
\item java.rmi.Naming (rmiregistry)
$B$O%$%s%?%U%'%$%9$r%5!<%P%*%V%8%'%/%H$KBP1~IU$1$k!#(B
\item ORB $B$O%5!<%S%9$rJ,;6%*%V%8%'%/%H$KBP1~IU$1$k!#(B
\end{enumerate}

DNS, ORB $B$O<BBN$K!"0[$J$kL>A06u4V$K$*$1$kJLL>$rIU$1$k!#(B
$B%f!<%6$O<BBN$NK\L>$rCN$kI,MW$,$J$/!"(B
$BJLL>$K$h$C$F<BBN$rFCDj$9$k$3$H$,$G$-$k!#(B

$B%=%1%C%H(B, ID manager, Java RMI $B$O(B
$B<BBN$K9-0hL>$rIU$1$k$3$H$K$h$C$F!"(B
$B1s3V%f!<%6$,<BBN$K%"%/%;%9$9$k$3$H$r2DG=$K$9$k!#(B

Name Server $B$KI,?\$N5!G=$G$O$J$$$,!"(B
(DNS,) Java RMI, ORB $B$K$O8!:w5!G=$,$"$k!#(B

\( NS : ID \rightarrow \{ free, used \} \)

\begin{eqnarray*}
get &:& NS \rightarrow ID \times NS
\\
release &:& NS \times ID \rightarrow NS
\end{eqnarray*}
\\
\( get(ns) = (id, ns \setminus \{ (id, free) \} \cup \{ (id, used) \}) \)
\\
\( release(ns, id) =
 ns \setminus \{ (id, used) \} \cup \{ (id, free) \} \)

NS $B$N5!G=$OM"=PF~I=!JG[Ns!K$K4^$a$k$3$H$,2DG=$G$"$k$,!"(B
$B?7$7$$(B ID $B$r(B \( O(1) \) $B$G<hF@$9$k$?$a$K(B
$BL$;HMQ(B ID $B$r%j%9%H$G4IM}$9$k!#(B
%
$B%j%9%H$N07$$$O(B C $B8@8l$h$j(B KL1 $B8@8l$NJ}$,F@0U$H$7$F$$$k$N$G!"(B
NS $B$O(B KL1 $B8@8l$K$h$C$F5-=R$7!"(B
$BM"=PF~I=(B (generic object written in C) $B$H$OJL%W%m%;%9$H$9$k!#(B

\begin{verbatim}
ns(NS, Free) :- NS = [get(ID) | NS1] |
  Free = [ID | Free1],
  ns(NS1, Free1).
ns(NS, Free) :- NS = [release(ID) | NS1] |
  Free1 = [ID | Free],
  ns(NS1, Free1).
\end{verbatim}

$B35G0E*$K$O>e$N$h$&$J(B NS $B$r:n$k$,!"(B
ID $B6u4V$,<B:]$K$OM-8B$G$"$k$3$H$r9MN8$9$kI,MW$,$"$k!#(B

$BNc$($P!"(B
$BL$;HMQ(B ID $B$,$J$$;~$K(B get $B$5$l$?$iM"=PF~I=$r9-$2$k!#(B
%
$BM"=PF~I=$,=L$s$@$iL$;HMQ(B ID $B$r:F7W;;$9$k!#(B

$BM"=PF~I=!JG[Ns!K$N%$%s%G%/%9$rI=$9(B integer $B$r(B ID $B$H$7$F;HMQ$9$k!#(B


\subsection{ $BM"=PF~I=(B \T }

\newcommand{\Add}{ add }
\newcommand{\Remove}{ remove }
\newcommand{\GetID}{ getID }
\newcommand{\Get}{ get }
\newcommand{\Set}{ set }

\( \{ (id, var) \} \in Table =\Def 2^{Dist} \)

\begin{eqnarray}
\forall i, j;
(id_i, var_i), (id_j, var_j) \in table \Rightarrow
\nonumber\\
\Tab (id_i = id_j \Leftrightarrow var_i = var_j)
\label{eq:distinct}
\end{eqnarray}
%
$BO@M}JQ?tF1;N$NF10l@-$rH=Dj$9$k$3$H$,2DG=$G$"$k$3$H$rA0Ds$H$9$k!#(B
%
$BF10l$NO@M}JQ?t$,M"=PF~I=$K$*$$$F0[$J$k%(%s%H%j$r;}$D$3$H$O$J$$(B
(\ref{eq:distinct})$B!#(B

\begin{eqnarray}
&& State = Table \times NS
\nonumber\\
&& \forall id, ns, table;
\nonumber\\
&& \Tab (ns(id) = used \Leftrightarrow (id, var) \in table) \wedge
\nonumber\\
&& \Tab (ns(id) = free \Leftrightarrow (id, var) \not\in table)
\label{eq:encapsulated}
\end{eqnarray}
%
\T $B$O(B NS $B$HO"F0$9$k!#(B
NS $B$O(B \T $B$K%+%W%;%k2=$5$l!"(B
$BB>$N%W%m%;%9$+$i$O8+$($J$$(B(\ref{eq:encapsulated})$B!#(B

$B%/%i%9(B \T

\begin{enumerate}
\item $B%3%s%9%H%i%/%?(B +Length ?\Report

\item $B%$%Y%s%H(B \GC (-Length)
\\
$B%m!<%+%k%[%9%HFb$G(B GC $B$,9T$o$l$F$$$k$3$H$r<($9%$%Y%s%H!#(B
%
\T $B$O<+J,<+?H$r?7NN0h$X%3%T!<$9$k$,!"(B
$B%(%s%H%j(B \E $B$r%3%T!<$7$J$$!#(B
%
GC $B=*N;D>8e$KGQIJ$H$7$F2s<}$5$l$?(B \E $B$N8e;OKv$r$9$k!#(B

\item io $B$+$i$N%a%C%;!<%8(B \Add -\ID ?Var (-Length)
\\
io $B$,(B \T $B$KEPO?$5$l$F$$$J$$O@M}JQ?t$rM"=P$7$?$$;~!"(B
$B$^$?$O(B io $B$,1s3V%[%9%H$+$i(B \M{NEW\_\(ID\)} $B$r<u$1<h$C$?;~$K(B
$BH/$9$k%a%C%;!<%8$G$"$k!#(B
\\
\( \Add: State \times Var \rightarrow ID \times State \)
\\
\( \Add(table, ns, var) =
\\ \Tab (id, table \cup \{ id \}, ns_1)
\\ \Where get(ns) = (id, ns_1) \)

\item io $B$+$i$N%a%C%;!<%8(B \Remove +\ID
\\
io $B$,1s3V%[%9%H$+$i(B \M{\_\(ID\)=\_}
$B$r<u$1<h$C$?;~$KH/$9$k%a%C%;!<%8$G$"$k!#(B
\\
\( \Remove: State \times ID \rightarrow State \)
\\
\( \Remove(table, ns, id) =
\\ \Tab (table \setminus \{ (id, var) \}, release(ns, id)) \)

\item io $B$+$i$N%a%C%;!<%8(B \GetID -\ID ?Var
\\
io $B$,(B \T $B$KEPO?:Q$_$NJ,;6O@M}JQ?t$r1s3V%[%9%H$KAw?.$7$?$$;~!"(B
$B%m!<%+%k%[%9%HFb$NO@M}JQ?t$KBP1~$9$k(B ID $B$rMW5a$9$k%a%C%;!<%8$G$"$k!#(B
\\
\( \GetID: State \times Var \rightarrow ID \)
\\
\( \GetID(table, ns, var) = id
\\ \Where (id, var) \in table \)

\item io $B$+$i$N%a%C%;!<%8(B \Get +\ID ?Var
\\
io $B$,1s3V%[%9%H$+$i(B \M{\_\(ID\)} $B$r<u$1<h$C$?;~$K!"(B
ID $B$KBP1~$9$k%m!<%+%k%[%9%HFb$NO@M}JQ?t$rMW5a$9$k%a%C%;!<%8$G$"$k!#(B
\\
\( \Get: State \times ID \rightarrow Var \times State \)
\\
\( \Get(table, ns, id) = (var, table, ns)
\\ \Where (id, var) \in table \)

\item io $B$+$i$N%a%C%;!<%8(B \Set +\ID +Bound
\\
io $B$,1s3V%[%9%H$+$i(B \M{\_\(ID\)=\(Bound\)}
$B$r<u$1<h$C$?;~$KH/$9$k%a%C%;!<%8$G$"$k!#(B
\\
\( \Set: State \times Constraints \times ID \times Bound \rightarrow
\\ \Tab State \times Constraints \)
\\
\( \Set(table, ns, constraints, id, bound) =
\\ \Tab (table \setminus \{ (id, var) \}, release(ns, id),
\\ \Tab constraints \cup \{ var = bound \}) \)

\item io $B$+$i$N%a%C%;!<%8(B \Unify +\ID +ID1
\\
io $B$,1s3V%[%9%H$+$i(B \M{\_\(ID\)=\_\(ID1\)}
$B$r<u$1<h$C$?;~$KH/$9$k%a%C%;!<%8$G$"$k!#(B
\\
\( \Unify: State \times ID \times ID \rightarrow State \)
\\
\( \Unify(table, ns, id, id_1) =
\\ \Tab (table \setminus \{ (id, var), (id_1, var_1) \} \cup
\\ \Tab \{ (id_1, var) \}, release(ns, id) ) \)

\item \E $B$+$i$N%a%C%;!<%8(B \Bound +\ID +Bound
\\
\E $B$,6qBN2=$5$l$?;~$KH/$9$k%a%C%;!<%8$G$"$k!#(B
\\
\( \Bound: State \times ID \times Bound \rightarrow State \)
\\
\( \Bound(table, ns, id, bound) =
\\ \Tab remove(table, ns, id) \)

\item \E $B$+$i$N%a%C%;!<%8(B unified +\ID +Var
\\
\E $B$,B>$N(B \E $B$HC10l2=$5$l$?;~$KH/$9$k%a%C%;!<%8$G$"$k!#(B
\\
\( unified: State \times ID \times Var \rightarrow State \)
\\
\( unified(table, ns, id, var)
\\ = (table, ns) \If id < \GetID(var)
\\ = \Remove(table, ns, id) \If id > \GetID(var) \)

\item \E $B$+$i$N%a%C%;!<%8(B \GCed +\ID +Address
\\
\E $B$,(B GC $BCf$K?7NN0h$X%3%T!<$5$l$?;~$KH/$9$k%a%C%;!<%8$G$"$k!#(B
\end{enumerate}

\begin{verbatim}
vt(VT, T, NS) :- VT = [add(ID,X) | VT1] |
  NS = [get(ID) | NS1],
  T1 = [(ID,X) | T],
  vt(VT1, T1, NS1).
vt(VT, T, NS) :- VT = [remove(ID) | VT1] |
  T1 = T - [(ID,_)],
  NS = [release(ID) | NS1],
  vt(VT1, T1, NS1).
vt(VT, T, NS) :- VT = [get(ID,X) | VT1] |
  member((ID,X), T),
  vt(VT1, T, NS).
vt(VT, T, NS) :- VT = [set(ID,Bound) | VT1] |
  member((ID,X), T),
  X = Bound,
  vt(VT1, T, NS).
vt(VT, T, NS) :- VT = [unify(ID,ID1) | VT1] |
  member((ID,X), (ID1,X1), T),
  X = X1,
  vt([remove(max(ID,ID1)) | VT1], T, NS).
vt(VT, T, NS) :- VT = [bound(ID,X) | VT1] |
  remote(set(ID,X)),
  vt([remove(ID)|VT1], T, NS).
vt(VT, T, NS) :- VT =
    [unified(ID,X), unified(ID1,X) | VT1] |
  remote(unify(ID,ID1)),
  vt([remove(max(ID,ID1)) | VT1], T, NS).
\end{verbatim}

$B35G0E*$K$O>e$N$h$&$J(B \T $B$r:n$j$?$$!#(B

NS $B$K(B ID $B6u4V$,8O3i$7$?$H8@$o$l$?>l9g!"<+J,<+?H$r9-$2$k!#(B

$B<+J,<+?H$r=L$a$?>l9g!"(B
NS $B$K(B ID $B6u4V$r=L$a$m$H8@$&!#(B

%---------------------------------------------------------------

\section{ dklic $B<BAu$N2]Bj(B }

\newcommand{\State}[1]{\makebox{\(#1(id)\)}}
\newcommand{\Opening}{\State{opening}}
\newcommand{\Opened}{\State{opened}}
\newcommand{\Closing}{\State{closing}}
\newcommand{\Closed}{\State{closed}}

\newcommand{\Message}[1]{\makebox{\({#1}Message(id)\)}}
\newcommand{\OpenMessage}{\Message{Open}}
\newcommand{\CloseMessage}{\Message{Close}}

\newcommand{\Opener}{\State{opener}}
\newcommand{\Openee}{\State{openee}}
\newcommand{\Closer}{\State{closer}}
\newcommand{\Closee}{\State{closee}}


\subsection{ $BJ,;6O@M}JQ?t$N%i%$%U%5%$%/%k(B }

\begin{enumerate}
\item open. $BO@M}JQ?t$rM"=P!J$=$7$FM"F~!K$9$k!#(B
\item use. $BO@M}JQ?t$r9`$N0lIt$H$7$FAw<u?.$9$k!#(B
\item close. $BDL?.O)$rJD$8$k!#(B
\end{enumerate}

\noindent
\( \OpenMessage = \{ \Add(id) \} \)
\\
\( \CloseMessage =
\\ \Tab \{ ( \Add(id), ) \; \Remove(id), \Set(id), \Unify(id) \} \)
\\
\OpenMessage $B$NAw?.<T$r(B \Opener, $B<u?.<T$r(B \Openee $B$H8F$S!"(B
\CloseMessage $B$NAw?.<T$r(B \Closer, $B<u?.<T$r(B \Closee $B$H8F$V$3$H$K$9$k!#(B

$BJ,;6O@M}JQ?t$N>uBVA+0\(B
%
%\[ \{ \emptyset(id), \Opening, \Opened, \Closing, \Closed \} \]
%
\begin{enumerate}
\item \( \emptyset(id) \). $BMxMQ$5$l$?$3$H$,$J$$>uBV!#(B
\begin{enumerate}
\item \( \emptyset(id) \rightarrow \Opening \)
\\ $BM"=P$7$F$$$J$$(B \( id \) $B$N(B \OpenMessage $B$r1s3V%[%9%H$XM"=P$9$k!#(B
\item \( \emptyset(id) \rightarrow \Opened \)
\\ \OpenMessage $B$r1s3V%[%9%H$+$iM"F~$9$k!#(B
\end{enumerate}

\item \Opening.
\OpenMessage $B$rM"=P$7$?$,!"(B
$B1s3V%[%9%H$XM"F~$5$l$?$3$H$r3NG'$7$F$$$J$$>uBV!#(B
\begin{enumerate}
\item \( \Opening \rightarrow \Opened \)
\\ $BM"=P$7$?(B \( id \) $B$r1s3V%[%9%H$+$i<u?.$9$k!#(B
\item \( \Opening \rightarrow \Closing \)
\\ $BM"=P$7$?(B \( id \) $B$N(B \CloseMessage $B$r1s3V%[%9%H$XAw?.$9$k!#(B
\item \( \Opening \rightarrow \Closed \)
\\ $BM"=P$7$?(B \( id \) $B$N(B \CloseMessage $B$r1s3V%[%9%H$+$i<u?.$9$k!#(B
$BJV;v$,I,MW!#(B
\end{enumerate}

\item \Opened.
\OpenMessage $B$r1s3V%[%9%H$+$iM"F~$7$?>uBV!#(B
\begin{enumerate}
\item \( \Opened \rightarrow \Closing \)
\\ \CloseMessage $B$r1s3V%[%9%H$XAw?.$9$k!#(B
\item \( \Opened \rightarrow \Closed \)
\\ \CloseMessage $B$r1s3V%[%9%H$+$i<u?.$9$k!#(B
$BJV;v$,I,MW!#(B
\end{enumerate}

\item \Closing.
\CloseMessage $B$rAw?.$7$?$,!"(B
$B1s3V%[%9%H$X<u?.$5$l$?$3$H$r3NG'$7$F$$$J$$>uBV!#(B
\begin{enumerate}
\item \( \Closing \rightarrow \Closed \)
\\ \CloseMessage $B$r1s3V%[%9%H$+$i<u?.$9$k!#(B
$BJV;v$OITMW!#(B
\end{enumerate}

\item \Closed.
\CloseMessage $B$r1s3V%[%9%H$+$i<u?.$7$?>uBV!#(B
\begin{enumerate}
\item \( \Closed \rightarrow \Opening \)
\\ \OpenMessage $B$r1s3V%[%9%H$X:FM"=P$9$k!#(B
\item \( \Closed \rightarrow \Opened \)
\\ \OpenMessage $B$r1s3V%[%9%H$+$i:FM"F~$9$k!#(B
\end{enumerate}
\end{enumerate}

$B<B:]$K$O(B \( \emptyset(id) = \Closed \) $B$G$"$k!#(B


\subsection{ $BC/$,(B ID $B$r:FMxMQ$9$k$+(B }

\begin{enumerate}
\item \Closee.
\( \leftrightarrow \) $BAPJ}(B \Closer $B$N>l9g$I$&$9$k$+!#(B
ill-moded $B$J%W%m%0%i%`$r5v$7$?$$$N$G!"$3$N0F$O:NMQ$7$J$$!#(B

\item \Openee.
\Openee $B$OI,$:0l?M$G$"$k$N$G>WFM$O$J$$!#(B
ID $B$NMxMQ8"$,8r8_$K0\F0$9$k!#(B
\\\( \leftrightarrow \)
\Openee $B$,(B \( id \) $B$r:FMxMQ$9$kA0$K(B \Closed $B>uBV$K$J$k$H!"(B
\( id \) $B$r:FMxMQ$9$k5!2q$O<:$o$l$F$7$^$&(B (id leak)$B!#(B
$B$3$N0F$O:NMQ$7$J$$!#(B

\item \Opener.
ID $B6u4V$NMxMQ8"$r;}$C$F$$$kB&$,>o$K(B ID $B$r:FMxMQ$9$k!#(B
$B:FMxMQ0J30$N>l9g$H@09g$7$F$$$k$N$G!"$3$N0F$r:NMQ$9$k!#(B
\end{enumerate}

$B<!$NDL?.O)(B S $B$O!"(B
$B%m!<%+%k%[%9%H$H1s3V%[%9%H$+$i8r8_$K%a%C%;!<%8$,N.$l$k%9%H%j!<%`$G$"$k!#(B
$BN.$l$k%a%C%;!<%8$O(B well-moded $B$G$"$k$,!"(B
$BKI8fE*$G$J$$%W%m%0%i%`$G$O(B
$B%9%H%j!<%`$r9=@.$9$k%3%s%9$,(B ill-moded $B$K$J$C$F$7$^$&!#(B
\begin{verbatim}
S = [X1, Y1, X2, Y2, ..]

-> _0 = [x1, _2, x2 | _0]
<- _0 = [_1, y1 | _0]
\end{verbatim}

$BAPJ}8~$+$iF1;~$K=q$-9~$^$l$k(B well-moded $B$G$J$$DL?.O)$,$"$jF@$k$N$G!"(B
$BDL?.O)$N(B ID $B$r0lHL$KB(;~:FMxMQ$9$k$3$H$O$G$-$J$$!#(B
$BJQ?t(B ID $B$ODL?.O)$N(B ID $B$G$J$/!"(B
$BDL?.O)$N>uBV(B (continuation) $B$N(B ID $B$G$"$k!#(B

ID $B$r$$$D:FMxMQ$G$-$k$+$rCN$k$?$a$K!"(B
$B1s3V%[%9%H$+$i$N%a%C%;!<%8$K$h$C$F(B \( (id, var) \) $B$r:o=|$7$?(B
\Closee $B$O!"JV;v$H$7$F(B \M{\_\(id\)=\_} $B$r(B \Closer $B$KAw?.$9$k!#(B
$BJV;v$r<u$1<h$C$?$i!"(B
\Closer $B$O(B \( (id, var) \) $B$r:o=|$7$FNI$$!#(B
$B$$$:$l$K$;$h!":FMxMQ8"$r;}$DB&$,(B
\Closed $B>uBV$G(B \( id \) $B$r:FMxMQ$9$k!#(B

$BJV;v$r<u$1<h$k$^$G!"(B
$B%a%C%;!<%8$NAw?.B&$O(B \( (id, var) \) $B$r:o=|$7$F$O$J$i$J$$!#(B
\begin{verbatim}
local                               remote
                      |
S=[x1,Y1,x2|S1]       |       S=[X1,y1|S1]
----------------------+-------------------
(_0,S)                              (_0,S)
(_2,Y1) _0=[x1,_2,x2|_4] ->         (_1,X1)
(_4,S1)            <- _0=[_1,y1|_3] (_3,S1)
----------------------+--------------------
(_0,S)  -> _0=[x1,_2,x2|_4]         (_0,S)
                   _0=[_1,y1|_3] <-
----------------------+-------------------
(_0,S)  <- _0=[_1,y1|_3]            (_0,S)
                _0=[x1,_2,x2|_4] ->
----------------------+-------------------
(_0,S)  _0=[_1,y1|_3] <-            (_0,S)
(_2,y1)         -> _0=[x1,_2,x2|_4] (_1,x1)
                                    (_3,S1)
----------------------+--------------------
S=[x1,y1,x2|S1]       |     S=[x1,y1,x2|_4]
     _3=[x2|S1]       |          S1=[x2|_4]
\end{verbatim}


\subsection{ NEW $B$NITMW@-(B }

\NEW{id} $B$O!"Ku>C$H:FMxMQ(B (\OLD{id}=\OLD{}, \OLD{id})
$B$K$h$C$FCV$-49$($k$3$H$,2DG=$G$"$k!#(B
$B=>$C$F!"(B
\NEW{} $B$OITMW$G$"$j!":NMQ$7$J$$!#(B

$B$9$J$o$A!"(B
\( \Add(id) \in \CloseMessage \cap \OpenMessage \)
$B$G$"$k$N$G!"(B
\NEW{id} $B$N<u?.B&$O(B \( \rightarrow \Closed \rightarrow \Opened \)
$B$NA+0\$r%"%H%_%C%/$K9T$&$3$H$,2DG=$G$"$j!"(B
\( \Add(id) \in \CloseMessage \)
$B$KBP$9$kJV;v$r>JN,$9$k$h$&$J!"DL?.$N:GE,2=$,2DG=$G$"$k!#(B

$B%(%s%H%j(B \( (id, var) \) $B$,IT:_!&>C$7$+$1!&EPO?:Q$_$N3F>uBV$G(B
$B1s3V%[%9%H$+$i(B \NEW{id} / \OLD{id} $B$r<u$1<h$C$?>l9g!"(B
\begin{enumerate}
\item \( \emptyset(id) \). $BIT:_(B
\begin{itemize}
\item \NEW{id} $B$r<u$1<h$C$?$i%(%s%H%j$rEPO?$9$k!#(B

\item \OLD{id} $B$r<u$1<h$C$?$i<BAu$N%P%0$G$"$k!#(B
\end{itemize}

\item \Closing. $B>C$7$+$1(B
\begin{itemize}
\item \NEW{id} $B$r<u$1<h$C$?$i%(%s%H%j$rEPO?$9$k!#(B
$B%(%s%H%j$r%m!<%+%k%[%9%H$G>C$7!"(B
$B1s3V%[%9%H$GB(;~:FMxMQ$5$l$?>l9g$G$"$k!#(B

\item \OLD{id} $B$r<u$1<h$C$?$i(B var $B$H2r<a$9$k!#(B
$B%(%s%H%j$r%m!<%+%k%[%9%H$G>C$7!"(B
$B1s3V%[%9%H$G>C$5$l$kA0$KAw?.$5$l$?>l9g$G$"$k!#(B
\end{itemize}

\item \Opening. $BEPO?:Q$_(B
\begin{itemize}
\item \NEW{id} $B$r<u$1<h$k$3$H$O$J$$!#(B
$B%m!<%+%k%[%9%H$H1s3V%[%9%H$GF10l(B ID $B$r(B
$B0[$J$kJ,;6O@M}JQ?t$KH/9T$7$F$7$^$C$?>l9g$G$"$k!#(B

\item \OLD{id} $B$r<u$1<h$C$?$i(B var $B$H2r<a$9$k!#(B
\end{itemize}
\end{enumerate}

%---------------------------------------------------------------

\section{ $BDL?.:GE,2=$N3,5i(B }

\begin{enumerate}
\item \( \NEW{id} \not\in \CloseMessage \).
$BDL?.$N:GE,2=$O9T$o$J$$!#(B
%
\NEW{id} $B$K$h$C$F(B \( id \) $B$r(B close $B$;$:!"(B
\CloseMessage $B$r<u?.$7$?$iJV;v$r$9$k!#(B
%
$BNc30$O(B \Closing $B>uBV$N$H$-$G!"(B
$BJV;v$r$9$k$HJV;v$KBP$9$kJV;v$,O":?$7$F$7$^$&!#(B

\item \( \NEW{id} \in \CloseMessage \).
$BDL?.$N:GE,2=$r9T$&!#(B
%
\NEW{id} $B$K$h$C$F(B \( id \) $B$r(B reopen = close + open $B$9$k!#(B
%
\NEW{id} $B$rAw?.$9$k$3$H$,$G$-$k$N$O!"(B
\begin{enumerate}
\item \Closed $B>uBV$N;~!#(B
$B<e$$:GE,2=!#(B
%
\CloseMessage $B$r<u?.$7$F(B \Closed $B>uBV$K$J$C$?(B \Closee $B$O!"(B
$BJV;v$r>JN,$7$F(B \NEW{id} $B$rAw?.$9$k$3$H$,$G$-$k!#(B
\( \rightarrow \Closed \rightarrow \Opening \) $B$H>uBVA+0\$9$k!#(B

\NEW{id} $B$N<u?.B&(B = \Closer $B$O!"(B
\NEW{id} $B$N<u?.$K$h$C$F(B
\( \Closing \rightarrow \Closed \rightarrow \Opened \)
$B$H%"%H%_%C%/$K>uBVA+0\$9$k!#(B

\item \Opening, \Opened $B>uBV$N;~!#(B
$B6/$$:GE,2=!#(B
%
ID $B$r0lHL$KB(;~:FMxMQ$9$k$3$H$OIT2DG=$G$"$k$N$G!"(B
$B$3$N:GE,2=$OIT2DG=$G$"$k!#(B
\end{enumerate}
\end{enumerate}
\begin{verbatim}
local                |              remote
---------------------+---------------------
opening(id) openMessage(id) ->   closed(id)
opening(id)   -> openMessage(id) opened(id)
---------------------+---------------------
closing(id)       <- message(id) opened(id)
opening(id) reopenMessage(id) ->
---------------------+---------------------
opened(id) message(id) <-        opened(id)
            -> reopenMessage(id) closed(id)
                                 opened(id)
\end{verbatim}


\subsection{ NEW $B$N%a%j%C%H(B }

\begin{enumerate}
\item
\NEW{id} $B$N<u?.B&$O(B \( id \) $B$,L$;HMQ$G$"$k$3$H$rA0Ds$H$7$FNI$$!#(B
\( id \) $B$,;HMQ$5$l$F$$$?$i<BAu$N%P%0$G$"$k!#(B
$B=>$C$F!"$"$k<o$N%(%i!<8!=P$,2DG=$H$J$k!#(B
\\\( \leftrightarrow \)
\NEW{id} $B$NAw?.B&$O(B \( id \) $B$,L$;HMQ$G$"$k$3$H$N8!::$rI,MW$H$9$k!#(B
$B%(%i!<8!=P$r9T$&$J$i!"<u?.B&$G$b(B
\( id \) $B$,L$;HMQ$G$"$k$3$H$r8!::$7$J$1$l$P$J$i$J$$!#(B

\item
\( \rightarrow \Closing \rightarrow \Opening \)
$B$H%"%H%_%C%/$K>uBVA+0\$9$k$3$H$,2DG=$G$"$k!#(B
\\\( \leftrightarrow \)
$B%"%H%_%C%/$K>uBVA+0\$9$k$3$H$,I,MW$+(B?
$BI,MW$G$"$k$H$7$F$b!"(B
io $B$,Ku>C$H:FMxMQ(B (\OLD{id}=\OLD{}, \OLD{id})
$B$r%"%H%_%C%/$K07$($PNI$$!#(B
\end{enumerate}

$B7kO@$H$7$F!"(B
\NEW{} $B$N%a%j%C%H$O$J$$!#(B
$B=>$C$F(B \NEW{} $B$O:NMQ$7$J$$!#(B

%---------------------------------------------------------------

\section{ $B;29MJ88%(B }
\begin{enumerate}
\item \label{KL1}
Ueda, K. and Chikayama, T.,
Design of the Kernel Language for the Parallel Inference Machine.
{\sl The Computer Journal}, Vol.~33, No.~6 (1990), pp.~494--500.

\item \label{PIMOS}
$BBmOBCK(B $BJT(B, bit$BJL:}(B $BBh8^@$Be%3%s%T%e!<%?$NJBNs=hM}(B.
$B6&N)=PHG(B, 1993.

\item \label{KLIC}
Chikayama, T., Fujise, T. and Sekita, D.,
A Portable and Efficient Implementation of KL1.
In {\sl Proc. 6th Int. Symp. on
Programming Language Implementation and Logic Programming (PLILP'94)},
LNCS 844, Springer-Verlag, Berlin, 1994, pp.~25--39.

\item \label{inside}
$B4XEDBg8c(B: Inside KLIC Version 1.0.
KLIC Task Group / AITEC / JIPDEC, 1998.
\\http://www.klic.org/software/klic/inside/master.html

\item \label{linearity}
Ueda, K., Linearity Analysis of Concurrent Logic Programs.  
In {\sl Proc.\ Int.\ Workshop on Parallel and Distributed
Computing for Symbolic and Irregular Applications}, 
Ito, T. and Yuasa, T. (eds.), World Scientific, 2000, pp.~253--270.

\item \label{Kima}
$BLVBe0iBg(B, $B>eEDOB5*(B,
Kima: $BJB9TO@M}%W%m%0%i%`<+F0=$@57O(B.
$B%3%s%T%e!<%?%=%U%H%&%'%"JL:}(B $B%=%U%H%&%'%"H/E8(B,
Vol.~18, No.~0 (2001), pp.~122--137.

\item \label{kato}
$B2CF#5*IW(B, $B>eEDOB5*(B,
$BJB9TO@M}%W%m%0%i%`$K$*$1$kC`<!<B9TItJ,$NCj=PJ}K!O@(B.
In {\sl Proc. JSSST Workshop
 on Programming and Programming Languages (PPL2001)}, 2001.

\item \label{KL1/J}
$B8^==Mr9((B, $BJ,;6(BKL1$B8@8l=hM}7O$N@_7W$H<BAu(B.
$BAa0pEDBg3XM}9)3XIt>pJs3X2JB46HO@J8(B, 1999.

\item \label{treecode}
$B8^==Mr9((B, $B%a%?%$%s%?%W%j%?$K4p$E$/J,;6JB9TO@M}7?8@8l=hM}7O(B.
$BAa0pEDBg3XBg3X1!M}9)3X8&5f2J=$;NO@J8(B, 2001.

\item \label{DKLIC}
$B9bLZM42p(B, KL1$B$K$h$kJ,;6(BKL1$B8@8l=hM}7O$N<BAu(B.
$BAa0pEDBg3XM}9)3XIt>pJs3X2JB46HO@J8(B, 2000.
\\http://www.ueda.info.waseda.ac.jp/\verb!~!takagi/

\item \label{SPA2001}
$B9bLZM42p(B, $B>eEDOB5*(B,
dklic: KL1$B$K$h$kJ,;6(BKL1$B8@8l=hM}7O$N<BAu(B,
In {\sl Proc. JSSST Workshop
 on Systems for Programming and Applications (SPA2001)}, 2001.
\\http://www.dcl.info.waseda.ac.jp/SPA2001/

\item \label{takayama}
$B9b;37<(B, $BJB9TO@M}7?8@8l(BKL1$B$K$h$kJ,;6(BKL1$B8@8l=hM}7O$N<BAu(B.
$BAa0pEDBg3XM}9)3XIt>pJs3X2JB46HO@J8(B, 2001.

\item \label{ryo}
$B>>B<NL(B, $BJB9TO@M}7?8@8l(BKL1$B$NJ,;63HD%$N$?$a$N1s3V%N!<%I4IM}$N<BAu(B.
$BAa0pEDBg3XM}9)3XIt>pJs3X2JB46HO@J8(B, 2001.

\item \label{mobj}
Van Roy, P., Haridi, S., Brand, P., Smolka, G., Mehl, M. and Scheidhauer, R., 
Mobile Objects in Distributed Oz.
{\sl ACM Transactions on Programming Languages and Systems},
Vol.~19, No.~5, September 1997, pp.~804--851.

\item \label{Oz}
Haridi, S., Van Roy, P., Brand, P. and Schulte, C.,
Programming Languages for Distributed Applications.
{\sl New Generation Computing}, Vol.~16, No.~3 (1998), pp.~223--261.

\item \label{DLV}
Haridi, S., Van Roy, P., Brand, P., Mehl, M., Scheidhauer, R. and Smolka, G., 
Efficient Logic Variables for Distributed Computing.
{\sl ACM Transactions on Programming Languages and Systems},
Vol.~21, No.~3, May 1999, pp.~569--626.

\item \label{Turing}
R.C. $B%[%k%H(B $BB>(B, $BEr@uB@0l(B $B4FLu(B, $B>>ED85I'(B, $B;09%GnG7(B, $BC]2,>0;0(B $BLu(B,
$B%W%m%0%i%_%s%08@8l(B Turing -- $B8@8l;EMM$N4pACM}O@$H@_7W5;K!(B.
$B7<3X=PHG(B, 1990.
\\ DKLICP $B8@8l$N7A<0J8K!$r3,5iJ,N`$9$k;29M$K$7$?(B
\end{enumerate}

\end{document}
