anchor.diff:  type stack = list<stack_elt>
   
   let mk t r = mk t None r
  -let set_memo (r:memo<'a>) (t:'a) =
  -  match !r with
  +let set_memo cfg (r:memo<'a>) (t:'a) =
  +  if cfg.memoize_lazy then
  +    match !r with
       | Some _ -> failwith "Unexpected set_memo: thunk already evaluated"
       | None -> r := Some t
   
  
positive.code:     rebuild cfg env stack t
  
    | MemoLazy r::stack ->
      set_memo r (env, t);
      log cfg  (fun () -> BU.print1 "\tSet memo %s\n" (Print.term_to_string t));
      rebuild cfg env stack t
  
  
negative.code: and ghost_to_pure_aux cfg env c =
      let norm t =
          norm ({cfg with steps=[Eager_unfolding; UnfoldUntil Delta_constant; AllowUnboundUniverses; EraseUniverses];
                          delta_level=[Unfold Delta_constant];
                          memoize_lazy=false}) env [] t in
      let non_info t = non_informative (norm t) in
      match c.n with
      | Total _ -> c
  