An Axiomatic Basis for Computer Programming (1969) [pdf]
cs.toronto.edu
cs.toronto.edu
According to Pierce's Types and Programming Languages, axiomatic semantics of the type that Hoare pioneered are not found as useful today as operational semantics. Is that (still) true?
Are the major approaches (operational, denotational, axiomatic) pretty much solidified now, or are there significant new efforts at finding better overall formalizing frameworks?
When trying to make a better framework for formalising computer programs, just make a better framework for formalising math first.
Ok, let me put it this way: Math is not formal. But, formality has its advantages, so what I would like to see is a framework that, while being formal, still allows formulating ideas just as a mathematician would. Kind of like envisioned here: https://www.practal.com
So, yes, there are some math formalities for processes. No, they probably don't help in finding new processes as much as you'd think. Despite being quite good at understanding existing processes through formal exploration.
The closest thing to it I've seen is TLA+ but holy fatcats is it unwieldy.
[1]https://vst.cs.princeton.edu/veric/
[2]excludes setjmp/longjmp, unstructured switch statements, goto and maybe a few other moderately exotic constructions.
{ pre(L) } S; { P }
------------------------
{ pre(L) } L: S; { P }
{ pre(L) } goto L; { false }
You just have to use the same precondition pre(L) for every mention of the label L.Discussed (barely) at the time:
Retrospective: An Axiomatic Basis for Computer Programming - https://news.ycombinator.com/item?id=905176 - Oct 2009 (1 comment)
After getting the gist of the above, reading Bertrand Meyer's Design by Contract and Applying Design by Contract will clarify on how to apply the ideas to "real" systems.
Thanks, I have asked dang to update the link.