Re: Prologs with Occurs Check constantly on?
- From: Jan Burse <janburse@xxxxxxxxxxx>
- Date: Wed, 12 Oct 2011 20:32:03 +0200
Jan Wielemaker schrieb:
As Ulrich pointed out, the world of unification with occurs-check
combines poorly with the world of cyclic terms. This was the main
conclusion from a debate whether A=f(A), unify_with_occurs_check(A,_)
should succeed or fail.
Yes, remember something.
That requires much than simply emitting different> unification instructions.
In a first round, the burden would be on the
end-user to guarantee that his mix and match
The problem is that when you have the occurs
check off and no cyclic terms, your Prolog
system is anyway not safe in the first place.
I probably don't need to give you examples,
but here is one:
?- X=f(X), Y=f(Y), X=Y.
I guess it will hang in 75% of the Prolog
systems, or is it 95%?
Something else: In the above example, the
Prolog system might infinitely hang, even not
throwing a stack overflow error or some heap
overflow, when unification is implemented with
Any Prolog system still reacting on signals or
somesuch? Is it possible to interrupt the current
thread? I guess killing is always possible, right?