집합과 유형의 의미상의 차이점은 정확히 무엇입니까?


33

편집 : 이제 카테고리와 세트의 차이점에 대해 비슷한 질문을했습니다.

이 세트 이론과 어떻게 다른지 나는 (인정 하듯이 오히려 비공식) 유형 이론에 대해 읽어 때마다, 난 정말 이해할 수없는 구체적으로 .

"x는 세트 X에 속한다"와 "x는 X 타입이다"라는 개념적인 차이가 있음을 이해합니다. 왜냐하면 직관적으로 세트는 객체의 모음 일 뿐이고 유형에는 특정 "속성"이 있기 때문입니다. 그럼에도 불구하고 세트는 종종 속성에 따라 정의되며, 그렇다면 세트가 어떻게 중요한지 이해하는 데 어려움을 겪고 있습니다.

그래서 대부분의 콘크리트 정확히 무엇을 수행하는지는 가능한 방법, 의미 에 대해x 는 유형이라고 말할 ,이 세트의 요소임을 말에 비해 ?TS

(비교를 가장 명확하게하는 모든 유형과 세트를 선택할 수 있습니다).


"유형"이라는 단어를 사용하고 / 듣고있는 문맥은 무엇입니까? 당신의 이름에서 알 수 있듯이 프로그래밍 언어입니까? 아래 답변이 다르게 가정한다고 생각하기 때문입니다.
einpoklum-복직 모니카

@einpoklum, 나는 "문맥"이 무엇인지 설명하는 방법을 100 % 확신하지 못하지만 기본적으로 다음과 같습니다. 수학에서 유형의 역할을 이해하려고합니다. 본질적으로, 세트 (내가 보는 것처럼)는 두 가지 맥락을 가지고 있습니다. 첫째, 일상적인 수학을 수행하기 위해 객체의 모음으로 사용됩니다. 둘째, 축척 세트 이론의 객체입니다. 집합이 함수 및 숫자 등에 대응하게하여 1 차 논리로 수학에 대해 이야기합니다. 나는 첫 번째 의미의 "세트"와 "타입"의 관계에 주로 관심이 있습니다.
user56834

어떤 유형의 역할? 수학 논문 / 교과서에 나오는 유형이나 컴퓨터 프로그램의 변수 유형?
einpoklum-복직 모니카

1
@einpoklum,이 질문은 수학 논문에 관한 것입니다. (실제로 수학의 유형과 프로그래밍 언어의 유형 사이의 근본적인 차이점을 알고 싶어하지만 실제로는이 질문이 아닙니다.)
user56834

답변:


29

세트와 유형의 차이를 이해하기 위해, 사람들은 돌아 가야하는 사전 "모음"과 "건설"의 -mathematical 아이디어를, 그리고 세트와 유형이 방법을 볼 mathematize 이 있습니다.

수학에 관한 다양한 가능성이 있습니다. 이 중 두 가지는 :

  1. 우리는 수학을 몇 가지 규칙에 따라 수학 객체를 구성하는 활동으로 생각합니다 (지오메트리는 눈금자와 나침반으로 점, 선 및 원을 구성하는 활동으로 생각합니다). 따라서 수학적 객체는이 방법에 따라 구성되어 구축 , 다른있다 종류의 건축은. 수학적 객체는 항상 구성되어 몇 가지 독특한 유형을 결정하는 독특한 방법.

  2. 우리는 수학을 기존의 수학적 대상으로 가득 찬 광대 한 우주라고 생각합니다 (기하학적 평면을 생각하십시오). 우리는 이러한 물체를 발견, 분석 및 생각합니다 (평면에 점, 선 및 원이 있음을 관찰합니다). 우리는 수집 로를 설정 . 일반적으로 우리는 공통점이있는 요소 (예 : 주어진 점을 통과하는 모든 선)를 수집하지만 원칙적으로 세트는 임의의 객체 선택을 유지할 수 있습니다. 집합은 해당 요소와 해당 요소만으로 지정됩니다. 수학적 객체는 많은 세트에 속할 수 있습니다.

우리는 위의 가능성이 유일한 두 가지이거나 그 중 하나가 수학이 무엇인지 완전히 설명한다고 말하지 않습니다. 그럼에도 불구하고, 각각의 관점은 광범위한 수학 활동을 유용하게 설명하는 일반적인 수학 이론의 유용한 출발점으로 작용할 수 있습니다.

이 유형 걸릴 자연 우리는의 규칙을 사용하여 구성 할 수있는 모든 것을 수집 상상 . 이것은 의 확장 이며 자체 가 아닙니다 . 예를 들어, 구성 규칙이 다른 두 가지 유형이 있지만 확장명은 동일합니다.TTT T

  1. 이 로 구성 되는 쌍의 유형 이며, 는 이 보다 큰 짝수 임을 나타내는 증거로 구성됩니다 .(n,p)npn3

  2. 이 자연수로 구성 되는 쌍의 유형 이며, 는 이 보다 작은 홀수 소수 임을 나타내는 증거로 구성됩니다 .(m,q)mqm2

그렇습니다. 이것은 단순한 사소한 예이지만 요점은 두 가지 유형 모두 확장에 아무것도 없지만 구성 규칙 이 다릅니다 . 반대로 및 동일한 요소를 갖기 때문에 동일합니다.

{nNn is an even prime larger than 3}
{mNm is an odd prime smaller than 2}

타입 이론은 구문에 관한 것이 아닙니다. 그것은 세트 이론이 컬렉션의 수학적 이론과 마찬가지로 수학적 구성 이론입니다. 형식 이론의 일반적인 표현은 구문을 강조하고 결과적으로 사람들 형식 이론 구문 이라고 생각하게 됩니다. 그렇지 않다. 수학 객체 (구성)와이를 나타내는 구문 표현 (이전 용어)을 혼동하는 것은 오랫동안 논리학자를 혼란스럽게했지만 더 이상은 그렇지 않은 기본 범주 실수입니다.


1
감사합니다! 하나의 세부 사항을 명확하게 설명해 주시겠습니까? 확장명이 모두 비어있는 두 유형을 나열하면 " 요소 가 ... 인 유형"이라고 말합니다 . 내 명확성을 위해 이것은 100 % 올바른 방법입니까? 이전 문장에서 타입이 컬렉션이 아니라고 말 했으므로 "요소"(세트와 연관 ​​됨)를 가질 수없는 것 같습니다. 기본적으로 지금 작성한 방식은 확장 인 세트에 따라 유형을 정의하는 것과 같습니다. 당신이 이것을 의도하지 않았다면, 그들의 아이디어를 유형으로 포착하기 위해 더 정확하게 문구를 다시 쓸 수 있습니까?
user56834

타입 의 확장 은 매우 유용한 개념이며, 일종의 컬렉션이기 때문에 "타입 확장의 요소"라고 말할 수 있습니다. 이것은 성가 시므로 종종 "타입의 요소"로 축약됩니다. 혼동의 가능성을 줄이기 위해 어구를 제거했지만 일반적인 용어입니다.
Andrej Bauer

고마워요. 따라서 후속 조치를 취하려면 다음을 말하는 것이 맞습니까? 객체가 "T 형"이라고 말하는 것은 객체가 "T의 확장의 요소"와 동일하다는 것을 의미하므로 유형에서 세트로 자연스럽게 노출됩니다. 그러나 모든 세트는 여러 가지 방법으로 구성 될 수 있기 때문에 대화는 유지되지 않습니다. 본질적으로, 집합과 유형의 차이는 와 (여기서 는 의 확장 임 )에 대해 에 대한 동일한 정보를 제공 한다는 점에서 특정 객체 의 관점에서 중요하지 않습니다 . 그러나x : T x X T X T T xxx:TxXTXTTx
user56834

차이점은 유형과 집합, 속성 및 관계에 대해 이야기 할 때 관련이 있습니다. 그래서 다른 말로하면, 우리가 잃게하는 정보는 우리가 말할 때 가 아닌 X : T는 우리에 대한 관련 아무것도 말하지 않습니다 X를 하지만, 예를 들어, 우리는 상위 - 하위 집합 또는 유형 - 얘기하고 싶지 경우 동일 보유하지 않을 수 있습니다 하위 유형 관계? 그 맞습니까? xXTx:Tx
user56834

4
네,이 책들이 어디에 있는지 궁금합니다. 누군가 작성해야합니다.
Andrej Bauer

11

시작하기 위해 세트와 타입은 같은 경기장에 있지도 않습니다. 세트는 ZFC 세트 이론과 같은 1 차 이론의 객체입니다. 유형은 자란 종류와 같습니다. 다르게 표현하자면, 집합 이론은 1 차 논리 내의 1 차 이론 입니다. 유형 이론은 논리 자체의 확장입니다. 예를 들어 Martin-Löf Type Theory는 1 차 논리 내에서 1 차 이론으로 제시되지 않습니다. 세트와 타입에 대해 동시에 이야기하는 것은 흔한 일이 아닙니다.

이산 도마뱀 상태로서, 유형 (및 정렬)은 구문 기능을 제공합니다. 정렬 / 유형은 구문 범주 로 작동 합니다. 어떤 표현이 올바른지 알려줍니다. 정렬을 사용하는 간단한 예를 위해 임의의 필드에 대한 벡터 공간 이론을 2 정렬 이론으로 설명했습니다. 스칼라 정렬 와 벡터 정렬 V가 있습니다. : 많은 다른 무엇보다도, 우리는 스케일링에 대한 작업이 줄 C 리터 전자 : S × VV를 . 이것은 우리에게 s c a l e ( s c a l eSVscale:S×VV 는 잘 구성된 용어가 아닙니다. 타입 이론적 맥락에서, 같은 식 F ( X는 ) 필요 F를 타입 갖도록 X Y를 어떤 종류의 X Y . 경우 f는 다음 기능의 종류가없는 F ( X를 ) 단순히 잘 형성된 식 아니다. 식이 어떤 종류인지 또는 어떤 종류인지는 메타 논리적 진술입니다. 다음과 같이 쓰는 것은 말이되지 않습니다 : ( x : X )scale(scale(s,v),v)f(x)fXYXYff(x) 입니다. 첫째, x : X 는 단순히 공식이 아니며, 둘째로 정렬 / 유형이 어떤 공식이 잘 구성되어 있는지 알려주기 때문에 개념적으로 의미가 없습니다. 우리는 잘 구성된 수식의 진실 가치 만 고려하므로 일부 수식이 있는지 여부를 고려할 때 수식이 잘 구성되어 있음을 이미 잘 알고 있습니다!(x:X)y=3x:X

세트 이론적으로, 특히 ZFC 모두에서 유일한 비 논리적 기호, 세트 회원에 대한 관계의 상징이다 . 따라서 x y 는 진리 값을 가진 올바른 형식의 공식입니다. 변수 이외의 용어는 없습니다. 세트 이론의 모든 일반적인 표기법은 이것에 대한 정의 확장입니다. 예를 들어, f ( x ) = y 와 같은 공식 은 종종 ( x , y ) f의 약어로 간주되며,이 자체는 p의 약어로 사용될 수 있습니다 . p f p = ( xxyf(x)=y(x,y)fp의 약어입니다 . p f ( z . z pp.pfp=(x,y) 여하튼,어떤 세트라도 f 대신에모든 것이 세트입니다! 최근에다른 질문에서 지적했듯이 π ( 7 ) = 3 여기서 π

p.pf(z.zp[z=x(w.wzw=y)])
fπ(7)=3π실수는 완전히 합법적이고 의미있는 (그리고 잠재적으로 사실 인) 이론적 표현입니다. 기본적으로 집합 이론에서 파싱하는 내용은 의미가 있습니다. 그것은 완전히 가짜의 의미 일지 모르지만 하나의 의미가 있습니다. 세트는 또한 세트 이론에서 "일류"객체입니다. (그들이 그대로 그들은 좋을 만이 일반적으로 개체.)와 같은 함수
f(x)={N,if x=17,if x=QxRR,if x=(Z,N)
세트 이론에서 완전히 합법적 인 기능입니다. 유형 이론에서 이것과 원격으로 유사한 것은 없습니다. 가장 가까운 것은 Tarskian 우주에 코드를 사용하는 것입니다. 세트는 세트 이론의 대상이다. 유형은 유형 이론의 대상이 아닙니다.

유형은 사물의 모음이 아니며 (그 문제에 대한 집합도 아니며 ...) 속성에 의해 정의되지 않습니다. 유형은 구문 유형으로, 해당 유형의 용어에 적용 할 수있는 연산과 올바른 표현식을 알려줍니다. 유형별 명제 관점에서 분류하는 유형은 유형에 해당하는 명제의 유효한 증거입니다. 즉, 주어진 유형의 잘 구성된 (즉, 잘 구성된) 용어는 해당 제안의 유효한 증거 (구문 적 목적이기도 함)에 해당합니다. 이와 같은 것은 정해진 이론에서 일어나지 않습니다.

집합 이론과 유형 이론은 실제로는 비슷하지 않습니다.


1
유형이 구문 엔티티 일 뿐이라는 것은 잘못된 것입니다.
Andrej Bauer

1
이것은 매우 유용하지만 귀하의 답변에서 한 가지 요점은 저에게 버그가 있습니다. "집합은 사물의 집합이 아닙니다"라고 말하는 것은 실수 (많은 사람들이 만드는 실수이거나 대안이 아닌 실수이며 틀렸다) 인 것 같습니다. 나는 세트가 사물의 모음이라고 말합니다. 이것이 세트의 가장 기본적인 필수 속성입니다. 실제로, ZFC가 (임의의 임의의 공식이 아니라) 선택해야 할 올바른 공리라는 것을 어떻게 알 수 있을까요? 물론, 나는 이해합니다 ...
user56834

Axiomatic set theory는 수학적 논리 의미에서 수학적 구조가 아니기 때문에 집합을 객체로, 를 기호로 취급합니다 .
user56834

1
@ Programmer2134 답을 얻으려면 "컬렉션"이라는 단어 의 의미 론적 의미 에 들어가야합니다 . "올바른"의 의미를 정확하게 정의하는 데 시간이 걸리지 않으면 "올바른"것인지 확신 할 수 없습니다. 그러나 우리가 말할 수있는 것은 "집합"은 수백 년에 걸친 수학자들이 수집의 개념에 박동하여 수집의 직관적 개념과 일치하는 일관된 시스템을 추구 한 결과라고 말합니다. 그 일관성을 달성하기 위해 그들은 결정을 내려야했습니다. 예를 들어, 집합이 수학의 유일한 모음은 아닙니다. "클래스"는 컬렉션을 설명합니다.
Cort Ammon

1
@AndrejBauer 저는 (주로) 철학적이지 않은 자세를 취하고 어떤 유형이 "실제"인지 설명하지 않고 더 어떻게 사용되는지 설명하려고하지 않습니다. (처음에는 "있는 그대로", "있는 그대로"라고 말하지만 마지막에는 "is"에 빠졌다. T 타입 의 변수 가 유일한 "값"을 의미한다고 생각할 위험이있다 있음 X는 "수행"가능 형의 (아마도 폐쇄) 기간이다 T . 이것은 사실이 아니며 위에서 말한 내용에 의해 암시되지 않습니다. 나는 당신이 유형을 구문 적 엔티티 이상으로 볼 수 있다는 것에 동의하지만, 다른 구문 적 역할 유형의 역할은 세트와 분명한 대조를 이룬다 고 생각합니다. xTxT
데릭 엘 킨스

9

실제로, T 유형 이라고 주장하는 것은 일반적으로 구문 을 설명하는 데 사용되는 반면, x 가 세트 S 에 있다고 주장하는 것은 일반적으로 의미 특성 을 나타내는 데 사용됩니다 . 타입과 세트의 사용법 에서 이러한 차이점을 명확히하기 위해 몇 가지 예를 들겠습니다 . 유형과 세트가 실제로 무엇의 차이를 들어 있습니다 , 난을 참조 안드레이 바우어의 대답 .xT xS

이 차이점을 명확히하기 위해 Herman Geuvers의 강의 노트에 제공된 예를 사용하겠습니다 . 먼저, 우리는 타입에 거주하는 예를 봅니다 :

및 세트의 부재 인 예 : 3 { N N | X , Y , Z N + ( X N + Y NZ의 N ) }

3+(78)5:Nat,
3{nNx,y,zN+(xn+ynzn)}

여기서 가장 큰 차이점은 첫 번째 표현이 자연수인지 테스트하기 위해 의미 적 의미를 계산할 필요가 없으며 모든 리터럴이 Nat 유형이고 모든 연산자가 유형 Nat에 닫힙니다.

그러나 집합의 두 번째 예에서는 집합 의 맥락 에서 의 의미 적 의미를 결정해야합니다 . 이 특정 세트의 경우 이것은 매우 어렵습니다. 이 세트 의 멤버쉽 3 은 Fermat의 마지막 정리를 증명하는 것과 같습니다! 노트에서 언급했듯이 구문과 의미론의 구별을 항상 명확하게 그릴 수는 없습니다. (또한 Programmer2134가 주석에서 언급 했듯이이 예제 조차 불분명 하다고 주장 할 수도 있습니다 )33

알고리즘 대 증명

요약하면, 유형은 종종 일부 표현식의 구문에 대한 '간단한'클레임에 사용되어 유형 멤버쉽을 알고리즘 으로 확인할 수 있으며 , 세트 멤버쉽을 테스트하려면 일반적으로 증명이 필요합니다 .

이 구별이 유용한 이유를 보려면 유형이 지정된 프로그래밍 언어의 컴파일러를 고려하십시오. 이 컴파일러가 '유형 확인'에 대한 공식적인 증거를 만들어야하는 경우 컴파일러는 거의 불가능한 작업을 수행해야합니다 (일반적으로 자동 정리 증명은 어렵습니다). 반면에 컴파일러가 단순히 (효율적인) 알고리즘을 실행하여 유형을 확인하면 실제로 작업을 수행 할 수 있습니다.

엄격한 해석을위한 동기

집합과 유형의 의미 적 의미에 대한 여러 해석이 있습니다. 구별 유형 아래에서 결정 가능한 유형 검사 (예 : 주석에 언급 된 것처럼 NuPRL에서 사용 된 것과 같은) 유형은 '유형'이 아니지만 다른 유형은 물론 무료로 호출 할 수 있습니다 (무료) 그들의 정의에 부합하는 한, 그것들을 다른 것으로 부르는 것만 큼).

그러나 우리 (Herman Geuvers와 I)는이 해석을 창 밖으로 버리고 싶지 않습니다 .Herman이 아니라면 다음과 같은 동기가 있습니다.

우선,이 해석의 의도 는 Andrej Bauer 의 의도와 크게 다르지 않습니다 . 구문의 의도는 일반적으로 무언가를 구성하는 방법을 설명하고 실제로이를 구성하는 알고리즘을 갖는 것이 일반적으로 유용합니다. 또한 집합의 기능은 일반적으로 결정 불가능한 의미 론적 설명을 원하는 경우에만 필요합니다.

따라서보다 엄격한 설명의 장점은 분리를 더 단순 하게 유지하여 일반적인 실제 사용과 더 직접적으로 구별되도록하는 것입니다. NuPRL과 같이 사용량을 줄이거 나 필요로하지 않는 한 잘 작동합니다.


3
유형 검사는 결정 가능할 필요는 없습니다 (물론 바람직하지만). 예를 들어 NuPRL은 사용자가 용어에 유형이 있다는 증거를 제공해야합니다.
Derek Elkins

3
3...

1
@DerekElkins 저는 NuPRL에 익숙하지 않습니다. 예를 들어 교정 보조 Coq는 가장 확실하게 자체 형식 검사를 수행합니다 (즉, '나의 정리 유형'이라는 용어입니다). 사용자가 특정 유형의 용어를 '증명'해야하는 경우 NuPRL은 증거를 어떻게 확인합니까? (즉, 이것은 NuPRL이 Curry-Howard 대응을 사용하지 않으므로 어떻게 사용합니까?)
Discrete lizard

1
@Discretelizard NuPRL이 전형적인 것은 아닙니다. 타입 검사가 결정 가능한 것은 일반적인 경우입니다. 상당히 다른 경로를 취하기 때문에 익숙해지기를 강력히 권장합니다. NuPRL은 교회 식 미적분학이 아닌 카레 스타일로,보다 세분화 된 시스템으로 만듭니다. 어쨌든 용어 (또는 용어를 생성하는 전술)를 작성하는 대신 파생물 자체를 입력 할 수있는 LCF 스타일 증명 시스템이 있습니다. 논란의 여지가 있지만, 파생물이 중요하며 용어에서 추론 할 수있는 "유연한"것입니다.
데릭 엘 킨스

3

4

세트와 타입에 대한 가장 구체적인 차이점 중 하나는 마음 속의 "사물"이 형식 언어로 인코딩되는 방식의 차이라고 생각합니다.

세트와 유형 모두 사물과 사물에 대해 말할 수 있습니다. 가장 큰 차이점은 세트를 사용하면 원하는 것에 대해 질문 할 수 있고 사실이 아닐 수도 있다는 것입니다. 유형이있는 동안 먼저 질문이 의미가 있음을 증명해야합니다.

B={true,false}N={0,1,}true=1

0[0]={}n+1[n+1]={[n]}[n]truefalsetrue=1true1

a=babtrue=1SBNιB:BSιN:NSιB(true)=ιN(1)

(ifvery_hard_questionthen1elsetrue)=1

요약하면, 집합을 사용하면 원하는 질문을 할 수 있지만, 형식은 대답에 따라 인코딩을 명시 적으로 표현하도록합니다.


Rsin(2)

@AndrejBauer 맞습니다. 이 답변이 단일 분류 이론 (대부분의 이론 또는 적어도 가장 일반적인 이론 포함)과 다중 분류 이론 (모든 (?) 유형 이론 포함) 사이에 차이가 있음에 동의하십니까?
xavierm02

단일 분류 이론에서도 용어와 수식을 구별해야합니다.
Andrej Bauer

@AndrejBauer 나는 당신의 두 번째 의견을 이해하지 못합니다.
xavierm02

단일 분류 1 차 이론에는 두 가지 구문 범주가 있습니다. 논리 수식 . 그들이 섞이지 않았는지 확인해야합니다. 그렇지 않으면 " 라고 쓸 수 있습니다.(xX.ϕ(x))N
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.