anchor.diff:          env []
   
   let reduce_primops cfg env stack tm =
  -    if not <| List.contains Primops cfg.steps
  +    if not <| cfg.steps.primops
       then tm
       else begin
            let head, args = U.head_and_args tm in
  
positive.code:                 | Univ _ -> failwith "Impossible: term variable is bound to a universe"
                  | Dummy -> failwith "Term variable not found"
                  | Clos(env, t0, r, fix) ->
                     if not fix || not (List.contains (Exclude Zeta) cfg.steps)
                     then match !r with
                          | Some (env, t') ->
                              log cfg  (fun () -> BU.print2 "Lazy hit: %s cached to %s\n" (Print.term_to_string t) (Print.term_to_string t'));
  
negative.code:                  norm cfg env' (Let(env, bs, lb, t.pos)::stack) body
  
            | Tm_let((true, lbs), body)
                  when cfg.steps.compress_uvars
                    || ((not cfg.steps.zeta) &&
                        cfg.steps.pure_subterms_within_computations) -> //no fixpoint reduction allowed
              let lbs, body = Subst.open_let_rec lbs body in
              let lbs = List.map (fun lb ->
                  let ty = norm cfg env [] lb.lbtyp in
  