anchor.diff:                               | Some ats, Some ats' -> BU.for_some (fun at -> BU.for_some (U.attr_eq at) ats') ats
                                | _, _ -> false)))
                    in
  -                 log cfg (fun () -> BU.print3 ">>> For %s (%s), should_delta = %s\n"
  +                 log cfg (fun () -> 
  +                     // printfn "cfg.delta_level = %A" cfg.delta_level;
  +                     BU.print3 ">>> For %s (%s), should_delta = %s\n"
                                    (Print.term_to_string t)
                                    (Range.string_of_range t.pos)
                                    (string_of_bool should_delta));
  
positive.code:     let t = S.extend_app head (t,aq) None r in
      rebuild cfg env stack t
  
    | Match(env, branches, r) :: stack ->
      log cfg  (fun () -> BU.print1 "Rebuilding with match, scrutinee is %s ...\n" (Print.term_to_string t));
      //the scrutinee is always guaranteed to be a pure or ghost term
      //see tc.fs, the case of Tm_match and the comment related to issue #594
  
negative.code:             end
  
            | Tm_match(head, branches) ->
              let stack = Match(env, branches, cfg, t.pos)::stack in
              let cfg = { cfg with steps={cfg.steps with weak=true; hnf=true} } in
              norm cfg env stack head
  
            | Tm_let((b, lbs), lbody) when is_top_level lbs && cfg.steps.compress_uvars ->
  