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 :
بازگشت