Loại hệ thống dựa trên lý thuyết tập ngây thơ


11

Theo tôi hiểu, trong các loại dữ liệu khoa học máy tính không dựa trên lý thuyết tập hợp vì những điều như nghịch lý của Russell, nhưng như trong các ngôn ngữ lập trình trong thế giới thực, chúng ta không thể diễn tả các loại dữ liệu phức tạp như "bộ không chứa chính nó", chúng ta có thể nói rằng trong thực tế loại là một tập hợp vô hạn của các thành viên của nó trong đó tư cách thành viên thể hiện được xác định bởi số lượng các tính năng nội tại của loại / bộ này (sự tồn tại của các thuộc tính, phương thức nhất định)? Nếu không những gì sẽ là ví dụ?


1
Nghịch lý của Russell không liên quan gì đến nó.
Andrej Bauer

Câu trả lời:


11

Lý do chính để tránh các tập hợp trong ngữ nghĩa của các loại là một ngôn ngữ lập trình điển hình cho phép chúng ta xác định các hàm đệ quy tùy ý. Do đó, bất kể ý nghĩa của một loại là gì, nó phải có thuộc tính điểm cố định. Bộ duy nhất có thuộc tính như vậy là bộ singleton.

Nói chính xác hơn, giá trị được xác định đệ quy loại (trong đó điển hình là là loại hàm) được xác định bởi phương trình điểm cố định trong đó có thể là bất kỳ chương trình. Nếu được hiểu là tập thì chúng ta sẽ mong muốn mọi có một điểm cố định. Nhưng bộ duy nhất có thuộc tính này là singleton.τ τ v = Φ ( v ) Φ : τ τ τ T f : T T Tvττv= =Φ(v)Φ:τττTf:TTT

Tất nhiên, bạn cũng có thể nhận ra rằng thủ phạm là logic cổ điển. Nếu bạn làm việc với lý thuyết tập hợp trực giác, thì sẽ nhất quán khi cho rằng có nhiều tập hợp với thuộc tính điểm cố định. Trong thực tế, điều này đã được sử dụng để đưa ra ngữ nghĩa của ngôn ngữ lập trình, xem ví dụ

Alex Simpson, Tính đầy đủ tính toán cho các loại đệ quy trong các mô hình của lý thuyết tập hợp trực giác , trong Biên niên sử của logic thuần túy và ứng dụng, 130: 207-275, 2004.


7

π


1
Có tiền thân của Castagna. Từ lâu, mọi người đã sử dụng mối quan hệ tập hợp con để lập mô hình phân nhóm trong các mô hình PER. Có một loại tương ứng với một mối quan hệ tương đương một phần (PER) và phân nhóm chỉ là bao gồm các quan hệ đó.
Andrej Bauer

4

Với một vài ngoại lệ (một điều mà Dave Clarke trích dẫn), ngữ nghĩa lý thuyết tập hợp đơn giản của các loại rất khó sử dụng. Lý do là sự trừu tượng hóa dữ liệu không chơi rất độc đáo với ngữ nghĩa lý thuyết tập hợp.

α.ααBạn

[[α.αα]]= =ΠXBạn.XX

BạnBạnXXXBạnα

α.αα


Neel, tôi không nghĩ câu trả lời này có ý nghĩa. Nếu ngữ nghĩa của ngôn ngữ là ngữ nghĩa kiểu F tiêu chuẩn, thì trình biên dịch có thể thực hiện tối ưu hóa tốt, dựa trên hệ thống loại. Nếu ngữ nghĩa là ngữ nghĩa lý thuyết tập hợp, thì việc tối ưu hóa sẽ không có cơ sở. Mô hình nào bạn sử dụng cho các loại không nhập vào nó.
Sam Tobin-Hochstadt

Sam, tôi không hiểu quan điểm của bạn: nó đọc như bạn hoàn toàn đồng ý với tôi! Các ngữ nghĩa lý thuyết tập hợp tiêu chuẩn không thể chứng minh rằng cư dân duy nhất của loại đó là danh tính, vì vậy bạn cần một ngữ nghĩa khác.
Neel Krishnaswami

1
@Neel: vấn đề bạn mô tả vẫn tồn tại ngay cả khi chúng tôi rời khỏi bộ. Giải pháp không phải là thay đổi danh mục các bộ bằng một thứ khác, mà là mô hình hóa tham số khác nhau. Cụ thể, người ta phải sử dụng tham số quan hệ , như tôi chắc chắn bạn biết. Nhưng sau đó mọi thứ sẽ diễn ra theo bộ, nếu tôi không nhầm. Vấn đề "duy nhất" với các tập hợp là thiếu các điểm cố định (cả ở mức giá trị đệ quy và loại đệ quy).
Andrej Bauer

1
Ah, tôi nghĩ tôi hiểu tại sao tôi lại nhầm lẫn bạn và Sam! Tôi chắc chắn không có ý ám chỉ rằng việc sử dụng một mô hình lý thuyết tập hợp ngây thơ là không hợp lý, chỉ là mô hình này thường đưa ra những câu trả lời không có ích - đó là lý do tại sao tôi nói "khó sử dụng" và không "sai". Tất nhiên bạn có thể sử dụng các tập hợp để xây dựng một mô hình hữu ích (nghĩa là về mặt quan hệ), nhưng sau đó chúng tôi không còn lo lắng về các kiểu tập hợp theo kiểu được đề xuất trong câu hỏi. (Ngoài ra, như bạn đã biết, với đa hình bẩm sinh không có mô hình ngây thơ, nhưng tham số vẫn có ý nghĩa dự đoán.)
Neel Krishnaswami

1
Tôi nghĩ rằng quan điểm của bạn là về sự tương ứng giữa các ngữ nghĩa - một ngữ nghĩa lý thuyết tập hợp không phù hợp với đa hình kiểu F, bởi vì nó có các cư dân không thể diễn tả được. Nhưng đó không phải là một điểm chống lại ngữ nghĩa lý thuyết tập hợp, chỉ là một tuyên bố rằng ngữ nghĩa của chúng ta nên đồng ý. Nếu ngôn ngữ của chúng tôi cho phép chúng tôi diễn đạt các chức năng mà bạn đang nói đến (ví dụ như Typed Vợt), thì chúng tôi có thể muốn các ngữ nghĩa lý thuyết tập hợp.
Sam Tobin-Hochstadt
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.