funsplit và phân cực của các loại Pi


18

Trong một chủ đề gần đây trong danh sách gửi thư của Agda, câu hỏi về luật xuất hiện, trong đó Peter Hancock đã đưa ra nhận xét kích thích tư duy .η

Hiểu biết của tôi là luật đi kèm với các loại tiêu cực, tức là. kết nối mà giới thiệu quy tắc là không thể đảo ngược. Để vô hiệu hóa cho các chức năng, Hank đề nghị sử dụng công cụ loại bỏ tùy chỉnh, funsplit , thay vì quy tắc ứng dụng thông thường. Tôi muốn hiểu nhận xét của Hank về mặt phân cực.ηη

Ví dụ: có hai bài thuyết trình -types. Có loại bỏ phân chia Martin-Löf truyền thống , theo phong cách tích cực:Σ

Γf:(a:A)(b:Ba)C(a,b)Γp:Σa:A.BΓsplitfp:Cp

Và có phiên bản phủ định:

Γp:Σa:A.BΓπ0p:AΓp:Σa:A.BΓπ1p:B[π0p/a]

Bản trình bày sau này giúp dễ dàng có được cho các cặp, nghĩa là. cho bất kỳ cặp (trong đó == là viết tắt của đẳng thức xác định). Về khả năng chứng minh, sự khác biệt này không thành vấn đề: theo trực giác, bạn có thể thực hiện các phép chiếu với sự phân chia hoặc theo cách khác.η(π0p,π1p)==pp

Bây giờ, -types thường (và không thể tranh cãi, tôi tin) được đưa ra một cách tiêu cực:Π

Γf:Πa:A.BΓs:AΓfs:B[s/a]

Cung cấp cho chúng tôi cho các chức năng: .ηλx.fx==f

Tuy nhiên, trong thư đó, Hank nhớ lại công cụ loại bỏ funsplit (Lập trình theo lý thuyết loại ML, [http://www.cse.chalmers.se/research/group/logic/book/], tr.56). Nó được mô tả trong khung logic bằng cách:

fΠ(A,B)C(v)Set[vΠ(A,B)]d(y)C(λ(y))[y(x)B(x)[xA]]funsplit(f,d)C(f)

Thật thú vị, Nordstrom et al. thúc đẩy định nghĩa này bằng cách nói rằng "[này] hình thức không chính tắc thay thế dựa trên nguyên tắc cảm ứng cấu trúc". Có một mùi tích cực của tuyên bố này: các chức năng sẽ được 'định nghĩa' bởi nhà xây dựng của họ, .λ

Tuy nhiên, tôi không thể hoàn toàn đưa ra một bài trình bày thỏa đáng về quy tắc đó trong suy luận tự nhiên (hoặc, thậm chí tốt hơn, tính toán tuần tự). (Ab) sử dụng khung logic để giới thiệu có vẻ rất quan trọng ở đây.y

Vì vậy, funsplit có phải là một bản trình bày tích cực về -types không? Chúng ta cũng có một cái gì đó tương tự trong phép tính tuần tự (không phụ thuộc)? nó sẽ trông như thế nào?Π

Làm thế nào phổ biến / tò mò là cho các nhà lý thuyết bằng chứng trong lĩnh vực này?

Câu trả lời:


12

Việc trình bày loại bỏ chức năng bằng cách sử dụng chắc chắn không phải là sự xuất hiện thông thường trong hầu hết các phương pháp điều trị của lý thuyết loại. Tuy nhiên, tôi tin rằng hình thức này thực sự là sự trình bày "tích cực" về việc loại bỏ các loại chức năng. Vấn đề ở đây là bạn cần một hình thức khớp mẫu bậc cao, xem ví dụ Dale Miller .funsplit

Cho phép tôi xây dựng lại quy tắc của bạn theo cách rõ ràng hơn với tôi:

Γf:Πx:A.BΓ,z:Πx:A.BC:SetΓ,[x:A]F(x):Be:C{λx:A.F(x)/z}match f with λx:A.F(x)e:C{f/z}

Trong trường hợp là một meta-biến của loại trong bối cảnh .B x : AFBx:A

Quy tắc viết lại sau đó trở thành:

match λx:A.t with λx:A.F(x)ee{t{u/x}/F(u)}

Điều này cho phép bạn xác định ứng dụng là:

app(t,u)=match t with λx:A.F(x)F(u)

Ngoài thực tế là điều này đòi hỏi một hệ thống loại "kiểu khung logic" phải hợp lệ, thì rắc rối (và nhu cầu hạn chế) của việc hợp nhất bậc cao làm cho công thức này không được ưa chuộng.

Tuy nhiên, có một nơi mà sự phân biệt tích cực / tiêu cực có mặt trong tài liệu: xây dựng các vị từ quan hệ logic . Hai định nghĩa có thể (trong trường hợp đơn nhất) là

[[Πx:A.B]]={tu[[A]],tu[[B]]xu}

[[Πx:A.B]]={ttλx.t,u[[A]],t{u/x}[[B]]xu}

Phiên bản thứ hai ít phổ biến hơn, nhưng có thể được tìm thấy, ví dụ như trong Dowek và Werner .


1
Điều này dường như có liên quan đến Cú pháp trừu tượng bậc cao được sử dụng rộng rãi trong Khung logic. Đặc biệt, ở đây dường như là chức năng meta. F
ngày

13

Đây là một quan điểm hơi khác về câu trả lời của Fredrik. Nói chung, đó là trường hợp các kiểu mã hóa của Giáo hội bị cấm đoán sẽ thỏa mãn các luật có liên quan , nhưng sẽ không thỏa mãn các luật .ηβη

Vì vậy, điều này có nghĩa là chúng ta có thể định nghĩa một cặp phụ thuộc như sau:

x:X.Y[x]α:.(Πx:X.Y[x]α)α
Bây giờ, lưu ý rằng có thể dễ dàng xác định: Tuy nhiên, bạn không thể xác định phép chiếu thứ hai - hãy thử nó! Bạn chỉ có thể định nghĩa một trình loại bỏ yếu cho nó, đó là lý do tại sao tôi đã viết nó với một tồn tại.π1
π1:x:X.Y[x]Xλp:(x:X.Y[x]).pX(λxy.x)
π2:Πp:(x:X.Y[x]).Y[π1p]

Tuy nhiên, phép chiếu thứ hai là có thể thực hiện được và trong một mô hình tham số, bạn có thể chỉ ra rằng nó cũng có hành vi đúng. (Xem bản nháp gần đây của tôi với Derek Dreyer về tính tham số trong Tính toán công trình để biết thêm về điều này.) Vì vậy, tôi nghĩ rằng phép chiếu về cơ bản đòi hỏi một số thuộc tính mở rộng mạnh mẽ để nó có ý nghĩa.π2

Về mặt tính toán tuần tự, bộ khử yếu có một quy tắc trông hơi giống:

Γ,x:X,y:Y[x],Γe:CΓ,p:x:X.Y[x],Γlet(x,y)=pine:C
Ở đây, các điều kiện hình thành rõ ràng ngụ ý rằng không thể xảy ra miễn phí trong hoặc . Nếu chúng ta thư giãn điều kiện đó, chúng ta sẽ có quy tắc phân tách, có quy tắc bên trái trông giống như Sự thay thế đó nhắc nhở tôi rất nhiều về quy tắc loại bỏ Girard / Schroeder-Heister cho sự bình đẳng. Tôi hỏi một câupΓC
Γ,x:X,y:Y[x],[(x,y)/p]Γe:[(x,y)/p]CΓ,p:x:X.Y[x],Γlet(x,y)=pine:C
về quy tắc này một thời gian trước, và David Baelde và Gopalan Nadathur đưa ra phiên bản hiện đại trong bài báo LICS 2012 của họ, Kết hợp Khấu trừ Modulo và Logic của các định nghĩa điểm cố định . Tôi nghĩ Conor McBride đã dành thời gian suy nghĩ về mối quan hệ giữa loại danh tính và sự bình đẳng Schroeder-Heister, vì vậy bạn có thể muốn xem anh ấy nghĩ gì.

1
Tôi thực sự thích tất cả những câu trả lời này! Tôi cảm thấy có một số khái niệm về "introspection" (khả năng biết rằng một thuật ngữ có giá trị) tiềm ẩn trong câu trả lời từ Fredrik, đó là vấn đề thực sự với eta: parametricity ngụ ý introspection ngụ ý eta.
cody

10

Richard Garner đã viết một bài viết hay về ứng dụng so với funsplit, Về sức mạnh của các sản phẩm phụ thuộc trong lý thuyết loại của Martin-Löf (APAL 160 (2009)), cũng thảo luận về tính chất bậc cao của quy tắc funsplit (có tham khảo Peter Schroeder-Heister là một phần mở rộng tự nhiên của suy luận tự nhiên (JSL 49 (1984))).

Richard cho thấy rằng với sự hiện diện của các loại danh tính (và quy tắc hình thành và giới thiệu cho các loại ), funsplit có thể tương thích với quy tắc ứng dụng ở trên + mệnh đề eta, tức là hai quy tắc sau: Π

m:Π(A,B)η(m):IdΠ(A,B)(m,λx.mx)(Π-Prop-η)
x:Af(x):B(x)η(λ(f))=refl(λ(f)):IdΠ(A,B)(λ(f),λ(f))(Π-Prop-η-Comp)

Nghĩa là, nếu bạn có funsplit, bạn có thể xác định ứng dụng và như trên để giữ. Thú vị hơn, nếu bạn có ứng dụng và các quy tắc eta mệnh đề, thì bạn có thể định nghĩa funsplit.( Π -Prop- η -Comp )η(Π-Prop-η-Comp)

Hơn nữa, funsplit mạnh hơn ứng dụng: các quy tắc eta mệnh đề không thể xác định trong một lý thuyết chỉ có ứng dụng - do đó funsplit không thể xác định được, do đó các quy tắc eta mệnh đề cũng sẽ được xác định. Theo trực giác, điều này là do các quy tắc ứng dụng cung cấp cho bạn một chút chậm chạp hơn: không giống như funsplit (và eta), chúng không cho bạn biết các chức năng là gì, chỉ có thể áp dụng chúng cho các đối số. Tôi tin rằng lập luận của Richard cũng có thể được lặp lại cho các loại , để hiển thị kết quả tương tự cho so với các phép chiếu.s p l i tΣsplit

Lưu ý rằng nếu bạn có quy tắc eta xác định, chắc chắn bạn cũng sẽ có quy tắc đó (với ). Do đó, tôi nghĩ rằng các phát biểu của bạn "[...] cung cấp cho chúng tôi cho các hàm" và "[...] bản trình bày sau này giúp dễ dàng lấy cho các cặp" là sai. Tuy nhiên, Agda thực hiện cho cả hai hàm và cặp (nếu được định nghĩa là bản ghi), nhưng điều này không tuân theo chỉ từ ứng dụng.η η η Ση(m):=refl(m)ηηηΣ

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.