I've been trying what you propose but it has the same behaviour. Now the program is:
**********************************************
:- concurrent proceed/2.
:- use_module(library(system)). :- use_module(library(random)).
producer(N,0) :- display(end(N)),nl. producer(N,M) :- repeat, random(1,100,I), + current_fact_nb(proceed(N,I)), display(proceed(N,I)), nl, asserta_fact(proceed(N,I)), M2 is M - 1, producer(N,M2).
start(0). start(N) :- eng_call(producer(N,5),create,create), M is N - 1, start(M).
********************************************
Again only prints two "proceed(X,Y)" and then stops.
______________________________________________________________________________
_/ _/ _/_| Jordi Sabater Mir / _/ _/ _| IIIA - Institut d'Investigacio en Intel.ligencia Artificial _/ _/___| CSIC - Spanish Scientific Research Council _/ _/____| Campus Universitat Autonoma de Barcelona / _/ _| 08193 Bellaterra, Catalonia, Spain Ph.: +34 3 5809570 Fax.: +34 3 5809661 jsabater(a)iiia.csic.es http://www.iiia.csic.es ______________________________________________________________________________