▲ | pron 7 days ago | |||||||||||||||||||||||||
But both Dafny and Lean (which are really hard to put in the same category [1]) are used even less than TLA+, and the problem of formally tying a spec to code exists only when you specify at a level that's much higher than the code, which is what you want most of the time because that's where you get the most bang for you buck. It's a little like saying that the resistance to blueprints is that a rolled blueprint makes a poor hammer. TLA+ is for when you have a 1MLOC database written in Java or a 100KLOC GC written in C++ and you want to make sure your design doesn't lead to lost data or to memory corruption/leak (or for some easier things, too). You certainly can't do that with Dafny, and while I guess you could do it in Lean (if you're masochistic and have months to spare), it wouldn't be in a way that's verifiably tied to the code. There is no tool that actually formally ties spec to code in any affordable way and at real software scale, and I think the reason people say they want what doesn't exist is precisely because they want to avoid the thinking that they'll have to do eventually anyway. [1]: Lean and TLA+ are sort-of similar, but Dafny is something else altogether. | ||||||||||||||||||||||||||
▲ | sirwhinesalot 7 days ago | parent | next [-] | |||||||||||||||||||||||||
Architectural blueprints are very precise. What gets built is a more detailed form of what is in the blueprint. That is not the case for the TLA+ spec and your 1MLOC Java Database. You hope with fingers crossed that you've implemented the design, but have you? I can measure that a physical wall has the same dimensions as specified in the blueprint. How do I know my program follows the TLA+ spec? I'm not being facetious, I think this is a huge issue. While Dafny might not be the answer we should strive to find a good way to do refinement. And the thing is, we can do it for hardware! Software should actually be easier, not harder. But software is too much of a wild west. That problem needs to be solved first. | ||||||||||||||||||||||||||
| ||||||||||||||||||||||||||
▲ | pjmlp 6 days ago | parent | prev [-] | |||||||||||||||||||||||||
Appreciation isn't the same as market share, formal proofs in general are pretty much inexistent in enterprise, unless there are legal requirements to do otherwise. I fail to see how you validate that TLA+ model is actually correctly mapped into the written Java code. | ||||||||||||||||||||||||||
|