- Số học Peano (PA) có thể biểu diễn quá trình tính toán mang tính cơ học, nên trong PA có thể chứng minh sự kết thúc của mọi dãy Goodstein đơn lẻ
- Thông qua dạng chuẩn Cantor và ký pháp cơ số di truyền, có thể biểu diễn dãy Goodstein và tính chất giảm dần của chúng, nhờ đó có thể xây dựng các chứng minh có độ dài hữu hạn
- Thông qua quy nạp (quy nạp mạnh/quy nạp siêu hạn), có thể mở rộng chứng minh tương ứng đến các số thứ tự ở bậc nhất định
- PA có thể chứng minh rằng với mọi số tự nhiên n, “G(n) đạt đến 0”, nhưng không thể đưa ra chứng minh tổng quát cho toàn bộ định lý Goodstein (với mọi n)
- Chỉ với PA cũng có thể hiện thực đầy đủ việc mã hóa tính toán, cấu trúc dữ liệu (List, Pair, v.v.), thậm chí cả bản thân ngôn ngữ lập trình (Lisp) và cả quá trình chứng minh của chính nó
Giới thiệu và bối cảnh vấn đề
- Bài viết này mô tả rằng số học Peano (PA) có thể chứng minh “với từng n, dãy Goodstein đạt đến 0 (G(n) terminates)”
- Điều này có thể là hiển nhiên với các nhà logic học, nhưng được giải thích từ góc nhìn mã hóa tính toán để lập trình viên có thể hiểu
- Với từng trường hợp của dãy Goodstein, có thể xây dựng một quy trình chứng minh cụ thể bên trong PA
Ordinals (số thứ tự) và dãy Goodstein
- Tạo số thứ tự (Sets as Ordinals) theo cách của Von Neumann
- 0 là tập rỗng, 1 là {0}, 2 là {0,1}, ω là {0,1,2,…}, ω+1 là {0,1,2,…,ω}, v.v., với thứ tự được xác định rõ ràng
- Dãy Goodstein được mô tả bằng ký pháp cơ số di truyền dùng dạng chuẩn Cantor
- Ví dụ: ω^ω là ((1,ω)), tức ((1,(1,1)))
- Thứ tự < được xác định bằng so sánh từ điển theo số thứ tự/hệ số của từng hạng
Quy nạp và quy nạp siêu hạn (Transfinite Induction)
- Nguyên lý quy nạp của số học Peano: đúng với 0, và nếu đúng từ n→n+1 thì đúng với toàn bộ số tự nhiên
- Quy nạp mạnh cũng có thể được chứng minh trong PA
- Quy nạp siêu hạn (Transfinite induction): trong ZFC v.v. có thể mở rộng đến các số thứ tự vô hạn, và áp dụng cho các số được viết dưới dạng chuẩn Cantor
- Định lý 1: mọi dãy giảm viết trong dạng chuẩn Cantor đều luôn hữu hạn
- Định lý 2: có thể dùng quy nạp siêu hạn cho các số ở dạng chuẩn Cantor
Quy nạp siêu hạn trong PA và độ dài chứng minh của dãy Goodstein
- PA có thể tạo ra chứng minh về sự kết thúc của dãy Goodstein cho một n bất kỳ
- Có thể xây dựng chứng minh theo chiều cao tháp của dạng chuẩn Cantor là m=O(log* n) (iterated log)
- Ở mỗi bước, kết hợp m lần chứng minh để có độ dài chứng minh tổng thể là O(m^2), hoặc rút xuống O(m log m) nếu đưa vào ký pháp đặc biệt (ω[m])
- Tuy nhiên, trong PA không thể chứng minh toàn bộ định lý Goodstein (cho mọi n) (không thể quy nạp siêu hạn đến ε0)
- Nếu làm được thì cũng có thể chứng minh tính nhất quán của PA, mâu thuẫn với bất toàn thứ hai của Gödel
Mã hóa chương trình và cấu trúc dữ liệu trong PA
- PA có thể mã hóa đầy đủ tính toán/chương trình/cấu trúc dữ liệu (số, cặp, danh sách và mọi cấu trúc khác)
- Có thể hiện thực nhiều chức năng theo các cách như sau:
- Logic và phép toán cơ bản (+, *, pow, //, %, min, max, v.v.)
- So khớp mẫu và rẽ nhánh điều kiện (
if, cond, v.v.)
- Mã hóa một số thành hai số (cặp), hoặc từ cặp mở rộng lặp lại thành các cấu trúc phức tạp hơn như danh sách, v.v. (danh sách đệ quy, cây, văn bản, v.v.)
- Nhờ việc mã hóa các cấu trúc dữ liệu này, có thể xây dựng cả trình thông dịch cho một máy ảo/ngôn ngữ lập trình bất kỳ (như Lisp)
Bootstrap sang Lisp và mã hóa
- Lấy Lisp làm ví dụ để giải thích cách hiện thực các phép toán số và logic cơ bản, cấu trúc dữ liệu, cùng bộ diễn giải/thông dịch ngôn ngữ lập trình
- Toàn bộ cấu trúc của Lisp (ánh xạ lệnh/đối số, special form, macro, v.v.) đều có thể được hiện thực trong PA bằng tổ hợp các hàm thích hợp
- Xa hơn nữa, ngay trong PA cũng có thể mã hóa và hiện thực chính quá trình chứng minh của PA, thủ tục chứng minh logic, và các cấu trúc tự quy chiếu dưới dạng ký hiệu
Mã hóa chính logic bên trong PA
- Trong logic toán học, có thể mã hóa quá trình chứng minh của logic bậc nhất (First-Order Logic) thành dữ liệu số trong PA
- Mỗi bước chứng minh/mệnh đề/quy tắc suy luận/kiểm tra tính hợp lệ của chứng minh đều được nhận diện và xử lý như một chuỗi hàm số/thao tác trên danh sách
- Kiểu mã hóa siêu mức và tự quy chiếu này dẫn đến các chứng minh về bất toàn của Gödel và bài toán dừng
Kết luận
- Ngay trong PA, có thể mã hóa, chứng minh và diễn giải đầy đủ tính toán, cấu trúc dữ liệu, chương trình, cho đến cả quá trình chứng minh logic
- Vì vậy, mọi dãy Goodstein cụ thể (với n cho trước, G(n) kết thúc) đều có thể được chứng minh cụ thể bên trong PA
- Tuy nhiên, một chứng minh kiểu “PA chứng minh định lý Goodstein trong chính PA” cho toàn bộ định lý Goodstein (mọi n) là điều bất khả do các giới hạn của logic
- Từ góc nhìn của lập trình viên, PA là một nền tảng logic hoàn chỉnh có thể mã hóa chính việc tính toán
1 bình luận
Ý kiến Hacker News
(defun not (x) (if x false true)). Hễ ai đó bắt đầu dùng ngoặc là tôi theo bản năng sẽ kiểm tra xem chúng đã được đóng đúng chưa. Sau đó đọc đến đoạn nói rằng "thật dễ để lập trình máy tính kiểm tra xem ngoặc có cân bằng hay không" thì tôi cười lớn. Kiểu đùa này thực sự rất vui, và ở mục "Basic Number Theory", câu; After a while, you stop noticing that stack of closing parens.cũng rất ấn tượng. Lâu rồi tôi mới lại đụng tới Lisp, và bài viết thật sự rất thú vịmọitrường hợp đều đi đến 0, là một điều rất thú vị (thực ra là kết quả khá hiển nhiên, nhưng vẫn cực kỳ cuốn hút). Và việc chỉ với hệ tiên đề Peano cũng có thể mã hóa tính toán thì thật sự kỳ lạ (xét về nguyên lý thì cũng hợp lý thôi, nhưng trước đây tôi chưa từng nghĩ thêm một tầng tự tham chiếu như vậy). Gần đây tôi cũng đang muốn học sâu hơn về lý thuyết tập hợp, và vừa học đến phần dãy Goodstein trong giáo trình Intro to Set Theory. Nếu ai có thể gợi ý giáo trình lý thuyết tập hợp nâng cao hoặc sách đào sâu về số học Peano thì tôi rất cảm kích. Mục tiêu nhỏ của tôi là hiểu vì sao PA không đủ để chứng minh định lý Goodstein, nhưng nếu có hướng đi khác đáng khuyên thì tôi cũng rất sẵn lòng\omegaepsilon_0. EDIT: Có lẽ chỉ cần "PA là nhất quán" thôi cũng đã đủ?Con(PA), mà ngay cả bất kỳ công thức được lượng hóa phổ quát nào cũng không đủ. Xem câu trả lời trên Math StackExchange có liên quan. Liên quan đến câu hỏi đầu tiên, tôi tò mò không biết người ta mã hóa tính omega-consistency như một công thức của PA thế nào; tôi không nghĩ ra ngay nên thấy khá hứng thúepsilon_0) sẽ chứng minh chính PA. Tôi nghĩ rằng với PA+"PA nhất quán" thì có thể chứng minh được quy nạp siêu hạn tớiepsilon_0forall n, G(n)" và "PA chứng minhforall n, Provable(G(n))". Tôi không mạnh về logic, nên nếu ai có thể giải thích cụ thể vì sao từ việc chứng minhforall n, Provable(P(n))lại không thể suy ra chứng minhProvable(forall n, P(n))thì tôi rất cảm ơnwill-return,opposite-return, và điều này trùng với chứng minh chuẩn của bài toán dừng. Hãy xét trường hợpopposite-return(opposite-return, opposite-return): nếu PA chứng minh rằngopposite-returnsẽ trả về, thì nó cũng chứng minh rằng thực ra nó sẽ không trả về; ngược lại, nếu PA chứng minh rằng nó sẽ không trả về, thì lại chứng minh rằng nó sẽ trả về. Nếu PA chấp nhận mệnh đề mạnh hơn kiểu "mọi thứ có thể chứng minh đều thực sự chứng minh được", thì đó chính là định lý bất toàn thứ hai của Gödel, nghĩa là PA sẽ mâu thuẫn. Vì vậy nhất định phải phân biệt giữa "PA chứng minh" và "PA chứng minh rằng nó chứng minh"Natđược tạo bằngzero/succ(như trong Lean hay Rocq). Người đó thắc mắc như "Chỉ thế này là đủ sao?", "Có cần hệ tiên đề Peano không? Có thứ gì còn nguyên thủy hơn kiểu dữ liệu quy nạp không?". Điều đó khiến tôi nghĩ rằng ta nên thường xuyên tự nhắc mình đừng xem hệ tiên đề Peano là thứ hiển nhiên về bản chất, mà chỉ là một lựa chọn thiết kếΠ,Σ,=,Ω)