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