在哪里可以找到 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 的更广泛主题。
作为作业的一部分,我被要求使用 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 的更广泛主题。