Prolog delayed evaluation: LIFO or FIFO wake-up?
<p>Many Prolog systems have a <code>freeze/2</code> predicate, a predicate
that should possibly have the name <code>geler/2</code> since it was
even invented before Prolog-II.</p>

<p>Assume I have a condition on the same variable, but two
different goals, i.e.:</p>

<pre><code> ?- freeze(X, G1), freeze(X, G2), X=1.
</code></pre>

<p>What is the preferred wake-up strategy, is G1 first executed
or is G2 first executed? What if G1 and G2 do spawn new 
freezes, which are also woken up:</p>

<pre><code> G1 :- freeze(Y, G3), Y=1.
 G2 :- freeze(Z, G4), Z=1. 
</code></pre>

<p>Is G3 or G4 always executed in-between G1 and G2, or could it be
that G3 or G4 is executed after G1 and G2, or even any time later?</p>

<p>Bye</p>