anchor.diff:      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
  
positive.code:         let t1 = force_refinement <| base_and_refinement env t1 in
          solve_t env ({problem with lhs=t1}) wl
  
        | Tm_match _, _
        | Tm_uinst _, _
        | Tm_name _, _
        | Tm_constant _, _
        | Tm_fvar _, _
        | Tm_app _, _
        | _, Tm_match _
        | _, Tm_uinst _
        | _, Tm_name _
        | _, Tm_constant _
  
negative.code: 
      | Tm_type _, Tm_type _
      | Tm_arrow _, Tm_arrow _ -> HeadMatch
  
      | Tm_app(head, _), Tm_app(head', _) -> head_matches env head head' |> head_match
      | Tm_app(head, _), _ -> head_matches env head t2 |> head_match
  