let rec map f a = try let op, x = d_interp a in let x' = map f x in if x == x' then a else sigma op [x'] with Not_found -> f a