リストなどの変数が無制限になるまで目標を凍結したいのですが、今は
sieve(N,L) :-
freeze(Aux,sieve(N,L,[],Aux)),
numlist(2,N,Aux).
sieve(N,L,R,[H|T]) :-
freeze(X, X mod H =\= 0 ; X == H),
findall(X,select(X,T,_),P),
sieve(N,L,[H|R],P).
sieve(_,L,L,[]).
しかし、いくつかの操作の後に停止し、永遠に待機します。誰かがこれを修正する方法を教えてもらえますか?