プロローグを使用して解決したい一次論理に、真のステートメントと条件ステートメントのセットがあります。ただし、事実と条件をエレガントに表現するのに苦労しています。
たとえば、次のように表現したいとします。
He drinks tea.
she does not drink tea if he does not drink tea.
either she likes soda or tea but not both
if she likes soda then he does not like tea.
上記はばかげた例であり、私は論理的演繹に興味があります。推論を開始できるように、プロローグへの直接翻訳に興味があります。これが私の試みです:
Drink_Tea(He).
/* I can't seem to find a not operator, so I'll use !*/
!Drink_Tea(She) :- !Drink_Tea(He).
likes(Soda, She) ; likes(tea, She) , !likes(Soda, She) , !likes(Tea, She).
!likes(Tea, He) :- likes(Soda, She).
すべてのヘルプは大歓迎です! さらに情報が必要な場合はお知らせください。
編集:not(p) ; not(q)
プロローグ ファイルで、変数p
や
などの「ファクト」を記述できないのはなぜq
ですか?