With the introduction of PEP 484 type annotations, Python has made a big step towards making programs safer by statically ruling out type errors. But what if we go five steps further and prove that our programs don't crash for any reason at all and, moreover, do what we want them to do? In this talk, I will give an informal overview about formal verification, what it is and what it can (and can't) do. I'll show how to use the automated verifier Nagini to express what a program is supposed to do and prove that it does.
With the introduction of PEP 484 type annotations, Python has made a big step towards making programs safer by statically ruling out type errors. But what if we go five steps further and prove that our programs don't crash for any reason at all and, moreover, do what we want them to do? In this talk, I will give an informal overview about formal verification, what it is and what it can (and can't) do. I'll show how to use the automated verifier Nagini to express what a program is supposed to do and prove that it does.