Affiliation:
1. Cornell University, USA
2. IIT Kanpur, India
Abstract
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
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 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 Psi, an exact probabilistic symbolic inference engine, and Storm, a probabilistic model checker, and show that our method significantly outperforms both tools.
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,Software
Cited by
7 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Symbolic Execution for Quantum Error Correction Programs;Proceedings of the ACM on Programming Languages;2024-06-20
2. Concrete Constraint Guided Symbolic Execution;Proceedings of the IEEE/ACM 46th International Conference on Software Engineering;2024-04-12
3. 'Put the Car on the Stand';Proceedings of the Symposium on Computer Science and Law;2024-03-12
4. A Deductive Verification Infrastructure for Probabilistic Programs;Proceedings of the ACM on Programming Languages;2023-10-16
5. An Integrated Program Analysis Framework for Graduate Courses in Programming Languages and Software Engineering;2023 38th IEEE/ACM International Conference on Automated Software Engineering (ASE);2023-09-11