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 équivalentjee
(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,Fjjeje′=ii
(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′=0T(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é.ffifi
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.