type variavel = string
type formula = 
  | Implica of formula*formula
  | Equivale of formula*formula
  | Ou of formula*formula
  | E of formula*formula
  | Nao of formula
  | Var of variavel
  | Verdade
  | Falso

(* Função (recursiva estrutural) de conversão de expressões para strings *)
let rec string_of_formula form =
match form with
  | Var v          ->  v
  | Verdade        -> "TRUE"
  | Falso          -> "FALSE"
  | Implica(f, g)  -> ("( "^ string_of_formula f ^ " -> " ^ string_of_formula g ^" )")
  | Equivale(f, g) -> ("( "^ string_of_formula f ^ " <-> " ^ string_of_formula g ^" )")
  | E(f, g)        -> ("( "^ string_of_formula f ^ " & " ^ string_of_formula g ^" )")
  | Ou(f, g)       -> ("( "^ string_of_formula f ^ " | " ^ string_of_formula g ^" )")
  | Nao f          ->  ("!"^ string_of_formula f )

This document was generated using caml2html