Algorithmic Software Verification
Date and Time
Monday, March 8, 2010 - 4:30pm to 5:30pm
Computer Science Small Auditorium (Room 105)
CS Department Colloquium Series
Software is everywhere, and yet, extremely unreliable. One key to reliability is the design of cost-effective techniques whereby developers can formally specify essential properties of their code, and, machines can rigorously verify that the properties hold, or demonstrate corner cases where they fail. In this talk, we describe two such techniques. First, a scheme that uses logical predicates and theorem provers to automatically compute safety proofs. Second, an approach that uses random walks to find liveness bugs in distributed systems. We describe the key algorithms underlying these approaches and the resulting tools that have helped verify and find subtle defects in a variety of complex software.