Adloun

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 D entre dans while true : elle ne s'arrête pas. Contradiction avec true.
  • Cas arrete D D = false : « appliqué à ne s'arrête pas ». Or diagonale D prend alors la branche else et s'arrête. Contradiction avec false.

arrete ne peut donc renvoyer ni true ni false de façon cohérente : elle ne peut exister.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre