let rec iter f a =
  try
    (match d_interp a with
      | Sym.Const(_), [] -> ()
      | Sym.Sub(_, _, _), [x] -> iter f x
      | Sym.Conc(n, m), [x; y] -> iter f x; iter f y
      | _ -> f a)
  with
      Not_found -> f a