An Assessment of Techniques for Proving Program Correctness
ACM Computing Surveys (CSUR)
The synthesis of loop predicates
Communications of the ACM
An improved program-synthesizing algorithm and its correctness
Communications of the ACM
Systematic Programming: An Introduction
Systematic Programming: An Introduction
A Discipline of Programming
On automating the construction of programs.
On automating the construction of programs.
From program verification to program synthesis
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Hi-index | 0.00 |
The problem of automatically synthesizing programs from formal specifications can be stated as, “constructively prove that there exists a program P which transforms valid input into output satisfying the required output assertion.” If Prequires a loop, the proof will contain an induction. This is beyond the ability of current theorem provers and synthesis systems. In this paper, the loop invariant is used to reduce the problem of synthesizing loops to that of synthesizing three loop free sections — initialization, assignment to loop control variables, and assignment to all other program variables. The three sections are then assembled into a standard loop form, namely “(initialization) WHILE B DO (loop body) OD”. Second order theorem provers adequate for these subproblems have not yet been developed. Therefore, heuristics are presented for synthesizing the three sections. Several examples are presented.