| ▲ | jandrewrogers 2 days ago | ||||||||||||||||||||||
A challenge in high-reliability software is that the systems they are running on top of have few reliable properties. Even if you formally verify some code, you have to write vastly more code to deal with the possibility that the invariants suddenly change at runtime due to an idiosyncratic failure of the environment where that formally verified code runs. This is one of the real limits of formal verification. Defects or subtle inconsistencies in hardware are not that uncommon. This is mitigated to a some extent by using assertions in release builds but this has significant limitations. | |||||||||||||||||||||||
| ▲ | pydry 2 days ago | parent | next [-] | ||||||||||||||||||||||
yeah, I find when I write most software and am careful with testing that most of the bugs break down like this: * 49% : specification error - wrong thing built in the right way * 49% : bug involving something the software integrates with (e.g. 3rd party library, UI, database, API endpoint) * 2% : code bugs formal verification won't eliminate that 2%. it might get it down to 1%. there are still two enormous elephants in the room. this is why everyone talks about it and nobody does it. | |||||||||||||||||||||||
| |||||||||||||||||||||||
| ▲ | kodoman 2 days ago | parent | prev [-] | ||||||||||||||||||||||
> A challenge in high-reliability software is that the systems they are running on top of have few reliable properties. I don't dispute this, and is infact related directly to my point, it seems that people are reading my comment as formal verification is a Panacea, I was only trying to point out that are primitives and abstractions provided by operating systems as well as programming languages are one major area that stops one from writing a formal spec. Real formal verification is very very hard. You do seem to miss the point that I am saying many of these subtle inconsistencies can be still complex but encoded into a formal model and I was showing how the file system abstraction adds it's own complexities. Operating systems probably would be one thing that could be a massive project to undertake but would be worth it. We already have a formally verified micro kernel sel4 that proves lots of useful features and as you point out hardware issues an important thing at this level of correctness and sel4 simply assumes certain models for this. | |||||||||||||||||||||||
| |||||||||||||||||||||||