anchor.diff:          //               (names_to_string fvs2);
           let uvars, occurs_ok, msg = occurs_check ctx_uv rhs in
           if not occurs_ok
  -        then giveup_or_defer env orig wl (Thunk.mkv <| "occurs-check failed: " ^ (Option.get msg))
  +        then giveup_or_defer env orig wl
  +               Deferred_occur_check_failed
  +               (Thunk.mkv <| "occurs-check failed: " ^ (Option.get msg))
           else if BU.set_is_subset_of fvs2 fvs1
           then let sol = mk_solution env lhs lhs_binders rhs in
                let wl = restrict_all_uvars env ctx_uv lhs_binders uvars wl in
  
positive.code:             else match solve_maybe_uinsts env orig head1 head2 wl with
                   | USolved wl -> k true wl //(solve_prob orig None [] wl)
                   | UFailed msg -> giveup env msg orig
                   | UDeferred wl -> k false (defer_lit "universe constraints" orig wl)
          in
          let nargs = List.length args1 in
          if nargs <> List.length args2
  
negative.code:                  solve env (solve_prob orig None sol wl)
  
            | _ ->
              giveup_or_defer env orig wl Deferred_flex_flex_nonpattern (Thunk.mkv "flex-flex: non-patterns")
  
  and solve_t' (env:Env.env) (problem:tprob) (wl:worklist) : solution =
      def_check_prob "solve_t'.1" (TProb problem);
  