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: 
    (* If [binders] is [heap: Type], then this is [_: heap] *)
    let argument_bvs () =
      List.map (fun (bv, _) -> S.null_bv (S.bv_to_name bv)) binders in
  
    let argument_binders () =
      List.map S.mk_binder (argument_bvs ()) in
  
negative.code:   let env = Env.push_bv env (S.new_bv None ed.signature) in
  
    if Env.debug env0 <| Options.Other "ED"
    then Util.print3 "Checking effect signature: %s %s : %s\n"
                          (Print.lid_to_string ed.mname)
                          (Print.binders_to_string " " ed.binders)
                          (Print.term_to_string ed.signature);
  
    (* A series of "macros" to automatically build WP's using combinators. All
     * these definitions are parameterized over the [binders] variable, which
  