论文标题
随机程序的符号执行
Symbolic Execution for Randomized Programs
论文作者
论文摘要
我们为可以绘制随机样本的程序提出了符号执行方法。与现有工作相反,我们的方法可以验证具有未知输入的随机程序,并且可以证明对所有可能的输入都普遍量化的概率属性。我们的技术通过新的\ emph {概率符号变量}来增强标准符号执行,该类别代表随机绘制的结果,计算符号表达式代表了采用单个路径的概率。我们在\ textsc {klee}符号执行引擎以及多个优化之外实现了我们的方法,并使用它来证明有关概率和预期值的属性,用于在C ++中编写的一系列具有挑战性的案例研究,包括FreivalDS的算法,随机QuickSort,以及随机的属性属性测试algorithm for Monoticinistilm。我们根据\ textsc {psi}评估我们的方法,这是一种确切的概率符号推理引擎,\ textsc {storm {storm}(概率模型检查器),并表明我们的方法显着胜过这两个工具。
We propose a symbolic execution method for programs that can draw random samples. In contrast to existing work, our method can verify randomized programs with unknown inputs and can prove probabilistic properties that universally quantify over all possible inputs. Our technique augments standard symbolic execution with a new class of \emph{probabilistic symbolic variables}, which represent the results of random draws, and computes symbolic expressions representing the probability of taking individual paths. We implement our method on top of the \textsc{KLEE} symbolic execution engine alongside multiple optimizations and use it to prove properties about probabilities and expected values for a range of challenging case studies written in C++, including Freivalds' algorithm, randomized quicksort, and a randomized property-testing algorithm for monotonicity. We evaluate our method against \textsc{Psi}, an exact probabilistic symbolic inference engine, and \textsc{Storm}, a probabilistic model checker, and show that our method significantly outperforms both tools.