#clause(?ヘッド) #clause(?ヘッド,-ボディ) #clause_term(?ヘッド,-ボディ,-変数リスト)
"節(clause)"という表現は、事実あるいはル−ルを表します。節はコンディッショナル":-"の左に位置するヘッドと、右に位置するボディから成ります(ヘッド :- ボディ)。ヘッドは1つの項から成っており、ボディはル−ルの呼び出しを組み合わせたものです。ボディがない場合には、ボディが"true"と宣言されたものと等価です。"単位節(unit clause)"は、事実の同義語です。
clause/2は、デ−タベ−ス上でヘッドがヘッドに一致する節を捜します。「ヘッド」は、必ず変数以外の項でなければなりません。これらの節の「ヘッド」と「ボディ」は、それぞれ「ヘッド」と「ボディ」に単一化されます。節が単位節ならば、「ボディ」は"true"に単一化されます。clause/2は、「ヘッド」に一致するすべての節を見つけるためにバックトラックを行います。
clause/1は、データベース中の事実を探します。セミ/フルコンパイルされた述語の節は、見ることができません。
「ヘッド」あるいは「ボディ」が変数を含んでいて、変数名がその述語と共に格納されている場合に、clause_term/3は、「変数リスト」に変数名のリストを返します。
?- {user}. | today(88,1,26). % 事実、あるいは単位節 | date(88,Month,Day) :- % 規則 Day >= 1, Day =< 31, Month >= 1, Month =< 12. | end_of_file.
yes ?- clause(today(L,M,N),B), clause(date(L,M,N),O).
L = 88 M = 1 N = 26 B = true O = 26 >= 1, 26 <= 31, 1 >= 1, 1 <= 12 yes ?- _
structure_expected 「ヘッド」は複合項でもアトムでもない。 not_modifiable 「ヘッド」は、変更可能な述語を参照せねばなりません。