Exercices indécidabilité

Exercice 1

On utilise un langage de programmation impérative (comme C, Java ou Python) disposant de l'instruction execute(P) qui exécute le programme P.
Montrer que déterminer si l'exécution d'un programme P passe sur une ligne de code numérotée n est un problème indécidable.
Indication : par réduction à partir du problème de l'arrêt.

Exercice 2

On utilise un langage de programmation impérative (comme C, Java ou Python) disposant de l'instruction execute(P) qui exécute le programme P. On suppose que l'exécution d'un programme, si elle termine, retourne un booléen.
Montrer que déterminer si les exécutions de deux programmes P et Q retournent la même valeur booléenne est un problème indécidable.
Indication : par réduction à partir du problème de l'arrêt.

Exercice 3

On utilise un langage de programmation impérative inspiré de C disposant de l'instruction execute(P) qui exécute le programme P. Dans le code qu'il écrit, le programmeur doit explicitement allouer (avec l'instruction new(Type)) puis rendre (avec l'instruction free(Var)) la mémoire que son programme utilise. On souhaite automatiser la gestion mémoire : le programmeur crée les variables à l’aide de l’instruction new(Type), la libération de la mémoire serait gérée automatiquement par le compilateur, par insertion d'instructions free(Var) aux bons endroits dans le code écrit par le programmeur.
Montrer qu'il ne peut pas exister de ramasse-miettes optimal qui ajouterait un free(Var) au plus tôt après un new(Type) dans tout code source au moment de la compilation.
Indication : par réduction à partir du problème de l'arrêt.

Exercice 4

Soit Ma une machine de Turing donnée (par exemple une machine qui accepte tous les mots se terminant par la lettre a).

Exercice 5

Montrer que déterminer si une MT s'arrête sur le mot vide est indécidable (problème de l'arrêt sur le mot vide).
Indication : par réduction à partir de H, l'ensemble des couples (M,w) tels que M s'arrête sur w.

Exercice 6

Montrer que déterminer si une MT s'arrête pour au moins un mot d'entrée est indécidable (problème de l'arrêt existentiel).
Indication : par réduction à partir du problème de l'arrêt sur le mot vide.

Exercice 7

Montrer que déterminer si une MT s'arrête pour tout mot d'entrée est indécidable (problème de l'arrêt universel).
Indication : par réduction à partir du problème de l'arrêt sur le mot vide.

Exercice 8

Montrer que déterminer si pour tout couple de machines de Turing M1 et M2, il existe un mot w tel que M1 et M2 s'arrêtent sur w est indécidable.
Indication : par réduction à partir du problème de l'arrêt sur le mot vide.

Exercice 9

  1. On a vu en cours que LU, l'ensemble des couples (M,w) tels que M accepte w, est indécidable. Montrer cependant que LU est récursivement énumérable.
  2. Que peut-on en déduire concernant le complément de LU, i.e., l'ensemble des couples (M,w) tels que M n'accepte pas w ?
  3. Soient M1 et M2 deux MT qui terminent toujours. Soient f1 et f2 les deux fonctions calculées par ces machines. Montrer qu'il est impossible de déterminer algorithmiquement si f1=f2.
    Indication : par réduction à partir du complément de LU.