Re:Programming Languages Going Above and Beyond
by anonzzzies on Thursday June 29, 2023 @11:19AM
(#36521582)
Yes, lot of formal verifications are (almost) free and most others are not. But if you at least take the free ones, why not…
Re:Programming Languages Going Above and Beyond
by lenkite on Thursday June 29, 2023 @01:51PM
(#36524054)
I wish something like Lamport's TLA+ (https://lamport.azurewebsites.net/tla/tla.html) was supported in modern language compilers - perhaps with annotations/macros and a mini formal DSL.
Re:Programming Languages Going Above and Beyond
by mrkeen on Thursday June 29, 2023 @02:10PM
(#36524413)
And types too :)
I know many words have been spilled over why it shouldn't have them, but I remain unconvinced.
I modelled a trivial traffic light system to make sure the cars and pedestrians didn't have "green" at the same time. And they didn't, because they had "green_light" at the same time. Oops!
Re:Programming Languages Going Above and Beyond
by abathologist on Thursday June 29, 2023 @02:43PM
(#36524876)
It's still in pretty early development, but you may be interested in https://github.com/informalsystems/quint
> It combines the robust theoretical basis of the Temporal Logic of Actions (TLA) with state-of-the-art static analysis and development tooling.
And it is typed ;)
Re:Programming Languages Going Above and Beyond
by Hermitian909 on Thursday June 29, 2023 @06:02PM
(#36527387)
It's a tooling problem. Nearly every comment I read about formal verification being overkill are about proposal to incorporate existing formal verification tools into existing workflows. It is not easy to get an organization to adopt TLA+ in a way that's useful for almost any problem.
Add a language feature like the above to TS and you'd see adoption overnight. Pretty much everyone is happy to let their build system add additional correctness guarantees if its fast enough.
Formal Verification tools allow you to write a specification in a common language, that can be checked by a tool. Every time the spec changes, you can instantly verify that all invariants still hold.