The trouble we always encounter is, people *also* want the software to *do* something.
No one has figured out how to make software that always does the right thing, never does the wrong thing, and is still useful enough that people want it.
@bob_zim, I would bet money that no system which does something of interest to @stilgherrian has been formally verified to the complete degree you say.
Which is why my description includes the requirement that the software does something people are interested in. Yes, there might exist formally-verified systems with no detectable bugs; but likely that doesn't describe any system we directly use.
@bob_zim @bignose @stilgherrian
seL4 is formally verified and went almost 24 hours between being open sourced and the first security vulnerability being reported. That one was because the verification didn't cover all of the code, but seL4's verification was also done against a quiet simplified model of an MMU, so there may be other soundness issues.
My favourite verification story is when some colleagues adopted EverCrypt in a previous job. EverCrypt is verified against a bunch of properties (including constant time execution). It is also proven to be memory safe. They expressed temporal safety as a property that no object is accessed after it was freed. It turned out that the codebase complied with this trivially: it never freed memory.
Oh, and the proofs treat as axiomatic that the C code calling the APIs has no memory safety bugs.