Câu trả lời ngắn gọn: có! Bạn không cần nhiều máy móc để có được bằng chứng.
Một sự tinh tế: dường như trên mặt của nó có một cách sử dụng phần giữa bị loại trừ: người ta xây dựng một tập hợp và một số d , và cho thấy rằng d ∈ D hoặc d ∉ D dẫn đến mâu thuẫn. Nhưng có một bổ đề, đúng trong logic trực giác, nói rằng:Ddd∈Dd∉D
for all statements P,(P⟺¬P)⇒⊥
Điều này đủ, cùng với các bằng chứng thông thường. Lưu ý rằng nói chung "từ chối" có thể có một số sắc thái tinh tế trong logic xây dựng / trực giác (không có sự lựa chọn), do đó bạn phải thực hiện do "không thể đảo ngược".
Một bằng chứng rất chuẩn trong Coq (vì lý do nào đó tôi không thể tìm thấy trực tuyến) có thể như sau:
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.
Tất nhiên, khung "đúng" trong đó suy nghĩ về các maters này, có thể được coi là các yêu cầu tối thiểu để chứng minh này được đưa ra, là định lý điểm cố định của Lawvere trong đó nêu định lý trong mọi Thể loại Đóng của Cartesian (vì vậy trong đặc biệt, trong bất kỳ lý thuyết loại hợp lý).
Andrej Bauer viết rất hay về định lý này trong bài báo Về các định lý điểm cố định trong khả năng tính toán tổng hợp , và tôi nghi ngờ có thể có một số điều thú vị để thêm vào câu trả lời này.
cantor
,nat
sẽ đóng vai trò là "bất kỳ tập hợp A" nào vànat -> Prop
đóng vai trò là "tập hợp của tất cả các tập hợp con của A". Điều gì sẽ có ý nghĩa của việc thay thếnat -> Prop
bằngnat -> bool
? Tôi đoán sử dụngProp
là phù hợp hơn trong logic xây dựng, nhưng logic cổ điển và lý thuyết tập hợp thường giả định loại trừ giữa, vì vậy chúng ta sẽ có thể thay thếProp
bằngbool
và vẫn có thể chứng minh định lý, phải không?