6 papers
Foundational Constraint Solving for Expressive Refinement Typing
Jam Kabeer Ali Khan, Petros Markopoulos, Nico Lehmann +1
SMT-based program verifiers are hamstrung by two problems: expressiveness, because predictable verification restricts to the boundaries of SMT decidability, and trust, because the…
Plainbook: Data Science, in Plain Language
Luca de Alfaro, Mathis Aubert, Ranjit Jhala +2
Jupyter Notebooks have become widely adopted in data science, as they allow the sharing of reproducible computational analysis. They are, however, accessible only to people who und…
Verifying the Rust Standard Library
Byron Cook, Remi Delmas, Zyad Hassan +9
Rust's type system prevents many classes of memory errors, yet its standard library relies heavily on unsafe code whose correctness is validated through testing, including dynamic…
Complete first-order reasoning for functional programs
Adithya Murali, Lucas Peña, Ranjit Jhala +1
Several practical tools for automatically verifying functional programs (e.g., Liquid Haskell and Leon for Scala programs) rely on a heuristic based on unrolling recursive function…
Auditing Rust Crates Effectively
Lydia Zoghbi, David Thien, Ranjit Jhala +2
We introduce Cargo Scan, the first interactive program analysis tool designed to help developers audit third-party Rust code. Real systems written in Rust rely on thousands of tran…
Laurel: Unblocking Automated Verification with Large Language Models
Eric Mugnier, Emmanuel Anaya Gonzalez, Ranjit Jhala +2
Program verifiers such as Dafny automate proofs by outsourcing them to an SMT solver. This automation is not perfect, however, and the solver often requires hints in the form of as…