anchor.diff:      let f = S.new_bv None t_f in
       let a1 = S.new_bv None (mk_gctx (S.bv_to_name a) (S.bv_to_name t1)) in
       let ret = Some (Inl (Util.lcomp_of_comp (mk_Total (mk_gctx (S.bv_to_name a) (S.bv_to_name t2))))) in
  -    Util.abs (S.binders_of_list [ a; t1; t2; f; a1 ]) (
  -      Util.mk_app c_app (List.map S.as_arg [
  -        S.bv_to_name a;
  -        S.bv_to_name t1;
  -        S.bv_to_name t2;
  -        Util.mk_app c_pure (List.map S.as_arg [ S.bv_to_name a; t_f; S.bv_to_name f]);
  -        S.bv_to_name a1 ])
  +    Util.abs (binders_of_list [ a, true; t1, true; t2, true; f, false; a1, false ]) (
  +      Util.mk_app c_app [S.as_arg (
  +        Util.mk_app c_pure [ S.as_arg (S.bv_to_name f) ])]
       ) ret in
   
   
  
positive.code:   let mk_gctx (a: S.term) (e: S.term): S.term =
      Util.arrow ([ S.null_binder (mk_post a) ] @ binders) (S.mk_GTotal e) in
  
    (* val st2_pure : #heap:Type -> #a:Type -> #t:Type -> x:t ->
         Tot (st2_ctx heap a t)
       let st2_pure #heap #a #t x = fun _post _h -> x *)
  
negative.code:       in
        Util.abs inner_binders inner_body ret
      in
      Util.abs (binders_of_list [ a, true; t1, true; t2, true; l, false; r, false ]) outer_body ret in
  
    (* val st2_liftGA1 : #heap:Type -> #a:Type -> #t1:Type -> #t2:Type ->
                         f : (t1 -> GTot t2) ->
  