\setlength{\unitlength}{1cm} \hspace{1.9cm} \b{tabular}[t]{|p{3.8cm}|p{3.8cm}|p{3.8cm}|} \hline \b{picture}(3.5,3.6)(0.9,1) \put(2.5,3.5){ \b{tabular}[b]{|p{1.4cm}|} \hline {\small\it object} ctr \\ {\small\it var} n = 0 \\ \hline \e{tabular} } \put(1.2,3.2){ \circle*{0.5} } \put(0.8,3.7){ \makebox{ ctr() } } \put(1.5,3.3){\line(5,2){1.1} } \e{picture} & \b{picture}(3.5,3.6)(0.9,1) \put(2.5,3.5){ \b{tabular}[b]{|p{1.4cm}|} \hline {\small\it object} ctr \\ {\small\it var} n = 1 \\ \hline \e{tabular} } \put(1.2,3.2){ \circle*{0.5} } \put(0.8,3.7){ \makebox{ ctr() } } \put(1.5,3.3){\line(5,2){1.1} } \put(1.8,2){ \circle{0.5} } \put(0.9,2.4){ \makebox{ inc() } } \put(2.1,2.3){\line(2,3){0.7} } \e{picture} & \b{picture}(3.5,3.6)(0.9,1) \put(2.5,3.5){ \b{tabular}[b]{|p{1.4cm}|} \hline {\small\it object} ctr \\ {\small\it var} n = 1 \\ \hline \e{tabular} } \put(1.2,3.2){ \circle*{0.5} } \put(0.8,3.7){ \makebox{ ctr() } } \put(1.5,3.3){\line(5,2){1.1} } \put(1.8,2){ \circle{0.5} } \put(0.9,2.4){ \makebox{ inc() } } \put(2.1,2.3){\line(2,3){0.7} } \put(3.6,1.5){ \circle{0.5} } \put(3.4,2.1){ \makebox{ value(X) } } \put(3.6,1.8){\line(-1,6){0.26} } \e{picture} \\ \hline \hline \leftcomment{goal} O = new(ctr()) & O!inc() & O!value(X) \\ \leftcomment{effect} \small \sloppy A new object is created, and its non-logical variable is initialized to zero. & \small \sloppy The value of the non- \n logical variable n is incremented by one. & \small \sloppy The value of the non- \n logical variable is bound to the logical variable X. \\ \hline \hline \leftcomment{method} ctr() :- accept(any), ctr(). & inc() :- n = n + 1. & value(N) :- N = n. \\ \hline \e{tabular}