In object-oriented programming, unique permissions to object references are useful for checking correctness properties such as consistency of typestate and noninterference of conc...
Karl Naden, Robert Bocchino, Jonathan Aldrich, Kev...
Data races are among the most reliable indicators of programming errors in concurrent software. For at least two decades, Lamport’s happens-before (HB) relation has served as th...
Yannis Smaragdakis, Jacob Evans, Caitlin Sadowski,...
Interpolation is an important technique in verification and static analysis of programs. In particular, interpolants extracted from proofs of various properties are used in invar...
Gradual typing lets programmers evolve their dynamically typed programs by gradually adding explicit type annotations, which confer benefits like improved performance and fewer r...
Despite recent successes, large-scale proof development within proof assistants remains an arcane art that is extremely timeconsuming. We argue that this can be attributed to two ...