si (λ x. xx) a un type, alors le système de types est-il incohérent?


20

Si un système de types peut attribuer un type à λ x . x x, ou à la non-terminaison (λx . x x) (λ x . x x), alors ce système est-il incohérent en conséquence? Tous les types de ce système sont-ils habités? Pouvez-vous prouver faux?

Réponses:


29

Assurément, assigner un type à λx.x x n'est pas suffisant pour l'incohérence: dans le système F , on peut dériver

λx.x x:(X.X)(X.X)

d'une manière assez simple (c'est un bon exercice!). Cependant, (λx.x x)(λx.x x) ne peut pas être bien typé dans ce système, en supposant une cohérence ω arithmétique de second ordre, car cela implique que tous ces termes bien typés se normalisent.

De plus, le système est cohérent. Cela résulte de la normalisation soit, comme on peut montrer que tout terme de type X . X ne peut pas avoir une forme normale, ou un argument beaucoup plus simple, dans lequel chaque type est attribué un ensemble, que ce soit ou { } et il peut être démontré que tous les types dérivables sont affectés { } , et X . X est affecté (et n'est donc pas dérivable).FX.X{}{}X.X

Ce dernier argument peut être effectué en arithmétique de premier ordre. Le fait que peut être bien typé dans un système cohérent peut être considéré comme quelque peu dérangeant et est une conséquence de l' imprédicativité des systèmes . Il ne devrait pas être surprenant que certaines personnes remettent en question la fiabilité des systèmes logiques imprédicatifs. Cependant, aucune incohérence n'a été constatée jusqu'à présent dans de tels systèmes.λx.x x

D'un autre côté, pour pouvoir affirmer de manière plus générale que ne peut pas être bien typé dans un système cohérent, vous devez avoir suffisamment de "structure logique" dans votre système de saisie pour pouvoir définir clairement la cohérence. Ensuite, vous devez montrer qu'un terme sans forme normale de tête (comme celui ci-dessus) peut avoir n'importe quel type, ce qui n'est pas évident non plus!(λx.x x)(λx.x x)

Plus de détails peuvent être trouvés dans ma réponse à une question connexe: /cstheory//a/31321/3984


4
À la lecture de ces réponses, je vois que vous avez évidemment une grande compréhension de la question. J'aimerais en savoir plus, mais je ne sais pas où chercher. J'ai parcouru le livre TAPL et il ne mentionne rien de tout cela, donc je ne suis pas sûr que ce soit un sujet de théorie des types. Pourriez-vous m'indiquer quels domaines CS / mathématiques sont liés à cette question, et peut-être quelques livres / articles? Merci beaucoup.
MaiaVictor

2
Je ne suis pas sûr que ces questions soient un "domaine de recherche" en soi , plus comme quelques questions amusantes auxquelles il aurait été répondu il y a longtemps s'il y avait eu un effort sérieux de la part d'experts. C'est définitivement un sujet de théorie des types, et la théorie des systèmes de types purs a l'avantage de rendre le problème défini et contraint. Je recommanderais probablement le papier Coquand-Herbelin de l'autre fil.
cody

3
Des questions similaires ont été posées, par exemple ici et ici . J'ajouterais les "calculs lambda avec types" de Barendregt à la liste.
cody

1
Quelle est la syntaxe ici? Je pensais voir pour un terme de type ( X . X ) ( X . X ) . λx:(X.X).ΛY.x[YY](x[Y])(X.X)(X.X)
Andrej Bauer

1
@AndrejBauer c'est la syntaxe "implicite", où il n'y a pas d'annotations sur les s, et les abstractions de type et les applications sont omises. Vous pouvez également donner: λ x : ( X . X ) . x [ ( X . X ) ( X . X ) ] xλλx:(X.X).x[(X.X)(X.X)] xsi tu veux. L'inférence de type est indécidable ici, mais cela est quelque peu orthogonal à la question. Les choses ne sont bien sûr pas aussi claires lorsque vous avez des types dépendants, mais il existe par exemple des versions du CoC avec des quantifications implicites (le calcul de Miquel des constructions implicites), donc la question reste pertinente.
cody
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.