Proving Theorems about LISP Functions
Journal of the ACM (JACM)
Communications of the ACM
Communications of the ACM
Fixpoint approach to the theory of computation
Communications of the ACM
Inductive methods for proving properties of programs
Communications of the ACM
An axiomatic basis for computer programming
Communications of the ACM
Introduction to Mathematical Theory of Computation
Introduction to Mathematical Theory of Computation
First Order Semantics: A Natural Programming Logic for Recursively Defined Functions
First Order Semantics: A Natural Programming Logic for Recursively Defined Functions
Algorithmic specifications: a constructive specification method for abstract data types
ACM Transactions on Programming Languages and Systems (TOPLAS)
Paths: an abstract alternative to pointers
POPL '81 Proceedings of the 8th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A constructive alternative to axiomatic data type definitions
LFP '80 Proceedings of the 1980 ACM conference on LISP and functional programming
The nested rectangular array as a model of data
APL '79 Proceedings of the international conference on APL: part 1
Hi-index | 0.00 |
First Order Programming Logic is a simple, yet powerful formal system for reasoning about recursive programs. In its simplest form, it has one major limitation: it cannot establish any property of the least fixed point of a recursive program which is false for some other fixed point. To rectify this weakness, we present two intuitively distinct approaches to strengthening First Order Programming Logic and prove that either extension makes the logic relatively complete. In the process, we prove that the two approaches are formally equivalent. The relative completeness of the extended logic is significant because it suggests it can establish all "ordinary" properties (obviously we cannot escape the Godelian incompleteness inherent in any programming logic) of recursive programs including those which compute partial functions.The second contribution of this paper is to establish that First Order Programming Logic is applicable to iterative programs as well. In particular, we show that the intermittent assertions method--an informal proof method for iterative programs which has not been formalized--is conveniently formalized simply as sugared First Order Programming Logic applied to the recursive translations of iterative programs.