Estrest is a Python library that enables causal reasoning for the semantic models of programs.
Programs are modeled using event structures [1], which is a semantic model for concurrency, and the structural equations
framework of Halpern and Pearl [2] is used to check whether specific events satisfy the actual cause conditions of some effect in the model.
[1] Winskel, Glynn. "Event structure semantics for CCS and related languages." In International Colloquium on Automata, Languages, and Programming, pp. 561-576. Berlin, Heidelberg: Springer Berlin Heidelberg, 1982.
[2] Halpern, Joseph Y., and Judea Pearl. "Causes and explanations: A structural-model approach. Part I: Causes." The British journal for the philosophy of science (2005).