多くの Prolog システムにはfreeze/2
述語があります。この述語は、geler/2
Prolog-II よりも前に発明されたので、おそらくその名前を持つべきです。
同じ変数に条件があると仮定しますが、2 つの異なる目標があります。
?- freeze(X, G1), freeze(X, G2), X=1.
G1 が最初に実行されるか、G2 が最初に実行されますか? G1 と G2 が新しいフリーズを生成し、それも起こされたらどうなるでしょうか。
G1 :- freeze(Y, G3), Y=1.
G2 :- freeze(Z, G4), Z=1.
G3 または G4 は常に G1 と G2 の間で実行されますか? それとも、G3 または G4 は G1 と G2 の後、または後で実行される可能性がありますか?
さよなら