Các bảng Laver cung cấp các ví dụ về các chương trình chưa được chứng minh là chấm dứt trong hệ tiên đề chuẩn của toán học ZFC nhưng sẽ chấm dứt khi người ta giả sử các tiên đề rất lớn.
Giới thiệu
Các bảng Laver cổ điển là các đại số hữu hạn duy nhất với tập hợp cơ bản và một hoạt động thỏa mãn danh tính và nơi cho và ở đâu .An
{1,...,2n}
*
x * (y * z)=(x * y) * (x * z)
x*1=x+1
x<2n
2n*1=1
Thông tin thêm về các bảng Laver cổ điển có thể được tìm thấy trong cuốn sách Bện và Tự phân phối của Patrick Dehornoy.
Thử thách
Mã ngắn nhất (tính bằng byte) tính toán 1*32
trong các bảng Laver cổ điển và chấm dứt chính xác khi tìm thấy n
với ? Nói cách khác, chương trình chấm dứt khi và chỉ khi nó tìm thấy với nhưng nếu không thì nó chạy mãi mãi.1*32<2n
n
1*32<2n
Động lực
Một hồng y cấp bậc (còn gọi là hồng y I3) là một mức độ vô cùng lớn và nếu người ta giả sử sự tồn tại của một hồng y cấp bậc, thì người ta có thể chứng minh nhiều định lý hơn là không có giả sử sự tồn tại của một hồng y cấp bậc. Nếu có tồn tại một hồng y cấp bậc, thì có một bảng Laver cổ điển ở đâu . Tuy nhiên, không có bằng chứng nào được biết rằng trong ZFC. Hơn nữa, người ta biết rằng ít nhất là nơi lớn hơn (là một con số cực kỳ lớn vì hàm Ackermann là một hàm tăng trưởng nhanh). Do đó, bất kỳ chương trình như vậy sẽ kéo dài trong một khoảng thời gian rất dài.An
1*32<2n
1*32<2n
n
1*32<2n
Ack(9,Ack(8,Ack(8,254)))
Ack
Tôi muốn xem chương trình có thể được viết ngắn đến mức nào để chúng tôi không biết liệu chương trình đó có kết thúc bằng hệ thống tiên đề chuẩn ZFC hay không nhưng chúng tôi biết rằng chương trình cuối cùng kết thúc trong một hệ tiên đề mạnh hơn nhiều, cụ thể là ZFC + I3. Câu hỏi này được lấy cảm hứng từ bài đăng gần đây của Scott Aaronson, trong đó Aaronson và Adam Yedidia đã chế tạo một máy Turing với dưới 8000 trạng thái để ZFC không thể chứng minh rằng máy Turing không chấm dứt nhưng được biết là không chấm dứt khi giả định về các giả thuyết lớn.
Cách các bảng Laver cổ điển được tính toán
Khi tính toán các bảng Laver thường thuận tiện để sử dụng thực tế là trong đại số , chúng ta có tất cả trong .An
2n * x=x
x
An
Đoạn mã sau tính toán bảng Laver cổ điển An
# bảng (n, x, y) trả về x * y trong A n bảng: = hàm (n, x, y) nếu x = 2 ^ n thì trả về y; elif y = 1 sau đó trả về x + 1; bảng trả về khác (n, bảng (n, x, y-1), x + 1); fi; kết thúc;
Ví dụ, đầu vào table(4,1,2)
sẽ trở lại 12
.
Mã cho table(n,x,y)
khá kém hiệu quả và nó chỉ có thể tính toán trong bảng Laver trong một khoảng thời gian hợp lý. May mắn thay, có các thuật toán nhanh hơn nhiều để tính toán các bảng Laver cổ điển so với các thuật toán được đưa ra ở trên.A4
Ack(9,Ack(8,Ack(8,254)))
là giới hạn thấp hơn cho bảng đầu tiên trong đó hàng đầu tiên có chu kỳ 32, tức là ở đâu 1*16 < 2^n
?
table(n,x,y)
và tôi nghĩ sẽ mất từ 25 đến 30 trạng thái để thiết lập các hằng số và vòng lặp bên ngoài. Đại diện TM trực tiếp duy nhất tôi có thể tìm thấy trên esolangs.org là esolangs.org/wiki/ScripTur và nó không thực sự như vậy.