let rec map f a =
  try
    (match d_interp a with
       | Sym.Empty, [] -> a
       | Sym.Full, [] -> a
       | Sym.Ite, [b1; b2; b3] ->
           mk_ite (map f b1) (map f b2) (map f b3)
       | _ -> 
           f a)
  with
      Not_found -> f a