Je sais que la complexité de la plupart des variétés de calculs lambda typés sans la primitive combinateur Y est bornée, c'est-à-dire que seules les fonctions de complexité bornée peuvent être exprimées, la borne devenant plus grande à mesure que l'expressivité du système de types croît. Je rappelle que, par exemple, le calcul des constructions peut exprimer tout au plus une complexité doublement exponentielle.
Ma question concerne si les calculs lambda typés peuvent exprimer tous les algorithmes en dessous d'une certaine limite de complexité, ou seulement certains? Par exemple, existe-t-il des algorithmes à temps exponentiel qui ne peuvent être exprimés par aucun formalisme dans le Lambda Cube? Quelle est la "forme" de l'espace de complexité qui est complètement recouvert par différents sommets du Cube?
Réponses:
Je donnerai une réponse partielle, j'espère que d'autres rempliront les blancs.
Dans les -calculi typés, on peut donner un type aux représentations habituelles des données ( N a t pour les entiers d'église (unaires), S t r pour les chaînes binaires, B o o lλ Nat Str Bool pour booléens) et je me demande quelle est la complexité des fonctions / problèmes représentables / décidables par des termes dactylographiés. Je ne connais une réponse précise que dans certains cas, et dans le cas simplement tapé, cela dépend de la convention utilisée lors de la définition de "représentable / décidable". Quoi qu'il en soit, je ne connais aucun cas où il existe une limite supérieure doublement exponentielle.
Tout d'abord, un bref récapitulatif sur le Lambda Cube. Ses 8 calculs sont obtenus en activant ou désactivant les 3 types de dépendances suivants au-dessus du -calculus (STLC) simplement typé :λ
(La dépendance des termes aux termes est toujours là).
Ajout des rendements polymorphisme système F. Ici, vous pouvez taper les nombres entiers avec l' Église , et de même pour les chaînes binaires et les booléens. Girard a prouvé que les termes du système F de type N a t → N a t représentent exactement les fonctions numériques dont la totalité est prouvable dans l'arithmétique Peano du second ordre. C'est à peu près les mathématiques de tous les jours (mais sans aucune forme de choix), donc la classe est énorme, la fonction Ackermann est une sorte de microbe minuscule, sans parler de la fonction 2Nat:=∀X.(X→X)→X→X Nat→Nat . Je ne connais aucune fonction numérique "naturelle" qui ne peut pas être représentée dans le système F. Les exemples sont généralement construits par diagonalisation ou par codage de la cohérence du PA de second ordre, ou d'autres astuces auto-référentielles (comme décider de l'égalitéβdans le système F lui-même). Bien sûr, dans le système F, vous pouvez convertir entre des entiers unairesNatet leur représentation binaireStr, puis tester par exemple si le premier bit est 1, donc la classe des problèmes décidables (en termes de typeStr→Bool) est tout aussi énorme.22n β Nat Str Str→Bool
Les 3 autres calculs du Lambda Cube qui incluent le polymorphisme sont donc au moins aussi expressifs que le système F. Ceux-ci incluent le système F ω (polymorphisme + ordre supérieur), qui peut exprimer exactement les fonctions prouvées totales dans l'ordre supérieur PA, et le calcul de Constructions (CoC), qui est le calcul le plus expressif du Cube (toutes les dépendances sont activées). Je ne connais pas la caractérisation de l'expressivité du CoC en termes de théories arithmétiques ou de théories des ensembles, mais cela doit être assez effrayant :-)ω
Je suis beaucoup plus ignorant des calculs obtenus en activant simplement les types dépendants (essentiellement la théorie des types de Martin-Löf sans égalité et nombres naturels), les types d'ordre supérieur ou les deux. Dans ces calculs, les types sont puissants mais les termes ne peuvent pas accéder à ce pouvoir, donc je ne sais pas ce que vous obtenez. Sur le plan informatique, je ne pense pas que vous obteniez beaucoup plus d'expressivité qu'avec les types simples, mais je peux me tromper.
Il nous reste donc le STLC. Pour autant que je sache, c'est le seul calcul du Cube avec des limites supérieures de complexité intéressantes (c'est-à-dire pas monstrueusement grandes). Il y a une question sans réponse à ce sujet sur TCS.SE, et en fait la situation est un peu subtile.
(Ceci est le théorème 3.4 dans leur article).
(Soit dit en passant , j'ai partagé ma surprise dans cette réponse à une question de MO sur les "théorèmes inconnus").
la source
Une réponse à une question que Damiano a posée dans son excellente réponse:
Je ne sais pas quelle est la force du calcul imprédicatif des constructions, si vous ajoutez des types inductifs et de grandes éliminations.
la source
Je vais essayer de compléter l'excellente réponse de Damiano.
En général, il s'agit d'une large piste de recherche, je vais donc me référer à l'une de mes réponses précédentes .
la source