| > I don't think you're under any obligation, I just think that not discussing prior art is a bad look. See [0] where our reliance on Dijkstra is transparent. > I don't see anything new about the application of these well-known ideas either. Especially nothing that could explain why Xr0 would be widely used, while Frama-C is extremely niche. Begin with the fact that Xr0 is written in C and feels like C. We're building it so that C programmers will be able to use it without explicitly learning about formal verification. > Proving (the correctness of code) is an inherently mathematical task. So if by "mathematician" you mean someone who does mathematics, then all of your users will be mathematicians. Absolutely true. But what I mean by "mathematician" is a self-conscious mathematician, or at least someone with a background in formal mathematics. (Edit: forgot to add link.) [0]: https://xr0.dev/dijkstra-paradox |
Mentioning that you're vaguely inspired by Dijkstra is not the same as discussing prior art. And it's not like there isn't enough prior art about "safe C" out there [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].
> Begin with the fact that Xr0 is written in C and feels like C. We're building it so that C programmers will be able to use it without explicitly learning about formal verification.
Most of the people interested in formally verifying their C code will already know about formal verification and absolutely don't care about whether Xr0 is written in C or not.
> But what I mean by "mathematician" is a self-conscious mathematician, or at least someone with a background in formal mathematics.
I'm doubtful Xr0 will be useful for someone without a background in formal verification.
To me, the whole project seems like vapourware. It currently works on an extremely limited subset of C. In fact, this subset is so limited that from a computation theory standpoint, the current capabilities of Xr0 are trivial. Supporting while loops (or general recursion) on the other hand is impossible (from a computation theory standpoint).
Even on this small subset of C it took me five minutes to get an out of memory error and a further five minutes to craft a C program with a double free that passes verification [10].
All this combined with a website that makes great promises about how awesome Xr0 is (or rather going to be) and handwavy explanations about how easy adding the missing features will be that don't hold up to any scrutiny. Dozens of similar projects exist, few of them work at all on non-trivial C programs and all of them require herculean effort (and are thus only used for safety critical software) to correctly annotate C code (often this includes rewriting parts of the code to make the annotations simpler or unnecessary). There is no discussion at all how Xr0 is going to solve the problems that killed these projects.
[0]: https://link.springer.com/chapter/10.1007/978-3-642-03359-9_...
[1]: https://link.springer.com/chapter/10.1007/978-3-540-71316-6_...
[2]: https://link.springer.com/chapter/10.1007/978-3-642-33826-7_...
[3]: https://ieeexplore.ieee.org/document/8543387
[4]: https://dl.acm.org/doi/10.1145/2594291.2594296
[5]: https://link.springer.com/chapter/10.1007/978-3-642-32347-8_...
[6]: https://link.springer.com/chapter/10.1007/978-3-642-20398-5_...
[7]: https://dl.acm.org/doi/10.1145/503272.503286
[8]: https://www.sciencedirect.com/science/article/pii/S157106611...
[9]: https://dl.acm.org/doi/abs/10.1145/3453483.3454036
[10]: https://pastebin.com/raw/JbzMj2Bg