Verification of Array, Record, and Pointer Operations in Pascal

A practical method is presented for automating in a uniform way the verification of Pascal programs that operate on the standard Pascal data structures Array, Record, and Pointer. New assertion language primitives are introduced for describing computational effects of operations on these data structures. Axioms defining the semantics of the new primitives are given. Proof rules for standard Pascal operations on data structures are then defined using the extended assertion language. An axiomatic rule for the Pascal storage allocation operation, NEW, is also given. These rulers have been implemented in the Stanford Pascal program verifier. Examples illustrating the verification of programs which operate on list structures implemented with pointers and records are discussed. These include programs with side effects.

[1]  Brian A. Wichmann,et al.  Rationale for the design of the Ada programming language , 1979, SIGP.

[2]  David C. Luckham,et al.  Program Verification and Verification Oriented Programming , 1977, IFIP Congress.

[3]  C LuckhamDavid,et al.  Verification of Array, Record, and Pointer Operations in Pascal , 1979 .

[4]  David C. Luckham,et al.  Verification of fairness in an implementation of monitors , 1976, ICSE '76.

[5]  L. Peter Deutsch An interactive program verifier , 1973 .

[6]  鈴木 則久 Automatic verification of programs with complex data structures , 1980 .

[7]  Norihisa Suzuki,et al.  Verifying programs by algebraic and logical reduction , 1975, Reliable Software.

[8]  Wolfgang Polak,et al.  An Exercise in Automatic Program Verification , 1979, IEEE Transactions on Software Engineering.

[9]  James C. King,et al.  A Program Verifier , 1971, IFIP Congress.

[10]  John McCarthy,et al.  Towards a Mathematical Science of Computation , 1962, IFIP Congress.

[11]  John F. Wakerly,et al.  The programming language PASCAL , 1979, Microprocessors and microsystems.

[12]  Butler W. Lampson,et al.  Proof rules for the programming language Euclid , 1978, Acta Informatica.

[13]  C. A. R. Hoare,et al.  An Axiomatic Definition of the Programming Language PASCAL , 1973, Acta Informatica.

[14]  D. C. Luckham,et al.  A methodology for verifying programs , 1975, Reliable Software.

[15]  David Jefferson,et al.  Verification Decidability of Presburger Array Programs , 1980, JACM.