Our ability to build complex computer systems vastly exceeds our ability to understand them. Security vulnerabilities and bugs are examples of unintended and unanticipated consequences of seemingly simple and understood systems.
I want a tool that takes a piece of software and finds all of the bugs in it. I can’t find one that does the job so I am trying to make one. My paper with Elizabeth Polgreen, A Pyramid Of (Formal) Software Verification, explains how I view the problem and how it breaks into two parts: