Làm thế nào để chỉ ra rằng một loại trong một hệ thống với các loại phụ thuộc không có người ở (tức là công thức không thể chứng minh được)?


15

Đối với các hệ thống không có loại phụ thuộc, như hệ thống loại Hindley-Milner, các loại tương ứng với các công thức của logic trực giác. Ở đó chúng ta biết rằng các mô hình của nó là đại số Heyting và đặc biệt, để từ chối một công thức, chúng ta có thể giới hạn ở một đại số Heyting trong đó mỗi công thức được biểu diễn bằng một tập con mở của .R

Ví dụ: nếu chúng tôi muốn hiển thị rằng không có người ở, chúng tôi xây dựng ánh xạ từ các công thức để mở các tập con của bằng cách xác định: Sau đó Điều này cho thấy công thức ban đầu không thể chứng minh được, vì chúng ta có một mô hình không đúng hoặc tương đương (bởi đẳng cấu Curry-Howard) loại không thể có được.α.α(α)φR

φ(α)= =(-,0)
φ(α)= =int([0,))= =(0,)φ(α(α))= =(-,0)(0,)= =R0.

Một khả năng khác là sử dụng khung Kriepke .


Có bất kỳ phương pháp tương tự cho các hệ thống với các loại phụ thuộc? Giống như một số khái quát của đại số Heyting hoặc khung Kripke?

Lưu ý: Tôi không yêu cầu một thủ tục quyết định, tôi biết không thể có bất kỳ thủ tục nào. Tôi chỉ yêu cầu một cơ chế cho phép chứng kiến ​​tính không khả thi của một công thức - để thuyết phục ai đó rằng nó không thể chứng minh được.

Câu trả lời:


13

Rằng một công thức không thể chứng minh về cơ bản có thể được thực hiện theo hai cách. Với một số may mắn, chúng ta có thể chỉ ra trong lý thuyết loại rằng công thức ngụ ý một công thức đã được biết là không thể chứng minh được. Một cách khác là tìm một mô hình trong đó công thức không hợp lệ và điều này có thể khá khó khăn. Ví dụ, phải mất một thời gian rất dài để tìm ra mô hình nhóm của lý thuyết loại phụ thuộc, đây là lần đầu tiên vô hiệu hóa tính duy nhất của bằng chứng nhận dạng .

Câu hỏi "mô hình của lý thuyết loại phụ thuộc là gì?" có một câu trả lời hơi phức tạp. Nếu bạn bỏ qua các thuộc tính nhất định của sự thay thế, một mô hình là một thể loại đóng cartesian cục bộ và đó có thể là câu trả lời đơn giản nhất. Nếu bạn muốn một mô hình "thực", thì có một số tùy chọn, xem trang nLab về các mô hình phân loại của lý thuyết loại phụ thuộc . Trong mọi trường hợp, câu trả lời luôn hơi phức tạp vì lý thuyết loại phụ thuộc là một hệ thống chính thức khá phức tạp.

Nếu tôi chỉ đề xuất một bài viết về chủ đề này, có lẽ tôi sẽ đề xuất bài báo gốc của Robert Seely, "Các thể loại khép kín của cartesian và lý thuyết loại" . Nếu tôi đề nghị một vấn đề khác, có lẽ nó sẽ là một trong đó giải thích những gì cần phải sửa trong bài viết của Seely, ví dụ, "Về việc giải thích lý thuyết loại trong các danh mục đóng cục bộ của Cartesian" của Martin Hoffman .

Một tiến bộ quan trọng gần đây trong lĩnh vực này là nhận ra rằng các mô hình lý thuyết đồng luân cũng là mô hình của lý thuyết loại phụ thuộc, xem tài liệu tham khảo homotopytypetheory.org . Điều này cung cấp rất nhiều khả năng, nhưng bây giờ người ta phải học lý thuyết đồng luân để bắt tay vào các mô hình.


2
Câu trả lời này khá hay, mặc dù nó bỏ qua có lẽ là cách đơn giản nhất có thể để chứng minh rằng một loại không có người ở: cảm ứng trên các hình thức bình thường! Cụ thể, thật dễ dàng để chứng minh rằng phần giữa bị loại trừ không thể ở trong Tính toán công trình bằng cách cảm ứng như vậy. Tất nhiên, sau đó bạn cần chứng minh rằng mọi thuật ngữ đều có thể được đưa vào một dạng bình thường cùng loại và điều đó liên quan đến việc xây dựng mô hình ...
cody

@cody: điểm tốt, hình thức bình thường có thể rất hữu ích.
Andrej Bauer

@cody: "sau đó bạn cần chứng minh rằng mọi thuật ngữ đều có thể được đưa vào một dạng bình thường cùng loại": đó không phải là một phần tiêu chuẩn của hệ thống tiện ích cho một hệ thống loại "tốt" (miễn là bạn không có tiên đề), hay logic "tốt" (trong đó điều này được loại bỏ)? Vì vậy, bạn chỉ có thể sử dụng lại các bằng chứng hiện có, phải không?
Blaisorblade

@Blaisorblade: tất nhiên bạn chỉ cần chứng minh cắt bỏ một lần. Điểm có thể là việc sử dụng cảm ứng trên các hình thức bình thường thay vì xây dựng mô hình là một cách để đặt câu hỏi: bạn đã xây dựng một mô hình để cho thấy rằng mọi thuật ngữ có thể được đưa vào dạng bình thường. Trong một số ý nghĩa, bạn đang làm việc trong "mô hình biểu mẫu bình thường", thay vì thực hiện công việc cú pháp nghiêm ngặt.
cody

Tôi hiểu - tôi đã suy nghĩ về "nỗ lực bằng chứng", trong khi tôi đoán bạn đang suy luận về cách thực hiện toàn bộ bằng chứng. Nhưng bạn đã khiến tôi đặt câu hỏi một lần nữa về sự khác biệt giữa phương pháp cú pháp và ngữ nghĩa, được đưa ra như các mô hình thuật ngữ. Vì vậy, tôi đã hỏi một câu hỏi riêng về điều đó: cstheory.stackexchange.com/q/21534/989
Blaisorblade
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.