If you're looking for a catch, I guess the issue is that the modeling domain is relatively simple, restricted to "mathematical models", i.e. no conditional-based control flow like while loops. Like systems like Jax, for loops are supported by simply unrolling the expression into something without control flow. This lets the resulting IR be relatively simple and then all of the math is easy to define, but of course means the domain for this is "math" and not "programs". That said, it's still large enough for things like Modelica models, which is a large enough domain for a lot of the algorithms I want to explore like automatic index reduction of DAEs.