anchor.diff:        (Util.arrow [ S.null_binder (S.bv_to_name t1) ] (S.mk_GTotal (S.bv_to_name t2))))
       in
       let r = S.new_bv None (mk_gctx (S.bv_to_name a) (S.bv_to_name t1)) in
  -    let ret = Some (Util.lcomp_of_comp (mk_Total (mk_gctx (S.bv_to_name a) (S.bv_to_name t2)))) in
  +    let ret = Some (Inl (Util.lcomp_of_comp (mk_Total (mk_gctx (S.bv_to_name a) (S.bv_to_name t2))))) in
       let outer_body =
  -      let p = S.null_bv (mk_post (S.bv_to_name a)) in
  +      let p = S.new_bv None (mk_post (S.bv_to_name a)) in
         let effect_args = argument_bvs () in
  -      let inner_binders = S.mk_binder p :: List.map S.mk_binder effect_args in
  +      let inner_binders = List.map S.mk_binder (p :: effect_args) in
         let bv_arg x = S.as_arg (S.bv_to_name x) in
         let inner_body =
           Util.mk_app (S.bv_to_name l) (List.map bv_arg (p :: effect_args) @ [
  
positive.code:     in
      Util.abs (S.binders_of_list [ a; t1; t2; l; r ]) outer_body ret in
  
    (* Sanity check. *)
    ignore (tc_term env c_pure);
    ignore (tc_term env c_app);
  
    let ret =
      let expected_k = Util.arrow [S.mk_binder a; S.null_binder (S.bv_to_name a)] (S.mk_GTotal wp_a) in
  
negative.code: 
    (* If [binders] is [heap: Type], then this is [_: heap] *)
    let argument_bvs () =
      List.map (fun (bv, _) -> S.new_bv None (S.bv_to_name bv)) binders in
  
    let argument_binders () =
      List.map S.mk_binder (argument_bvs ()) in
  