我有一组一阶逻辑中的真实语句和条件语句,我想使用 prolog 来解决。但是,我无法优雅地表达我的事实和条件。
例如,假设我想表达以下内容:
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
?