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: d∈D veya d∉Dbu 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.
cantor
,nat
"Herhangi bir set A" nın rol oynar venat -> Prop
"A nın tüm alt kümelerinin kümesi" rolünü oynar. Değiştirmenin etkileri ne olurdunat -> Prop
ilenat -> bool
? Kullanıyorum sanırımProp
biz yerine gerekir, böylece yapıcı mantık daha uygun olmakla birlikte, klasik mantık ve küme teorisi genellikle orta dışlanmış varsayalımProp
ilebool
ve hala sağ önermeyi ispatlamak mümkün?