⇐Supposons que Let Lsont reconnaissables. Il existe un reconnaisseur
Rde Let un reconnaisseur Rde L.
Soit eun mot. Si e∈ L, alors R(e)s’arrête. Si e /
∈ L, alors R(e)
s’arrête. On crée donc une machine Dqui, sur une entrée e, simule
l’exécution en parallèle de R(e)et R(e). Si Raccepte le mot, alors
Daccepte le mot, et si Raccepte le mot, alors Drefuse le mot.
Par définition de Ret R, il est nécessaire que D(e)s’arrête en un
temps fini. Par ailleurs, il est immédiat que Dreconnaît L, donc D
décide L.
4. D’après la question 3, si Let Lsont reconnaissables, alors Lest décidable.
Pour répondre à la question, il suffit donc d’exhiber un langage qui soit
reconnaissable mais pas décidable.
Soit L={(M, e)|M(e)s’arrête}. Une machine de Turing qui déciderait
de Lserait en mesure de répondre au problème de l’arrêt, or un tel prob-
lème est indécidable, donc Lest indécidable.
En revanche, Lest reconnaissable. En effet, n’importe quelle machine
universelle permet de reconnaître L, en simulant l’exécution de M(e). Si
l’exécution s’arrête, alors la machine universelle accepte le mot.
Exercice 5 Fermeture des langages
Soient Aet Bdes langages décidables.
1. Montrer que A∪B, A ∩B, A\B, AB, A∗sont décidables.
2. Existe-t-il un langage fini indécidable ?
3. Soient C, D des langages reconnaissables. Est-ce que C\Dest un langage
reconnaissable ?
Corrigé
1. Soit DAun décideur de A,DBun décideur de B. Pour chacune des sous-
questions, on va construire un décideur du langage en fonction de DAet
DB.
A∪BPour une entrée e, on simule l’exécution de DA(e). Si c’est accepté,
on accepte. Sinon, on retourne DB(e).
A∩BPour une entrée e, on simule l’exécution de DA(e). Si c’est refusé, on
refuse. Sinon, on retourne DB(e).
A\BPour une entrée e, on simule l’exécution de DA(e). Si c’est refusé, on
refuse. Sinon, on retourne la négation de DB(e).
5