Tür teorisinde Cantor teoremi


9

Cantor teoremi şöyle diyor:

Herhangi bir A kümesi için, A'nın tüm alt kümelerinin kümesi A'nın kendisinden kesinlikle daha büyük bir kardinaliteye sahiptir.

ZFC setlerine başvurmadan sadece türleri / önerileri kullanarak böyle bir şeyi kodlamak mümkün mü? Bu teklifi bağımlı olarak yazılan bir dilde kodlamak için kod veya sözde kod takdir edilecektir.

Yanıtlar:


9

Kısa cevap: evet! Geçiş kanıtı almak için o kadar makineye ihtiyacınız yok.

Bir incelik: Görünüşe göre dışlanan ortalığın bir kullanımı var: biri bir set oluşturur D ve bir sayı dve şunu da gösterir: dD veya dDbu bir çelişkiye yol açar. Ancak sezgisel mantıkta doğru olan bir lemma vardır :

 for all statements P,(P¬P)

Bu, olağan kanıtla birlikte yeterlidir. Genel olarak "sapma" nın yapıcı / sezgisel mantıkta (seçim olmadan) ince bir nüansı olabileceğine dikkat edin, bunun yerine "doğru ters çevrilebilir" ile yapmanız gerekir.

Coq'ta çok standart bir kanıt (bazı nedenlerden dolayı çevrimiçi bulamadım) aşağıdaki gibi gidebilir:

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.

Tabii ki, bu kanıtın geçmesi için asgari gereklilikler olarak görülebilen bu konuları düşünmenin "doğru" çerçevesi, Lawvere'in her Kartezyen Kapalı Kategoride teoremi tuttuğunu belirten sabit nokta teoremidir . herhangi bir makul tip teoride).

Andrej Bauer, bu teorem hakkında makalede güzelce yazıyor Sentetik hesaplanabilirlikte sabit nokta teoremleri hakkında ve bu cevaba eklemek için ilginç şeyler olabileceğinden şüpheleniyorum.


Eğer doğru anlamak, sizin tanımında cantor, nat"Herhangi bir set A" nın rol oynar ve nat -> Prop"A nın tüm alt kümelerinin kümesi" rolünü oynar. Değiştirmenin etkileri ne olurdu nat -> Propile nat -> bool? Kullanıyorum sanırım Propbiz yerine gerekir, böylece yapıcı mantık daha uygun olmakla birlikte, klasik mantık ve küme teorisi genellikle orta dışlanmış varsayalım Propile boolve hala sağ önermeyi ispatlamak mümkün?
Paula Vega

1
Evet, Prop'yi bool ile değiştirmek, olumsuzlama haritasını kullanarak iyi çalışır. Lawvere'in sabit nokta teoremi, A -> A haritasında sabit noktaları olmayan herhangi bir A tipi ile yapabileceğinizi gösterir, bu nedenle 3 elementli bir tür veya tüm doğal sayıların türü de çalışır
Max Yeni

@PaulaVega Max hemen hemen her şeyi söylüyor, ama ben mesela, örneğin uğraşırken kullanılmasını öneriyoruz boolyerine Propve natve diag := fun b => negb (f b b)veya sadece değiştirilmesi Propile natve kullanma diag := fun n => (f b b) + 1.
cody
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.