MINERVA superseeded IF/Prolog.
Please see
http://www.ifcomputer.co.jp/MINERVA
for details.
We discontinued to sell IF/Prolog Dec 31. 2003.
Dedicated technical support for IF/Prolog ended Dec 31 2008.
This site is maintained as a community service only.
これまで非公式に述べてきましたが、解探索の正式な定義においてマッチングの過程を単一化といいます(/ClocMel/を参照して下さい)。これは、2つの項が事実上同一になるまで一致させようという過程です。
=/2は、"単一化する"と呼ばれます。項1と項2が単一化可能ならば、それらは単一化されて、述語は成功します。これは節"Z=Z"と定義されます。=/2を計算式の評価/割り当てをする演算子is/2や、項の比較をする演算子==/2、あるいは計算式の比較をする演算子=:=/2と混同しないで下さい。=/2では、計算式の評価は行なわれません。
\=/2は、"単一化できない"と呼ばれます。項1と項2が単一化できない場合に述語は成功します。これは節"not 項1 = 項2."と定義されます。
単一化は出現チェックをしながら実行されます。無限項は単一化でき、スタックがオ−バ−フロ−したりPrologシステムがクラッシュすることはありません。
?- [a,b,c,d] = '.'(H,T).
H = a
T = [b,c,d]
yes
?- X is 6*2, Y = 6*2, X \= Y.
X = 12
Y = 6'*'2
yes
?- X = 1+X.
X = {@1 = 1+@1}
?- assertz( p(X) :- p(X) ), p(a).
^CE X C E P T I O N : interrupt : p(a)
?- qt( [a,B,D] , R ) = qt( [a,[ii],E], f(x,y) ).
B = [ii]
D = _296 E
R = f(x,y)
yes
?-
|