で実行される2つの変数リストの交差のためのISO Prolog述語をどのように定義するか時間?変数は、任意の決定された順序で現れることができる。変数の「年齢」のような実装依存のプロパティは、結果に影響する必要がありません。 library(ordsets)
と同様に2つの変数リストの交差
は、のは、3番目の引数は最初の二つの引数の交差点で統一した出力引数、で、ある関係varset_intersection(As, Bs, As_cap_Bs).
?- varset_intersection([A,B], [C,D], []).
true.
?-varset_intersection([A,B], [B,A], []).
false.
?- varset_intersection([A,B,C], [C,A,D], Inter).
Inter = [A,C].
or
Inter = [C,A].
?- varset_intersection([A,B],[A,B],[A,C]).
B = C
or
A = B, A = C
?- varset_intersection([A,B,C],[A,B],[A,C]).
idem
を呼びましょう。
現在のISO標準(ISO/IEC 13211-1:1995にはCor.2を含む)のlist of the built-insを参照してください。
(私は1つ、数年前に別の過程でこの質問に答えるなかったことに注意してください、しかし、それはGoogleに隠された目に見えないままになります。)
最初のクエリ( 'varset_intersection([A、B]、[B、A]、[])')に対する答えはfalseです。 –
varset_intersection([A、B]、[A、B]、[A、C])および 'varset_intersection([A、B、C]、[A、B] ]、[A、C]) '第3引数との*真の*交点を統一することによって、これらの目標を満足すべきか? –
今はっきりしているはずです。 – false