Prolog实施真理维护系统

时间:2012-11-15 02:06:07

标签: prolog tms

真值维护系统(TMS)存储推理的理由,从而在给定的知识库中得出特定的结论。

一个很好的例子看起来像这样(这是 Not prolog):

∀ X good_student(X) ∧ M study_hard(X) → study_hard (X)
∀ Y party_person(Y)  → ¬study_hard (Y)
good_student(pat)

我根本无法弄清楚如何实现这一点。我不知道如何具体表示模态运算符M(与之一致)。显然,我可以创建谓词good_student / 1,study_hard / 1和party_person / 1。 study_hard / 1与good_student和study_hard的联系也是我迷失的地方。

这引出了我的问题:有没有人知道如何在prolog中实现这样的事情?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您知道Prolog支持一阶逻辑的子集。你不能使用任意逻辑句子,甚至不能使用条款,而是使用明确的条款。现在,在该程序中,您有两件不受​​支持的东西:一个子句和一个模态运算符的否定。 如果M是我所理解的,那么从你的评论来看,它是否定为失败。你可以在Prolog中免费获得默认否定(\+not)。对于头脑中的否定,你有两种方法:

  1. 您可以尝试使用逻辑变换推导出由明确子句组成的逻辑等价理论。我现在懒得试试,但你可以试一试。
  2. 嘿,你不是第一个想要在头脑中使用否定的人。有不同的框架可以解决这个问题。外展逻辑编程系统可以处理完整性约束,可以为您提供否定以及免费使用其他模态运算符。更好的是,尝试答案集编程。许多ASP解决方案都可以处理您的程序。
  3. 祝你好运。

相关问题