Adloun

OCaml (option informatique) · Chapitre 17 · Exercice de TD

Tautologie

Logique propositionnelle · niveau 2

Énoncé

Écrire tautologie f et vérifier que Ou (Var 0, Non (Var 0)) (le tiers exclu) en est une.

Corrigé

let tautologie f =
  let n = nb_variables f in
  let v = Array.make n false in
  let rec essaie i =
    if i = n then evalue v f
    else begin
      v.(i) <- false;
      essaie (i + 1) && (v.(i) <- true; essaie (i + 1))
    end
  in
  essaie 0

Toute valuation doit rendre la formule vraie : le && exige les deux branches (x_i faux et vrai) et s'arrête au premier échec. tautologie (Ou (Var 0, Non (Var 0))) vaut true. On a aussi tautologie f = not (satisfiable (Non f)).

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre