Na teoria tradicional de tipos de Martin-Löf, não há distinção entre tipos e proposições. Isso está sob o lema "proposições como tipos". Mas às vezes há razões para distingui-las. O CoC faz exatamente isso.
Existem muitas variantes de CoC, mas a maioria teria
mas não . Outra diferença aparece quando temos infinitos universos de tipos e tornamos impredicativo (é isso que Coq faz). Concretamente, considere uma variante do CoC em que temos e infinitos tipos de universos , , com
A regra de formação paraT y p e : P r o p P r o p P r o p T y p e 1 T y p e 2 T y p e 3 P r o p
Prop:Type
Type:PropP r o pP r o pT y p e1T y p e2T y p e3 ¸¸x:AB(x)AB(x)P r o pT y p e1T y p e2: T e p e1: T e p e2: T e p e3⋮
∏precisa explicar como formar quando é uma proposição ou um tipo, e é uma proposição ou um tipo. Existem quatro combinações:
∏x : AB ( x )UMAB(x)
A:Propx:A⊢B(x):Prop∏x:AB(x):Prop
A:Typeix:A⊢B(x):Prop∏x:AB(x):Prop
A:Propx:A⊢B(x):Typei∏x:AB(x):Typei
A:Typeix:A⊢B(x):Typej∏x:AB(x):Typemax(i,j)
O mais interessante é a diferença entre o segundo e o quarto caso. A quarta regra diz que se está no ésimo universo e está no ésimo universo, então o produto está no -thth universo. Mas a segunda regra está nos dizendo que não é apenas "mais um universo na parte inferior", porque em assim que faz, não importa quão grande é. Isso é impredicativo porque nos permite definir elementos dei B ( x ) j max ( i , j ) P r o p ∏ x :AiB(x)jmax(i,j)Prop P r o p B(x)A P r o p P r o p∏x:AB(x)PropB(x)APropquantificando sobre si.Prop
Um exemplo concreto seria
versus
O primeiro produto reside em , mas o segundo está em (e não em , apesar de estarmos quantificando sobre um elemento de ). Em particular, isto significa que um dos valores possíveis para é em si. Π Um : P r o p Um→Um T y p e 2Prop T y p e um T y p e 1UmΠ Um : P r o p Um→UMA
∏A:Type1A→A
∏A:PropA→A
Type2PropType1Type1A∏A:PropA→A