Affiliation:
1. Oxford Univ., Oxford, UK
Abstract
Dijkstra's programming language is extended byspecification statements, which specify parts of a program “yet to be developed.” A weakest precondition semantics is given for these statements so that the extended language has a meaning as precise as the original.The goal is to improve thedevelopmentof programs, making it closer to manipulations within a single calculus. The extension does this by providing one semantic framework for specifications and programs alike: Developments begin with a program (a single specification statement) and end with a program (in the executable language). And the notion ofrefinementorsatisfaction, which normally relates a specification to its possible implementations, is automatically generalized to act between specifications and between programs as well.A surprising consequence of the extension is the appearance ofmiracles: program fragments that do not satisfy Dijkstra'sLaw of the Excluded Miracle. Uses for them are suggested.
Publisher
Association for Computing Machinery (ACM)
Reference19 articles.
1. A logic covering undefinedness in program proofs
2. DIJKSTRA E.W. A Discipline of Programming. Prentice-Hall Englewood Cliffs N.J. 1976. DIJKSTRA E.W. A Discipline of Programming. Prentice-Hall Englewood Cliffs N.J. 1976.
3. A new notion of encapsulation
Cited by
186 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. On the Relational Basis of Early R/G Work;Lecture Notes in Computer Science;2024
2. Less is more: refinement proofs for probabilistic proofs;2023 IEEE Symposium on Security and Privacy (SP);2023-05
3. Using cylindric algebra to support local variables in rely/guarantee concurrency;2023 IEEE/ACM 11th International Conference on Formal Methods in Software Engineering (FormaliSE);2023-05
4. Specifying and Reasoning About Shared-Variable Concurrency;Theories of Programming and Formal Methods;2023
5. Verified symbolic execution with Kripke specification monads (and no meta-programming);Proceedings of the ACM on Programming Languages;2022-08-29