数学与计算

关于计算机数学的博客

多少是二?

在构造数学中,即使是非常小的集合也可能比在经典数学中更有趣。既然你不会相信我说的,至多有一个元素的集合是非常有趣的,那么让我们看看真值集合,它有“两个”元素。

A类真值由一个句子表示,例如`2+3=5`或`forall x in R exists n in n。x<n `。(回想一下,句子中没有自由参数;当我们允许自由参数时,我们说的是命题,所以“x^2+y^2=z^2”并且“在R中存在x。x^2=y`是命题,不是句子)。如果句子`p`和`q`在逻辑上等价,则表示相同的真值。所有真值的集合通常用“Omega”表示。

“Omega”有多少元素?常数`TT`和`_|_`分别表示真和假,是真值。所以我们在Omega中有`TT`,在Omega`中有`_|_。这是两个要素。在经典逻辑中,这是唯一的两个,我们的意思是Omega`中的每个“p”都等于“TT”或“_|_`”(因为“p”或“not p”)。然而,在建设性逻辑中,情况并非如此。但这并不意味着存在第三个真值,它与`TT`和`_|_`都不同!怎么会这样?为了正确地解释这一点,我们必须小心集合具有“两个元素”意味着什么:对于集合“a”,这样说:

对于一个受过古典训练的人来说,拥有两种元素的两种感觉没有区别。然而,从计算上讲,两者存在差异:

显然,拥有强意义上的两个要素比拥有弱意义上的二个要素需要更多(决策程序)。在经典逻辑中,“Omega”有两个强意义的元素。在构造逻辑中,它有两个弱意义的元素,我们可以证明如下。取`x=TT`和`y=_|_`。给定欧米茄中的任何`z,我们必须证明`not(z!=x和z!=y)`,它在逻辑上等价于`not,(not z and not z)`,这是正确的(练习,请有人发布解决方案)。

这是否意味着建设性逻辑否认“Omega”有两个强烈意义上的元素?不,这让问题没有答案,因为构造逻辑与经典逻辑“向后兼容”。

你可能一直在想,‘Omega’和类型是一样的布尔许多编程语言都有。事实并非如此。首先,除非你的编程语言非常有限,布尔__三个元素:真的,和“未定义”,由发散表达式表示,如虽然真的做了;真的但即使我们对udefined值进行折扣,布尔只是“Omega”的子集,即可判定的真值,通常用`2`表示:

`2={欧米茄中的p;p或不是p}`。

`2`的元素是什么?由于`TT或not TT=TT或_|_=TT`和`_|_或not _|_=_|_或者TT=TT`,我们在2`中有`TT,在2`里有`_|_。如果给定任何“2中的p”,我们就知道“p或不p”。如果`p`那么`p=TT`,如果`not p`那么` p=_|_`。我们已经证明,`2`在强意义上有两个元素。

更令人困惑的是,还有一组经典的真值,

`Omega_c={p在Omega中;p iff不在p中}`。

它由那些满足“反证法”(矛盾证明)规则的真理值组成。
由于`not not TT=not_|_=TT`和`not _t|_=not TT=_|_`,我们可以在Omega_c`中看到`TT,在Omega _c`中可以看到`_|_。因此,我们有一个包含链

`2 sube Omega_c sube Ometa`。

有三个可能不同的集合,所有这些集合都有“两个元素”,这样安排似乎毫无用处,也不必要复杂。但实际上,这真的很有用。最小的`2`是数据类型布尔我们都从编程中知道。中间的“Omega_c”是“结构逻辑中的经典逻辑”。所以,即使我们可能不接受经典逻辑,我们仍然可以使用它。最大的“Omega”很有用,因为它是一组真值。

你的大脑可能仍然会反对这一切。在古典数学中,`2=Omega_c=Omega `是故事的结尾。虽然你在学校里被教导过这种情况,但这并不是你个人所相信的,至少如果你是一名程序员的话。记住`2`是数据类型布尔,假设`2=Omega`意味着“我们可以用真值进行计算”。如果真的是这样,我们应该能够编写程序来计算“Omega”上的基本逻辑操作,是吗?因此,逻辑析取、合取和否定通常很容易在典型的编程语言中用作操作。但我们不要忘记,“所有”和“存在”也是逻辑运算。为什么它们在典型的编程语言中不可用?如果您认为`2=Omega`是正确的,那么您应该能够编写一个程序,将布尔函数`f:NN->2`作为输入,并输出真值`forall n in n.f(n)`。你能做到吗?

评论

伊斯瓦兰语

这无疑是我在本科生(迈克尔·拉什金访问斯坦福大学时)所学的建构主义集合理论课上所记得的最引人注目的事实。我特别记得的是,如果一个元素集的幂集公理的实例是真的,那么整个幂集元素都是真的。谢谢你更详细地解释了发生了什么!

伊斯瓦兰指的是这个。1是一个单元素集合。如果电源组P(1)存在,则所有电源组P(X)存在。实际上,这句话有点取决于其他公理的细节。我怀疑迈克尔·拉什金(Michael Rathjen)教过CZF或类似的东西,它有(强有力的)集合公理和足够的分离来证明“对于每个集合”X(X)Y(Y)函数集X-&gt;Y(Y)存在”。从中你可以通过注意到P(X)X-&gt;P(1).

润滑油

但是你能写一个程序,把布尔函数作为输入吗f:NN->2并输出真值对于NN中的所有n。f(n)对一些人来说欧米茄哪里2 != 欧米茄?

哈尔

你好,安德烈(好久不见)。。。作为一个生活在二维世界中的“受过经典训练”(某种程度上)的数学家,我是如何解释(随着时间的推移)构造逻辑的,尤其是关于2的这一非常有见地的讨论,以及PeterMcB对LEM的评论。我想故意说这很难,但我真的很好奇建构主义者会说什么:

“构造逻辑是经典逻辑+可判定性。基本上,采用好的旧经典逻辑,去掉任何在计算机上实现时可能无法判定的部分。”

如果这是真的,那么我真的不明白。。。。当我们可以用TM来讨论事情时,为什么要乱逻辑呢。如果这是错误的,请解释差异。如果这不是真的或假的,那么我完全迷失了:)。

Thad Coons公司

二值命题逻辑相当容易实现。在我看来,“forall”和“there_exists”的逻辑运算属于谓词逻辑。这更为复杂,但对于定义良好的有限域来说仍然可以管理。困难似乎在于无限的领域,比如自然数。但是,如果出于任何原因,两个逻辑值都不够,那么尝试下一步似乎很自然。。。三个。

让我先回答卢克布。我们可以编写一个需要f: NN-&gt;2作为输入并输出的真值对于n.f(n)中的所有n,但我们不要求输出值为2,而是在欧米茄? 这方面的问题是,在什么方面还不清楚欧米茄是编程语言中的数据类型。在作为一种超级编程语言的Martin-Löf类型理论中,欧米茄不是数据类型,而是所有数据类型的类型!在“真正的”编程语言中,欧米茄不存在。

然而,卢克布的问题仍然存在,而且是一个好问题。我们能写吗对于所有人如果我们改变布尔值的基本类型?答案很有趣,需要在博客上写一篇完整的文章:-)

接下来,哈尔(你好!)问他是否正确地将构造数学解释为经典数学领域中的“那些可以计算的东西”。答案基本上是“是的”,但需要注意的是,这并不是唯一可行的方法口译建构主义数学(因为这是哈尔正在做的,他正在把它翻译回经典数学)。更微妙的是,在您的解释中,哪些内容是有效的取决于您所说的“在计算机上实现”的确切含义。使用哪种编程语言?(这很重要!)这还需要一篇完整的博文。

Thad建议也许我们可以使用三值逻辑对于NN中的所有n那样。我想提出的一个重要观点是,把建设性逻辑视为“三”值是一个坏主意,因为欧米茄弱意义上有两个元素(即不超过两个元素)。按照萨德的建议,更好的做法是不要试图获得第三个真实值,而是找到合适的子集S sube Omega公司这就完成了任务。此类子集必须大于2,将有两个弱意义上的元素。

解冻库恩斯

实际上,我认为有三个逻辑值与对于NN中的所有n相反,这与区分“弱意义上的两个”和“强意义上的二个”的需要有关。在我看来,这是一个精心设计的循环,需要保持某种形式的排斥中间派的法律,同时区分“真实”和“可证明的真实”。但是,通过拒绝将排除中间律作为适用于所有命题的普遍规律,而将其视为适用于某些命题但不适用于其他命题的偶然“原则”,可以更容易地作出这种区分。但这可能不是进行此讨论的最佳场所。

罗康纳

我不同意这篇文章的前提。很明显,逻辑等价句的等价类集合的基数大于2。即使在你用ZFC的公理进行了修改之后,你仍然有CH和Con(ZFC)这样的句子,它们严格地位于“Š”和“Š”之间。事实上,这个集合在经典逻辑中形成了一个丰富的布尔代数。证明&not(&notA∧­­A)是直接的。假设A和A都是可证明的。然后将第一个应用于第二个,我们将根据需要得到“Š”的证明。中的证据Coq公司是:

fun(A:道具)(H:(A->假)/\((A->假)->假))=>匹配H返回False|联合体B C=>C B结束:对于所有A:道具,~(~A/\~A)

我不会对这里的每一条评论都进行回复,但请不要将其视为我同意或不同意你的意思。本博客并非逻辑教程。我还将写更多的专业话题。

回复萨德:你不能有三个逻辑值。这是有证据的。如果你再次阅读我的帖子,你会发现我确实拒绝接受排中律,并且我确实告诉你如何通过只考虑可判定的命题来重新获得它。

回复罗康纳:你混淆了语法和语义。我很小心地说,真值是由一个句子表示的,但并没有这样说每一个真理值可以用一句话来表示,这是你帖子中隐含的一个假设。你提到的Lindenbaum代数只由那些可定义的真值组成,也就是说,由逻辑中的一些表达式表示。此外,真理与可证明性不是一回事。最后一句话:是什么让你认为在构造数学中,每个集合都有基数?

Thad Coons公司

我把排除中间定律理解为有两个经典等价公式:二价(pv~p)和非传统~(p&~p)。在我看来,你拒绝二价,但接受非二价。我很惊讶地得知我不能有三个逻辑值,因为卢卡西耶维茨在1920年发明了他的三值逻辑,而我自己也用它工作了大约20年。你能引用证据吗?如果你在谈论coq中的证据,我相信这可能包括一些我可能不接受的隐含假设。

你说得对。二合价在直觉主义逻辑中无效,而非传统逻辑则有效。

关于二值逻辑的含义有很多困惑(这就是我写这篇文章的原因)。卢卡西维茨的三值逻辑不是直觉主义逻辑的模型,因为其中的一些推理规则是无效的。我所说的并不是任何人可能称之为逻辑的武断的东西,而是更具体地说直觉主义逻辑。但这并不重要,因为我们可以找到似乎具有“三个值”的直觉主义逻辑模型,例如由两个对象和它们之间的箭头组成的范畴上的预升拓扑。事实上,给定任何Heyting代数H(H)只要你愿意,你就可以找到直觉主义逻辑的模型,即H(H)-有值集合,使得欧米茄是布景吗H(H)(具有适当定义H(H)-值相等谓词)。但现在重要的是不要混淆“多少分H(H)有吗?“带着问题”内部模型,需要多少点欧米茄有吗?“.在模型中,你可以证明声明的有效性Omega中不存在p。(p!=TT和p!=_|_),但在元理论中,你可以很容易地找到一个Heyting代数H(H)得分超过两分。请不要将理论与元理论混淆。

Thad Coons公司

许多推理规则的失败似乎是反对卢卡西维茨三值逻辑的最有力论据。但显然没有人注意到,在一定的合理条件下,有可能发展他的逻辑,建立这些推理规则。我的结果有一些很像直觉主义的特征。因为我是业余爱好者完全非正统我对比较它们感兴趣,因为我不是直觉主义逻辑的专家。请容忍我。

约夫
  1. 你说“如果你认为2=欧米茄,您应该能够编写一个以布尔函数作为输入的程序f:NN-&gt;2并输出真值对于n.f(n)中的所有n你能做到吗?“如果理论是可判定的,比如‘普雷斯伯格算术’和‘欧几里得几何的塔斯基公理’,我可以。”

  2. 存在两个以上真值的另一个选项欧米茄就是理论上有独立的句子,比如“皮亚诺公理”上的“古德斯坦定理”

亲爱的Yoav,您提到的选项在本次讨论中无效。

  1. Preburger算法是Peano算法的一个非常有限的子集,它甚至不包含乘法。当我们谈到自然的我们指的是皮亚诺算术。因此,您必须考虑所有功能f:NN->2可在Peano算术中定义,并且不可能决定这样的函数是否总是输出1(实际上,对于原始递归函数来说,这已经无法实现了,因为原始递归函数是所有数论函数的一个子家族)。换句话说,当然,通过改变假设,你可以得出不同的结论。

  2. 塔斯基公理适用于实闭域,而非自然数。自然数集合在塔斯基的理论中是无法定义的。所以你的第二句话不相关,因为我说的是函数NN->2,不是真的。

迈克·M

安德烈,我去聚会有点晚了,但我想问。。。。

在直觉主义类型理论(比如HTT)中,Bool显然是强2元类型。

这是否意味着Prop(包含单位类型和空类型的宇宙)将是弱2元素类型?Prop不也是子对象分类器吗?

是的,在类型理论中,$\mathtt{Bool}$是具有两个可以识别的元素的类型,即$\mathtt{True}\neq\mathtt1{False}$,对于所有$p:\mathtt{Bool{$,$p=\mathtt-True}$或$p=\fathtt{False}$。

但你搞错了$\mathtt{Prop}$。首先,当你说“$\mathtt{Prop}$是包含单位和空类型的宇宙”时,你的意思并不清楚。写下准确的定义至关重要。例如,如果您的意思是$\mathtt{Prop}=\Sigma(t:\mathtt{Type}),(t=\mathtt1{unit})+(t=\tathtt{empty})$,那么您刚刚定义了与$\mathtt{Bool}$等价的东西。但这不是$\mathtt{Prop}$在类型理论中的含义。相反,它必须定义为最多有一个元素的类型:$$\mathtt{Prop}=\Sigma(t:\mathtt{type}),\Pi(xy:t),x=y$$现在您无法证明$\mathtt{Prop}$与$\mathtt{Bool}$等价,实际上有些模型并不等价。最后,您会问$\mathtt{Prop}$是否是子对象分类器(除非排除中间保持,否则$\mathtt{Bool}$当然不是)。这取决于类型理论中“子对象”的含义。有一个子对象的概念,其中$\mathtt{Prop}$确实是子对象分类器,即$f:a\toB$是子对象,如果$f$的同伦纤维是上述意义上的命题。相比之下,作为类型的纯粹命题的做事方式是将每个依赖和作为子对象,在这种情况下,$\mathtt{Type}$将是子对象分类器。

最后一个警告:$\mathtt{Prop}$不是一个小类型,也就是说,它不需要包含在任何宇宙中。因此,它是一个“大”分类器,我们在使用它时必须记住这一点。

如何在此博客上发表评论:目前,由于相关脚本死亡,注释被禁用。如果你在上评论这篇文章乳臭虫提到andrejbauer@mathstodon.xyz,我会的欣然回应。欢迎您加入联系我直接。