(* On construit une instance du module Set pour le type string *)
module S = Set.Make (struct type t = string let compare = compare end);;
let rec variables = function
    Const n -> S.empty
  | Produit (e1, e2) -> S.union (variables e1) (variables e2)
  | Somme (e1, e2) -> S.union (variables e1) (variables e2)
  | Var x -> S.singleton x;;

(* Exemple *)
S.elements (variables (Somme (Var "x", ex)));;