DocumentCode
748252
Title
Constructive Methods in Program Verification
Author
Wegbreit, Ben
Author_Institution
Xerox Palo Alto Research Center
Issue
3
fYear
1977
fDate
5/1/1977 12:00:00 AM
Firstpage
193
Lastpage
209
Abstract
Most current approaches to mechanical program verification transform a program and its specifications into first-order formulas and try to prove these formulas valid. Since the first-order predicate calculus is not decidable, such approaches are inherently limited. This paper proposes an alternative approach to program verification: correctness proofs are constructively established by proof justifications written in an algorithmic notation. These proof justifications are written as part of the program, along with the executable code and correctness specifications. A notation is presented in which code, specifications, and justifications are interwoven. For example, if a program contains a specification 3x P(x), the program also contains a justification that exhibits the particulat value of x that makes P true. Analogously, justifications may be used to state how universally quantified formulas are to be instantiated when they are used as hypotheses. Programs so justifiled may be verified by proving quantifier-free formulas. Additional classes of justifications serve related ends. Formally, justifications reduce correctness to a decidable theory. Informally, justifications establish the connection between the executable code and correctness specifications, documenting the reasoning on which the correctness is based.
Keywords
Constructive program verification, first-order logic, instantiations, program verification, programming language design, programming languages, programming methodology, proof justifications, proving programs correct.; Calculus; Computer languages; Logic design; Logic programming; Programming profession; Specification languages; Testing; Writing; Constructive program verification, first-order logic, instantiations, program verification, programming language design, programming languages, programming methodology, proof justifications, proving programs correct.;
fLanguage
English
Journal_Title
Software Engineering, IEEE Transactions on
Publisher
ieee
ISSN
0098-5589
Type
jour
DOI
10.1109/TSE.1977.231129
Filename
1702428
Link To Document