anchor.diff:      delta_level: list<Env.delta_level>;  // Controls how much unfolding of definitions should be performed
       primitive_steps:list<primitive_step>;
       strong : bool;                       // under a binder
  +    memoize_lazy : bool
   }
   
   type branches = list<(pat * option<term> * term)>
  
positive.code:     List.fold_right
          (fun (binder_opt, closure) subst ->
              match binder_opt, closure with
              | Some b, Clos(env, term, memo, _) ->
                  // BU.print1 "++++++++++++Name in environment is %s" (Print.binder_to_string b);
                  let bv,_ = b in
                  if not (U.is_constructed_typ bv.sort FStar.Parser.Const.fstar_reflection_types_binder_lid)
  
negative.code:               begin match lookup_bvar env x with
                      | Univ _ -> failwith "Impossible: term variable is bound to a universe"
                      | Dummy -> t
                      | Clos(env, t0, _, _) -> closure_as_term cfg env t0
                end
  
             | Tm_app(head, args) ->
  