“종속적 인 유형”을 통해 무엇을 얻을 수 있습니까?


13

나는 의존적 타이핑 (DT)을 올바르게 이해했다고 생각했지만이 질문에 대한 답변 : /cstheory/30651/why-was-there-a-need-for-martin-l%C3% B6f-to-create-intuitionistic-type-theory 는 다르게 생각하게 만들었 습니다.

DT를 읽고 그것들이 무엇인지 이해하려고 노력한 후에, 나는 DT의 개념으로 무엇을 얻을 수 있을지 궁금합니다. 비록 "어떻게 / 왜"를 정확하게 이해할 수는 없지만 간단하게 입력 된 람다 미적분학 (STLC)보다 더 유연하고 강력 해 보입니다.

STLC로 수행 할 수없는 DT로 무엇을 할 수 있습니까? DT를 추가하는 것이 이론을 더 복잡하게 만드는 것처럼 보이지만 이점은 무엇입니까?

위의 질문에 대한 답변에서 :

de Bruijn과 Howard는 Curry-Howard 서신을 제안 논리에서 1 차 논리로 확장하려는 종속 유형을 제안했습니다.

이것은 어느 정도 의미가있는 것처럼 보이지만 여전히 "어떻게 / 왜"의 큰 그림을 파악할 수 없습니까? FO 로직에 대한 CH 대응의 확장을 명시 적으로 보여주는 예는 DT와 관련하여 무엇이 중요한지 이해하는 데 도움이 될 수 있습니까? 내가 이것을 이해 해야하는지 잘 모르겠습니다.


1
당신은 그들을 구글 했습니까? 종속 유형에 기반한 정리 증명자인 Coq에 대해 들어 보셨습니까? 4 색 정리가 Coq를 사용한 것으로 입증되었다는 것을 알고 있습니까?
Dave Clarke

2
나는 실제로했다. Google이 어려운 점은 DT가 직관적으로 말해서 이론을 입력 할 수있는 여분의 "힘"(더 나은 단어가 없음)이란 무엇입니까?
PhD

1
왜? 종속 유형을 사용하면 유형이 안전하면서 더 많은 프로그램을 입력 할 수 있습니다. 어떻게? 프로그램으로 유형을 매개 변수화합니다.
Martin Berger

@MartinBerger- "추가 프로그램"에 대해 자세히 설명해 주시겠습니까? 이론적 인 관점에서 무엇을 더 필요로합니까?
PhD

2
@DaveClarke 멋진 형식의 Coq가 멋진 작업을 수행하는 데 사용되었다고해서 해당 멋진 작업에 멋진 형식이 필요한 것은 아닙니다. 예를 들어, Twelf 는 SML의 정확성 증명과 같은 큰 성공을 거두었으며 고차가 아닌 2 차에 불과합니다. 꽤 큰 시스템이 1 차 로직으로 만 입증 된 것을 보았습니다.
Gilles 'SO- 악마 중지'

답변:


22

λList23+4(α)10α23+4

비 종속 유형과 종속을 구분하는 주요 규칙은 응용 프로그램입니다.

ΓM:ABΓN:AΓMN:BΓM:ΠxA.BΓN:AΓMN:B{N/x}

왼쪽에는 STLC가 있으며 구내의 프로그램은 결론의 프로그램으로 만 '흐릅니다'. 반대로 오른쪽의 종속적 적용 규칙에서 오른쪽 전제에서 프로그램 은 결론 의 유형 으로 '흐릅니다' .N1

프로그램별로 유형을 매개 변수화하려면 종속 유형의 구문이 더 풍부해야하며 유형이 올바르게 구성되도록 유형을 제한하는 종류라는 두 번째 '타이핑 시스템'을 사용합니다. 이 종류 체계는 기본적으로 STLC이지만 "한 수준 향상"입니다.

종속 유형에 대한 많은 설명이 있습니다. 몇 가지 예.


1 색상 측면 : 비 의존적 유형의 경우, 결론의 검은 색 표현은 구내의 검은 색 표현으로 구성되고 결론의 빨간 표현은 구내의 빨간 표현으로 구성됩니다. 종속 유형을 사용하면 결론의 검은 부분이 전제의 빨간색과 검은 부분으로 구성되어 색상을 혼합 할 수 있습니다.


이제, 그것은 많은 의미가 있습니다. 그것은 분명했을 수도 있지만 어떤 이유로 나는 손가락을 댈 수 없었습니다. 의견에서 답변으로의 전환을 감사하십시오. 불행히도, 그 질문은 닫히기로 투표되었지만, 나는 답변에 기쁘다 :)
PhD

1
목록 길이는 유형에서 지우고 일반 (인덱싱되지 않은) 목록에 대해 이야기하는 프로그램을 얻을 수 있기 때문에 귀하의 예에 열중하지 않습니다. 이러한 종류의 소거 후에도 유형이 잘 유지 되지 않는 유형 ( 예 : 유형의 프로그램이 있음)에 주목하는 것이 유용 할 수 있습니다 . 여기서 그리고 입니다. Arr nArr 0=natArr (n+1)=natArr n
cody

@cody 무슨 말인지 잘 모르겠습니다. 종속 유형은 다음과 같은 의미에서 유형 삭제를 갖습니다 (또는 설정 가능). 모든 유형 지정 가능 P : iff . 여기서 는 런타임 감소 관계입니다. . (이것은 함수 지우기 기능이 주석이있는 프로그램을 주석이없는 '같은'프로그램에 매핑하는 간단한 설명입니다.) 다른 의미가 있습니까? e r a s e ( P ) e r a s e ( V ) PVerase(P)erase(V)
Martin Berger

@ MartinBerger :이 경우에는 간단한 유형을 얻기 위해 종속 유형의 종속성을 지우는 것에 대해 이야기하고 있습니다. 내가 지금 지적 할 수있는 유일한 예는 iff 정규화 한다는 증거입니다 (예 : Barendregt 's book ). C o CFωCoC
cody

@cody 나는이 유형의 지우기를 호출하는 것이 드문 것이라고 생각합니다. 더 나은 이름은 무엇입니까? 아마도 형식 단순화입니까?
Martin Berger

2

타입 선언은 어설 션에 지나지 않습니다. 현재 당신이 말할 수있는 것은 isInt32 (), isCharPtr () 등과 같은 것들입니다.이 다양한 주장들은 컴파일 타임에 확인할 수 있도록 선택됩니다. 그러나이 개념은 isCharPtr () && isNotNull ()과 같은 것으로 확장 될 수 있습니다. 널 입력 가능 포인터는 큰 문제입니다. 포인터가 기본 자세로 널 입력 가능하지 않아야하며 널 입력 가능 포인터는 널인지 여부를 알지 못하면 역 참조 할 수없는 유형입니다. 비슷한 문제는 isPositiveInteger () 또는 isEvenNaturalNumber ()입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.