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