作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读 Learn Prolog Now , 1.1.2 Knowledge Base 2 他们写了关于将 modus ponens 的使用链接在一起的内容。
KB2.pl 文件:
listensToMusic(mia).
happy(yolanda).
playsAirGuitar(mia) :- listensToMusic(mia).
playsAirGuitar(yolanda) :- listensToMusic(yolanda).
listensToMusic(yolanda) :- happy(yolanda).
查询时:
playsAirGuitar(yolanda).
被提交给 gprolog,它应该响应 yes
,因为它应该能够从 yolanda 高兴的事实中推断出来。
但是 gprolog 以 no
响应。这是为什么?
最佳答案
我认为问题在于谓词 listensToMusic/1 的子句是分开的。
以下代码为我返回"is":
listensToMusic(mia).
listensToMusic(yolanda) :- happy(yolanda).
happy(yolanda).
playsAirGuitar(mia) :- listensToMusic(mia).
playsAirGuitar(yolanda) :- listensToMusic(yolanda).
你应该得到一个像
这样的警告warning: discontiguous predicate listensToMusic/1 - clause ignored
关于prolog - 为什么 gprolog 不将 modus ponens 的使用链接在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6962074/
我想为这些简单的推理规则制定 Ltac 策略。 在 Modus Ponens 中,如果我有 H:P->Q和 H1:P , Ltac mp H H1将添加 Q上下文为 H2 : Q . 在 Modus
我正在阅读 Learn Prolog Now , 1.1.2 Knowledge Base 2 他们写了关于将 modus ponens 的使用链接在一起的内容。 KB2.pl 文件: listens
我是一名优秀的程序员,十分优秀!