Điều gì làm cho suy luận kiểu cho các loại phụ thuộc không thể giải quyết được?


42

Tôi đã thấy nó đề cập rằng các hệ thống loại phụ thuộc không thể suy ra, nhưng có thể kiểm tra được. Tôi đã tự hỏi nếu có một lời giải thích đơn giản về lý do tại sao lại như vậy, và liệu có giới hạn "phụ thuộc" hay không, nơi các loại có thể được lập chỉ mục bởi các giá trị, bên dưới loại suy luận nào là có thể và trên đó không phải là suy luận?


Không chắc chắn, nhưng tôi đoán là bạn có thể sử dụng suy luận để xác định xem một tính toán có dừng lại hay không.
jmite

điều này có liên quan đến chuyển đổi loại trong ngôn ngữ lập trình không? đây là một vấn đề mở có chuyển đổi loại trong ngôn ngữ lập trình không thể mở được
vzn

Một lý do khác là các loại phụ thuộc không thừa nhận các loại chính. Loại gì? λmột.một
jmite

Câu trả lời:


36

Đối với một phiên bản khá đơn giản của lý thuyết loại phụ thuộc, Gilles Dowek đã đưa ra một bằng chứng về tính không ổn định của khả năng đánh máy trong bối cảnh không trống:

Gilles Dowek, Tính không ổn định của khả năng đánh máy trong -calculusλΠ

Mà có thể được tìm thấy ở đây .

Trước tiên, hãy để tôi làm rõ những gì đã được chứng minh trong bài báo đó: ông cho thấy rằng trong một phép tính phụ thuộc không có chú thích về sự trừu tượng, việc thể hiện khả năng đánh máy của một thuật ngữ trong ngữ cảnh không trống là điều không thể tránh khỏi . Cả hai giả thuyết này đều cần thiết: trong bối cảnh trống rỗng, khả năng đánh máy giảm xuống so với -calculus được gõ đơn giản (có thể quyết định bởi Hindley-Milner) và với các chú thích về trừu tượng, áp dụng thuật toán định hướng kiểu thông thường.λ

Ý tưởng là mã hóa một vấn đề tương ứng Post như một vấn đề chuyển đổi loại, và sau đó cẩn thận xây dựng một thuật ngữ có thể đánh máy được nếu hai loại cụ thể có thể chuyển đổi được. Điều này sử dụng kiến ​​thức về hình dạng của các hình thức bình thường, luôn tồn tại trong phép tính này. Bài viết này ngắn và được viết tốt, vì vậy tôi sẽ không đi sâu vào chi tiết hơn ở đây.

Bây giờ trong phép tính đa hình như hệ thống F, thật tuyệt khi có thể suy ra các loại trừu tượng và ứng dụng và bỏ qua các chú thích trên như trên. Điều này cũng không thể giải quyết được, nhưng bằng chứng khó hơn nhiều và câu hỏi đã được mở ra khá lâu. Vấn đề đã được giải quyết bởi Wells:λ

JB Wells, Kiểu chữ và kiểm tra kiểu trong Hệ thống F là tương đương và không thể giải quyết được .

Điều này có thể được tìm thấy ở đây . Tất cả những gì tôi biết về nó là nó làm giảm vấn đề bán thống nhất (đó là khởi tạo modulo thống nhất của các bộ lượng tử vạn năng, và không thể giải quyết được) để kiểm tra kiểu trong Hệ thống F.

Cuối cùng, khá dễ dàng để chỉ ra rằng việc sinh sống của các gia đình phụ thuộc là không thể giải quyết được: chỉ cần mã hóa một vấn đề Post vào các chỉ mục của nhà xây dựng. Dưới đây là một số slide của Nicolas Oury phác họa lập luận.

Về việc có "giới hạn" hay không, điều đó phụ thuộc nhiều vào những gì bạn đang cố gắng thực hiện với các loại phụ thuộc của mình và có nhiều phép tính gần đúng có thể quyết định được, hoặc ít nhất là đủ gần để có thể sử dụng được. Những câu hỏi này vẫn là một phần của nghiên cứu tích cực.

Một con đường có thể là lĩnh vực "các loại sàng lọc" trong đó ngôn ngữ biểu hiện của các phụ thuộc loại bị hạn chế để cho phép kiểm tra có thể quyết định xem, ví dụ như Loại chất lỏng . Mặc dù hiếm khi suy luận kiểu đầy đủ là có thể quyết định ngay cả trong các hệ thống này.


Liên kết các loại chất lỏng bị hỏng
michaelsnowden

@michaelsnowden đã sửa!
cody
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.