这是一个后续问题
哪个程序对应于形式的非构造性(经典)证明?(假设是一些有趣的可确定的关系,例如,第个TM不会以步长停止。)Ť È ķ
(ps:我之所以发布此问题,部分原因是我有兴趣在他的评论中进一步了解Neel所说的“ Godel-Gentzen翻译是一种延续通过的转变”的意思。)
这是一个后续问题
哪个程序对应于形式的非构造性(经典)证明?(假设是一些有趣的可确定的关系,例如,第个TM不会以步长停止。)Ť È ķ
(ps:我之所以发布此问题,部分原因是我有兴趣在他的评论中进一步了解Neel所说的“ Godel-Gentzen翻译是一种延续通过的转变”的意思。)
Answers:
这是一个有趣的问题。显然,人们不能指望有决定每个程序是否是否成立,因为这将决定停机问题。如前所述,有几种方法可以通过计算方式解释证明:Curry-Howard的扩展,可实现性,方言等。但是他们都会以以下方式通过计算方式或多或少地解释您提到的定理。∀ ķ Ť (ê ,ķ )
为简单起见,请考虑等效的经典定理
(1)
这是(建设性)相当于提及,因为给定的一个我们可以决定是否∀ ķ Ť (ê ,ķ )通过简单地检查的值保持与否¬ Ť (ê ,我)。如果¬ Ť (ê ,我)持有然后∃ 我¬ Ť (ê ,我),因此¬ ∀ 我Ť (ê ,我)。另一方面不然后通过(1)持有,我们有 ∀ Ĵ (¬ Ť (ê ,Ĵ )→交通⊥ )这意味着 ∀ Ĵ Ť (ê ,Ĵ )。
现在,我们不能再为每个给定的e计算(1)中的,因为我们将再次解决停止问题。上面提到的所有解释所要做的就是看等价定理
(2)
函数称为Herbrand函数。它尝试为每个给定的潜在证人i计算一个反例j。显然,(1)和(2)是等效的。从左到右,这是建设性的,只需将(2)中的i ' = i取为条件,其中i是(1)的假定见证人。从右到左,必须经典推理。假设(1)不正确。然后,
(3)
令是证明这一点的函数,即
(4)
现在,取(2)中,我们有(¬ Ť (ê ,˚F '(我'))→ ¬ Ť (ê ,我')),对于一些我'。但是,在(4)式中取i = i ',就可以得出相反的否定。因此,(2)暗示(1)。
因此,我们认为(1)和(2)在经典上是等效的。但是有趣的是,(2)现在有了一个非常简单的构造见证。如果T (e ,f (0 ))不成立,只需取,因为(2)的结论为真;否则取我' = 0如果Ť (ê ,˚F (0 ))成立,因为然后¬ Ť (ê ,˚F (0 )不成立,并且(2)的前提为假,使其再次成立。
因此,在计算上解释像(1)这样的经典定理的方法是看一个(经典的)等价表述,在我们的情况下(2),该表述可以得到建设性的证明。
上面提到的不同解释仅在函数弹出的方式上有所不同。在可实现性和方言解释的情况下,当与某种形式的否定翻译(例如Goedel-Gentzen's)组合使用时,解释会明确给出这一点。在带有call-cc和延续运算符的Curry-Howard扩展的情况下,函数f产生于以下事实:程序被允许“知道”将如何使用某个值(在我们的情况下为i),因此f是延续围绕i的计算点
另一个重要的一点是,您希望从(1)到(2)的通道是“模数”的,即,如果使用(1)来证明(1'),则应以类似的方式使用其解释(2)证明(1')的解释,例如(2')。上面提到的所有解释都是这样做的,包括Goedel-Gentzen否定翻译。
众所周知,经典算术和直觉算术是相等的。
证明这一点的一种方法是通过将经典逻辑“负嵌入”到直觉逻辑中。因此,假设是经典一阶算术的公式。现在,我们可以定义直觉逻辑的公式,如下所示:
请注意,本质上是一种同态性,坚持存在于所有其他not-not之外,只是在析取和存在存在时,它使用de Morgan对偶性将它们转变为合取和普适性。(我非常有信心这不是确切的Godel-Gentzen翻译,因为我为这个答案做好了准备-基本上,您使用双重否定+ de Morgan对偶性编写的任何内容都将起作用。实际上,这种多样性对于经典逻辑的计算解释;请参见下文。)
第一:很明显,这种翻译保留了古典真理,因此,就古典而言,当且仅当ϕ是, G (ϕ )是正确的。
二:这是不太明显,但仍的情况下,即在公式片段,可证明在直觉和经典逻辑重合。证明这一点的方法是首先查看从该语法得出的公式:
然后我们可以作为一个引理证明(通过感应上),该G ^ (甲)可以凭直觉推导。因此,现在,我们可以通过对证明的结构(例如,顺序演算)进行归纳,并使用先前的引理来模拟被排除的中间律,从而显示负公式的等价性。
那么,您应该如何直观地考虑这一点?
首先,证明理论观点。如果您看一下后续演算的规则,您会发现古典逻辑和直觉逻辑的唯一不同之处仅在于析取和存在规则。因此,我们利用这一事实表明,这些公式中一种逻辑的证明可以转化为另一种逻辑的证明。这说明怎么想建设性的逻辑,作为一个扩展经典逻辑与两个新的连接词和∨。我们所谓的“经典存在”和“经典析取”只是涉及∀,合取和否定的缩写,因此要谈论实际存在,我们需要引入新的连接词。
其次,有一个拓扑视图。现在,经典逻辑的模型(作为一组集合)是布尔代数(即,在任意并集,交点和补码下闭合的子集家族)。事实证明,直觉逻辑模型是一个拓扑空间,这些命题被解释为开放集。他们否定的解释是补体的内部,然后可以很容易地表明,这意味着双否定将我们带入最小clopen覆盖每个打开的---和clopens形成布尔代数。
现在,由于有了Curry-Howard,我们知道了如何将直觉逻辑中的证明解释为功能程序。因此,对于“古典证明的建设性内容是什么?”这个问题,可能有一个答案(但不是唯一的答案)。是以下内容:
经典证明的计算内容与证明的翻译(根据否定翻译)的计算内容无关。
因此,让我们看看翻译。因此,这说排中的建设性内容相同的话说,这不是的情况下¬ P和和¬ ¬ P保持-即非矛盾。因此,从这个意义上讲,被排除的中间定律实际上并没有太多的计算内容。
要看到它是什么具体的,建设性的那个,否定被定义为召回。所以这个公式是((G (A )。Ocaml代码的以下部分将说明:
type bot = Void of bot
type 'a not = 'a -> bot
let excluded_middle : ('a not * 'a not not) not = fun (u, k) -> k u
也就是说,如果得到非A和非非A,则可以将第一个否定传递给第二个否定,以得出所需的矛盾。
现在,什么是延续传递样式转换?
现在,
我看到了“ a”个CPS转换,因为正如我前面提到的,有许多否定的转换让您证明这个定理,并且每个对应于一个不同的CPS转换。在操作上,每个转换对应一个不同的评估顺序。因此,经典逻辑没有独特的计算解释,因为您可以做出选择,而差异选择具有非常不同的操作特性。
整个会议都以程序形式讨论非构造性证明,我不是该领域的专家。上面,尼尔·克里希纳斯瓦米(Neel Krishnaswami)暗示了他正在准备的更长的答案,从他在这里的工作来看,这将是极好的。这只是一个答案。
Set Implicit Arguments.
Axiom callcc : forall (A B : Set), ((A -> B) -> A) -> A.
Lemma lem : forall (A B:Set), sum A (A -> B).
Proof.
intros.
eapply callcc.
intros H.
right.
intros.
apply H.
left.
assumption.
Defined.
Recursive Extraction lem.
给出O'Caml代码:
type ('a, 'b) sum =
| Inl of 'a
| Inr of 'b
(** val callcc : (('a1 -> 'a2) -> 'a1) -> 'a1 **)
let callcc =
failwith "AXIOM TO BE REALIZED"
(** val lem : ('a1, 'a1 -> no) sum **)
let lem =
callcc (fun h -> Inr (fun h0 -> h (Inl h0)))
我所见过的最干净的介绍是蒂姆·格里芬(Tim Griffin)的“控制的公式化类型”。
callcc
到Scheme中callcc
。然后,您实际上可以尝试一下。