一句话:提出概率分离逻辑 LINA,用两种分离合取分别刻画独立性与负相关性,并验证哈希数据结构等随机程序。
分析基于哈希的概率数据结构时,常需推理随机变量间的负相关性:某些桶元素增多时,其他桶往往减少。然而现有验证方法无法为随机程序建立这一性质。为此,作者设计了 LINA,一种用于推理负相关性的概率分离逻辑。该逻辑扩展了 bunched implications,引入独立性与负相关性两种分离合取,并采用非确定性的资源组合语义;利用负相关性的闭包性质,支持 Frame 式规则与单调操作规则,并给出可靠且完备的证明系统。作者通过验证基于哈希的数据结构和 balls-into-bins 过程的概率性质,展示了 LINA 的适用性。
Formal reasoning about hashing-based probabilistic data structures often requires reasoning about random variables where when one variable gets larger (such as the number of elements hashed into one bucket), the others tend to be smaller (like the number of elements hashed into the other buckets). This is an example of negative dependence , a generalization of probabilistic independence that has recently found interesting applications in algorithm design and machine learning. Despite the usefulness of negative dependence for the analyses of probabilistic data structures, existing verification methods cannot establish this property for randomized programs. To fill this gap, we design LINA, a probabilistic separation logic for reasoning about negative dependence. Following recent works on probabilistic separation logic using separating conjunction to reason about the probabilistic independence of random variables, we use separating conjunction to reason about negative dependence. Our assertion logic features two separating conjunctions, one for independence and one for negative dependence. We generalize the logic of bunched implications (BI) to support multiple separating conjunctions, and provide a sound and complete proof system. Notably, the semantics for separating conjunction relies on a non-deterministic , rather than partial, operation for combining resources. By drawing on closure properties for negative dependence, our program logic supports a Frame-like rule for negative dependence and monotone operations. We demonstrate how LINA can verify probabilistic properties of hash-based data structures and balls-into-bins processes.
@article{paperbot1565,
title = {A separation logic for negative dependence},
author = {Jialu Bao and Marco Gaboardi and Justin Hsu and Joseph Tassarotti},
journal = {Proceedings of the ACM on Programming Languages},
volume = {6},
number = {POPL},
year = {2022},
doi = {10.1145/3498719}
}