anchor.diff:      let unknown = mk Tm_unknown None Range.dummyRange in
       Util.abs (S.binders_of_list [ a; c; the_a; the_c ]) (
         let l_ite = S.lid_as_fv Const.ite_lid (S.Delta_unfoldable 1) None in
  -      (* FIXME: this is using [Tm_unknown] because the arguments would be
  -       * painful to write. *)
         Util.mk_app c_lift2 (List.map S.as_arg [
  -        unknown; unknown; unknown; unknown;
  -        Util.mk_app (S.fv_to_tm l_ite) (List.map S.as_arg [
  -          S.bv_to_name c
  -        ])
  +        Util.mk_app (S.fv_to_tm l_ite) [S.as_arg (S.bv_to_name c)]
         ])
       ) ret in
   
  
positive.code:     let a1 = S.new_bv None (mk_gctx (S.bv_to_name a) (S.bv_to_name t1)) in
      let a2 = S.new_bv None (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 t3))))) in
      Util.abs (S.binders_of_list [ a; t1; t2; t3; f; a1; a2 ]) (
        Util.mk_app c_app (List.map S.as_arg [
          S.bv_to_name a;
          S.bv_to_name t2;
          S.bv_to_name t3;
          Util.mk_app c_app (List.map S.as_arg [
            S.bv_to_name a;
            S.bv_to_name t1;
            t_f';
            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 ]);
          S.bv_to_name a2 ])
      ) ret in
  
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) ->
  