Có một sự đẳng cấu giữa (tập hợp con) lý thuyết loại và đại số quan hệ?


12

Nó xuất phát từ quan điểm dữ liệu lớn. Về cơ bản, nhiều khung công tác (như Apache Spark) "bù đắp" sự thiếu các hoạt động quan hệ bằng cách cung cấp các giao diện giống Functor / Monad và có một chuyển động tương tự đối với chuyển đổi từ mèo sang SQL (Slick in Scala). Chẳng hạn, chúng ta cần tham gia tự nhiên (giả sử không có sự lặp lại trên các chỉ mục) để nhân các vectơ thông minh theo yếu tố từ phối cảnh SQL, có thể được coi là zip + map(multiply) (tuy nhiên MLib của Spark ElementwiseProduct) trong các ứng dụng của Lý thuyết danh mục.

Nói một cách đơn giản (ví dụ sau đây là trong Scala):

  • cặp con được tham chiếu của phép nối có thể được coi là functor ứng dụng (bộ sưu tập được sắp xếp quá mức), đến lượt nó cho chúng ta zip: List(1,2,3).ap(List(2,4,8).map(a => (b: Int) => a * b))-> (List(1,2,3) zip List(2,4,8)).map(x => x._1 * x._2). Hơn nữa, chúng ta có thể tạo ra nó cho một số phép nối khác, giả sử một số tiền xử lý ( groupBytoán tử hoặc chỉ là từ chối, hoặc nói chung - một phép biến hình).

  • tham gia và lựa chọn khác có thể được coi là đơn nguyên. Chẳng hạn, WHEREchỉ là: List(1,2,2,4).flatMap(x => if (x < 3) List(x) else List.empty)->List(1,2,2,4).filter(_ < 3)

  • bản thân dữ liệu chỉ là ADT (GADT cũng vậy?), đến lượt nó trông giống như một Thể loại đơn giản (hay nói chung hơn - Đóng Cartesian), do đó, tôi nên (tôi cho rằng) bao gồm các hoạt động dựa trên Set (do Curry- Bản thân Howard-Lambek) và cũng hoạt động như RENAME(ít nhất là trong thực tế).

  • tập hợp tương ứng với fold/reduce(catamorphism)

Vì vậy, những gì tôi đang hỏi là chúng ta có thể xây dựng một sự đồng hình giữa (có thể là tập con của) lý thuyết thể loại và (toàn bộ) đại số quan hệ hay có điều gì chưa được khám phá? Nếu nó hoạt động, "tập hợp con" chính xác của các thể loại là đẳng cấu với cơ khớp?

Bạn có thể thấy rằng các giả định của riêng tôi khá rộng trong khi các giải pháp chính thức như thư từ của Curry-Howard-Lambek cho logic-mèo-lambda thì chính xác hơn - vì vậy, thực sự, tôi đang yêu cầu tham khảo một nghiên cứu đã hoàn thành (điều đó cho thấy mối quan hệ trực tiếp ) với nhiều ví dụ hơn trong Scala / Haskell.

Chỉnh sửa : câu trả lời được chấp nhận khiến tôi nghĩ rằng tôi đã đi quá xa khi tham gia vào các điều kiện tham gia và điều kiện như một đơn nguyên (đặc biệt là sử dụng một giá trị trống có thể khởi tạo FALSE một cách hiệu quả), tôi nghĩ rằng pullback nên đủ ít nhất cho tập hợp con của SQL. Monads tốt hơn cho các thứ tự cao hơn (lồng nhau) như GROUP BY, không phải là một phần của phép nối.

Câu trả lời:


13

Hãy để tôi nói rõ sự tương ứng của Curry-Howard-Lambek với một chút biệt ngữ mà tôi sẽ giải thích. Lambek đã chỉ ra rằng phép tính lambda được gõ đơn giản với các sản phẩm là ngôn ngữ nội bộ của một thể loại đóng cartesian. Tôi sẽ không đánh vần danh mục đóng của cartesian là gì, mặc dù điều đó không khó, thay vào đó, những gì tuyên bố trên nói là bạn không cần phải biết! (Hoặc bạn đã biết, nếu bạn biết phép tính lambda được gõ đơn giản với các sản phẩm là gì.) danh mục theo cách bảo tồn cấu trúc của ngôn ngữ (thực tế là một điều kiện đúng đắn) 2) và "về cơ bản" tất cả các cấu trúc phát sinh từ việc đóng cartesian có thể được nói về ngôn ngữ này (một điều kiện đầy đủ).

{x|x= =x}. Mỗi biểu thức đại số quan hệ đều tương đương logic với truy vấn độc lập miền trong phép tính quan hệ.

Đưa rằng sang một bên, loại có nội Logic (mà chủ yếu là một decategorified hoặc hình thức chứng minh không liên quan của một ngôn ngữ nội bộ) là loại Heyting cho FOL intuitionistic và loại Boolean cho FOL cổ điển. (Các categorified / phiên bản giấy tờ chứng minh có liên quan được mô tả bởi hyperdoctrines . Cũng rất có liên quan pretoposes của các loại khác nhau.) Lưu ý, rằng FOL, các phép tính quan hệ và đại số quan hệ làm không hỗ trợ tập hợp. (Họ cũng không hỗ trợ đệ quy cần thiết để thể hiện truy vấn Datalog .) Một cách tiếp cậnGROUP BYvà tập hợp là để cho phép các cột có giá trị quan hệ dẫn đến logic bậc cao (HOL) và phép tính quan hệ lồng nhau (NRC). Khi chúng ta có các cột có giá trị quan hệ, tập hợp có thể được chính thức hóa như một toán tử "vô hướng" khác.

Các ví dụ của bạn chỉ ra thực tế rằng một ngôn ngữ meta đơn âm là một ngôn ngữ phù hợp cho các truy vấn. The Monad Hiểu giấy : Một đại diện linh hoạt của các câu hỏi ( PDF ) đánh vần điều này tốt. Một cái nhìn toàn diện và hiện đại hơn là luận án tiến sĩ của Ryan Wisnesky, Ngôn ngữ truy vấn chức năng với các loại phân loại ( PDF ), liên quan đến công việc của David Spivak , có vẻ như nó phù hợp với bất kỳ cách giải thích nào cho câu hỏi của bạn. (Nếu bạn muốn đi vào lịch sử hơn, đã có Kleisli, Hệ thống truy vấn chức năng .) Trên thực tế, ngôn ngữ meta đơn âm là một ngôn ngữ phù hợp cho các truy vấn được lồng trongtính toán quan hệ. Wisnesky xây dựng NRC theo thuật ngữ của một topos cơ bản có ngôn ngữ bên trong là ngôn ngữ Bénabou của Mitchell , về cơ bản trông giống như một lý thuyết tập hợp trực giác với các bộ lượng tử giới hạn. Với mục đích của Wisnesky, anh ta sử dụng một topos Boolean thay vào đó sẽ có logic cổ điển. Ngôn ngữ này mạnh hơn rất nhiều so với (lõi) SQL hoặc Datalog. Điều đáng chú ý là danh mục các tập hợp hữu hạn tạo thành một topos (Boolean) .


1
Mặc dù nó không liên quan trực tiếp, nhưng cho rằng bạn đã đề cập đến topoi và HOL, sẽ rất tuyệt khi thấy một cách giải thích theo nhóm và / hoặc đồng âm cao hơn.
dk14
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.