Implements several bug fixes and additional features for the front-end needed for the Cava benchmark.
Implements dynamic constant expressions, which are polynomials over the function's dynamic constants with rational coefficients. We support arbitrary addition, subtraction, and multiplication, division must be by only a single term to avoid having to do polynomial long division. We also handle substituting dynamic constants for other dynamic constant expressions which is necessary for type-checking function calls.
Adds intrinsic functions to the front-end language and handle type-checking