3.1 Rechercher sur des formules

let rec rechercher_formule table = function
    Mot mot -> Hashtbl.find table mot
  | Et(f1, f2) -> SceneSet.inter (rechercher_formule table f1)
	(rechercher_formule table f2)
  | Ou(f1, f2) -> SceneSet.union (rechercher_formule table f1)
	(rechercher_formule table f2)
  | Moins(f1, f2) -> SceneSet.diff (rechercher_formule table f1)
	(rechercher_formule table f2);;

Nous définissons rechercher_formule par induction sur la structure de la formule. Pas de mystère, c'est une façon canonique de définir le résultat de l'évaluation d'une formule, qui pourrait être appliquée à des formules arithmétiques, par exemple.

afficher_scenes (rechercher_formule table (Et(Mot("trouver"), Mot("lorsque"))));
  print_newline ();;