在哪里可以找到 resources/information 关于 Prolog 中的证明控制

Where to find resources/information about proof control in Prolog

作为作业的一部分,我被要求使用 Prolog 检查自然演绎中的证明是否正确。包含证明的名为 "valid.txt" 的示例文本文件如下所示:

[imp(p, q), p].
q.
[
[1, imp(p,q), premise],
[2, p, premise],
[3, q, impel(2,1)]
].```

这将是我程序的输入,它应该 "yes" 或 "true" 响应正确的证明(上面是),并且 "no" 或 "false" 到一个不正确的证明。

我不知道从哪里开始。所以 我的问题是是否有一些资源可以让我了解序言 verifying/controlling 中的证明 。我在 prolog 中有一些编程经验,但我觉得我需要一些关于如何构建可以验证证明的程序的具体说明。我找过教科书和网站,但找不到任何可以帮助我的东西。

最后我的程序大概应该是这样的:Checking whether or not a logical sequence that has assumptions in it is valid

因为这是我第一次在这里提问,如果我遗漏了什么,我深表歉意。

在某种程度上,我完全理解势均力敌的投票、评论等,但另一方面,我完全可以理解你这边的故事。

请注意,我对您的问题的看法只是略微超出此处允许范围的错误一面,但并没有差到让其他新手无法逃脱做同样的事情。

这里不允许推荐书籍的问题。通常一本书的推荐会被认为是主观的,但是当只有一两本书符合要求时,怎么会是主观的。

"Handbook of Practical Logic and Automated Reasoning" 来自 John Harrison (WorldCat) (Amazon) (Webpage)

注:本书使用OCaml编程语言,但实现了Prolog. Also the book uses a domain specific language and implements a parser.

的一个子集

这本书显然超出了您的需要,因此您无需获取或阅读整本书。

您可能只需要在 prop.ml

中找到的这个
let rec eval fm v =
  match fm with
    False -> false
  | True -> true
  | Atom(x) -> v(x)
  | Not(p) -> not(eval p v)
  | And(p,q) -> (eval p v) & (eval q v)
  | Or(p,q) -> (eval p v) or (eval q v)
  | Imp(p,q) -> not(eval p v) or (eval q v)
  | Iff(p,q) -> (eval p v) = (eval q v);;

示例查询

tautology <<p \/ q ==> q \/ (p <=> q)>>;;

本书更多的是详细介绍源码的一个功能更加丰富的版本HOL-Light which is a simpler version of HOL

这些链接应该让您进入工作应用程序的范围,这些都属于 automated theorem proves which is different from proof assistants 的更广泛主题。