Thank you!
The isomorphism algorithm started simple enough when I only needed to ensure that it wouldn't get exponential over the specific outputs of the levels. But once I introduced infinite loop detection that compares arbitrary execution states, it became much more involved. It was pretty fun to implement, actually!