  We present a comprehensive language theoretic causality analysis framework
for explaining safety property violations in the setting of concurrent reactive
systems. Our framework allows us to uniformly express a number of causality
notions studied in the areas of artificial intelligence and formal methods, as
well as define new ones that are of potential interest in these areas.
Furthermore, our formalization provides means for reasoning about the
relationships between individual notions which have mostly been considered
independently in prior work; and allows us to judge the appropriateness of the
different definitions for various applications in system design. In particular,
we consider causality analysis notions for debugging, error resilience, and
liability resolution in concurrent reactive systems. Finally, we present
automata-based algorithms for computing various causal sets based on our
language-theoretic encoding, and derive the algorithmic complexities.
