anchor.diff:                        (* wp_head, head--the term shouldn't depend on wp_head *)
                         as_arg S.tun; as_arg head;
                         (* wp_body, body--the term shouldn't depend on wp_body *)
  -                      as_arg S.tun; as_arg body] in
  -                S.mk (Tm_app(bind_inst, args)) None rng in
  +                      as_arg S.tun; as_arg body]
  +                in
  +                S.mk (Tm_let ((false, [lb_head]),
  +                   SS.close [S.mk_binder head_bv] <|
  +                   S.mk (Tm_app(bind_inst, args)) None rng)) None rng in
                 log cfg (fun () -> BU.print2 "Reified (1) <%s> to %s\n" (Print.term_to_string top0) (Print.term_to_string reified));
                 norm cfg env (List.tl stack) reified
               )
  
positive.code:      not (mtgt |> Env.is_layered_effect env)
    then
      let ed = Env.get_effect_decl env (Env.norm_eff_name cfg.tcenv mtgt) in
      let _, return_repr = ed |> U.get_return_repr |> must in
      let return_inst = match (SS.compress return_repr).n with
          | Tm_uinst(return_tm, [_]) ->
              S.mk (Tm_uinst (return_tm, [env.universe_of env t])) None e.pos
          | _ -> failwith "NIY : Reification of indexed effects"
      in
      S.mk (Tm_app(return_inst, [as_arg t ; as_arg e])) None e.pos
    else
      match Env.monad_leq env msrc mtgt with
      | None ->
  
negative.code:       (*        M.bind_repr (reify e1) (fun x -> reify e2)                          *)
        (*                                                                            *)
        (* ****************************************************************************)
        let eff_name = Env.norm_eff_name cfg.tcenv m in
        let ed = Env.get_effect_decl cfg.tcenv eff_name in
        let _, repr = ed |> U.get_eff_repr |> must in
        let _, bind_repr = ed |> U.get_bind_repr |> must in
        begin match lb.lbname with
          | Inr _ -> failwith "Cannot reify a top-level let binding"
  