  Probabilistic programming is a powerful abstraction for statistical machine
learning. Applying static analysis methods to probabilistic programs could
serve to optimize the learning process, automatically verify properties of
models, and improve the programming interface for users. This field of static
analysis for probabilistic programming (SAPP) is young and unorganized,
consisting of a constellation of techniques with various goals and limitations.
The primary aim of this work is to synthesize the major contributions of the
SAPP field within an organizing structure and context. We provide technical
background for static analysis and probabilistic programming, suggest a
functional taxonomy for probabilistic programming languages, and analyze the
applicability of major ideas in the SAPP field. We conclude that, while current
static analysis techniques for probabilistic programs have practical
limitations, there are a number of future directions with high potential to
improve the state of statistical machine learning.
