let rec proj loc ch = match loc with
  | D1mu (_, ch2, Some x) when eq_epath ch ch2 ->
      (* SMPrule mu (l, ch -> x).ch ----> x *)
      x
  | D1mu (l, ((Pfield _) as ch2), _) when not (eq_epath ch ch2) ->
      (* SMPrule mu (l, .a -> x).b -- a<>b --> l.b *)
      proj l ch
  (* D1muRange ??? *)
  | _ -> Fol.e_data (D1proj (loc, ch))