Research questionHow can compiler intermediate representations preserve high-level abstractions in dynamically typed languages while keeping them optimizable?Strongly typed, low-level intermediate representations can be difficult to use for abstractions whose concrete types emerge during specialization. Lowering too early can leave high-level domain libraries outside compiler transformations.