我在斯坦福大学提供的在线入门逻辑开放课程中遇到了这个疑问。
根据本教科书第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.
所以我想知道这是教科书中的错误还是我的推理出错了。
答案 0 :(得分:1)
本教材中没有错误。虽然该语句确实在两个方向上都有,但是没有必要将其称为公理,因为另一个方向来自后继函数的 functional 属性和教科书中列出的三个公理。
正式证据将涉及定义后继函数的公理。更习惯于使用自动化证明者或只是一名优秀的逻辑学生的人可能能够完成这样的正式证明。
这里只是一个证明草图。它使用符号“=”来表示术语相等,即 u = v 表示u和v是使用符号0和s()写的语法相同的术语。此外,“你< v ”意味着你和 v 都是基础术语,并且你的 s的应用程序严格较少()比 v 。
假设
∀x.∀y。(¬same(s(x),s(y))⇒¬same(x,y))
不成立,那么存在一些术语x0和y0,使得
相同(x0,y0)和¬same(s(x0),s(y0))。
由于s(x0)是一个函数,它遵循¬same(s(x0),s(y0))和∀x.same(x,x),x0和y0是两个不同的项。首先让我们考虑x0< y0,然后y0 = s(... s(x0))其中有s()和 n 的 n 应用程序> 0. y0< 0的另一种情况。 x0可以类似地处理。
将s(... s(x0))代入同一个(x0,y0)中的y0,我们得到相同的(x0,s(... s(x0)))。
此外x0 = s(... s(0))其中有一些非负整数 m 的s()的 m 应用程序。在所提供的方向上使用第三个公理,我们可以说如果相同(s(u),s(v))则相同(u,v)。因此,从相同的(x0,s(... s(x0)))我们可以“剥离”s()的 m 应用程序来获取
相同(0,s(... s(0)))其中第二个参数中有s()的 n 应用程序。这与第二个公理相矛盾。 Q.E.D。