순진한 이론에 기반한 유형 시스템


11

내가 이해하는 것처럼, 컴퓨터 과학에서 데이터 유형은 Russell의 역설과 같은 것들 때문에 이론을 기반으로하지 않지만 실제 프로그래밍 언어에서는 "자체를 포함하지 않는 집합"과 같은 복잡한 데이터 유형을 표현할 수 없다. 실제로 type은 인스턴스 멤버쉽이이 유형 / 세트에 고유 한 여러 기능 (특정 속성, 메소드의 존재)으로 정의되는 무한한 멤버 집합이라고 말합니까? 반대의 예가 없다면?


1
러셀의 역설은 그것과 직접 관련이 없습니다.
Andrej Bauer

답변:


11

유형의 의미론에서 집합을 피하는 주된 이유는 일반적인 프로그래밍 언어로 인해 임의의 재귀 함수를 정의 할 수 있기 때문입니다. 따라서 형식의 의미가 무엇이든 고정 소수점 속성이 있어야합니다. 이러한 속성을 가진 유일한 집합은 싱글 톤 집합입니다.

더 정확하게 말하면, 유형 의 재귀 적으로 정의 된 값 (일반적으로 는 함수 유형)는 고정 소수점 방정식 로 정의됩니다. 여기서 can 모든 프로그램이 될 수 있습니다. 만약 가 세트 로 해석된다면, 우리는 모든 가 고정 점을 가질 것으로 기대할 것이다 . 그러나이 속성을 가진 유일한 세트 는 싱글 톤입니다.vττv=Φ(v)Φ:τττTf:TTT

물론 범인이 고전적인 논리라는 것도 알 수 있습니다. 직관적 인 집합 이론으로 작업하는 경우 고정 소수점 속성을 가진 집합이 많이 있다고 가정합니다. 실제로 이것은 프로그래밍 언어의 의미론을 제공하는 데 사용되었습니다.

Alex Simpson, 직관적 집합 이론의 모델에서 재귀 유형에 대한 계산적 적합성, 순수하고 적용되는 논리의 연대기, 130 : 207-275, 2004.


7

시맨틱 서브 타이핑은 서브 타이핑이 서브 세트 인 유형의 기본 세트 이론적 해석을 기반으로합니다. 필자는 원본 작업 은 Castagna가 XML 처리 언어 CDuce와 관련하여 수행 한 것이라고 생각합니다. 유형은 XML 문서 세트에 해당합니다. 아이디어는 이후 한 다시 적용 받는 -calculus과에 미적분 객체와 클래스 .π


1
Castagna의 선구자가 있습니다. 오래 전에 사람들은 이미 PER 모델에서 하위 유형을 모델링하기 위해 부분 집합 관계를 사용했습니다. 유형은 부분 등가 관계 (PER)에 해당하며 하위 유형 지정은 이러한 관계를 포함하는 것입니다.
Andrej Bauer

4

몇 가지 예외 (Dave Clarke가 인용 한 것)를 제외하면 간단한 유형 이론적 의미론은 사용하기 어렵습니다. 그 이유는 집합 이론적 의미론에서 데이터 추상화가 잘 작동하지 않기 때문입니다.

기본 문제는 다형성 유형을 가진 완전히 순수한 기능적인 언어에서 가장 쉽게 볼 수 있으며, 다형성 유형 인 고려하십시오 . 유형의 순진한 집합 이론적 의미론에서 함수 공간을 집합 이론적 함수 공간으로 해석 한 다음 유니버설 수량자를 일부 (작은) 세트의 우주 대한 곱으로 해석합니다 . 그건,α.ααU

[[α.αα]]=ΠXU.XX

그러나 이러한 유형의 해석에는 각 요소에서 다른 기능을 수행하는 함수가 포함 됩니다. 에서 분기하여 각 에 대해 로 다른 함수를 제공 할 수 있습니다 . 반대로, 다형성 유형에는 항등 함수 포함 됩니다 . 프로그래밍 언어를 사용하면 모든 유형에서 작동하는 유형 만 수행 할 수 있기 때문 입니다.UUXXXUα

따라서이 의미론은 (예를 들어) ID가 의 유일한 거주자라는 사실에 근거하여 최적화를 정당화 할 수 없습니다 .α.αα


닐, 나는이 대답이 의미가 없다고 생각한다. 언어의 의미가 표준 F 스타일 의미이면 컴파일러는 형식 시스템을 기반으로 최적화를 수행 할 수 있습니다. 시맨틱이 집합 이론적 시맨틱이면 최적화가 적절하지 않습니다. 유형에 사용하는 모델이 입력되지 않습니다.
Sam Tobin-Hochstadt

샘, 나는 당신의 요점을 이해하지 못한다 : 그것은 당신이 나와 완전히 동의하는 것처럼 읽습니다! 표준 집합 이론적 의미론은 해당 유형의 유일한 거주자가 신원임을 증명할 수 없으므로 다른 의미론이 필요합니다.
Neel Krishnaswami

1
@Neel : 당신이 설명하는 문제는 우리가 세트에서 멀어 지더라도 지속됩니다. 해결책은 세트 범주를 다른 것으로 변경하는 것이 아니라 매개 변수를 다르게 모델링하는 것입니다. 즉, 내가 알고 있듯이 관계형 매개 변수 를 사용해야 합니다. 그러나 내가 실수하지 않으면 일이 세트로도 잘 작동합니다. 집합의 "단순한"문제는 고정 소수점 (재귀 값 및 재귀 유형 수준 모두)이 없다는 것입니다.
Andrej Bauer

1
아, 내가 왜 당신과 샘을 혼동하는지 이해합니다! 나는 순진한 이론 이론적 모델을 사용하는 것이 타당하지 않다는 것을 의미하지는 않는다. 단지이 모델이 종종 도움이되지 않는 답을 준다는 것이다. 물론 세트를 사용하여 유용한 모델 (예 : 관계형)을 만들 수는 있지만 더 이상 질문에서 제안 된 방식으로 유형별로 유형을 해석하지 않습니다. (또한, 아시다시피, 전제적 다형성으로 순진한 모델은 없지만, 파라 메트릭은 여전히 ​​예측 적으로 의미가 있습니다.)
Neel Krishnaswami

1
당신의 요점은 의미론 사이의 대응성에 관한 것이라고 생각합니다. 집합 이론적 의미론은 표현할 수없는 주민을 가지고 있기 때문에 System F 스타일 다형성에 적합하지 않습니다. 그러나 그것은 집합 이론적 의미론 대한 요점이 아니며 단지 우리의 의미론이 동의해야한다는 진술입니다. 우리의 언어로 (예를 들어 Typed Racket과 같이) 말하는 기능을 표현할 수 있다면, 이론적 인 의미론을 원할 수도 있습니다 .
Sam Tobin-Hochstadt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.