【发布时间】:2021-07-03 00:19:12
【问题描述】:
我对数理逻辑非常陌生,最近正在尝试学习 Prolog,不知道是否可以使用 Prolog 进行解析推理,例如,进行以下推理:
- 知道∀x.(sheep(x)→eatgrass(x))
- 知道 ∀x.(deadsheep(x)→¬eatgrass(x))
- 证明∀x.(deadsheep(x)→¬sheep(x))
我想要实现的是编写如下代码:
eatgrass(X) :- sheep(X).
false :- deadsheep(X), eatgrass(X).
sheep(X).
deadsheep(X).
查询时得到查询答案'false'
?- sheep(a),deadsheep(a).
在 Prolog 中我似乎无法实现类似于第 2 行的内容:
false :- deadsheep(X), eatgrass(X).
所以我想知道是否有一种方法可以进行上述 Prolog 中提到的推理,谢谢!
【问题讨论】: