종속 유형 시스템에서 증명을위한 기본 요소로 재귀 유형이 필요한 이유는 무엇입니까?


10

나는 타입 이론과 의존적 프로그래밍에 비교적 익숙하지 않다. 건축 미적분학 (CoC) 및 기타 순수 유형 시스템을 연구하고 있습니다. 특히 컴파일러 시스템의 증명 보존 중간 표현으로 사용하는 데 관심이 있습니다.

나는 이해 재귀 유형 표현할 수 있습니다 (공동)을 , 계산 하여, 유일한 타입의 생성자로. 그들은 유도에 의해 빌드 증거로 사용할 수 없습니다,하지만 내가 읽은 (여기서 용서, 지금은 찾을 수 없습니다!), 예를 들어, 내가 증명할 수 없다는 것을 그 일반 CoC를에서 (비록 은 ).Π01NatΠ(N:).Π(S:NN).Π(Z:N).N

이것이 그들이 유도 건축 (CIC)의 미적분학을 구축 한 이유라고 생각합니다. 이 올바른지? 그런데 왜? 나는 (공) 유도 형을 프리미티브로 사용하지 않고 그러한 증거를 표현할 수없는 이유를 설명하는 자료를 찾을 수 없었습니다. 이것이 사실이 아닌 경우 왜 CIC에서 프리미티브로 추가합니까?

답변:


7

저는 전문가는 아니지만 지금까지 이해 한 내용을 예제와 공유하겠습니다.

표준 인코딩을 사용하여 CoC의 부울 유형을 고려해 봅시다 : 우리는 증명할 수 있기를 기대하는 사실,이 신속에서 다음과 CiC 에서 우리가 가지고있는 의존적 제거 / 유도 원리 Πb:Bb=ttb=ff

B=Πτ:τττtt=λτ:,x:τ,y:τ. xff=λτ:,x:τ,y:τ. y
B i n d : Π P : B P ( t t ) P ( f f ) Π b : B P ( b )
Πb:Bb=ttb=ff()
Bind:ΠP:BP(tt)P(ff)Πb:BP(b)

그러나 모든 CoC 모델에서 (*)가 실제로 유지 될 것으로 기대할 수는 없습니다! 직관적으로, 의 값 은 대략 의 해석에서 각 유형 에 값을 할당하는 기능 군이어야합니다. . 그러나 이것은 가 의 값들 중 하나가되도록 강요하지는 않습니다 . 예를 들어 (비공식적으로) { f τ } τ τ τ τ τ f τ t t , f f f N ( n ) ( m ) = n + mB{fτ}τττττfτtt,ff

fN(n)(m)=n+m

값이 유일하게 가능한 값 인지 확인하려면 파라 메트릭 모델 로 제한해야합니다 . 실제로 ( 속성은 폴리 타입 과 관련된 자유 정리 로부터 증명 될 수 있다고 생각합니다 .( ) Btt,ff()B

그러나 내가 이해하는 한 CoC는 매개 변수가 유지되지 않는 임시 모델을 배제하지 않습니다. 그중 일부에서 는 단순히 거짓입니다. 건전성으로, 카운터 모델이있을 때, 우리는 CoC에 가 거주하지 않는다고 결론 내린다 . 결과적으로 CoC 에는 용어가 없습니다.( ) B i n d()()Bind


잘 모르겠습니다. 예를 들어 , Nat의 생성자를 만들 수있는 방법에는 여러 가지가 있지만 궁극적으로 에서 생성되지는 않습니다. 또는 ? S Z(λ(Nat:).(...))(Π(N:).Π(S:NN).Π(Z:N).N)SZ
paulotorrens

@ paulotorrens 논리 내에서, 나는 이것이 유일한 옵션이라고 믿습니다. 그러나 CoC 모델 (임시 모델)에는 통해 정의 할 수없는 값이있을 수 있습니다 . 천연 값 생각 되도록 모든 타입 제외 여기서 대신 . 값 은 대부분의 유형에서 "0"으로, 부울의 경우 "1"로 동작합니다. 우리는 쓸 수 없습니다CoC에서 로 값 을 정의 하지만 임시 모델에서는 해당 값이 존재할 수 있습니다. S , Z nNatS,Zn Tn(T)(ST)(ZT)=ZTTT=Bn(B)(S)(Z)=S(Z)nλT:.if T=B then n
chi

@paulotorrens 대해 생각하면 문제를 더 쉽게 이해할 수 있습니다 . 이 유형은 (다형성) 정체성과 그 유형의 항에 대해 유일하게 가능한 값인 파라 메트릭 모델에만 거주합니다. 그러나 임시 모델에서는 모든 유형 대해 값을 정의 할 수 있지만 에 대해 . v ( T ) ( x ) = x T T = N v ( N ) ( x ) = x + 1ΠT:TTv(T)(x)=xTT=Nv(N)(x)=x+1
chi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.