A Natural Programming Calculus

We shall lay down a programming calculus in which we develop a methodology for reasoning about data and programs. Our language, L, is ordinary first order predicate logic. A subset of this language, Lp, is our programming language that can be run efficiently in PROLOG. The calculus consists of a natural deduction system that is used for deducing programs and a system for efficient computation of programs. The axioms of the calculus characterize the data structures. Definitions are used for program specifications and mappings between data structures. The programs are deduced from the axioms and the definitions. Examples of deduced programs are a LISP-program and a program that Burstall and Darlington could not obtain in their transformation system.