Question sur le problème de l'arrêt

Bonjour
J'ai un problème logique duquel je n'arrive pas à me sortir sur le problème de l'arrêt :

Nous supposons que nous avons un certain formalisme de représentation des algorithmes, par exemple celui de Turing.

Premièrement nous simplifions le problème qui se présente avec une donnée en entrée : l'ensemble des algorithmes avec une entrée est équivalent à l'ensemble des algorithmes sans entrée (on met l'entrée à l'intérieur de l'algorithme).

Exhiber un algorithme à l'arrêt indécidable

Nous allons ici prouver qu'il existe un algorithme r tel que son arrêt soit indécidable. Si vous pensez que cela est vrai, vous pouvez passer cette partie.

Soit A l'algorithme à une entrée r où r est une représentation d'algorithme :
- pour toute preuve mathématique x :
- si x démontre que r est sans fin, retourner 0
- si x démontre que r est fini, retourner 1

Remarque : l'ensemble des preuves est dénombrable.

Si on avait : "Pour tout algorithme x, A s'arrête" alors A serait un algorithme déterminant si les algorithmes s'arrêtent, et donc le problème de l'arrêt serait décidable. Absurde.
Donc on a : "Il existe un algorithme x tel que A(x) ne s'arrête pas". Soit r un tel algorithme.

L'existence de r est incohérent

Prenons un univers (comme le notre) où les mathématiques sont les mêmes qu'ici et où l'on puisse exécuter des algorithmes. Si on exécute r dans cet univers, s'il s'arrêtait on pourrait transformer cette exécution en preuve de son arrêt, ce qui est absurde (car son arrêt est indécidable). Donc dans tout univers à la même mathématique que nous, r ne s'arrête pas.

Ce qui me choque, c'est que la base de la science repose sur la réalité constaté et rien d'autre. Autrement dit la réalité est le juge suprême de toute science. Hors Or nous voyons ici que pour toute réalité, r ne s'arrête pas, sans pour autant pouvoir constater que r ne s'arrête pas, alors que nous venons de le faire !

Réponses

  • Autrement dit la réalité est le juge suprême de toute science

    Merci pour l'éclat de rire que tu vas provoquer chez 90% des lecteurs du forum. Hélas, bien sûr que non. La réalité, justement on ne la connait pas. Le juge (si on parle comme toi) des sciences est la preuve formelle (c'est à dire des textes qui ne cachent rien sous le tapis et mettent en gras ce qu'ils supposent sans le prouver)

    Concernant le problème de l'arrêt, tu te compliques la vie.

    Le programme

    p:= [let a(x):= (if boucle (x(x)) then exit else lancer_une_boucle() ) in a(a)]

    peut tout à fait être interrompu en débranchant la prise de courant.

    Il n'en reste pas moins vrai que s'il s'arrête c'est parce qu'il a exécuté le "exit" face au test "boucle(p)", donc considéré que p ne s'arrête pas

    De plus, si au bout d'un certain temps que tu estimes subjectivement assez long pour que le test a été consommé et que si ça ne s'est pas arrêté, c'est parce qu'il a exécuté le "else", tu te dois alors d'estimer qu'il a résolu le test "boucle(p)" en faux autrement dit qu'il considère que P s'arrête.
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • christophe c écrivait:
    >
    > Autrement dit la réalité est le juge suprême de
    > toute science
    >
    >
    > Merci pour l'éclat de rire que tu vas provoquer
    > chez 90% des lecteurs du forum.
    Cette raillerie, féroce, ne vous honore pas, et est hors sujet.

    > Hélas, bien sûr
    > que non. La réalité, justement on ne la connait
    > pas. Le juge (si on parle comme toi) des sciences
    > est la preuve formelle (c'est à dire des textes
    > qui ne cachent rien sous le tapis et mettent en
    > gras ce qu'ils supposent sans le prouver).

    La preuve formelle est elle-même le fruit de l'expérience humaine, qui se fait dans notre univers.

    >
    > Concernant le problème de l'arrêt, tu te
    > compliques la vie.
    Chaque lecteur peut en juger, à quoi bon poser vos jugements de valeur en préambule ?

    >
    > Le programme
    >
    > p:= [let a(x):= (if boucle (x(x))
    > then exit else lancer_une_boucle() ) in
    > a(a)]

    >
    > peut tout à fait être interrompu en débranchant
    > la prise de courant.
    et alors ?
    >
    > Il n'en reste pas moins vrai que s'il s'arrête
    > c'est parce qu'il a exécuté le "exit" face au
    > test "boucle(p)", donc considérer que p ne boucle
    > pas.
    >
    > De plus, si au bout d'un certain temps que tu
    > estimes subjectivement assez long pour que le test
    > a été consommé et que si ça ne s'est pas
    > arrêté,
    Il n'y a aucune référence à un "temps d'attente" dans mon raisonnement.

    Donc vous me donnez un résumé de la preuve de l'indécidabilité du problème de l'arrêt. Mais ma question n'était pas là.
    Par ailleurs, pour information, il y a deux articles mathématiques (sérieux) qui remettent en cause la preuve de ce théorème :
    * "Problems with the Halting Problem" Eric C.R. Hehner
    * "Halting misconceived?" de Bill Stoddart

    Merci de laisser votre bouteille d'acide chlorhydrique au placard la prochaine fois.
  • Mais il n'y avait rien ni de méchant ni d'acide. Qu'appellse tu "sérieux"? (Ici on est en sciences pas en philo: des philosophes "sérieux" qui contestent Godel il y en a plus que deux :-D )
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • > sérieux

    dans le sens du dictionnaire, pour préciser, le sens 4 du wiktionnaire.

    > ici on est en science, pas en philo

    Ah bon, ah merci, que je suis bêêête, je n'avais pas compris. Encore heureux que vous m'apportez vos lumières. Décidément vous ne pouvez pas vous en empêchez, à croire que vous ne venez que pour cela.

    En espérant qu'une personne intéressée par le sujet apporte son point de vue. De votre part je n'ai pas l'impression qui vous ayez chercher à comprendre mon propos.
  • Soit $E,S$ deux ensembles. Soit $p$ une application de $E^2$ dans $E$. Soit $C$ une partie de $E\times S$ (édité). Soient $\bf v,f$ deux éléments de $S$.

    Il s'agit d'un modèle de calcul (vraiment dépouillé) avec des entrées ($E$) et des sorties $(S)$; $C$ désigne en fait l'ensemble des couples $(a,b)$ tels que si on soumet $a$ à la machine, le résultat $b$ est renvoyé.

    On utilisera ici l'abréviation $x \to y$ à la place de $(x,y) \in C$.
    On dira que deux $a,b$ dans $E$ donnent le même résultat si pour tout $r\in S$, $a\to r$ si et seulement si $b\to r$
    ( ($\spadesuit$) autrement dit -lorsque l'hypothèse A2 ci-dessous est satisfaite- s'il n'existe aucun $z$ tel que $a\to z$ ou $b \to z$ (édité), ou bien s'il existe un $t\in S$ tel que $a\to t$ et $b\to t$).

    Pour faciliter la lecture on désignera par $u[v]$ l'élément $p(u,v)$ de $E$ dans la suite.

    On suppose que

    A1) $\mathbf v \neq \mathbf f$
    A2) pour tout $x$ dans $E$ et tous $r,r'$ dans $S$, si $x \to r$ et $x \to r'$ alors $r=r'$ (édité) (unicité des résultats de calculs s'ils existent)
    A3) pour tout $x$ dans $E$, il existe $x^*$ dans $E$ tel que pour tout $y$ dans $E$, $x^* [y]$ donne le même résultat que $x \left [ y [y]\right ] $(a.k.a. $p \left (x, p(y,y) \right )$).
    A4) pour tous $c,m,n\in E$, il existe $i_{c,m,n}\in E$ tel que pour tout $x\in E$, si $c[x]\to \mathbf v$ (resp $c[x] \to \mathbf f$) alors $i_{c,m,n} [x]$ donne le même résultat que $m$ (resp. $n$) (le système supporte les boucles if).

    Alors:

    I°) Pour tout $x$ dans $E$, $x^* [x^*]$ et $x \left [x^* [x^*] \right ]$ donnent le même résultat (évident d'après A3).

    II°) Soit $f:E \to \{\mathbf v, \mathbf f\}$ une fonction non constante telle que pour tous $x,y \in E$, si $x$ donne le même résultat que $y$, alors $f(x)=f(y)$. Alors il n'existe aucun $t\in E$ tel que pour tout $x\in E$, $t [x] \to f(x)$ ("théorème de Rice")

    En effet ($f$ étant non constante) soient $k,\ell\in E$ tels que $f(k)=\mathbf v$ et $f(\ell)=\mathbf f$. Supposons qu'un tel $t$ existe et posons $e:=i_{t,\ell ,k}^* [ i_{t,\ell ,k}^*]$. Alors (cf I°) $i_{t,\ell,k} [e]$ et $e$ donnent le même résultat ($\clubsuit$).
    Si $f(e)=\mathbf v$, alors $t [e] \to v$ donc d'après A3°, $\ell$ donne le même résultat que $i_{t,\ell,k} [e]$ qui donne le même résultat que $e$ d'après ($\clubsuit$). Donc $f(\ell)= f(e)$, or $f(e)=\mathbf v$ et $f(k)=\mathbf f$ ce qui est impossible.
    Si $f(e)=\mathbf f$, on a une contradiction similaire: $t [e] \to f$ donc $k$ donne le même résultat que $i_{t,\ell,k} [e]$ d'après A3°), et $i_{t,\ell,k} [e]$ donne le même résultat que $e$ d'après ($\clubsuit$) et donc $f(k)=f(e)$ mais $f(k)=\mathbf v$ et $f(e)=\mathbf f$ ce qui ne peut pas arriver.
    Bref il n'y a pas de tel $t$.

    III°) On dit qu'un élément $x\in E$ s'arrête s'il existe $y\in S$ tel que $x\to y$.
    S'il existe au moins un élément de $E$ qui ne s'arrête pas, alors il n'existe aucun $h\in E$ tel que pour tout $x\in E$,
    $h[x] \to \mathbf t$ si $x$ s'arrête et $h[x] \to \mathbf f$ si $x$ ne s'arrête pas ("théorème de l'arrêt").

    Supposons qu'un tel $h$ existe. Alors l'application $g$ qui à $x\in E$ fait correspondre $\mathbf v$ si $x$ s'arrête et $\mathbf f$ si $x$ ne s'arrête pas satisfait toutes les conditions du théorème II° (il est clair- cf remarque $(\spadesuit)$ en introduction que si $x$ et $y$ donnent le même résultat, alors $g(x)=g(y)$). Pour voir que $g$ est non constante, il suffit de voir que comme $h[x]$ s'arrête pour tout $x$ et donc $g(h[h])=\mathbf v$, d'autre part si $m\in E$ ne s'arrête pas (il en existe par hypothèse) alors $g(m)=\mathbf f$. Enfin on a par construction $h[x] \to g(x)$ pour tout $x\in E$ et donc on aboutit à une contradiction en appliquant le théorème II°).
    Une fonction est un ensemble $f$ de couples tel que pour tous $x,y,z$, si $(x,y)\in f$ et $(x,z)\in f$ alors $y = z$.
  • Emmch: mais pourquoi tu prends tout mal? :-S

    Je t'ai répondu: c'est ton principe qui ne marche pas. Qu'est-ce que tu veux? Que je te dise qu'il marche? Tu poses une question en demandant pourquoi tel principe donne l'impression que...
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • @Foys : je suis bouché à l'émeri, ou alors il y a pas mal de trucs qui ne vont pas dans ce que tu as écrit ?

    %%%%%%%%%%%%%%%%%%
    > Soit $E,S$ deux ensembles. Soit $p$ une application de $E^2$ dans $E$.
    > Soit $C$ une partie de $E$. Soient $\bf v,f$ deux éléments de $S$.
    >
    > Il s'agit d'un modèle de calcul (vraiment dépouillé) avec des entrées ($E$) et des
    > sorties $(S)$; $C$ désigne en fait l'ensemble des couples $(a,b)$ tels que
    > si on soumet $a$ à la machine, le résultat $b$ est renvoyé.

    $C$ serait en fait une partie de $E\times S$ ???

    %%%%%%%%%%%%%%%%
    > On dira que deux $a,b$ dans $E$ donnent le même résultat si pour tout $r\in S$,
    > $a\to r$ si et seulement si $b\to r$ ( ($\spadesuit$) autrement dit
    > -lorsque l'hypothèse A2 ci-dessous est satisfaite- s'il n'existe aucun $z$ tel que $x\to z$ ou $y \to z$,
    > ou bien s'il existe un $t\in S$ tel que $a\to t$ et $b\to t$).

    $x$ et $y$ sont en fait $a$ et $b$ ?

    %%%%%%%%%%%%%%%%%%%%%

    > A2) pour tout $x$ dans $E$ et tous $r,r'$ dans $S$, $x\to r$ si et seulement $x\to r'$
    > (unicité des résultats de calculs s'ils existent)

    ???????????

    Si je comprends bien ce que tu voulais faire, ne pourrais-tu pas plutôt dire que tu ajoutes un élément, disons $\infty$, à $S$ et que tu as simplement une application de $E$ dans $S\cup\{\infty\}$ ? Ça éviterait tout ce mic-mac avec ton ensemble $C$ mal introduit, ta définition de "donner le même résultat" à coquille et ton axiome A2) foiré.
  • GaBuZoMeu a écrit:
    @Foys : je suis bouché à l'émeri, ou alors il y a pas mal de trucs qui ne vont pas dans ce que tu as écrit ?
    Mais non, c'est moi qui commets mes fautes quotidiennes.
    GaBuZoMeu a écrit:

    ???????????
    Si je comprends bien ce que tu voulais faire, ne pourrais-tu pas plutôt dire que tu ajoutes un élément, disons $\infty$, à $S$ et que tu as simplement une application de $E$ dans $S \cup \{\infty \}$ ? Ça éviterait tout ce mic-mac avec ton ensemble $S$ mal introduit, ta définition de "donner le même résultat" à coquille et ton axiome A2) foiré.

    Oui, moralement $C$ est une application partielle; sauf qu'on est dans un cadre où la distinction entre application vue comme graphe, et application vue comme fonction informatique va être pertinente ($C$ ne pourra jamais être une fonction informatique). c'est pour ça que j'ai préféré garder cette distinction.

    En fait ce message est l'adaptation d'un fichier coq qui traîne dans mes affaires:
    https://pastebin.com/jYiRVaM0
    Une fonction est un ensemble $f$ de couples tel que pour tous $x,y,z$, si $(x,y)\in f$ et $(x,z)\in f$ alors $y = z$.
  • @emmch: ne crois pas qu'il y a besoin d'attendre un temps infini pour commenter la situation du programme en train de s'exécuter. "Commenter" est affaire textuel. La science est textuelle dans ses conclusions.
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • @Foys : tu as oublié de corriger ton axiome A2.
  • C'est corrigé!
    Une fonction est un ensemble $f$ de couples tel que pour tous $x,y,z$, si $(x,y)\in f$ et $(x,z)\in f$ alors $y = z$.
  • Je ne comprends pas ta volonté foys. Y a-t-il un point-clé que tu souhaitais souligner qui soulage emmch (autrement dit, qui ait une relation "pacifique" avec le slogan "le réel est le juge suprême")? Ou tu souhaitais juste tout formaliser?

    Sinon, comme tu sais, le programme a dont j'ai parlé se fait avec des combinateurs***. Mais vu le fil et les espoirs de son auteur, je ne rentre pas dans les détails.

    *** avec l'avantage qu'en plus, on n'a pas besoin de se soucier d'histoire de programmes et d'arguments.

    Bon allez, avant de cliquer sur "envoyer", je "parle tout seul" vite fait :-D

    [small]je veux a(x) = f(x(x))

    a(x) = Dfxx = W(Df)x

    Cool: y a qu'à prendre a:= W(Df) et le point fixe de f est donc W(Df)(W(Df))[/small]

    Rappel: $\forall x,y: Wxy=xyy$ et $\forall x,y,z: Dxyz = x(yz)$
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • Précisions: $abc$ abrège $(ab)c$

    et pour $f$ on peut prendre ce qu'on veut, mais ici, on peut prendre :

    $$ x\mapsto Z x uv$$

    où $u$ est l'instruction "Stop" et $v$ n'importe quel programme dont il est évident qu'il boucle

    $Z$ représente le candidat (qui n'existe "donc"** pas) vérifiant $Zx=K$ pour $x$ qui boucle et $Zx=KJ$ pour $x$ ne bouclant pas

    Grace au point fixe $e$ tel que $e=Zeuv$ construit au post précédent.
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • Je précise les combinateurs les plus célèbres (en majuscules), les lettres x,y,z désignant des objets quelconques: (Attention, j'ai mon propre système d'abréviations, ça peut différer pour B,D,C,G, avec la littérature)

    Sxyz = xz(yz)
    Dxyz = x(yz)
    Gxyz=yxz
    Bxy=yx
    Jx=x
    Kxy=x
    Cxyz=y(xz)
    Wxy=xyy


    On peut tout faire avec:

    Le groupe S+K
    Le groupe C+W+K
    Le groupe K+D+W+B
    Le groupe K+C+W+B
    Le groupe K+C+W+G
    Le groupe K+D+W+G

    etc, etc

    Un que j'aime bien, en plus, car il ne crée pas de coupure est:

    Mxyz = x(zy)

    réalisant : $(B\to C)\to (A\to ((A\to B)\to C))$

    Aucun des systèmes universels que j'ai mentionnés en vert n'est composé que de combinateurs ne créant pas de coupures et une bonne question est de savoir s'il existe un tel système universel (je guess que non, mais ne l'ai jamais prouvé), je vais numéroté la question dans il est facile de.
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • J'en profite pour informer emmch que les théorèmes de Godel tout autant que le "problème de l'arrêt" sont des expositions du même phénomène, que tu retrouves si tu t'inities aux petits combinateurs que j'ai évoqués ci-dessus. C'est une théorie qui demande 2H d'initiation au plus (en visant très large), de plus elle ne comporte que quelques constantes (on peut le faire avec 2) et ses axiomes s'énoncent tous sous la forme $\forall^*: ceci=cela$.

    Le point crucial est l'existence de ce qu'on appelle des combinateurs de point fixe (ie qui associe à toute fonction $f$, un $e$ tel que $f(e)=e$). J'ai donné un point fixe de $f$ plus haut (ie $W(Df)(W(Df))$)

    De la même manière que le problème de l'arrêt se manifeste avec un point fixe de
    "$x\mapsto $ if $x$ ne s'arrête pas then stop else lance une boucle éternelle"

    le théorème de Godel se prouve (en deux lignes) avec un point fixe de
    $x\mapsto$ if $prouvable(x)$ then false else true

    Et le fait que ça ne donne pas (de manière évidente) de contradiction dans la science (ie le fait qu'on ne puisse pas fabriquer une lampe d'Aladin avec ça) provient de ce que "être prouvable" est une notion mathématiquement définie alors que "être vraie" ne l'est pas.

    En espérant que tu sauras expliquer ça à tes café-philo :-D à tes camarades. Buvez un .. café .. à ma santé.
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • Et le nom de la petite spécialité concerné est "logique combinatoire".

    Elle est (pour des gens comme toi) largement préférable (même si elle raconte la même chose) au lambda calcul ou à la théorie des ensembles dans un premier temps, car elle n'est pas consommatrice de variables liées, notion grammaticale qui pose de nombreux problèmes aux étudiants généralistes.
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • Et comme je ne vais pas me connecter dans les prochains jours, et afin de ne surtout pas frustrer foys pour qui j'ai la plus grande estime, je précise que l'argument pris par l'opérateur se doit d'être la construction syntaxique du terme (même si les combinateurs usuels ne le manifestent pas car pas besoin).

    Par exemple: dans $D(AcuR)$, le combinateur $D$ "sait" (même s'il s'en fiche) que la troisième lettre de son argument est u.

    Attention, cette règle est "de moi", je ne la prétends pas habituelle. C'est juste pour que le modèle de calcul ne soit pas "idiot" et "aveugle". (On doit renoncer à l'extensionnalité implicite, il faut l'expliciter avec un combinateur ad hoc si on l aveut)
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
Connectez-vous ou Inscrivez-vous pour répondre.