나는 종종 큐브 의 각 차원 과 그것들이 무엇을 나타내는지를 요약하고 싶었 으므로, 이것에 대해 설명하겠습니다.λ
그러나 먼저 다양한 문제를 풀려고 시도해야합니다. Coq 대화 형 정리 증명자는 기본 형식 이론을 기반으로하며, 때로는 우주를 이용한 귀납적 구성의 미적분학 이라고 합니다 . 이것은 단순히 "Calculus of Constructions"보다 입가가 많으며 실제로 CoC보다 더 많은 것들이 있습니다. 특히 CoC에 적합한 기능에 대해 혼란스러워하는 것 같습니다. 특히 Set / Prop 구별 및 유니버스는 CoC에 나타나지 않습니다.
여기서는 Pure Type Systems에 대한 전체 개요를 제공하지 않지만 CoC와 같은 기능적 PTS에 대한 중요한 규칙 은 다음과 같습니다.
Γ⊢A:sΓ,x:A⊢B:kΓ⊢Πx:A.B : k (s,k)∈R
여기서, 고정 된 세트의 요소 S 의 종류 , 및 상기 한 쌍 ( S , K ) 고정 된 세트에있는 R 의 쌍 S 착신, 규칙 .s,kS(s,k)RS
중요한 통찰력은 와 R 을 신중하게 선택 하면 제품 유형 Π x : A에 큰 차이가 있다는 것 입니다. B는 실제로 나타냅니다!SRΠx:A.B
특히, 구조의 미적분학에서, 분류 세트 는
{ ∗ , ◻ }
종종 Prop and Type (이 용어는 나중에 이야기 할 이유로 Coq 사용자에게는 약간 혼동되지만)이며 전체 규칙 집합 :
R = { ( ∗ , ∗ ) , ( ◻ , ◻ ) , ( ◻ , ∗ ) , ( ∗ , ◻ ) }S
{∗,□}
R={(∗,∗),(□,□),(□,∗),(∗,□)}
그래서 우리는 4 가지 다른 목적에 해당하는 4 가지 규칙을 가지고 있습니다 :
이들 각각에 대해 자세히 설명하겠습니다.
먼저 Π x : A 대신 를 쓰겠습니다 . B는 경우 X 에 나타나지 않습니다 B . 이 표기법은 훨씬 암시 적이지만 중요한 직관을 숨길 수 있습니다.A→BΠx:A.BxB
기능 유형 : 유형의 요소 는 "일반"유형 및 명제입니다. 여기에는 n a t , b o o l 및 주어진 유형의 x 및 y 에 대한 명제 x = y 와 같은 것들이 포함 됩니다. CoC에서. 이러한 "기본 유형"과 제안은 여전히 Agda와 같은 시스템에 있으므로 함께 혼합되어 있습니다. Coq는 종종 Set과 Prop 또는 Type과 Prop라고하는 두 종류로 분리하는 경향이 있습니다. 이것은 추출을 용이하게하며 증거와 관련 이 없다고 가정 할 수있게합니다.∗natboolx=yxy우리가 원한다면 Prop의 것들을 위해 (우리는 분명히 Set의 것들을 원하지 않습니다). pi 타입을 분류 할 수있는 기능은 함수형 프로그래밍 언어에서 일반적으로 사용하는 일반적인 고차 함수, 즉 함수를 다른 함수에 전달하는 기능을 제공합니다.∗
listlist:∗→∗listnat,listbool∗→∗(□,□)
Πt:∗. t→t
λ(t:∗)(x:t).xΠ t : ∗ . _( □ , ∗ )t → t( ∗ , ∗ )
A ∧ B : = Π t : ∗ . ( A → B → t ) → t
A ∨ B : = Π t : ∗ . ( A → t ) → ( B → t ) → t
⊥:=Πt:∗. t
⊤:=Πt:∗. t→t
∃x:A. P(x):=Πt:∗. (Πy:A. P(y)→t)→t
(∗,□)
∗∗(□,∗)
(□,□)
Πc:∗→∗. c nat→c nat
0=1
= : nat→nat→∗
= : Πt:∗. t→t→∗
nat→nat→∗(∗,□)
□→□□ □□ii=1,2,3,…□i:□i+1
(□i,□i)
Γ⊢A:□iΓ⊢A:□j i≤j
이러한 추가 정렬 및 규칙을 사용하면 PTS 가 아닌 가까운 것을 얻을 수 있습니다. 이것은 (거의) 확장 건축 미적분학이며 , Coq. 여기서 가장 빠진 부분은 유도 형이며 여기서는 설명하지 않겠습니다.
편집 : 기능적 프로그래밍 언어의 중간 표현을위한 좋은 후보 인 PTS를 설명함으로써 PTS의 프레임 워크에서 프로그래밍 언어의 다양한 기능을 설명하는 다소 좋은 참조가 있습니다.
Henk : Typed Intermediate Language , SP Jones & E. Meijer.
soft-question
. 실제 기술적 인 질문은 없습니다. 아마도 당신은 당신이 요구하는 것에 대해 좀 더 구체적 일 수 있습니까?