\setlength{\unitlength}{0.01cm} \nop{ ) } \hspace{1.0cm} \begin{tabular}[t]{|p{ 10.2cm}|} \hline \begin{picture}(1000,429)(0,0) \put(250,363){\makebox(0,0){ process } } \put(700,363){\makebox(0,0){ constructor } } \put(700,231){\makebox(0,0)[l]{ accept(...,m,...) } } \put(500,363){ \makebox(0,0){ ~ } } \put(700,99){ \makebox(0,0)[l]{ resume } } \put(250,231){\makebox(0,0)[r]{ O!m(t1,...,t_n) } } \put(250,99){\makebox(0,0)[r]{ result } } \put(500,99){\makebox(0,0)[l]{ answer } } \put(500,198){\makebox(0,0)[l]{ m(t1,...,t_n) } } \put(250,99){\circle{10}} \put(250,231){\circle{10}} \put(500,99){\circle{10}} \put(500,198){\circle*{10}} \put(700,231){\circle{10}} \put(700,99){\circle{10}} \put(250, 241){\line(0,6){ 66}} \put(250, 89){\line(0,-6){33}} \put(250, 109){\line(0,6){ 112}} \put(700, 241){\line(0,6){ 66}} \put(700, 89){\line(0,-6){ 66}} \multiput(500, 109)(0, 20){ 4}{\line(0,6){10}} \multiput( 260,99)(10,0){ 25}{\line(6,0){5}} \put( 270,99){\vector(-4,0){ 20}} \multiput( 260,231)(10,0){ 45}{\line(6,0){5}} \end{picture} \\ \hline \end{tabular} \nop{ \small We assume that O is bound to %b = (c,n,0), the constructor process for the object $(c,n). Process %b' = (c,n,k), for some k, is a variant of %b in that obj(%b) = obj(%b'). In accepting the call Q becomes bound to %b'. \\ \hline \end{tabular} As soon as the call O!m(t), with O bound to %b, is accepted %a inserts the goal Q?, that is a request for the answer substitutions resulting from the evaluation of m(t). The process %b', which is a variant of the process %b in that they refer to the same object, starts evaluating m(t). Process %a must wait until the process %b' has computed an answer substitution. When the first answer substitution is computed, it is sent to %a; and the goal Q? succeeds. The process %b, which is the constructor process $(c,n,0) for the object obj(%b) = (c,n), may then proceed with the evaluation of the constructor goal. When backtracking occurs in %a, the goal Q? succeeds as many times as there are alternative answer substitutions produced by %b'. Backtracking in %b' runs concurrently with the activity of process %b. }