Ceci est une question de suivi
Quel programme correspondrait à une preuve non constructive (classique) de la forme ? (Supposons que soit une relation décidable intéressante, par exemple, -th TM ne s'arrête pas en étapes.)
(ps: je poste cette question en partie parce que je suis intéressé à en savoir plus sur ce que Neel entend par " la traduction Godel-Gentzen est une transformation qui passe par la suite" dans son commentaire .)
Réponses:
C'est une question intéressante. Évidemment, on ne peut pas s'attendre à avoir un programme qui décide pour chaque si ∀ k T ( e , k ) est valable ou non, car cela déciderait du problème de l'arrêt. Comme déjà mentionné, il existe plusieurs façons d'interpréter les preuves par calcul: extensions de Curry-Howard, réalisabilité, dialectique, etc. Mais ils interpréteraient tous plus ou moins le théorème que vous avez mentionné de la manière suivante.e ∀kT(e,k)
Pour plus de simplicité, considérons le théorème classique équivalent
(1)∃i∀j(¬T(e,j)→¬T(e,i))
C'est (constructivement) équivalent à celui mentionné car étant donné nous pouvons décider si ∀ k T ( e , k ) est vrai ou non en vérifiant simplement la valeur de ¬ T ( e , i ) . Si ¬ T ( e , i ) est vrai, alors ∃ i ¬ T ( e , i ) et donc ¬ ∀ i T ( e , i ) . Si d'autre parti ∀kT(e,k) ¬T(e,i) ¬ T( e , i ) ∃ i ¬ T( e , i ) ¬ ∀ i T( e , i ) ne tient pas alors par (1) on a ∀ j ( ¬ T ( e , j ) → ⊥ ) ce qui implique ∀ j T ( e , j ) .¬ T( e , i ) ∀ j ( ¬ T( e , j ) → ⊥ ) ∀ j T( e , j )
Maintenant, encore une fois, nous ne pouvons pas calculer dans (1) pour chaque e donné, car nous résoudrions à nouveau le problème de l'arrêt. Ce que toutes les interprétations mentionnées ci-dessus feraient, c'est d'examiner le théorème équivalentje e
(2)∀ f∃ i′( ¬ T( e , f( je′) ) → ¬T( e , i′) )
La fonction est appelée fonction Herbrand. Il essaie de calculer un contre-exemple j pour chaque témoin potentiel donné i . Il est clair que (1) et (2) sont équivalents. De gauche à droite, c'est constructif, il suffit de prendre i ′ = i dans (2), où i est le témoin supposé de (1). De droite à gauche, il faut raisonner classiquement. Supposons que (1) n'était pas vrai. Ensuite,F j je je′=i i
(3)∀i∃j¬(¬T(e,j)→¬T(e,i))
Soit une fonction qui en est témoin, ief′
(4)∀i¬(¬T(e,f′(i))→¬T(e,i))
Maintenant, prenons dans (2) et nous avons ( ¬ T ( e , f ′ ( i ′ ) ) → ¬ T ( e , i ′ ) ) , pour certains i ′ . Mais en prenant i = i ′ dans (4) on obtient la négation de cela, contradiction. Par conséquent, (2) implique (1).f=f′ (¬T(e,f′(i′))→¬T(e,i′)) i′ i=i′
Donc, nous avons que (1) et (2) sont classiquement équivalents. Mais la chose intéressante est que (2) a maintenant un témoin constructif très simple. Prenez simplement si T ( e , f ( 0 ) ) ne tient pas, car alors la conclusion de (2) est vraie; ou bien prendre i ′ = 0 si T ( e , f ( 0 ) ) est vrai, car alors ¬ T ( e , f ( 0 )i′=f(0) T(e,f(0)) i′=0 T(e,f(0)) ne tient pas et la prémisse de (2) est fausse, ce qui le rend à nouveau vrai.¬T(e,f(0))
Par conséquent, la façon d'interpréter par calcul un théorème classique comme (1) est de regarder une formulation (classiquement) équivalente qui peut être prouvée de manière constructive, dans notre cas (2).
Les différentes interprétations mentionnées ci-dessus ne divergent que sur la façon dont la fonction apparaît. Dans le cas de la réalisabilité et de l'interprétation dialectique, cela est explicitement donné par l'interprétation, lorsqu'elle est combinée avec une certaine forme de traduction négative (comme celle de Goedel-Gentzen). Dans le cas des extensions Curry-Howard avec les opérateurs call-cc et continuation, la fonction f découle du fait que le programme est autorisé à "savoir" comment une certaine valeur (dans notre cas i ) sera utilisée, donc f est la continuation du programme autour du point où i est calculé.f f i f i
Un autre point important est que vous voulez que le passage de (1) à (2) soit "modulaire", c'est-à-dire si (1) est utilisé pour prouver (1 '), alors son interprétation (2) doit être utilisée de la même manière pour prouver l'interprétation de (1 '), disons (2'). Toutes les interprétations mentionnées ci-dessus le font, y compris la traduction négative de Goedel-Gentzen.
la source
Il est assez bien connu que l'arithmétique classique et intuitionniste est équiconsistante.
Une façon de le montrer est via les «plongements négatifs» de la logique classique dans la logique intuitionniste. Supposons donc que sont des formules d'arithmétique classique du premier ordre. Maintenant, nous pouvons définir une formule de logique intuitionniste comme suit:ϕ
Notez que est fondamentalement un homomorphisme qui colle partout dans les non-non supplémentaires, sauf que pour les disjonctions et les existentielles, il utilise la dualité de Morgan pour les transformer en conjonctions et en universaux. (Je suis assez confiant que ce n'est pas la traduction exacte de Godel-Gentzen, car je l'ai préparé pour cette réponse - essentiellement tout ce que vous écrivez en utilisant la double négation + la dualité de Morgan fonctionnera. Cette variété s'avère en fait importante pour interprétations informatiques de la logique classique; voir ci-dessous.)G ( ϕ )
Premièrement: il est évident que cette traduction préserve la vérité classique, de sorte que est vrai si et seulement si ϕ l' est, de façon classique.G ( ϕ ) ϕ
Deuxièmement: il est moins évident, mais toujours le cas, que pour les formules dans le fragment, la provabilité dans la logique intuitionniste et classique coïncident. La façon de le prouver est d'abord de regarder les formules tirées de cette grammaire:∀ ,⟹, ∧ , ¬
Et puis nous pouvons prouver comme un lemme (par induction sur ) que G ( A )UNE est dérivable intuitivement. Alors maintenant, nous pouvons montrer l'équidérivabilité des formules négatives en faisant une induction sur la structure de la preuve (dans, disons, le calcul séquentiel) et utiliser le lemme précédent pour simuler la loi du milieu exclu.G ( A )⟹UNE
Alors, comment devriez-vous y penser de manière intuitive?
Tout d'abord, la vue de la preuve-théorique. Si vous regardez les règles du calcul séquentiel, vous pouvez voir que le seul endroit où la logique classique et intuitionniste diffèrent sérieusement est dans les règles de disjonction et d'existentielles. Nous utilisons donc ce fait pour montrer que les preuves dans une logique de ces formules peuvent être traduites en preuves dans l'autre. Cela montre comment penser la logique constructive comme une extension de la logique classique avec les deux nouveaux connecteurs et ∨ . Ce que nous appelons «existence classique» et «disjonction classique» n'étaient que des abréviations impliquant ∀ , conjonction et négation, et donc pour parler de l'existence réelle, nous devions introduire de nouveaux connecteurs.∃ ∨ ∀
Deuxièmement, il y a une vue topologique. Maintenant, le modèle d'une logique classique (en tant que famille d'ensembles) est une algèbre booléenne (c'est-à-dire une famille de sous-ensembles fermés sous des unions, intersections et compléments arbitraires). Il s'avère que le modèle de la logique intuitionniste est comme un espace topologique , les propositions étant interprétées comme des ensembles ouverts. Leur interprétation de la négation est l'intérieur du complément, puis il est facile de montrer que , ce qui signifie que la double négation nous envoie dans le plus petit clopen couvrant chaque ouverture --- et les clopens forment un Algèbre de Boole.¬ ¬ ¬ P= ¬ P
Maintenant, grâce à Curry-Howard, nous savons interpréter les preuves en logique intuitionniste comme des programmes fonctionnels. Donc, une réponse possible (mais pas la seule) à la question de "quel est le contenu constructif d'une preuve classique?" est le suivant:
Examinons donc la translation de . Cela dit donc que le contenu constructif du milieu exclu revient à dire que ce n'est pas le cas pour ¬ P et et ¬ ¬ P - c'est-à-dire la non-contradiction. Donc, dans ce sens, il n'y a pas vraiment beaucoup de contenu informatique dans la loi du milieu exclu.G ( A ∨ ¬ A ) = ¬ ( ¬ G ( A ) ∧ ¬ ¬ G ( A ) ) ¬ P ¬ ¬ P
Pour voir ce que c'est concrètement, rappelons que de façon constructive, la négation est définie comme . Cette formule est donc ( ( G ( A )¬ A = = A⟹⊥ ( ( G ( A )⟹⊥ ) ∧ ( ( G ( A)⟹⊥)⟹⊥ ))⟹⊥
Autrement dit, si vous obtenez non-A et non-pas-A, vous pouvez simplement passer la première négation à la seconde pour dériver la contradiction que vous voulez.
Maintenant, qu'est-ce qu'une suite de transformations de style passant?
À présent,
J'ai vu "une" transformation CPS, car comme je l'ai mentionné plus tôt, il existe de nombreuses traductions négatives qui vous permettent de prouver ce théorème, et chacune correspond à une trasnformation CPS différente. En termes opérationnels, chaque transformation correspond à un ordre d'évaluation différent . Il n'y a donc pas d'interprétation informatique unique de la logique classique, car vous avez des choix à faire et les choix de différence ont des caractéristiques opérationnelles très différentes.
la source
Il y a des conférences entières sur le thème des preuves non constructives en tant que programmes , et je ne suis pas un expert en la matière. Ci-dessus, Neel Krishnaswami a fait allusion à une réponse plus longue qu'il prépare, qui, à en juger par son travail ici, sera excellente. Ce n'est qu'un avant-goût d'une réponse.
Il s'avère que le type de continuation d' appel avec courant correspond à la proposition connue sous le nom de loi de Peirce , qui peut être utilisée pour prouver la loi du milieu exclu (∀ P, P∨ ¬ P ). Un programme LEM peut être écrit en utilisant callcc. À Coq:
donne le code O'Caml:
L'introduction la plus nette que j'ai vue à ce sujet se trouve dans la notion de contrôle des formules en tant que types de Tim Griffin .
la source
callcc
fichier dans Schemecallcc
. Ensuite, vous pouvez réellement essayer les choses.