Các ngôn ngữ không thể giải quyết tồn tại trong logic kiến ​​tạo?


24

Logic xây dựng là một hệ thống loại bỏ Định luật trung gian bị loại trừ, cũng như phủ định kép, như các tiên đề. Nó được mô tả trên Wikipedia ở đâyở đây . Cụ thể, hệ thống không cho phép chứng minh bằng mâu thuẫn.

Tôi tự hỏi, có ai quen thuộc với cách điều này ảnh hưởng đến kết quả liên quan đến Máy Turing và ngôn ngữ chính thức không? Tôi nhận thấy rằng hầu hết mọi bằng chứng cho thấy một ngôn ngữ là không thể giải quyết được đều dựa vào bằng chứng bằng mâu thuẫn. Cả đối số đường chéo và khái niệm giảm đều hoạt động theo cách này. Có bao giờ có thể có một bằng chứng "mang tính xây dựng" về sự tồn tại của một ngôn ngữ không thể giải quyết được không, và nếu vậy, nó sẽ trông như thế nào?

EDIT: Để rõ ràng, sự hiểu biết của tôi về bằng chứng bằng mâu thuẫn trong logic xây dựng là sai, và các câu trả lời đã làm rõ điều này.


5
Logic trực giác không cho phép các bằng chứng đi "Giả sử , rút ​​ra một mâu thuẫn, do đó ". Bạn có thể làm điều đó theo định nghĩa của , như . Điều bạn không thể làm là "Giả sử , rút ​​ra mâu thuẫn, do đó ." ¬ φ ¬ φ φ ¬ φ φφ¬φ¬φφ¬φφ
Miles Rout

2
Chỉnh sửa của bạn cho câu hỏi về "nhưng vẫn cho phép chứng minh các tuyên bố tiêu cực bằng mâu thuẫn" làm cho câu trả lời của tôi giống như tôi chỉ lặp lại những gì người hỏi đã biết :(
gelisam

3
Thay vì sửa đổi câu hỏi đã được trả lời này để nó hỏi một câu hỏi khó hơn một chút, làm thế nào về việc tạo (và trả lời) một câu hỏi riêng biệt?
gelisam

1
@gelisam Vâng, với tư cách là người hỏi, tôi chắc chắn không hỗ trợ chỉnh sửa. Tôi sẽ hoàn nguyên nó.
jmite

Câu trả lời:


18

Vâng. Bạn không cần trung gian bị loại trừ để rút ra mâu thuẫn. Đặc biệt, đường chéo vẫn hoạt động.

Dưới đây là một đối số đường chéo điển hình của Conor McBride. Đường chéo đặc biệt này là về sự không hoàn hảo, không phải là không chắc chắn, nhưng ý tưởng là như nhau. Điểm quan trọng cần chú ý là mâu thuẫn mà anh ta rút ra không phải ở dạng "P và không phải P", mà là ở dạng "x = x + 1".

Tất nhiên, bây giờ bạn có thể tự hỏi liệu logic xây dựng có thừa nhận "x = x + 1" là một mâu thuẫn hay không. Nó làm. Thuộc tính chính của mâu thuẫn là bất cứ điều gì xuất phát từ mâu thuẫn và sử dụng "x = x + 1", tôi thực sự có thể chứng minh một cách xây dựng "x = y" cho bất kỳ hai số tự nhiên nào.

Một điều có thể khác về một bằng chứng mang tính xây dựng là cách xác định "không thể giải quyết được". Trong logic cổ điển, mọi ngôn ngữ phải có thể quyết định hoặc không thể giải quyết được; vì vậy "không thể giải quyết được" đơn giản có nghĩa là "không thể quyết định". Tuy nhiên, trong logic xây dựng, "không" không phải là một hoạt động logic nguyên thủy, vì vậy chúng ta không thể diễn tả sự không ổn định theo cách này. Thay vào đó, chúng tôi nói rằng một ngôn ngữ là không thể giải quyết được nếu cho rằng nó có thể quyết định được dẫn đến mâu thuẫn.

Trên thực tế, mặc dù "không" không phải là nguyên thủy trong logic xây dựng, chúng ta thường định nghĩa "không phải P" là đường cú pháp cho "P có thể được sử dụng để xây dựng mâu thuẫn", do đó, một bằng chứng mâu thuẫn thực sự là cách duy nhất để chứng minh một cách xây dựng một tuyên bố có dạng "không phải P", chẳng hạn như "ngôn ngữ L là không thể giải quyết được".


P¬P¬(P¬P)

9

Khi nói về khả năng chứng minh của các tuyên bố cổ điển một cách xây dựng, nó thường quan trọng cách chúng ta xây dựng chúng. Các công thức tương đương kinh điển không cần phải tương đương về mặt xây dựng. Ngoài ra nó quan trọng những gì bạn có nghĩa chính xác bằng một bằng chứng xây dựng, có nhiều trường phái kiến ​​tạo khác nhau.

Ví dụ, một tuyên bố nói rằng có một hàm tổng không thể tính toán sẽ không đúng trong các hương vị của toán học xây dựng mà giả định Luận án Giáo hội (tức là mọi hàm đều có thể tính toán được) như một tiên đề.

Mặt khác, nếu bạn cẩn thận, bạn có thể xây dựng nó sao cho có thể chứng minh được: đối với bất kỳ phép tính toán nào của tổng các hàm tính toán, có một hàm tính toán không nằm trong phép liệt kê.

Bạn có thể thấy bài viết này của Andrej Bauer thú vị.

ps: Chúng ta cũng có thể nhìn vào đường chéo từ quan điểm lý thuyết thể loại. Xem


4

Tôi nghĩ rằng bằng chứng về tim mạch vẫn còn, chứng minh sự tồn tại của các ngôn ngữ không phải là ngôn ngữ có thể tính toán được (vì vậy chắc chắn là không thể giải quyết được).

Bằng chứng ngay lập tức khá đơn giản, nó chỉ đơn giản quan sát rằng Turing Machines được mã hóa trong một số bảng chữ cái hữu hạn (cũng có thể là nhị phân), do đó, có rất nhiều, và tập hợp tất cả các ngôn ngữ trên một bảng chữ cái cố định (cũng có thể là nhị phân một lần nữa ) là tập hợp tất cả các tập hợp con của tập hợp chuỗi trên bảng chữ cái đó - tức là tập hợp sức mạnh của tập hợp đếm được và phải không đếm được. Do đó, máy Turing ít hơn so với ngôn ngữ, vì vậy một cái gì đó không thể tính toán được.

Điều này đối với tôi có vẻ đủ mang tính xây dựng (mặc dù không thể theo đuổi về mặt vật lý, nó mang đến cho bạn cách chỉ vào một số ngôn ngữ và biết một ngôn ngữ là không thể tính toán được).

Sau đó, chúng tôi có thể hỏi liệu có thể chỉ ra rằng các bộ có thể đếm được và không đếm được có tính khác nhau, đặc biệt là tránh đường chéo. Tôi nghĩ rằng điều này vẫn có thể. Lập luận ban đầu của Cantor dường như cũng có tính xây dựng phù hợp.

Tất nhiên, điều này thực sự cần được kiểm tra bởi một người biết nhiều về logic xây dựng.


3

Tôi nghĩ rằng tôi đồng ý với những người khác rằng đối số đường chéo là mang tính xây dựng, mặc dù từ những gì tôi có thể nói có một số bất đồng về điều này trong một số vòng tròn.

Ý tôi là, giả sử rằng chúng ta đang xem tập hợp tất cả các ngôn ngữ có thể quyết định. Tôi có thể xây dựng một ngôn ngữ không thể sử dụng được bằng cách sử dụng đường chéo. Điều đáng chú ý là tôi không coi "chủ nghĩa kiến ​​tạo" và "chủ nghĩa hữu hạn" là cùng một thứ, mặc dù về mặt lịch sử tôi nghĩ rằng đây là những cung có liên quan.

Đầu tiên, tôi nghĩ tất cả mọi người - ngay cả những người xây dựng - đều đồng ý rằng tập hợp các ngôn ngữ có thể quyết định là có thể đếm được. Vì bộ máy Turing có thể đếm được (chúng tôi có thể mã hóa tất cả các TM hợp lệ bằng chuỗi hữu hạn), thỏa thuận này tuân theo khá dễ dàng.

L1,L2,...,Lk,...

  1. 0tôi
  2. 0tôiLtôi0tôi
  3. 0tôiLtôi0tôi

nL1,L2,...,Ln

Về mặt kỹ thuật, chúng tôi đã xây dựng một ngôn ngữ "không thể quyết định"; liệu một nhà xây dựng sẽ lập luận rằng "không thể quyết định" không nên bị nhầm lẫn với "không thể giải quyết được" là một câu hỏi thú vị, nhưng một câu hỏi mà tôi không được trang bị đầy đủ để trả lời.

Để làm rõ, những gì tôi nghĩ điều này thể hiện như sau: chúng ta có thể chứng minh một cách xây dựng rằng có những ngôn ngữ không được quyết định bởi máy Turing. Làm thế nào bạn chọn để giải thích rằng trong một khuôn khổ cụ thể là một câu hỏi khó hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.