Soteria: Efficient Symbolic Execution as a Functional Library
Sacha-\'Elie Ayoun, Opale Sj\"ostedt, Azalea Raad

TL;DR
Soteria introduces a functional library for building source-language specific symbolic execution engines directly, improving performance, accuracy, and feature support over traditional intermediate language-based approaches.
Contribution
It presents Soteria, a lightweight OCaml library enabling direct, source-language semantics-based symbolic execution engines, demonstrated with Rust and C, outperforming existing tools.
Findings
Soteria-based Rust engine supports Tree Borrows, a complex aliasing model.
Soteria C engine is compositional and competitive with state-of-the-art tools.
Theoretical foundations of Soteria are formalized and proven sound.
Abstract
Symbolic execution (SE) tools often rely on intermediate languages (ILs) to support multiple programming languages, promising reusability and efficiency. In practice, this approach introduces trade-offs between performance, accuracy, and language feature support. We argue that building SE engines \emph{directly} for each source language is both simpler and more effective. We present Soteria, a lightweight OCaml library for writing SE engines in a functional style, without compromising on performance, accuracy or feature support. Soteria enables developers to construct SE engines that operate directly over source-language semantics, offering \emph{configurability}, compositional reasoning, and ease of implementation. Using Soteria, we develop Soteria, the \emph{first} Rust SE engine supporting Tree Borrows (the intricate aliasing model of Rust), and Soteria,…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
