anchor.diff:  
       | Tm_type _, Tm_type _
       | Tm_arrow _, Tm_arrow _ -> HeadMatch
  -
  -    | Tm_match _, Tm_match _ ->
  -    begin
  -      (* This flags causes a bunch of messages to be printed when `term_eq` fails,
  -       * useful to find the actual discrepancy. *)
  -      if debug env (Options.Other "RelDelta") then
  -          U.debug_term_eq := true;
  -      if U.term_eq t1 t2
  -      then FullMatch
  -      else MisMatch (None, None)
  -    end
   
       | Tm_app(head, _), Tm_app(head', _) -> head_matches env head head' |> head_match
       | Tm_app(head, _), _ -> head_matches env head t2 |> head_match
  
positive.code:     commit sol;
      {wl with ctr=wl.ctr+1}
  
  let solve_prob prob logical_guard uvis wl =
      def_check_prob "solve_prob.prob" prob;
      BU.iter_opt logical_guard (def_check_scoped "solve_prob.guard" prob);
      let conj_guard t g = match t, g with
  
negative.code:     if wl.tcenv.lax_universes
      then USolved wl
      else really_solve_universe_eq orig wl u1 u2
  
  (* This balances two lists.  Given (xs, f) (ys, g), it will
   * take a maximal same-length prefix from each list, getting
  