Communications of the ACM
Communications of the ACM
Communications of the ACM
An axiomatic basis for computer programming
Communications of the ACM
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
A Discipline of Programming
Programming as an evolutionary process
Language Hierarchies and Interfaces, International Summer School
Programming as an evolutionary process
ICSE '76 Proceedings of the 2nd international conference on Software engineering
Primitive recursive program transformation
POPL '76 Proceedings of the 3rd ACM SIGACT-SIGPLAN symposium on Principles on programming languages
Recursion As an Effective Step in Program Development
ACM Transactions on Programming Languages and Systems (TOPLAS)
ANNA: Towards a language for annotating Ada programs
SIGPLAN '80 Proceedings of the ACM-SIGPLAN symposium on The ADA programming language
ANNA: towards a language for annotating Ada programs
SIGPLAN '80 Proceedings of the ACM-SIGPLAN symposium on Ada programming language
Definite Descriptions and Dijkstra's Odd Powers of Odd Integers Problem
Electronic Notes in Theoretical Computer Science (ENTCS)
Hi-index | 0.00 |
Two approaches to the development of efficient and correct iterative programs are contrasted: the construction of an iterative program and a proof of its correctness using invariant assertions of loops, and the construction and proof of a recursive program with a subsequent transformation into an iterative version by schematically applying suitable recursion removal rules. The connection between the approaches is demonstrated by augmenting such transformation rules by inductive assertions. It is argued that the latter approach to program development is superior since the correctness proof of a recursive program is easier in most cases. Considerable verification overhead can be avoided this way, in particular, some difficulties with the interaction of successive loops and their associated invariants.