  This thesis proposes an advanced, generic and high-level code rewriting and
analysis system in the Julia programming language, providing applied equality
saturation in the presence of multiple dispatch and metaprogramming. We show
how our system can practically solve some challenging problems: Can programmers
implement their own high-level compiler optimizations for their domain-specific
scientific programs, without the requirement of them being compiler experts at
all? Can these optimizers be implemented by users in the same language and
inside the same programs they want to optimize, solving the two-language
problem? Can these compiler optimizers be written in a high-level fashion, as
equations, without the need to worry about the rewriting ordering? Thus, can
symbolic mathematics do high-level compiler optimizations or vice-versa?
