AST canonicalisation in arithmetic solvers: https://blog.plover.com/math/24-puzzle-2.html (interesting, I've only seen canonicalisation in compilers previously)
miniblog.
Related Posts
Nim's term-rewriting macros are wild: https://nim-lang.org/docs/manual.html#term-rewriting-macros (you can leverage Nim's side-effect analysis or enforce canonicalisation!)