This reminds me a lot of Pure (https://agraef.github.io/pure-lang/). What I liked about Pure is the symbolic rewrite + the Haskell-esque syntax with out the strictness + easy ffi.
I really do like how you have smoothly integrated this into Python. Though the symbolic pattern matching is well pretty amazing and make me think about things a little different now. You could probably implement something like this in Julia with it's macros and flexibility in manipulating the AST. I hate Python, but I'm forced to bow to the ecosystem.