คำตอบสั้น ๆ : ใช่! คุณไม่จำเป็นต้องใช้เครื่องจักรจำนวนมากในการพิสูจน์หลักฐาน
หนึ่งความบอบบาง: ดูเหมือนว่าบนใบหน้าของมันว่ามีการใช้งานของกลางที่แยกออก: หนึ่งสร้างชุด D และตัวเลข dและแสดงให้เห็นว่า d∈ D หรือ d∉ Dซึ่งนำไปสู่ความขัดแย้ง แต่มีบทแทรก, จริงในตรรกะปรีชาคือ:
สำหรับงบทั้งหมด 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 เขียนอย่างสวยงามเกี่ยวกับทฤษฎีบทนี้ในกระดาษในทฤษฎีบทคงที่ในการคำนวณสังเคราะห์และฉันสงสัยว่าอาจมีสิ่งที่น่าสนใจเพื่อเพิ่มคำตอบนี้
cantor
คุณnat
เล่นบทบาทของ "ชุดใดก็ได้" และnat -> Prop
เล่นบทบาทของ "ชุดย่อยทั้งหมดของ A" สิ่งที่จะเป็นผลกระทบของการแทนที่nat -> Prop
ด้วยnat -> bool
? ฉันเดาว่าการใช้Prop
มีความเหมาะสมในตรรกะเชิงสร้างสรรค์มากกว่า แต่ตรรกะคลาสสิกและทฤษฎีเซตมักจะถือว่าไม่รวมกลางดังนั้นเราควรจะสามารถแทนที่Prop
ด้วยbool
และยังสามารถพิสูจน์ทฤษฎีบทได้ใช่ไหม