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