anchor.diff:  
     (* 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
  +    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
  
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:              ; trivial     =op ed.trivial } in
     ed, a, wp
  
  let jonathan_temp_hack = ref 0
  
  let tc_eff_decl env0 (ed:Syntax.eff_decl)  =
    assert (ed.univs = []); //no explicit universe variables in the source; Q: But what about re-type-checking a program?
    let binders_un, signature_un = SS.open_term ed.binders ed.signature in
  