Front-end Additions and Fixes for Cava
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