|
|
|
|
|
by lawfulcactus
2263 days ago
|
|
So, I think what you're missing here is that the 'verification' is a formal specification about the behavior of the kernel, along with a set of proofs about that specification. This is vastly simplified (there are multiple levels of specification, last I checked), but that's the general idea. It's possible to have your compiler automatically derive the specification from your code (and, indeed, the seL4 people have written a Rust-like language called Cogent that does this), but formal verification inherently involves an understanding of what your code is /intended/ to do, and proving that it /does/. The compiler only has information about what it /does/, so it can only generate a specification that describes this. Information about your high-level intentions for the code has to be concretized somewhere, while ensuring that the spec conforms to it-- that's the job of the proof engineers. |
|
From my naive standpoint: input, output, side-effect, time
What this is missing is a formal statement that says "increases the value of the input by one" -> except you accept the function body as formal statement.Thanks for all the answers here, I guess I'm going to look for some more reading material.