Yeah, the speed of the current mechanics code seems to be fine, at least with the cache on. I think it was switching to `zip_longest` in `sympy.core._aresame` rather than doing list comprehension.