Eu sempre quis tentar resumir cada dimensão do cubo- e o que eles representam, então vou dar uma chance a este.λ
Mas, primeiro, deve-se tentar desembaraçar várias questões. O provador de teoremas interativos da Coq é baseado em uma teoria de tipos subjacente, às vezes chamada amorosamente de cálculo de construções indutivas com universos . Você notará que isso é mais emocionante do que simplesmente "Cálculo de Construções" e, de fato, há muito mais coisas além do CoC. Em particular, acho que você está confuso sobre exatamente quais recursos estão em CoC apropriados. Em particular, a distinção Set / Prop e universos não aparecem no CoC.
Não darei uma visão completa dos sistemas Pure Type aqui, mas a regra importante (para PTSes funcionais como o CoC) é a seguinte
Γ⊢A:sΓ,x:A⊢B:kΓ⊢Πx:A.B : k (s,k)∈R
onde são elementos de um conjunto fixo S das sortes e o par ( s , k ) está em um conjunto fixo R de pares de S , chamados de regras .s,kS(s,k)RS
O insight crucial é que as escolhas cuidadosas de e R fazer grandes diferenças no que o tipo de produto Π x : A . B realmente representa!SRΠx:A.B
Em particular, no cálculo das construções, o conjunto de tipos é
{ ∗ , ◻ }
Freqüentemente chamado Prop e Type (embora essa terminologia seja um pouco confusa para um usuário de Coq por razões de que falarei mais adiante), e a descrição completa conjunto de regras:
R = { ( ∗ , ∗ ) , ( ◻ , ◻ ) , ( ◻ , ∗ ) , ( ∗ , ◻ ) }S
{∗,□}
R={(∗,∗),(□,□),(□,∗),(∗,□)}
E, portanto, temos 4 regras que correspondem a 4 propósitos diferentes:
Explicarei cada uma delas com mais detalhes.
A → BΠ x : A . BxB
∗n a tb o o lx = yxy∗
l i s tl i s t :∗→∗l i s tn a t, L i s tb o o l∗ → ∗( □ , □ )
Π 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
Com esses tipos e regras extras, você obtém algo que não é um PTS, mas algo próximo. Este é (quase) o Cálculo Estendido de Construções , que está mais próximo da base da Coq. A grande peça que falta aqui são os tipos indutivos, que não discutirei aqui.
Editar: há uma referência bastante interessante que descreve vários recursos das linguagens de programação no âmbito do PTSes, descrevendo um PTS que é um bom candidato para uma representação intermediária de uma linguagem de programação funcional:
Henk: uma linguagem intermediária digitada , SP Jones e E. Meijer.
soft-question
. Não vejo uma pergunta técnica aqui. Talvez você possa ser um pouco mais específico quanto ao que está perguntando?