anchor.diff:    t
   
   // A helper to check that the terms elaborated by DMFF are well-typed
  -let recheck_debug s env t =
  +let recheck_debug s env t :term =
     if Env.debug env (Options.Other "ED") then
       BU.print2 "Term has been %s-transformed to:\n%s\n----------\n" s (Print.term_to_string t);
     let t', _, _ = tc_term env t in
     if Env.debug env (Options.Other "ED") then
       BU.print1 "Re-checked; got:\n%s\n----------\n" (Print.term_to_string t');
  -  // Return the original term (without universes unification variables);
  -  // because [tc_eff_decl] will take care of these
  -  t
  +  t'
   
   
   let check_and_gen env t k =
  
positive.code:     let binders = [ S.mk_binder a; S.mk_binder wp ] in
      U.abs binders (DMFF.trans_F dmff_env (mk (Tm_app (repr, [ S.bv_to_name a, S.as_implicit false ]))) (S.bv_to_name wp)) None
    in
    let repr = recheck_debug "FC" env repr in
    let repr = register "repr" repr in
  
    (* We are still lacking a principled way to generate pre/post condition *)
  
negative.code: 
    let dmff_env = DMFF.empty env (tc_constant env Range.dummyRange) in
    let wp_type = DMFF.star_type dmff_env repr in
    let _ = recheck_debug "*" env wp_type in
    let wp_a = N.normalize [ N.Beta ] env (mk (Tm_app (wp_type, [ (S.bv_to_name a, S.as_implicit false) ]))) in
  
    // Building: [a -> wp a -> Effect]
  