OCaml (option informatique) · Chapitre 20 · Exercice de TD
La diagonale
Calculabilité et décidabilité · niveau 2
Énoncé
Reconstituer en détail la contradiction de diagonale appliquée à elle-même.
Corrigé
let diagonale p =
if arrete p p then (while true do () done) else ()
Notons le programme diagonale. Que fait diagonale D ? Par définition, elle teste arrete D D.
- Cas
arrete D D = true: cela signifie « appliqué à s'arrête ». Or, dans ce cas,diagonale Dentre danswhile true: elle ne s'arrête pas. Contradiction avectrue.
- Cas
arrete D D = false: « appliqué à ne s'arrête pas ». Ordiagonale Dprend alors la brancheelseet s'arrête. Contradiction avecfalse.
arrete ne peut donc renvoyer ni true ni false de façon cohérente : elle ne peut exister.
Exercices semblables
- Semi-décider l'arrêt corrigé
- Syracuse, problème ouvert mais pas indécidable corrigé
- Comprendre une réduction corrigé
- Une propriété sémantique indécidable corrigé
- Le castor affairé (busy beaver) corrigé