以下の事実について考えられる状況を見ようとしています。
don likes cain
bob does not like don
cain does not like aron
nobody likes someone who does not like him
aron likes everyone who likes bob
don likes everyone bob likes
everybody likes somebody
私はプロローグの学習を始めたばかりで、これをプロローグに実装して、考えられる状況がいくつ発生するかを確認しようとしています。私はいくつかのプロローグ スレッドをここでスキャンしました。また、本「Learn prolog now」も使用しています。したがって、これがコードを思いつくための私の最善の試みです。
likes(don, cain).
likes(aron,W):- likes(W,bob).
likes(don,M):- likes(bob,M).
(likes(aron,aron);likes(aron,bob));(likes(aron,cain);likes(aron,don)).
(likes(bob,aron);likes(bob,bob));(likes(bob,cain);likes(bob,don)).
(likes(cain,aron);likes(cain,bob));(likes(cain,cain);likes(cain,don)).
(likes(don,aron);likes(don,bob));(likes(don,cain);likes(don,don)).
not(likes(bob,don)).
not(likes(cain,aron)).
not(likes(Y,X)) :- not(likes(X,Y)).
これを Ubuntu Linux (winxp 内の VirtualBox にある) の swipl コンパイラで実行すると、次のエラーが発生します。
?- [test].
ERROR: /home/test.pl:11:
'$record_clause'/2: No permission to modify static_procedure `(;)/2'
ERROR: /home/test.pl:13:
'$record_clause'/2: No permission to modify static_procedure `(;)/2'
ERROR: /home/test.pl:15:
'$record_clause'/2: No permission to modify static_procedure `(;)/2'
ERROR: /home/test.pl:17:
'$record_clause'/2: No permission to modify static_procedure `(;)/2'
% test compiled 0.00 sec, 1,616 bytes
true.
これで私を助けてもらえますか......私はnot
ここで述語として使用しました.ネット上のいくつかのスレッドはそれについて言及しているようです.