An example

of an object is given in the following declaration. .ds ctr.pl The use of such a counter is illustrated by the goal
 :-
  	O = new(ctr()), 
  	O!inc(),
  	O!value(X).
  
where a counter is created, which is subsequently asked to answer the method calls inc() and value(X). The constructor of the counter states that the object is prepared to answer any call, indefinitly. Evaluating the goal O = new(ctr()) results in the creation of a new instance of the declared object. \nop{ Below we have depicted how multiple processes refer to a single object. .so exec } For each method call a seperate process is created, evaluating the call. A process keep track of the evaluation history of a goal. In case backtracking occurs, after a first answer has been delivered, the process continues to generate answer substitutions. The object is free to accept other method calls after having delivered the first answer substitution or failure. The process that continues evaluating the goal to find alternative answers runs then concurrently with other processes created for evaluating a method call.