왜 콜론이 값이 유형에 속한다는 것을 나타 냅니까?


19

Pierce (2002)는 다음 같이 작성 하여 92 페이지 의 타이핑 관계 를 소개합니다 .

"t : T"로 작성된 산술 표현식의 타이핑 관계는 항에 유형을 할당하는 일련의 추론 규칙에 의해 정의됩니다.

각주에는 기호 가 종종 : 대신 사용됩니다. 내 질문은 단순히 형식 이론가들이 선호 하는가 : ? 유형 가 값 세트 인 경우 를 쓰는 것이 완벽 , 새 표기법이 필요하지 않습니다.TtT

이 몇 가지 CS 작가가 선호하는 것과 비슷 심지어 표기법의 남용이며, 기록해야한다고 생각 O에 \ 3N ^ 2 (N ^ 2) ?3n2=O(n2)3n2O(n2)


7
멤버쉽 술어 는 true 또는 false 일 수 있지만, 타이핑 선언 는 일반적으로 진실로 선언 된 사실 진술로 해석 되거나 진실은 순수한 구문 수단에 의해 도출 될 수 있습니다 . 이것은 구문의 멤버쉽 방법으로는 충분하지 않은 소수와 대조됩니다. xX x:X
Musa Al-hassy

4
@ MusaAl-hassy : 그것은 무슨 일이 일어나고 있는지 허위 진술입니다. 예를 들어 " : "로 "선언"할 수 있다는 의미이므로 사실로 선언 되지 않았습니다 . 예를 들어 가족과 범주의 내부 유형 이론의 경우에, 판단이 반드시 "순수한 구문 수단"에 의해 도출되어야하는 경우도 아니다. falseint
Andrej Bauer


2
@ MusaAl-hassy의 의견에 덧붙여 Bob Constable, Stuart Allen, Bob Harper 등의 계산 유형 이론 에서 는 멤버쉽 술어와 더 유사하기 때문에 판단 입력에 일상적으로 사용됩니다 ( 대화, 슬라이드 25, 예를 들어).
xrq

3
확실히 도 표기법의 남용이며 실제로 λ n .3 n 2O ( λ n . n 2 )로 작성되어야 합니까? (수학자들은 n 3 n 2O ( n n 2 )를 선호 할 수도 있습니다 .)3n2O(n2)λn.3n2O(λn.n2)n3n2O(nn2)
Oscar Cunningham

답변:


12

콜론의 오른쪽에있는 것이 반드시 세트 일 필요는없고 콜론의 왼쪽에있는 것이 반드시 해당 세트의 멤버가 아니기 때문입니다.

유형 이론은 20 세기 초 수학 기초에 대한 접근 방식으로 시작되었습니다 . 베르트랑 러셀 (Bertrand Russel) 은 순진한 이론에서 역설 을 발견 했으며,이 이론 (및 다른 어떤 역설)을 피하기 위해 집합 이론의 표현력을 제한하는 방법으로 유형 이론을 연구했다. 수년 동안 Russel과 다른 사람들은 많은 유형의 이론을 정의했습니다. 유형의 일부 이론에서 유형은 특정 속성으로 설정되지만 다른 유형에서는 다른 종류의 짐승입니다.

특히, 많은 유형의 이론에는 구문이 있습니다. 사물이 유형을 갖도록하는 규칙이 있습니다. 타이핑 규칙이 이론의 기초로 사용되는 경우 추가 외부 지식을 적용하여 타이핑 규칙이 말하는 것과 구별되는 것이 중요합니다. 타이핑 규칙이 증명 이론의 기초 인 경우에 특히 중요합니다. 예를 들어 고전적 논리를 가진 집합 이론을 기반으로하는 이론과 선택 공리가 구성 적 논리에있을 수도 있고 그렇지 않을 수도 있습니다. 이 도메인의 독창적 인 논문 중 하나는 교회유형의 간단한 이론의 수립 (1940)

아마도 유형과 집합의 구별이 가장 명백한 방식은 집합에 대한 가장 기본적인 규칙, 즉 두 집합이 동일한 요소를 갖는 경우 동일하다는 것입니다. 일반적으로 유형에는 적용되지 않습니다. 참조 여기 안드레이 바우어의 대답관련된 질문에 대한 그의 대답 몇 가지 예를 들어. 두 번째 스레드에는 읽을만한 다른 답변이 있습니다.

유형화 된 미적분학에서 유형이 집합이라고 말하는 것은 실제로 유형에 의미를 부여하는 것입니다. 미적분학에 형식 이론적 의미를 부여하는 것은 사소한 것이 아닙니다. 예를 들어 함수를 사용하여 언어를 정의한다고 가정합니다. 함수의 유형은 무엇입니까? 전체 이론은 101 번 이론에서 배운대로 그래프로 결정됩니다. 그러나 부분 함수는 어떻습니까? 모든 비 종료 기능에 동일한 의미를 부여 하시겠습니까? 해당 질문에 대답 할 때까지 재귀 함수를 허용하는 미적분의 집합으로 유형을 해석 할 수 없습니다. 1970 년대 초 에는 프로그래밍 언어 나 미적 의미 를 부여하는 것이 어려운 문제였습니다. 이 논문은 컴퓨터 언어 (1971)대한 수학적 의미론을 향해Dana ScottChristopher Strachey . 하스켈 wikibook는 주제의 좋은 프리젠 테이션을 가지고있다.

위에서 쓴 것처럼 대답의 두 번째 부분은 유형에 이론적 의미론을 제공하더라도 콜론 왼쪽에있는 것이 항상 집합의 요소는 아니라는 것입니다. 값에는 유형이 있지만 표현식 및 변수와 같은 다른 것들도 있습니다. 예를 들어, 유형이 지정된 프로그래밍 언어의 표현식은 종료되지 않더라도 유형이 있습니다. 당신은 conflate 기꺼이 수 있습니다 integerZ(x := 0; while true; do x := x + 1; x)의 요소가 아닌 Z .

콜론 표기법이 유형에 대해 언제 생겼는지 모르겠습니다. 이제 의미론에서는 표준이되고 프로그래밍 언어에서는 일반적이지만 Russel이나 Church에서는이를 사용하지 않았습니다. Algol은 그것을 사용하지 않았지만 Algol에서 영감을 얻은 파스칼 언어 는 1971 년에 사용되었습니다. 1970 년대 초의 많은 이론 논문이 표기법을 사용하기 때문에 이것이 처음이 아니라고 생각합니다. 초기 사용. 흥미롭게도 이것은 프로그래밍과 논리에서 유형의 개념이 통일 된 직후였다. Simon Martini는 프로그래밍 언어 에서 여러 유형의 유형에서 알 수 있듯이 1960 년대까지 프로그래밍 언어에서 "유형"이라고 불리는 것은 언어에서 나온 것이다. 유형 이론이 아닌 단어 사용.


37

콜론 표기법 t:T 를 선호하는 주된 이유 t : T 를 멤버쉽 관계 tT 있기 때문에 회원 관계가 오해의 소지가 될 수 있다는 것입니다 유형 (단지) 컬렉션이 없습니다 .

[ 보충 : 나는 역사적으로 유형 이론 written을 사용하여 쓰여 주목해야 한다 . Martin-Löf의 유형에 대한 개념은 건설적으로 세트를 포착하기위한 것이 었으며, 이미 Russell과 Whitehead 는 클래스 memebrship에 ϵ 를 사용 했습니다. : 보다 더 널리 퍼진 순간을 추적하는 것이 흥미로울 것입니다.입니다.]

유형은 특정 종류의 구성, 즉 특정 구조로 개체를 만드는 방법, 사용 방법 및 개체에 대한 방정식을 설명합니다.

예를 들어, 제품 유형 A×B 에는 주문 쌍을 만드는 방법을 설명하는 도입 규칙과 A×B 의 모든 요소에서 첫 번째 및 두 번째 구성 요소를 투영 할 수 있음을 설명하는 제거 규칙이 있습니다 . 의 정의 × B는 않습니다 하지 "... 모든 컬렉션"단어로 시작하고 어느 쪽도 없다가 "의 모든 요소와 같은 어디서나 아무 말하지 × B가 쌍은을"(하지만 다음 정의에서 그 모든 요소 A × BA×BA×BA×B건의입니다쌍과 동일). constrast에서의 일련의 이론적 정의 X×Y 된다 "모든 순서쌍의 집합 ..."라고 말했다.

표기법 t:TtT에 의해 기술 된 구조를 갖는다는 사실을 의미한다T .

타입 T확장 과 혼동되어서는 안된다 . 이것은 타입 T 의 모든 객체의 집합이다.T . A 형이되어 있지 그룹이 그 캐리어 세트에 의해 결정되지 않는 것처럼, 확장자 결정. 또한 두 가지 유형의 확장자가 동일하지만 다른 예가있을 수 있습니다.

  1. 2보다 큰 모든 소수의 유형 : Σ(n:N).isprime(n)×iseven(n)×(n>2) .
  2. 2보다 작은 모든 홀수 소수의 유형 : Σ(n:N).isprime(n)×isodd(n)×(n<2) .

둘의 확장자는 비어 있지만 동일한 유형이 아닙니다.

형식 이론적 사이 더 차이가 있습니다 : 및 설정 이론적는 . 세트 이론에서 객체 a 는 어떤 세트에 속하는 지에 관계없이 존재하며 여러 세트에 속할 수 있습니다. 대조적으로, 대부분의 타입의 이론 타이핑 고유성을 만족하는 경우 t:Tt:UTU . 다르게 말하면, 유형 이론적 구성 t 는 정확히 하나의 유형 T 를 가지며, 실제로 (고유하게 결정된) 유형이없는 객체 t 만 가질 수있는 방법이 없습니다 .

또 다른 차이점은 집합 이론에서 우리가 할 수 있다는 것입니다 거부 사실을 그 서면에 의한 ¬ ( ) 또는 . t : T 는 유형 이론의 규칙을 사용하여 도출 할 수 있는 판단 이기 때문에 유형 이론에서는 불가능 하지만, 유형 이론에는 무언가가 도출되지 않았다고 말할 수있는 것은 없습니다. 어린이가 레고 블록에서 무언가를 만들면 자랑스럽게 부모에게 달려 가서 건축을 보여 주지만 부모님에게 달려 가지 않은 것을 보여주지 않습니다.aA¬(aA)aAt:T


1
안드레이, 좋은 대답. 콜론 표기법의 역사적 기원을 알고 있습니까?
Andreas Rossberg

아아, 나는하지 않습니다. Church의 유형 이론α 유형의 변수에 첨자, 즉 를 사용했습니다 . Russell과 Whitehead는 ϵ 를 계급에 속하는 관계로 사용했습니다 . Algol 68은 변수 이름 앞에 유형을 넣습니다. 1972 마틴 LOF 유형 이론의 사용은 , 그래서 않습니다 1984 버전을 하지만, [1994 버전] 콜론을 사용합니다. xααϵ
Andrej Bauer

1
당신의 주장은 타입이 그룹과 같다는 것입니다. 의미가 있지만 표기법 은 추상 대수학에서 일반적입니다. gG
Björn Lindqvist

2
@ BjörnLindqvist : 나는이 답변이 전체 이야기라고 생각하지 않습니다. 표준 수학에서도 " "를 사용하여 fS 에서 T 까지의 함수 임을 나타냅니다 . 왜 우리는 " f ( S T ) "또는 이와 유사한 것을 사용하지 않았 습니까? 글쎄, 우리는하지 않았다. 물론 특정 유형의 이론을 제시 할 때 " "를 사용하지 말아야 할 충분한 이유가 있습니다. ZFC 교육을받은 사람들이 ZFC 세트와 같다고 생각하기를 원하지 않기 때문입니다. 케이스. 그렇다고 콜론이 아직f:STfSTf(ST) 형 이론이 인기가 오래 전부터 널리 사용되었다.
user21820

1
@ user21820 " 사용하지 않은 이유는 무엇 입니까?" 단지 추측 : 수학자들은 S T 를 세트로 생각하지 않았기 때문에 . 이 표기법의 역사는 여기를 참조 하십시오 . 나는 f : S T 의 콜론 이 타입 이론가들에게 영감을 주었다는 것을 의심한다 . 타입 이론가 콜론은 아마도 가 ASCII 문자가 아니라는 사실과 관련이 있습니다. f(ST)STf:ST
Michael

5

비욘,

아마도 이전에 참조가 있었지만 한 가지 경우 콜론은 파스칼 프로그래밍 언어에서 사용되었습니다.

First Google hit for Pascal


2
이전에 사용한 프로그래밍 언어는 없었습니까 :?
Andrej Bauer

@AndrejBauer는 실제로 그 가능성있는 사실을 막기 위해 "아마도 이전의 참조가 있지만 ..."라고 썼습니다.
Bjørn Kjos-Hanssen

@AndrejBauer Algol 은하 지 않았습니다. :1970 년대 이전의 이론 논문에서 사용 되었습니까 ?
Gilles 'SO- 악마 그만'

1
포트란은 REAL :: x있지만 이것이 파스칼 이전에 왔는지 모르겠다.
Michael

1
@Michael Fortran은 Pascal보다 먼저 나왔지만 (약 1955 년 대 1970 년),이 특정 구문은 Fortran 90에서만 소개되었으므로 Pascal보다 훨씬 늦습니다. 여기 fortranwiki.org/fortran/show/Modernizing+Old+Fortran
Federico Poloni
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.