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