  As a scientific programming language, Julia strives for performance but also
provides high-level productivity features. To avoid performance pathologies,
Julia users are expected to adhere to a coding discipline that enables
so-called type stability. Informally, a function is type stable if the type of
the output depends only on the types of the inputs, not their values. This
paper provides a formal definition of type stability as well as a stronger
property of type groundedness, shows that groundedness enables compiler
optimizations, and proves the compiler correct. We also perform a corpus
analysis to uncover how these type-related properties manifest in practice.
