Software correctness is becoming an increasingly important concern as our society grows more and more reliant on computer systems. Even the simplest of software errors can have devastating financial or security consequences. How can we find errors in real-world applications? How can we guarantee that such errors don't exist? To even begin to answer these questions we need a specification: a description of what it means for a piece of code to be correct, stated either explicitly (e.g. my private data are never leaked to third parties) or implicitly (e.g. this code will not terminate with an uncaught exception).
In this talk, I will discuss efficient ways to debug and reason about software and specifications, focusing on two techniques and their interplay: property-based testing and mechanized formal verification. Testing can quickly uncover errors in complex software, but it cannot guarantee their absence. Formal verification provides strong correctness guarantees, but is still very expensive in time and effort.
Together, they are a match made in heaven.
Leonidas Lampropoulos is a Victor Basili postdoctoral fellow jointly between UMD and UPenn, under the supervision of Prof. Michael Hicks and Prof. Benjamin Pierce. Before that, he got his Ph.D. at the University of Pennsylvania, advised by Prof. Pierce. His research interests lie in programming languages, with an emphasis on software correctness through both random testing and mechanized verification. He is the principal author of the fourth volume in the popular Software Foundations series of online textbooks: "QuickChick: Property-Based
Testing in Coq".