It is time for us to focus on sound analyses for our critical systems software--that is, we must focus on analyses that ensure the absence of defects of particular known types, ra...
Zachary R. Anderson, Eric A. Brewer, Jeremy Condit...
Heterogeneous systems, systems with multiple processors tailored for specialized tasks, are challenging programming environments. While it may be possible for domain experts to op...
Andrew Kerr, Gregory F. Diamos, Sudhakar Yalamanch...
Data refinement is a common approach to reasoning about programs, based on establishing that te program indeed satisfies all the required properties imposed by an intended abstract...
Ivana Filipovic, Peter W. O'Hearn, Noah Torp-Smith...
We develop a method for matching dynamic histories of program executions of two program versions. The matches produced can be useful in many applications including software piracy...
Concurrent programming errors arise when threads share data incorrectly. Programmers often avoid these errors by using synchronization to enforce a simple ownership policy: data i...
Jean-Phillipe Martin, Michael Hicks, Manuel Costa,...