  High-level transformation languages like Rascal include expressive features
for manipulating large abstract syntax trees: first-class traversals,
expressive pattern matching, backtracking and generalized iterators. We present
the design and implementation of an abstract interpretation tool, Rabit, for
verifying inductive type and shape properties for transformations written in
such languages. We describe how to perform abstract interpretation based on
operational semantics, specifically focusing on the challenges arising when
analyzing the expressive traversals and pattern matching. Finally, we evaluate
Rabit on a series of transformations (normalization, desugaring, refactoring,
code generators, type inference, etc.) showing that we can effectively verify
stated properties.
