一句话:在 Rocq 中机器化证明 d-separation 与受非干扰启发的语义定义等价,为实验设计验证提供语义基础。
本文关注科学实验设计中的形式验证:科学家可能遗漏混杂变量,而因果性的经典图条件 d-separation 虽可用于判断实验是否控制了足够多混杂变量,其正确性却缺乏编程语言社区标准的严格语义解释。作者受安全领域非干扰(noninterference)启发,提出一种新的语义定义,并证明它与 d-separation 精确重合。核心结果在 Rocq 中机器化验证,表明 d-separation 可由结构语义刻画,且不依赖概率假设。该刻画还说明,对每种实验设计质量的自动测试,相应方法可证伪实验背后的世界建模假设。
The design of scientific experiments deserves its own variation of formal verification to catch cases where scientists made important mistakes, such as forgetting to take confounding variables into account. One of the most fundamental underpinnings of science is causality , or what it means for interventions in the world to cause other outcomes, as formalized by computer scientists like Judea Pearl. However, these ideas had not previously been made rigorous to the standards of the programming-languages community, where one expects a (syntactic) program analysis to be proved sound with respect to a natural semantics. In the domain of causality, as the relevant “program analysis,” we focus on d -separation, a classic condition on graphs that can be used to decide when the design of an experiment controls for sufficiently many confounding variables, even though the reason that this condition works is often unintuitive. Our central result (mechanized in Rocq) is that d -separation exactly coincides with a novel semantic definition inspired by noninterference from the theory of security. This characterization provides a structural semantic foundation for d -separation and helps explain why the graph-theoretic condition is correct, independently of probabilistic assumptions. For each given automated test on the quality of an experiment design, our theorem justifies an associated method for falsifying the world-modeling hypothesis behind the experiment.
DOI 原文 · arXiv · PDF(开放获取) · DBLP
@article{ZhangLBJC26,
title = {Causality and Semantic Separation},
author = {Anna Zhang and Qinglan Luo and London Bielicke and Eunice Jun and Adam Chlipala},
journal = {Proceedings of the ACM on Programming Languages},
volume = {10},
number = {PLDI},
year = {2026},
doi = {10.1145/3808274}
}