Existe-t-il un calcul lambda typé où la logique correspondante sous la correspondance de Curry-Howard est cohérente et où il existe des expressions lambda typables pour chaque fonction calculable?
Il s'agit certes d'une question imprécise, dépourvue d'une définition précise du «calcul lambda typé». Je me demande essentiellement s'il y a (a) des exemples connus de cela, ou (b) des preuves d'impossibilité connues pour quelque chose dans ce domaine.
Edit: @cody donne une version précise de cette question dans sa réponse ci-dessous: existe-t-il un système logique de type pur (LPTS) cohérent et complet de Turing (dans un sens défini ci-dessous)?
type-theory
lambda-calculus
typed-lambda-calculus
curry-howard
Morgan Thomas
la source
la source
Réponses:
D'accord, je vais y donner une fissure: En général, pour un système de type , ce qui suit est vrai:T
La preuve procède généralement en supposant que vous avez un terme de type , en utilisant la réduction de sujet pour obtenir une forme normale, puis en procédant par induction sur la structure d'un tel terme pour obtenir une contradiction.F a l s ea b s u r d F a l s e
Il est naturel de se demander si l’inverse est vrai, c’est-à-dire
Le problème avec cela est qu'il n'y a pas de véritable notion la plus générale de "système de type", et encore moins d'accord sur le sens de cohérence logique pour de tels systèmes. Cependant, nous pouvons vérifier empiriquement que
Comment est-ce lié à l'exhaustivité de Turing? Eh bien, pour commencer, si la vérification de type est décidable , alors l'argument d'Andrej montre que l'un des éléments suivants doit tenir:
Cela tend à suggérer que:
Donner un théorème réel plutôt qu'une suggestion nécessite de rendre mathématique la notion de systèmes de types et d'interprétations logiques.
Maintenant, deux remarques me viennent à l'esprit:
Il existe un système de type indécidable , le système de type intersection qui a une interprétation logique et peut représenter chaque normalisation -term. Comme vous le remarquez, ce n'est pas tout à fait comme étant Turing Complete, car le type d'une fonction totale peut avoir besoin d'être mis à jour (affiné, en fait) avant de l'appliquer à l'argument souhaité. Le calcul est un calcul de "style curry" et est égal à STLC + et Il est clair que l '"interprétation"Γ ⊢ M : τλ Γ⊢M:τ∩σ
Il existe une classe de systèmes de types, les systèmes de types purs , dans lesquels une telle question pourrait être précisée. Dans ce cadre cependant, l'interprétation logique est moins claire. On pourrait être tenté de dire: "un PTS est cohérent s'il a un type inhabité". Mais cela ne fonctionne pas, car les types peuvent vivre dans différents "univers", où certains peuvent être cohérents et d'autres non. Coquand et Herbelin définissent une notion de systèmes logiques de type pur , dans laquelle la question a un sens, et montrent
Ce qui répond à la question dans un sens (incohérent TC) dans ce cas. Pour autant que je sache, la question du LPTS général est toujours ouverte et assez difficile.⇒
Edit: L'inverse du résultat Coquand-Herbelin n'est pas aussi facile que je le pensais! Voici ce que j'ai trouvé jusqu'à présent.
Un système logique de type pur est un PTS avec (au moins) les tris et , (au moins) l'axiome et (au moins) le règle , la condition selon laquelle il n'y a pas de sortes de type .T y p e P r oProp Type Prop:Type (Prop,Prop,Prop) Prop
Maintenant, je vais supposer une déclaration particulière d'exhaustivité de Turing: corriger un LPTS et laisser être le contexteL Γ
f : N → N t f Γ ⊢ t f : n a t → n a t nL est Turing Complete ssi pour chaque fonction calculable totale il y a un terme tel que
et pour chaquef:N→N tf
L'argument de diagonalisation d'Andrej montre qu'il existe des sans terminaison de type .t nat
Maintenant, il semble que nous soyons à mi-chemin! Étant donné un terme non terminatif , nous voulons remplacer les occurrences de par un type générique et nous débarrasser de et dans , et nous aura notre incohérence ( est habité dans le contexte )!Γ⊢loop:nat nat A 0 S Γ A A:Prop
Malheureusement, c'est là que je suis bloqué, car il est facile de remplacer par l'identité, mais le est beaucoup plus difficile à éliminer. Idéalement, nous aimerions utiliser un théorème de récurrence de Kleene, mais je ne l'ai pas encore compris.0S 0
la source
Maintenant, cette théorie est clairement Turing complète au sens de @ cody, juste par la force brute; mais l'affirmation est qu'elle est également cohérente. Construisons-en un modèle.
la source