Các loại phổ biến và hiện sinh


9

Tôi đang cố gắng xoay quanh các khái niệm về các loại phổ quát và hiện sinh nhưng ở mọi nơi tôi nhìn thấy, tôi đều thấy trực giác logic hoặc hoạt động (hoặc triển khai) (ví dụ: sách TAPL của B. Pierce), trong đó, ... tốt , nhưng tôi muốn xem các định nghĩa (nơi chúng ta xem chúng như các bộ) - và từ chúng, các dẫn xuất của một số luật, cũng như các biện minh cho trực giác của chúng ta.

Vì vậy, vì tôi không thể tìm thấy những định nghĩa đó, tôi quyết định tự làm và tôi nghĩ chúng có thể hợp lý:

x.T: =defS-typeT[x: =S]
x.T: =defS-typeT[x: =S]

Nhưng, trong cuốn sách TAPL đã nói ở trên, chúng tôi được đưa ra định nghĩa này (mặc dù tôi sẽ gọi nó là một danh tính)

x.T: =defy.(x.Ty)y(*)

Tôi có hai vấn đề với điều này:

  1. Trên LHS của tôi hy vọng rằng là biến tự do duy nhất của (vì làm thế nào để xem một loại "chưa được xây dựng" với một số biến miễn phí được treo trong đó?), Nhưng trên RHS thì có vẻ như có thể có một số tác động đối với , vì vậy nó tốt hơn là biến tự do trong . Do đó LHS không thể bằng RHS vì các bộ biến tự do của khác nhau ở cả hai bên, phải không?(*)xTyTTT
  2. Thậm chí không quan tâm đến mối quan tâm tại điểm 1. - Tôi đã cố gắng viết lại RHS bằng các định nghĩa của mình và xem liệu tôi có thể nhận được định nghĩa về loại tồn tại hay không nhưng tôi bị mắc kẹt:
    RHS= =S(x.Ty)[y: =S]S= =S(RT[x: =R,y: =S]S)S

Nó thậm chí không giống với định nghĩa của tôi. Có thể đơn giản hóa công thức tôi đến? Theo trực giác, vì có các loại chức năng, nó có thể sẽ không bao giờ bằng định nghĩa của tôi. Nhưng nếu chúng không bằng nhau - thì ít nhất chúng có phải là "đẳng cấu" theo một nghĩa nào đó không? Nếu không - điều gì đã "sai"?


1
Có một lỗi đánh máy trong phương trình của bạn (*): nó phải được chứ không phải y . Yy
cody

1
Ngoài ra, trong phương trình cuối cùng của bạn: có thể không xuất hiện trong T ! yT
cody

Câu trả lời:


9

Đặt lý thuyết đang làm hại bạn ở đây và bạn càng sớm giải phóng bản thân khỏi nó thì càng tốt cho sự hiểu biết của bạn về khoa học máy tính.

Quên các giao lộ và đoàn thể. Người có được ý tưởng này mà giống như , đó là loại điều trường Ba Lan đang làm một thời gian dài trước với đại số Boolean, nhưng nó thực sự không phải là cách để đi (chắc chắn không phải trong khoa học máy tính).

Bạn muốn xem những cái này như bộ. Ok, nhưng sau đó chúng ta phải bỏ qua các vấn đề về kích thước và giả vờ rằng có một bộ tất cả các bộ. (Có thể khắc phục các vấn đề về kích thước bằng cách chuyển đến một danh mục khác.) Loại là thực sự thích sản phẩm Descartes X . T : = S : S e t T [ X S ] . Đó là, một phần tử của X . Thàm f từ bộ này sang bộ khác: với mỗi bộ S, nó cung cấp một phần tửx.T

X.T:= =ΠS:SetT[XS].
X.T fS loại T [ x S ] . Ví dụ, một phần tử củaX . ( X X ) ( X X ) là hàm f lấy một tập S và cho hàm số loại ( S S ) ( S S ) . Dưới đây là một số chức năng như vậy: f 0 ( S ) ( g ) (f(S)T[xS]X.(XX)(XX)fS(SS)(SS) Vì vậy, chúng tôi nhận được một cho mỗi số tự nhiên và thật khó để nghĩ ra bất kỳ ví dụ nào khác. (Bài tập: google "Nhà thờ mã hóa số tự nhiên".)
f0(S)(g)(x):= =xf1(S)(g)(x):= =g(x)f2(S)(g)(x):= =g(g(x))f3(S)(g)(x):= =g(g(g(x)))

Tiếp theo, chúng ta hãy xem xét các loại tồn tại. Thứ nhất, mã hóa đúng về X . T : =Y . ( X . ( T Y ) ) Y nơi biến Y không xuất hiện trong T ! (Điều này sẽ được đề cập trong TAPL Pierce.) Trước khi chúng ta nhìn vào mã hóa này, chúng ta hãy làm X . T trực tiếp về bộ. Lần này nó là một coproduct: X . T :

X.T:= =Y.(X.(TY))Y
YTX.T Một phần tử củaX. Tlà mộtcặp(S,a)trong đóSlà một tập hợp vàalà một phần tử củaT[XS]. Một ví dụ sẽ các loạiX. (X×XX), có các phần tử là cặp(S,m
X.T:= =S:SetT[XS].
X.T (S,một)SmộtT[XS]X.(X×XX) trong đó S là tập hợp và m : S × S S là phép toán nhị phân trên nó. Điều này cũng được gọi là mộtmagma. Nếu bạn nhận được một chút fancier, bạn có thể thể hiện các cấu trúc nổi tiếng như nhóm và vòng (trước tiên bạn cần phát minh racác loại danh tính).(S,m)Sm:S×SS

Chúng ta hãy xem cách mã hóa của về công trình. Đó là sai để hy vọng rằng chúng tôi sẽ có được một sự bình đẳng giữa X . TY . ( X . ( T Y ) ) Y (NB: Y là tươi) - chỉ thiết lập lý thuyết sẽ cung cấp cho người mong đợi như vậy. Chúng ta nên mong đợi hai là đẳng cấu . Vì vậy, nhiệm vụ là tìm một song ánh giữa A : = S : S eX.TY.(X.(TY))YYB:= Π R : S e t ( Π S : S e t (T[XS]R))R. Đây là một bài tập trongλ-calculus. Theo một hướng ta có bản đồf:ABđược định nghĩa là f(S,a)(R

Một:= =S:SetT[XS]
B:= =ΠR:Set(ΠS:Set(T[XS]R))R.
λf:MộtB và trong một bản đồ khác g : B A được xác định bởi g ( φ ) : = φ ( A ) ( λ S . Λ một . ( S , một ) ) . (Ký hiệu λ S . Λ một . ( S , một )
f(S,một)(R)(h):= =h(S)(một)
g:BMột
g(φ):= =φ(Một)(λS.λmột.(S,một)).
λS.λmột.(S,một)có nghĩa là chức năng .) Bây giờ chúng ta có thể kiểm tra xem fg là phần tử nghịch đảo của nhau. Một hướng là dễ dàng: g ( f ( S , một ) ) = f ( S , một ) ( Một ) ( λ S ' . Λ một ' . ( S ' , một ' ) ) = ( λSmột(S,một)fg Hướng khác trông như thế này: f ( g ( ϕ ) ) ( R ) ( h ) = h ( π 1 ( g ( ϕ ) ) ( π 2 ( g (
g(f(S,một))= =f(S,một)(Một)(λS'.λmột'.(S',một'))= =(λS'.λmột'.(S',một')(S)(một)= =(S,một).
Chúng ta có thể đi trên một chút bằng cách viết lại g ( φ ) để φ ( A ) ( λ S . Λ một . ( S , một ) ) , nhưng sau đó chúng tôi sẽ gặp khó khăn!
f(g(φ))(R)(h)= =h(π1(g(φ))(π2(g(φ))).
g(φ)φ(Một)(λS.λmột.(S,một))

x.φ(x)
P:Prop.(x.(φ(x)P))P,
PPφ

1
Andrej, bạn nhanh như chớp!
cody

(*)fg(*)(*)

3
fg

@AndrejBauer là hệ thống cơ bản bắt buộc? Và trong trường hợp câu trả lời tích cực, sự đẳng cấu có giữ cho các hệ thống dự đoán không?
Giorgio Mossa


3

Y YYTT

((x.TBạn0)Bạn0)((x.TBạn1)Bạn1)Giáo dục
BạnTôiBạn
x.T((x.TBạn)Bạn)

Trong các từ:

xT(x)Bạn xT(x)Bạn

Bạnx

Bạn

SMột(S)Một()

(R(T[x: =R]))

RT[x: =R]T[x: =R]


1
BạnTôi



1

Tôi đề nghị không từ bỏ trực giác hoạt động. Hoạt động là chính, tất cả các ngữ nghĩa có nguồn gốc, và là nhưng kỹ thuật bằng chứng cho ngữ nghĩa hoạt động. Các ý chính là như sau.

Px Pxxλ

  • λx.x.
  • λ(x,y,z).(z,x,y)
  • λx.(x,x)
  • λx.7

Px PxxPxx

λ


Một quan điểm thú vị (mặc dù tôi không hiểu nó đầy đủ :)). Ý tưởng là sau đó để kiểm tra xem các luật xuất phát trong chế độ xem chung như vậy có giữ các cài đặt cụ thể của các hệ thống loại không? Và tôi có thể tìm thấy một số văn bản giới thiệu về điều này ở đâu?
xã hội

@socumbersome Hầu hết các triển khai đa hình hiện có đều không hoàn toàn đúng. Thực sự định lượng hiện sinh hiếm khi được thực hiện trực tiếp. Tôi sợ rằng không có văn bản giới thiệu mô tả tính đối ngẫu. Chúng tôi đã giải thích nó ở đây nhưng nó được viết cho một đối tượng chuyên biệt.
Martin Berger
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.