Ứng dụng vững chắc của lý thuyết thể loại trong TCS?


103

Tôi đã học được một vài lý thuyết thể loại. Nó chắc chắn là một cách khác nhau để nhìn vào mọi thứ. (Tóm tắt rất sơ lược cho những người chưa từng thấy nó: lý thuyết thể loại đưa ra các cách thể hiện tất cả các loại hành vi toán học chỉ dựa trên mối quan hệ chức năng giữa các đối tượng. Ví dụ, những thứ như sản phẩm của Cartesian được xác định hoàn toàn theo các khía cạnh làm thế nào các chức năng khác hoạt động với nó, không phải về các yếu tố nào là thành viên của tập hợp.)

Tôi có một số hiểu biết mơ hồ rằng lý thuyết thể loại rất hữu ích về mặt ngôn ngữ / logic lập trình ("Lý thuyết B"), và đang tự hỏi có bao nhiêu thuật toán và độ phức tạp ("Lý thuyết A") có thể có lợi. Mặc dù nó có thể giúp tôi khởi đầu, nếu tôi biết một số ứng dụng vững chắc của lý thuyết thể loại trong Lý thuyết B. (Tôi đã ngầm giả định rằng không có ứng dụng nào trong Lý thuyết A được tìm thấy cho đến nay, nhưng nếu bạn có một số trong số đó, thì thậm chí tốt hơn cho tôi!)

Theo "ứng dụng vững chắc", ý tôi là:

(1) Ứng dụng này phụ thuộc rất nhiều vào lý thuyết danh mục mà rất khó đạt được nếu không sử dụng máy móc.

(2) Ứng dụng gọi ít nhất một định lý không tầm thường của lý thuyết phạm trù (ví dụ bổ đề của Yoneda).

Cũng có thể là (1) ngụ ý (2), nhưng tôi muốn chắc chắn đây là những ứng dụng "thực sự".

Mặc dù tôi có một số nền tảng "Lý thuyết B", nhưng đã được một thời gian, vì vậy bất kỳ sự khử thuật ngữ nào cũng sẽ được đánh giá cao.

(Tùy thuộc vào loại câu trả lời tôi nhận được, tôi có thể biến câu hỏi này thành wiki cộng đồng sau này. Nhưng tôi thực sự muốn các ứng dụng tốt với lời giải thích tốt, vì vậy có vẻ xấu hổ khi không thưởng cho người trả lời bằng một cái gì đó.)

Câu trả lời:


79

Tôi có thể nghĩ về một trường hợp trong đó lý thuyết thể loại được "áp dụng" trực tiếp để giải quyết một vấn đề mở trong các ngôn ngữ lập trình: Thorsten Altenkirch, Peter Dybjer, Martin Hofmann và Phil Scott, "Chuẩn hóa bằng cách đánh giá tính toán lambda với các bản sao" . Từ bản tóm tắt của họ: "Chúng tôi giải quyết vấn đề quyết định cho việc tính toán lambda đơn giản với tổng nhị phân mạnh, tương đương là vấn đề từ đối với các danh mục đóng cartesian miễn phí với các bản sao nhị phân. Phương pháp của chúng tôi dựa trên kỹ thuật ngữ nghĩa được gọi là 'bình thường hóa bằng cách đánh giá' và liên quan đến đảo ngược việc giải thích cú pháp thành một mô hình điếc phù hợp và từ trích xuất các dạng bình thường duy nhất thích hợp này. "

Tuy nhiên, nói chung, tôi nghĩ rằng lý thuyết thể loại thường không được áp dụng để chứng minh các định lý sâu sắc trong các ngôn ngữ lập trình (trong đó không có nhiều), nhưng thay vào đó cung cấp một khung khái niệm thường hữu ích (ví dụ như ở trên, ý tưởng của (trước) ngữ nghĩa sheaf).

Một ví dụ lịch sử quan trọng là gợi ý của Eugenio Moggi rằng khái niệm đơn nguyên (vốn là cơ bản và có mặt khắp nơi trong lý thuyết thể loại) có thể được sử dụng như một phần của một giải thích ngữ nghĩa về tác dụng phụ trong các ngôn ngữ lập trình (ví dụ, trạng thái, không phổ biến). Điều này cũng truyền cảm hứng cho một số phản ánh về cú pháp của các ngôn ngữ lập trình, ví dụ, dẫn trực tiếp đến "kiểu chữ Monad" trong Haskell (được sử dụng để đóng gói các hiệu ứng).

Gần đây hơn (thập kỷ qua), lời giải thích về hiệu ứng này về các đơn nguyên đã được xem xét lại từ quan điểm của mối liên hệ cũ (được thành lập bởi các nhà lý thuyết thể loại, trong thập niên 60) giữa các lý thuyết đơn nguyên và đại số: xem Martin Hyland và John Power , "Sự hiểu biết lý thuyết phạm trù của đại số phổ quát: Lý thuyết và đơn nguyên Lawvere" . Ý tưởng là chế độ xem hiệu ứng đơn điệu tương thích với quan điểm đại số (theo một cách nào đó hấp dẫn hơn), trong đó các hiệu ứng (ví dụ: cửa hàng) có thể được giải thích về mặt hoạt động (ví dụ: "tra cứu" và "cập nhật") và các phương trình liên quan (ví dụ, idempotency của cập nhật). Có một tòa nhà giấy gần đây về kết nối này của Paul-André Melliès, "Điều kiện phân đoạn đáp ứng các hiệu ứng tính toán", điều này cũng phụ thuộc rất nhiều vào các ý tưởng đến từ "lý thuyết phạm trù cao hơn" (ví dụ khái niệm "cấu trúc Yoneda" như một cách tổ chức ngữ nghĩa presheaf).

Một lớp khác, các ví dụ liên quan đến từ logic tuyến tính . Ngay sau khi được giới thiệu bởi Jean-Yves Girard vào những năm 80 (với mục đích hiểu rõ hơn về logic xây dựng), các kết nối vững chắc với lý thuyết thể loại đã được thiết lập. Để biết một số giải thích về mối liên hệ này, hãy xem "Vật lý, cấu trúc liên kết, logic và tính toán của John Baez và Mike Stay " .

Cuối cùng, câu trả lời này sẽ không đầy đủ nếu không tham khảo blog chiếu sáng của sigfpe "Vùng lân cận vô cực" . Cụ thể, bạn có thể kiểm tra "Thứ tự từng phần của một số lý thuyết danh mục được áp dụng cho Haskell" .


3
Xin chào Noam, tôi nghĩ rằng sau câu trả lời xuất sắc đó, đại diện của bạn đủ cao để thêm liên kết!
Suresh Venkat

Tôi phải đối mặt với cùng một vấn đề như một người mới. Tôi chỉ chờ đợi để có được câu trả lời của tôi bỏ phiếu, sau đó tôi đưa vào các liên kết. Bạn có thể làm tương tự ...
Andrej Bauer

10
Cảm ơn! Xin lỗi về sự hạn chế của siêu liên kết ... ước gì có cách nào đó để nói với hệ thống "yo, tôi là Noam Zeilberger, tôi hợp pháp"
Ryan Williams

thêm các liên kết! Vâng, đó là một chính sách hoàn toàn hợp lý, đôi khi chỉ là cản trở.
Noam Zeilberger

46

Tính toán lượng tử

Một lĩnh vực rất thú vị là việc áp dụng các loại đơn hình khác nhau để tính toán lượng tử. Một số người có thể lập luận rằng đây cũng là vật lý, nhưng công việc được thực hiện bởi những người trong khoa khoa học máy tính. Một bài báo sớm trong lĩnh vực này là Một ngữ nghĩa phân loại của các giao thức lượng tử của Samson Abramsky và Bob Coecke; nhiều bài báo gần đây của AbramskyCoecke và những người khác tiếp tục làm việc theo hướng này.

Trong cơ thể của công việc này, các giao thức lượng tử được tiên đề là (một số loại) loại đóng nhỏ gọn. Các danh mục như vậy có một ngôn ngữ đồ họa đẹp về sơ đồ chuỗi (và ruy băng). Các phương trình trong danh mục tương ứng với các chuyển động nhất định của các chuỗi, chẳng hạn như làm thẳng một chuỗi rối nhưng không thắt nút, tương ứng với một điều gì đó có ý nghĩa trong cơ học lượng tử, chẳng hạn như dịch chuyển tức thời lượng tử.

Cách tiếp cận phân loại cung cấp một cái nhìn logic, mức độ cao về những gì thường liên quan đến các tính toán mức độ rất thấp.

Lý thuyết hệ thống

FF

Biến đổi đồ thị

G1,G2Pe1:PG1e2:PG2G1G2G1G2P

(L,K,R)LRKl:KLr:KRLKRKdKDdtôiGCười mở miệngk

Ngôn ngữ lập trình (thông qua MathOverflow)

Đã có rất nhiều ứng dụng của lý thuyết thể loại trong việc thiết kế ngôn ngữ lập trình và lý thuyết ngôn ngữ lập trình. Câu trả lời mở rộng có thể được tìm thấy trên MathOverflow. https://mathoverflow.net/questions/3721/programming-lacular-basing-on-carget-theory ) https://mathoverflow.net/questions/4235/relating-carget-theory-to-programming-lingu-theory .

Bigraphs - Tính toán quá trình

Cuối cùng, có Milner của bigraphs , một khuôn khổ chung để mô tả và lý luận về hệ thống các đại lý tương tác. Nó có thể được coi là một khuôn khổ chung cho lý luận về đại số quá trình và các lý thuyết cấu trúc và hành vi của chúng. Cách tiếp cận cũng dựa trên đẩy.


35

Tôi đã ngầm giả định rằng không có ứng dụng nào trong Lý thuyết A được tìm thấy cho đến nay, nhưng nếu bạn có một vài trong số đó, điều đó thậm chí còn tốt hơn đối với tôi!

  • Sự hiểu biết của tôi là lý thuyết về loài của Jidel được sử dụng tương đối rộng rãi trong tổ hợp số học, như là một khái quát của các hàm tạo ra cho bạn biết làm thế nào để hoán vị mọi thứ ngoài số lượng có.

  • Pippenger đã áp dụng tính đối ngẫu của Stone để liên hệ các ngôn ngữ thông thường và các loại semigroups. Jeandel đã giới thiệu automata cấu trúc liên kết áp dụng những ý tưởng này để đưa ra các tài khoản thống nhất (và bằng chứng!) Cho lượng tử, xác suất và automata thông thường.

  • Roland Backhouse đã đưa ra các đặc tính trừu tượng của các thuật toán tham lam bằng các kết nối Galois với bán kết nhiệt đới.

Trong một tĩnh mạch đầu cơ hơn nhiều, Noam đã đề cập đến các mô hình điếc. Chúng đặc trưng trừu tượng cho kỹ thuật cú pháp của các mối quan hệ logic, có lẽ là một trong những kỹ thuật mạnh mẽ nhất trong ngữ nghĩa. Chúng tôi chủ yếu sử dụng chúng để chứng minh kết quả không thể diễn đạt và tính nhất quán, nhưng sẽ rất thú vị đối với các nhà lý thuyết phức tạp vì đây là một ví dụ hay về kỹ thuật chứng minh phi thực tế (theo nghĩa của Razborov / Rudich). (Tuy nhiên, các mối quan hệ logic thường được thiết kế rất cẩn thận để đảm bảo rằng chúng tương đối hóa - với tư cách là nhà thiết kế ngôn ngữ, chúng tôi muốn có thể đảm bảo với các lập trình viên rằng các lệnh gọi hàm là hộp đen!)

EDIT: Tôi sẽ tiếp tục suy đoán, theo yêu cầu của Ryan. Theo tôi hiểu, một bằng chứng tự nhiên đại khái là một bằng chứng trong việc cố gắng xác định một bất biến quy nạp của cấu trúc của một mạch, chịu các điều kiện hợp lý khác nhau. Những ý tưởng tương tự cũng (không có gì đáng ngạc nhiên) cũng khá phổ biến trong các ngôn ngữ lập trình, khi bạn cố gắng xác định bất biến được duy trì theo quy tắc theo thuật ngữ lambda (ví dụ, để chứng minh an toàn loại). 1

MộtBMộtBMột

MộtBMộtB. Lưu ý rằng không có bất biến quy nạp duy nhất - chúng tôi xác định cả một họ bất biến bằng cách đệ quy trên cấu trúc của đầu vào và sử dụng các phương tiện khác để chỉ ra rằng tất cả các thuật ngữ nằm trong các bất biến này. Về mặt lý thuyết, đây là một kỹ thuật mạnh hơn rất nhiều và là lý do tại sao nó cho phép bạn chứng minh kết quả nhất quán.

Mối liên hệ với các sheaves xuất phát từ thực tế là chúng ta thường cần lý do về các thuật ngữ mở (nghĩa là các thuật ngữ với các biến miễn phí), và do đó cần phân biệt giữa việc bị mắc kẹt do lỗi và bị mắc kẹt do cần phải giảm một biến. Sheaves phát sinh từ việc xem xét việc giảm các phép tính lambda khi xác định các hình thái của một loại có các điều khoản là các đối tượng (nghĩa là thứ tự một phần do giảm), và sau đó xem xét các hàm tử từ loại này thành các tập hợp (nghĩa là các vị ngữ). Jean Gallier đã viết một số bài báo hay về điều này vào đầu những năm 2000, nhưng tôi nghi ngờ chúng có thể đọc được trừ khi bạn đã đồng hóa một số lượng lớn phép tính lambda.


1
Bạn có thể đưa ra một tài liệu tham khảo cho giấy Backhouse? Anh ta có một vài đề cập đến "kết nối Galois" trong tiêu đề, nhưng một tìm kiếm nhanh không rõ ràng tiết lộ cái nào là về thuật toán tham lam (và tôi không nghĩ rằng tôi đủ quen thuộc với khu vực để lướt qua các chi tiết và hình dễ dàng hiểu được cái nào là "thực sự" về các thuật toán tham lam). Cảm ơn!
Joshua Grochow

1
Cùng với câu hỏi của Joshua, tôi cũng quan tâm đến việc các mô hình điếc và quan hệ logic liên quan đến bằng chứng tự nhiên.
Ryan Williams

Re: Stone duality, để có công việc thú vị hơn gần đây, hãy xem "Tính đối ngẫu đá và các ngôn ngữ dễ nhận biết của Mai Gehrke" ( math.ru.nl/~mgehrke/Ge09.pdf ) và "Cách tiếp cận tôpô" của Gehrke, Grigorieff và Pin "( Math.ru.nl/~mgehrke/GGP10.pdf )
Noam Zeilberger

Re: Gallier, ý bạn là những năm cuối thập niên 90 (như trong scazedirect.com/science/article/pii/0304397594002800 ?)
Blaisorblade

24

Có rất nhiều ví dụ, ví dụ đầu tiên mà tôi nghĩ đến là việc sử dụng lý thuyết phạm trù của Alex Simpson để chứng minh các thuộc tính của ngôn ngữ lập trình, xem ví dụ: " Tính đầy đủ tính toán cho các kiểu đệ quy trong mô hình của lý thuyết tập hợp trực giác ", Biên niên sử về logic thuần túy và ứng dụng , 130: 207-275, 2004. Mặc dù tiêu đề đề cập đến lý thuyết, kỹ thuật này là lý thuyết thể loại. Xem trang chủ của Alex để biết thêm ví dụ.


Cảm ơn các ref, nhưng xin lưu ý rằng tôi đã không hỏi: "kết quả nào đạt được bằng cách sử dụng lý thuyết thể loại mà không thể có được bằng cách khác?"
Ryan Williams

Đúng vậy, bạn đã không. Tôi chỉnh sửa câu trả lời của tôi.
Andrej Bauer

11

Tôi nghĩ rằng bạn đang hỏi hai câu hỏi về khả năng áp dụng, loại A và loại B riêng biệt.

Như bạn lưu ý, có nhiều ứng dụng thực tế của lý thuyết thể loại để loại chủ đề B: ngữ nghĩa của ngôn ngữ lập trình (đơn nguyên, danh mục đóng cartesian), logic và khả năng chứng minh (topoi, giống logic tuyến tính).

Tuy nhiên, dường như có rất ít ứng dụng thực chất cho lý thuyết A (thuật toán hoặc độ phức tạp).

Có một số cách sử dụng trong các đối tượng cơ bản, chẳng hạn như mô tả các loại đối tượng automata hoặc tổ hợp (biểu đồ, trình tự, hoán vị, v.v.). Nhưng những điều này dường như không giải thích cho sự hiểu biết sâu sắc hơn về lý thuyết hoặc thuật toán ngôn ngữ.

Theo suy đoán, nó có thể là một sự không phù hợp giữa các chiến lược hiện tại của lý thuyết thể loại và lý thuyết Một môn học:

  • Chiến lược trung tâm của lý thuyết thể loại là đối phó với sự bình đẳng (khi mọi thứ giống nhau và khi chúng khác nhau và cách chúng ánh xạ với nhau).

  • Đối với lý thuyết phức tạp, chiến lược chính là cắt giảm và thiết lập giới hạn (người ta sẽ nghĩ rằng giảm giống như một mũi tên, nhưng tôi không nghĩ bất cứ điều gì ngoài sự tương tự bề ngoài này đã được nghiên cứu).

  • Đối với các thuật toán, không có chiến lược bao quát cho nó ngoài mục đích tư duy kết hợp thông minh ad hoc. Đối với một số miền nhất định, tôi hy vọng có thể có sự khám phá hiệu quả (thuật toán cho đại số?) Nhưng tôi chưa thấy nó.


2
nó chỉ ra rằng việc cắt giảm có liên quan đến việc tái cấu trúc phân loại của diễn giải Dialectica của Goedel và ngữ nghĩa của logic tuyến tính. Xem "Câu hỏi và câu trả lời của Andreas Blass - Một loại phát sinh trong logic tuyến tính, lý thuyết phức tạp và lý thuyết tập hợp". math.lsa.umich.edu/~ablass/qa.pdf
Neel Krishnaswami

3

Các ứng dụng "TCS-A" xuất hiện trong tâm trí tôi là các loài tổ hợp của Jidel (khái quát hóa chuỗi sức mạnh cho functor để mô tả các đối tượng tổ hợp như cây, bộ, multisets, v.v.) và chính thức hóa "trò chơi nhảy" bằng mật mã, logic Hoare xác suất (Easycrypt, Certicrypt, tác phẩm của Andreas Lochbihler). Trong khi các thể loại không trực tiếp xuất hiện ở phần sau, chúng là công cụ trong việc phát triển các logic cơ bản (ví dụ: các đơn nguyên).

Tái bút: Vì tên của tôi đã được đề cập trong câu trả lời đầu tiên: việc sử dụng các hiệu ứng của các nhóm để thể hiện tính nhạy cảm của một tiên đề nhất định trong lý thuyết loại của Martin-Löf và Thomas cũng có thể được coi là cách sử dụng lý thuyết thể loại "vững chắc" (mặc dù theo logic hoặc "TCS-B").


3

Cuốn sách gần đây hơn Seven Sketches in Creationality liệt kê một số ứng dụng của lý thuyết thể loại trong khoa học máy tính và kỹ thuật. Đáng chú ý là chương về cơ sở dữ liệu nơi các tác giả mô tả truy vấn, kết hợp, di chuyển và phát triển cơ sở dữ liệu dựa trên mô hình phân loại. Các tác giả đã tiếp tục và phát triển Ngôn ngữ truy vấn phân loại (CQL) và môi trường phát triển tích hợp (IDE) dựa trên mô hình cơ sở dữ liệu phân loại của họ.

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.