Elements of causal inference: foundations and learning algorithms | Synapse