![](/img/trans.png)
[英]Prolog program - list of Peano numbers - rule returns multiple answers
[英]Is there an error in this textbook about Peano Arithmetic?
我在斯坦福大学提供的在线介绍性开放课程中遇到了这个疑问。
在此教科书的9.4节下: http : //logic.stanford.edu/intrologic/secondary/notes/chapter_09.html
它说:
此处显示的公理在0和s之间定义了相同的关系(其中下面的功能常数s表示后继函数,例如s(0)= 1,s(1)= 2,s(2)= 3)
∀x.same(x,x)
∀x。(¬same(0,s(x))∧¬same(s(x),0))
∀x.∀y。(¬same(x,y)⇒¬¬same(s(x),s(y)))
据我了解:
第一句话说两个相同的数字是相同的。 第二句和第三句用于定义不相同的内容。
第二个说没有任何数字的后继者等于0。
第三个说如果两个数字不相同,那么它们的后继者也不相同。 例如,如果1≠3,则2≠4。
但是,我认为第三句应该是双条件的,因为如果我没有记错的话,该定义就不会涵盖被证人数小于给定人数的情况,否则可以说2≠ 4,则1 = 3。
所以我想知道这是教科书中的错误还是我的推理有问题。
这本教科书没有错误。 虽然该声明确实在两个方向上都适用,但由于另一个方向来自后继函数的功能属性和教科书中列出的三个公理,因此无需将其声明为一个公理。
正式证明将涉及定义后继功能的公理。 更加习惯于使用自动证明或仅仅是逻辑学的人也许能够完成这样的形式证明。
这只是证明的草图。 它使用符号“ =”表示术语相等,即u = v表示u和v是使用符号0和s()编写的语法上相同的术语。 同样,“ u < v ”表示u和v都是基本术语,并且u的s ()应用严格小于v 。
假设
∀x.∀y。(¬same(s(x),s(y))⇒¬same(x,y))
不成立,那么存在一些项x0和y0使得
相同(x0,y0)和相同(s(x0),s(y0))。
由于s(x0)是一个函数,因此从ssame(s(x0),s(y0))和∀x.same(x,x)得出x0和y0是两个不同的项。 首先让我们考虑x0 <y0的情况,然后y0 = s(... s(x0)),其中存在s()的n个应用,并且n >0。另一种情况y0 <x0可以类似地处理。
将s(... s(x0))替换为same(x0,y0)中的y0,我们得到same(x0,s(... s(x0)))。
同样x0 = s(... s(0))其中,对于某些非负整数m ,有s()的m个应用。 在给定的方向上使用第三个公理,我们可以说,如果相同(s(u),s(v)),则相同(u,v)。 因此,从same(x0,s(... s(x0)))我们可以“剥离” s()的m个应用以获得
same(0,s(... s(0)))其中第二个参数中有s() 个应用。 这与第二个公理矛盾。 优质教育
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.