类型理论中的康托定理


9

康托定理指出

对于任何集合A,A的所有子集的集合都具有比A本身更大的基数。

是否可以仅使用类型/命题而不引用ZFC集来对类似内容进行编码?应当理解用于以依存类型的语言对该命题进行编码的代码或伪代码。

Answers:


9

简短的回答:是的!您不需要那么多的设备就能获得证明。

一个微妙之处:表面上似乎使用了排除的中间物:一个人建立了一套 D 还有一个数字 d,并表明 dD 要么 dD这导致了矛盾。但是在直觉逻辑中确实存在一个引理,指出:

 for all statements P,(P¬P)

这足以满足通常的证明。请注意,一般而言,“排斥”在构造/直觉逻辑上可能有一些细微的差别(没有选择),因此您必须使用“正确的可逆”。

Coq中的一个非常标准的证明(由于某种原因我无法在线找到它)可能如下所示:

Inductive right_invertible {A B:Type}(f : A->B):Prop :=
| inverse: forall g, (forall b:B, f (g b) = b) -> right_invertible f.


Lemma case_to_false :  forall P : Prop, (P <-> ~P) -> False.
Proof.
  intros P H; apply H.
    - apply <- H.
      intro p.
      apply H; exact p.
    - apply <- H; intro p; apply H; exact p.
Qed.


Theorem cantor :  forall f : nat -> (nat -> Prop), ~right_invertible f.
Proof.
  intros f inv.
  destruct inv.
  pose (diag := fun n => ~ (f n n)).
  apply case_to_false with (diag (g diag)).
  split.
  - intro I; unfold diag in I.
    rewrite H in I. auto.
  - intro nI.
    unfold diag. rewrite H. auto.
Qed.

当然,考虑这些事项的“正确”框架(可以视为证明要通过的最低要求)是Lawvere的不动点定理,该定理指出了该定理在每个笛卡尔封闭类别中的适用性(因此在特别是在任何合理的类型理论中)。

安德烈·鲍尔(Andrej Bauer)在关于综合可计算性的不动点定理的论文中对此定理进行了漂亮的写作,我怀疑可能对此答案有一些有趣的东西。


如果我理解正确,在您的定义中cantornat将扮演“任何集合A” nat -> Prop的角色,并扮演“所有A子集的集合”的角色。什么是替代的影响nat -> Propnat -> bool?我猜想Prop在构造逻辑中使用更合适,但是古典逻辑和集合论经常假定排除了中间变量,因此我们应该能够替换Propbool并且仍然能够证明定理,对吗?
宝拉·维加

1
是的,使用否定图可以用bool代替Prop。Lawvere不动点定理表明您可以与具有一个带有地图的任何类型的一个做到这一点- >一个不固定的点,所以用3种元素或类型的所有自然数的也工作类型
最大的新

@PaulaVega Max几乎说明了所有内容,但我建议使用示例,例如使用bool代替Propand natdiag := fun b => negb (f b b),或者仅替换Propnatusing diag := fun n => (f b b) + 1
科迪
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.