anchor.diff:    in
     check "wp_if_then_else" (Util.abs binders wp_if_then_else None);
   
  -  [], wp_if_then_else
  +  [], normalize wp_if_then_else
   
   let tc_eff_decl env0 (ed:Syntax.eff_decl) is_for_free =
     assert (ed.univs = []); //no explicit universe variables in the source; Q: But what about re-type-checking a program?
  
positive.code:    * definitions, both [binders] and [a] are opened. This means that macros
     * close over [binders] and [a], and this means that combinators do not expect
     * [binders] and [a] when applied. *)
  
    (* Consider the predicate transformer st_wp:
     *   let st_pre_h  (heap:Type)          = heap -> GTot Type0
  
negative.code:    * the context. *)
    let mk_ctx, mk_gctx, mk_gamma =
      let i = ref 0 in
      match (normalize wp_a).n with
      | Tm_arrow (wp_binders, comp) ->
          (fun t -> Util.arrow wp_binders { comp with n = Total t }),
          (fun t -> Util.arrow wp_binders { comp with n = GTotal t }),
  