Có một khái niệm tốt về bằng chứng không chấm dứt và tạm dừng trong lý thuyết loại?


10

Lý thuyết kiểu xây dựng với sự giải thích cơ bản của nó dưới sự tương ứng của cà ri howard chỉ bao gồm các hàm tổng số, tính toán được. Trong tài liệu, một số người đã nói về việc sử dụng "lý thuyết loại tính toán" để thể hiện sự không chấm dứt trong các chương trình chức năng, nhưng trong các bài báo tôi đã gặp, đây dường như không phải là động lực chính cho lý thuyết (Ví dụ Benton đề cập đến chủ nghĩa không xác định, tiếp tục và ngoại lệ, mà không đi sâu vào chi tiết về việc không chấm dứt), vì vậy tôi vẫn chưa tìm thấy một bài viết đưa ra một giải thích mạnh mẽ về việc không chấm dứt sử dụng lý thuyết loại tính toán.

Cụ thể, điều tôi đang tìm kiếm là một cách đưa ra một loại đại diện cho một tính toán có thể không kết thúc của loại , , cần có một số khái niệm về bằng chứng chấm dứt loại , như vậy mà cho và , chúng ta có thể xây dựng một thuật ngữ .T ( Một ) x : T ( Một ) H ( x ) x : T ( Một ) p : H ( x ) ~ x : MộtAT(A)x:T(A)H(x)x:T(A)p:H(x)x~:A

Động lực của tôi cho điều này là, cuối cùng tôi muốn có thể liên hệ chính thức hơn các khái niệm trong lý thuyết phức tạp tính toán với lý thuyết kiểu xây dựng. Cụ thể, tôi quan tâm đến sức mạnh nào mà các loại hình xây dựng lý thuyết chính thức đạt được với quyền truy cập vào một nhà tiên tri tạm dừng, và để làm như vậy, tất nhiên tôi cần phải có một khái niệm chính thức về việc không chấm dứt có thể, và bằng chứng tạm dừng đi cùng với nó trong một khuôn khổ lý thuyết loại.


3
Bạn đã xem Constable-Mendler, định nghĩa đệ quy trong lý thuyết loại chưa? Chúng đưa ra cách định nghĩa cho mọi định nghĩa đệ quy điểm cố định của hàm một phần từ A đến B một vị từ miền d o m ( f ) sao cho x A , d o m ( f ) ( x ) đại diện cho loại bằng chứng rằng f dừng lại ở x . Tôi tin rằng điều này được thực hiện trong Nuprl. fAB dom(f)xAdom(f)(x)fx
Ulrik Hội trưởng

3
Bạn đang tìm kiếm sự chậm trễ đơn nguyên ?
Andrej Bauer

@UlrikAWholtz Tôi nghĩ rằng nó khá gần với những gì tôi đang tìm kiếm, mặc dù tôi gặp một số khó khăn khi phân tích thông qua ký hiệu Nuprl được sử dụng trong bài báo - điều mà tôi không giống với. Nếu tôi hiểu chính xác, về cơ bản họ định nghĩa một hàm đệ quy một phần từ đến B (hoặc ít nhất, xác định chúng với) là một hàm đệ quy tổng từ $ \ {x: A | dom (f) (g) \} đến B. (Xem phần nhận xét ở cuối trang 27)AB
Nathan BeDell

Câu trả lời:


11

Bởi vì một trong những ứng dụng chính của Lý thuyết Loại trong việc chính thức hóa là nghiên cứu ngôn ngữ lập trình và tính toán nói chung, rất nhiều suy nghĩ đã đi vào các cách để thể hiện các chương trình có thể không kết thúc.

Tôi sẽ không thực hiện một cuộc khảo sát hoàn chỉnh ở đây, nhưng tôi sẽ thử và đưa ra gợi ý cho các lực đẩy chính của các hướng khác nhau.

  • Phương pháp "quan hệ": bạn có thể định nghĩa các chương trình giả định của mình là quan hệ, giữ iff f được định nghĩa tại xf ( x ) = y . Điều này thường là những gì được thực hiện với sự Kleene T-ngữ . Đây hoạt động cũng như trong loại formalizations lý thuyết như trong logic cổ điển, (mặc dù tất nhiên bạn không thể chứng minh x ( y , F x y ) ( ¬ y , F x y ) ).F x yfxf(x)=yx(y,F x y)(¬y,F x y)

    Một cách tinh vi hơn để làm điều này là phương pháp "Bove-Capretta" (xem Mô hình đệ quy trong Lý thuyết loại , với mỗi hàm đệ quy, định nghĩa một "vị từ có thể truy cập" mã hóa thực tế là một tính toán đã cho là hữu hạn. một đối số bổ sung là bằng chứng cho thấy các đầu vào đã cho có thể truy cập được. Để xác định hàm không có biến vị ngữ phụ này, bạn cần chứng minh rằng mọi kết hợp đầu vào có thể truy cập được.

  • A

    codata Delay A =
    | Now : A -> Delay A
    | Later (Delay A)
    

    Mã này có thể là một dòng Latermã thông báo vô hạn ("tích tắc" tính toán) có thể kết thúc bằng một kết quả Now a. Không chấm dứt tương đương với việc trở nên giống với chương trình

    loop = Vòng lặp sau và chấm dứt có thể được xác định bởi một vị từ quy nạp trên Delay A:

    data Terminates : Data A -> Prop =
    | Term_now : forall x, Terminates (Now x)
    | Term_later : forall d, Terminates d -> Terminates (Later d)
    

    Tôi nghĩ rằng agda-istas có rất nhiều điều để nói về điều này mà họ gọi là đơn nguyên một phần (xem ví dụ: Danielsson ).

  • Phương pháp "lý thuyết loại một phần" : đây là một thử nghiệm nhiều hơn một chút (lý thuyết vẫn đang được thực hiện), nhưng có một số lý thuyết loại đang được phát triển để đối phó với thực tế là có hai loại chức năng mà chúng ta muốn viết trong lý thuyết loại: các điều khoản bằng chứng và các chương trình. Hóa ra rất khó để có được một lý thuyết hợp lý về những điều này (và duy trì tính nhất quán của lý thuyết), nhưng một nỗ lực nghiêm túc được thực hiện ở đây bởi Casinghino et al , và một nỗ lực tương tự của Kimmel et al .

Tôi chắc chắn có những cách tiếp cận khác mà tôi không biết và tôi rất vui nếu ai đó muốn hoàn thành danh sách này.

Π10

Có những tương tác khác, khá hiệu quả giữa lý thuyết loại và lý thuyết phức tạp, thường là dưới sự phức tạp tính toán ngầm .


Thật thú vị, cảm ơn thông tin! Tôi tin rằng cách tiếp cận lý thuyết kiểu một phần có lẽ là gần nhất với tinh thần mà tôi đang tìm kiếm - và ít nhất, bài báo Kimmel dường như cung cấp ở một mức độ cụ thể những gì tôi đang tìm kiếm (xem quy tắc đánh máy cho "tcast" ).
Nathan BeDell
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.