범주 이론과 관계 대수 사이에 동형이 있습니까?


12

빅 데이터 관점에서 비롯됩니다. 기본적으로 많은 프레임 워크 (Apache Spark와 같은)는 Functor / Monad와 같은 인터페이스를 제공하여 관계형 작업의 부족을 "보상"하고 cats-to-SQL 변환 (Slick in Scala)으로 유사한 움직임이 있습니다. 예를 들어, SQL 관점에서 벡터의 요소 별 곱셈을 위해서는 자연스런 조인 (인덱스에 대한 반복이 없다고 가정)이 필요 합니다. 이는 범주 이론의 응용 프로그램에서 zip + map(multiply) (Spark의 MLib, 그러나 이미 가지고 있음 ElementwiseProduct) 으로 간주 될 수 있습니다 .

간단히 말해서 (다음 예는 스칼라에 있습니다) :

  • 조인의 참조 subcase가 나아가서 우리를 제공 실용적 펑 (이상 분류 컬렉션)으로 생각 될 수있다 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). 또한 일부 전처리 ( groupBy작업자 또는 단순히 노출 또는 일반적으로-변신)를 가정하여 다른 조인에 유도 할 수 있습니다 .

  • 다른 조인 및 선택은 모나드로 간주 될 수 있습니다. 예를 들어 다음과 WHERE같습니다 List(1,2,2,4).flatMap(x => if (x < 3) List(x) else List.empty).->List(1,2,2,4).filter(_ < 3)

  • 데이터 자체는 ADT (GADT도?)이며, 간단한 Set-category (또는 일반적으로 말하기-직교-닫힘)처럼 보이므로 Set-based 작업 (Curry- Howard-Lambek 자체)와 같은 작업 RENAME(적어도 실제로는).

  • 집계는 fold/reduce(변형)에 해당

그래서 내가 묻는 것은 범주 이론과 (전체) 관계 대수 사이에 동형을 형성 할 수 있습니까? 아니면 밝혀지지 않은 것이 있습니까? 그것이 효과가 있다면, 범주의 어떤 "소 집합"이 대뇌에 동형 인 것입니까?

로직 캣 람다에 대한 Curry-Howard-Lambek 과 같은 공식 솔루션 이 더 정확한 반면 내 가정은 상당히 광범위하다는 것을 알 수 있습니다. 실제로, 나는 성공적인 연구에 대한 참조를 요구하고 있습니다 (직접적인 관계를 보여줍니다) 스칼라 / 하스켈에 더 많은 예제가 있습니다.

편집 : 허용 된 대답으로 인해 조인과 조건을 모나드로 표현하기에 너무 멀리 갔다고 생각합니다 (특히 FALSE를 효과적으로 인스턴스화하는 빈 값 사용). SQL의 관계 하위 집합에 대해 풀백으로 충분하다고 생각합니다. 모나드는 GROUP BY와 같은 고차 (중첩) 물건에 더 좋습니다.

답변:


13

내가 설명 할 약간의 전문 용어와 함께 Curry-Howard-Lambek 서신을 분명히하자. Lambek은 제품과 함께 간단히 입력 된 람다 미적분학 이 직교 폐쇄 범주 의 내부 언어 라는 것을 보여주었습니다 . 나는 직교 폐쇄 카테고리가 무엇인지를 언급하지 않을 것입니다. 어렵지는 않지만 위의 진술에서 말하는 것은 당신이 알 필요가 없다는 것입니다! (또는 제품과 함께 간단히 입력 된 람다 미적분이 무엇인지 알고 있다면 이미 알고 있습니다.) 어떤 유형 이론 / 논리가 범주의 내부 언어 / 논리라는 것은 1을 의미합니다. (효과의 건전 상태) 언어의 구조를 유지하는 방식으로 범주 2) 직교 폐쇄에서 발생하는 모든 구조는 "본질적으로"이 언어 (완전 조건)의 관점에서 이야기 할 수 있습니다.

{xx=x}. 모든 관계형 대수 표현은 관계형 미적분학에서 도메인 독립적 쿼리 와 논리적으로 동일합니다 .

이를 제외하고 내부 논리 (기본적으로 분류되지 않았 거나 증명과 관련이없는 내부 언어 형식) 인 범주 는 직관적 인 FOL의 Heyting 범주 와 클래식 FOL의 부울 범주 입니다. (분류 / 증거 관련 버전은 하이퍼도 크린 으로 설명됩니다 . 또한 다양한 종류의 전제 가 매우 관련이 있습니다.) 참고, FOL, 관계형 미적분 및 관계형 대수는 집계를 지원 하지 않습니다 . 또한 데이터 로그 쿼리 를 나타내는 데 필요한 재귀도 지원하지 않습니다 .GROUP BY집계는 관계형 열을 허용하여 상위 논리 (HOL) 및 중첩 관계형 미적분 (NRC)으로 이어집니다. 관계형 열이 있으면 집계를 다른 "스칼라"연산자로 공식화 할 수 있습니다.

귀하의 예는 모나 딕 메타 언어가 쿼리에 적합한 언어라는 사실을 지적합니다. 용지 모나드 함축 : 쿼리의 다목적 표현 ( PDF는 ) 잘을 주문. 보다 포괄적이고 현대적인 모습은 Ryan Wisnesky의 PhD 논문, 범주 유형의 기능 쿼리 언어 ( PDF )이며, 이는 David Spivak의 연구 와 관련이 있으며, 이는 귀하의 질문에 대한 해석과 다소 관련이 있습니다. (더 역사적으로 가고 싶다면 Kleisli, 기능적 쿼리 시스템이 있었습니다.) 실제로 모나드 메타 언어는 중첩 된 쿼리의 적절한 언어입니다.관계형 미적분학. Wisnesky 는 내부 언어가 Mitchell-Bénabou 언어기본 토포스 의 관점에서 NRC를 공식화합니다. 기본 언어는 한정된 한정자를 가진 직관적 인 세트 이론처럼 보입니다. Wisnesky의 목적을 위해 그는 부울 토포스 를 사용하는데 대신 고전적인 논리를 갖습니다. 이 언어는 (핵심) SQL 또는 Datalog보다 훨씬 강력합니다. 유한 세트카테고리가 (부울) topos를 형성 한다는 점은 주목할 가치가 있습니다.


1
그것은 직접 관련이 없지만 topoi와 HOL을 언급했다면 더 높은 groupoid 및 / 또는 homotopy 해석을 보는 것이 좋습니다.
dk14
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.