Pourquoi une hiérarchie de type infinie?

18

Coq, Agda et Idris ont une hiérarchie de types infinie (Type 1: Type 2: Type 3: ...). Mais pourquoi ne pas le faire à la place comme λC, le système du cube lambda le plus proche du calcul des constructions, qui n'a que deux sortes, et , et ces règles?

:

ΓT1:s1Γ,x:T1t:T2Γ(λx:T1,t):(Πx:T1,T2)

ΓT1:s1Γ,x:T1T2:s2Γ(Πx:T1,T2):s2

Cela semble plus simple. Ce système a-t-il des limitations importantes?

Rui Baptista
la source

Réponses:

19

En fait, l'approche du CoC est plus expressive - elle permet une quantification imprédicative arbitraire. Par exemple, le type a.aa peut être instancié avec lui-même pour obtenir (a.aa)(a.aa) , ce qui n'est pas possible avec une hiérarchie d'univers.

La raison pour laquelle il n'est pas largement utilisé est parce que la quantification imprédicative est incompatible avec la logique classique. Si vous l'avez, vous ne pouvez pas donner un modèle de théorie des types où les types sont interprétés comme des ensembles de manière naïve --- voir le célèbre article de John Reynolds, Polymorphism is Not Set-theory .

Étant donné que de nombreuses personnes souhaitent utiliser la théorie des types comme moyen de vérifier automatiquement les preuves mathématiques ordinaires, elles sont généralement peu enthousiastes à propos des caractéristiques de la théorie des types qui sont incompatibles avec les fondements habituels. En fait, Coq a initialement soutenu l'imprédicativité, mais ils l'ont progressivement abandonnée.

Neel Krishnaswami
la source
9

Je vais complimenter la réponse de Neel (excellente, comme d'habitude) avec un peu plus d'explications sur les raisons pour lesquelles les niveaux sont utilisés dans la pratique.

La première limitation importante du CoC est qu'il est trivial! Une observation surprenante est qu'il n'y a aucun type pour lequel vous pouvez prouver qu'il a plus d'un élément, et encore moins un nombre infini d'entre eux. L'ajout de seulement 2 univers vous donne les nombres naturels avec une infinité d'éléments prouvés et tous les types de données "simples".

La seconde limitation concerne les règles de calcul: CoC ne supporte que l' itération , c'est-à-dire que les fonctions récursives n'ont pas accès aux sous-termes de leurs arguments. Pour cette raison, il est plus pratique d'ajouter des types inductifs comme construction primitive, donnant naissance au CIC. Mais maintenant un autre problème se pose: la règle d'induction la plus naturelle (appelée élimination dans ce contexte) est incompatible avec le Milieu Exclu! Ces problèmes n'apparaissent pas si vous limitez la règle d'induction à des types prédicatifs avec des univers.

En conclusion, il apparaît que CoC n'a ni l'expressivité ni la robustesse par rapport à la cohérence que vous souhaiteriez dans un système fondamental. L'ajout d'univers résout bon nombre de ces problèmes.

cody
la source
Avez-vous des références pour la première limitation? Sinon, pourriez-vous donner des indications sur la façon dont le deuxième univers aide à prouver l'inégalité (propositionnelle? Méta?)?
Łukasz Lew
@ ŁukaszLew C'est en fait une simple conséquence du modèle "preuve non pertinente", qui peut être quelque peu facilement recherché sur Google. Dans ce modèle, aucun type n'a plus d'un élément. Avoir 2 univers empêche ce modèle d'exister. La thèse d'Alexandre Miquel fournit une référence pour un type à nombre infini d'éléments à 2 univers.
cody