Các nhà điều hành quay đầu hàng đầu có nghĩa là gì?


12

Tôi biết rằng các tác giả khác nhau sử dụng các ký hiệu khác nhau để thể hiện ngữ nghĩa ngôn ngữ lập trình. Như một vấn đề thực tế Guy Steele giải quyết vấn đề này trong một video thú vị .

Tôi muốn biết liệu có ai biết liệu nhà điều hành quay đầu hàng đầu có ý nghĩa được công nhận hay không. Ví dụ: tôi không hiểu toán tử hàng đầu ở đầu mẫu số sau:

x:T1t2:T2λx:T1.t2 : T1T2

Ai đó có thể giúp tôi hiểu không? Cảm ơn.



Ồ, câu hỏi này có hơn 1 nghìn lượt xem, nhiều hơn tổng số lượt xem của tất cả 29 câu hỏi mới khác! Như tôi đã kiểm tra, không phải thẻ "lý thuyết loại" hay thẻ "biểu thị ngữ nghĩa" nằm trong số 50 thẻ phổ biến đầu tiên. Tôi tò mò về nguyên nhân đằng sau hiện tượng này. Tôi không có manh mối. @DW? Tôi có một câu hỏi meta?
John L.

Nếu tôi không nhầm, bạn phải di chuyển toán tử quay vòng ( ), theo kết luận của quy tắc, giữa λ x : T 1t 2 . Tôi cũng sẽ thêm thẻλx:T1t2type-checking
mchar

3
@ Apass.Jack Nó đã kết thúc trong các câu hỏi về mạng nóng vì vậy đang được chú ý nhiều hơn vì điều đó.
JAB

Câu trả lời:


20

Ở bên trái của cửa quay, bạn có thể tìm thấy bối cảnh cục bộ, một danh sách hữu hạn các giả định về các loại biến trong tay.

x1:T1,,xn:Tne:T

Trên, có thể được không, kết quả là e : T . Điều này có nghĩa là không có giả định về các biến được thực hiện. Thông thường, phương tiện này mà e là một thuật ngữ khép kín (không có bất kỳ biến miễn phí) có kiểu T .ne:TeT

Thông thường, quy tắc bạn đề cập được viết dưới dạng tổng quát hơn, nơi có thể có nhiều giả thuyết hơn so với quy tắc được đề cập trong câu hỏi.

Γ,x:T1t:T2Γ(λx:T1.t):T1T2

Ở đây, đại diện cho bất kỳ bối cảnh, và Γ , x : T 1 đại diện cho phần mở rộng của nó thu được bằng cách thêm giả thuyết thêm x : T 1 vào danh sách Γ . Người ta thường đòi hỏi rằng x không xuất hiện trong Γ , do đó phần mở rộng không "xung đột" với một giả định trước.ΓΓ,x:T1x:T1ΓxΓ


7

Để bổ sung cho các câu trả lời khác, lưu ý rằng có ba cấp độ "hàm ý" trong việc nhập các dẫn xuất. Và cùng một nhận xét với các dẫn xuất logic vì thực sự có một sự tương ứng giữa hai (được gọi là thư từ của Curry-Howard).

Hàm ý đầu tiên là mũi tên xuất hiện trong công thức, và nó tương ứng với hàm ý logic trong một công thức (hoặc một loại chức năng cho -calculus).λ

Hàm ý thứ hai được cụ thể hóa bằng biểu tượng quay vòng và có nghĩa là "giả sử mọi công thức ở bên trái, công thức ở bên phải giữ". Đặc biệt, các quy tắc bạn đưa ra nói như thế nào ta nên chứng minh một hàm ý: để chứng minh , sau đó người ta phải chứng minh B theo giả định rằng một tổ chức. Xét về mặt λ -calculus, để chứng minh rằng λ x . t có loại A B , người ta phải chỉ ra rằng t có loại B , giả sử x là biến của loại A (xem sự tương ứng?).MộtBBMộtλλx.tMộtBtBxMột

Mức hàm ý thứ ba được cụ thể hóa bằng thanh ngang và có nghĩa là "nếu mọi tiền đề (phần tử ở trên cùng) giữ, thì kết luận (phần tử ở dưới cùng) giữ". Bạn có thể liên kết điều đó với việc giải thích quy tắc gõ cho -bộ hoạt động mà bạn đã đưa ra (xem phần giải thích trong đoạn trước).λ


3

Trong các hệ thống kiểm tra kiểu, ( ) biểu thị mối quan hệ ternary trên các môi trường kiểu, biểu thức và kiểu: E n v × E x p × T y p .Env×Exp×Typ

Trong ví dụ của bạn, biểu thức được gõ ở kiểu T 2 wrt. đến một môi trường kiểu có ánh xạ giả định kiểu T 1 đến một số loại biến xt2T2 T1x

Trong bối cảnh này, một môi trường loại là một chức năng một phần mà chuyển nhượng các loại cho các biến, thường thể hiện bằng nơi Γ E n v : V một r T y pΓΓEnv:VmộtrTyp

Lưu ý rằng, toán tử bảo lưu chức năng của nó bất kể nó xuất hiện ở đâu, trong tiền đề hoặc kết luận của quy tắc.


-1

Trong mọi tình huống mà tôi đã thấy, có nghĩa là có bằng chứng về việc  Y cho rằng X  giữ. Nếu X  trống, điều đó có nghĩa là Y  là một tautology: nó có bằng chứng mà không cần bất kỳ giả định nào.XYYXXY


1
Nhưng nếu những gì bạn nói là đúng, thì điều này thật lạ bởi vì đó cũng là ý nghĩa của thanh ngang, phải không? Rằng nếu đỉnh là đúng, thì đáy là đúng. Do đó, có hiệu lực, có nghĩa là nếuXlà đúng thìYlà vô điều kiện đúng. XYXY
Jim Newton

1
Thanh ngang có nghĩa là thứ ở phía dưới là một khoản khấu trừ ngay lập tức từ thứ trên cùng. Mặc dù tôi đồng ý rằng trong ví dụ của bạn có vẻ rất kỳ lạ rằng một sự thật vô điều kiện bắt nguồn từ một điều kiện ...
David Richerby

Lý thuyết loại không logic. Tất nhiên nó liên quan theo nhiều cách và (ở một mức độ nào đó có chủ ý) sử dụng ký hiệu tương tự, nhưng chắc chắn không có mối liên hệ tiên nghiệm nào với mối quan hệ chứng minh và thường không có kết nối posteriori (ít nhất là không phải là logic hợp lý từ xa). Theo văn bản các câu trả lời được, lúc tốt nhất, gây hiểu lầm bởi vì nó cho thấy " " là một công thức mà nó hầu như không bao giờ là về mặt lý thuyết loại, ví dụ như một ngôn ngữ có chứa công thức như ( x : T 1 ) ( y : T 2 ) thường không được mô tả và thường là không thể trong một siêu logic tiêu chuẩn, ví dụ cho phép tính lambda tuyến tính.x:T1(x:T1)(y:T2)
Derek Elkins rời SE

@DerekElkins Đó là một hệ thống bằng chứng và hệ thống bằng chứng là logic. chính là một đề xuất, và Γ x : T là gì, nhưng tuyên bố rằng các đề xuất giữ khi Γ giữ. Thực tế là sự bất đồng của các mệnh đề không phải là công thức chỉ đơn giản là một hạn chế của cú pháp logic. x:TΓx:TΓ
David Richerby

Đó không chỉ là sự bất đồng. Không ai trong số , ( x : Một ) ( y : B ) , hoặc ( x : Một ) ( y : B ) là công thức một trong hai. Hay bạn đang nói đó là một logic chỉ có các mệnh đề nguyên tử? Tôi đã đề cập logic tuyến tính là một ví dụ. Trong logic tuyến tính ra lệnh, nó có thể rất dễ dàng là trường hợp đó x : Một , y : B t : C giữ trong khi¬(x:A)(x:A)(y:B)(x:A)(y:B)x:A,y:Bt:C không. Những kết nối nào làm dấu phẩy và tương ứng với các "giá trị thật" của x : A , y : B t : C và tạo ra hành vi trên? Có một tùy chọn nếu siêu logic cũng là logic tuyến tính có trật tự, nhưng sau đó chúng tôi không giải thích bất cứ điều gì. y:B,x:At:Cx:Ay:Bt:C
Derek Elkins rời SE
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.