Proving gypsy programs

Program verification applies formal understanding of programming language semantics to the practical problem of constructing reliable software. The programming language Gypsy and the Gypsy Verification Environment, a programming environment that supports development of programs, specifications, and proofs, represent significant steps in making the program verification technology available for practical use. The purpose of this dissertation is to specify clearly the meaning of Gypsy programs, and the means by which they are proven. The semantics are presented in a "semi-formal" way, so that they are more accessible to the verification practitioner, than would be more formal, mathematical semantics. First an operational semantics for a subset of Gypsy is presented. Then this model is extended to cover more complex features of the language. Using the execution semantics as the underlying conceptual base, we proceed to present the mechanisms used to generate verification conditions for the full Gypsy language, including data abstraction, concurrent programming, and exception handling.

[1]  SIDNEY L. HANTLER,et al.  An Introduction to Proving the Correctness of Programs , 1976, CSUR.

[2]  Lawrence Robinson,et al.  SPECIAL Reference Manual. , 1977 .

[3]  J. Meigs,et al.  WHO Technical Report , 1954, The Yale Journal of Biology and Medicine.

[4]  Per Brinch Hansen,et al.  Operating System Principles , 1973 .

[5]  Steven M German Verifying the Absence of Common Runtime Errors in Computer Programs , 1981 .

[6]  Richard Lee Sites,et al.  Proving that computer programs terminate cleanly. , 1974 .

[7]  Lawrence Robinson,et al.  On attaining reliable software for a secure operating system , 1975 .

[8]  Ralph L. London,et al.  A view of program verification , 1975, Reliable Software.

[9]  C. A. R. Hoare,et al.  Monitors: an operating system structuring concept , 1974, CACM.

[10]  David R. Musser,et al.  An Overview of AFFIRM: A Specification and Verification System , 1980, IFIP Congress.

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

[12]  Ellis Horowitz,et al.  Some extensions to algebraic specifications , 1977, Language Design for Reliable Software.

[13]  John McCarthy,et al.  A basis for a mathematical theory of computation, preliminary report , 1899, IRE-AIEE-ACM '61 (Western).

[14]  Ben DiVito A mechanical verification of the Alternating Bit Protocol , 1981, SOEN.

[15]  David C. Luckham,et al.  A methodology for verifying programs , 1975 .

[16]  Mark Steven Moriconi,et al.  A system for incrementally designing and verifying programs. , 1977 .

[17]  Ifail,et al.  An example , 2020, A Psychoanalytical-Historical Perspective on Capitalism and Politics.

[18]  Raymond T. Yeh,et al.  Proceedings of the international conference on Reliable software , 1975 .

[19]  Richard J. Lipton,et al.  Social processes and proofs of theorems and programs , 1977, POPL.

[20]  Donald Irvin Good,et al.  Toward a man-machine system for proving program correctness , 1970 .

[21]  Christopher Strachey,et al.  A theory of programming language semantics , 1976 .

[22]  Karl N. Levitt,et al.  Greatest Common Divisor of n Integers and Multipliers (Certification of Algorithm 386) , 1973, Commun. ACM.

[23]  Wolfgang Heinz Polak Theory of compiler specification and verification , 1980 .

[24]  D. Knuth,et al.  Simple Word Problems in Universal Algebras , 1983 .

[25]  Lawrence Robinson,et al.  Proof techniques for hierarchically structured programs , 1977, CACM.

[26]  Robert S. Boyer,et al.  Proving Theorems about LISP Functions , 1973, JACM.

[27]  Edsger W. Dijkstra,et al.  A constructive approach to the problem of program correctness , 1968 .

[28]  John B. Goodenough,et al.  Exception handling: issues and a proposed notation , 1975, CACM.

[29]  David Lorge Parnas,et al.  A technique for software module specification with examples , 1972, CACM.

[30]  Robert S. Boyer,et al.  The Correctness Problem in Computer Science , 1982 .

[31]  Jacob Palme SIMULA as a tool for extensible program products , 1974, SIGP.

[32]  Dan Craigen Ottawa Euclid and EVES: A Status Report , 1984, 1984 IEEE Symposium on Security and Privacy.

[33]  Frank G. Pagan,et al.  Formal Specification of Programming Languages: A Panoramic Primer , 1981 .

[34]  R. Lathe Phd by thesis , 1988, Nature.

[35]  Daniel Schwabe,et al.  Specification and Verification of Communication Protocols in AFFIRM Using State Transition Models , 1982, IEEE Transactions on Software Engineering.

[36]  Niklaus Wirth,et al.  Systematic Programming: An Introduction , 1974 .

[37]  D. I. Good,et al.  An interactive program verification system , 1975, IEEE Transactions on Software Engineering.

[38]  John Mchugh,et al.  Towards the Generation of Efficient Code from Verified Programs , 1983 .

[39]  J. J. Horning,et al.  Report on the programming language Euclid , 1977, SIGP.

[40]  H. K. Berg Formal methods of program verification and specification , 1982 .

[41]  John McCarthy,et al.  LISP 1.5 Programmer's Manual , 1962 .

[42]  Willem P. de Roever,et al.  A Proof System for Communicating Sequential Processes , 1980, ACM Trans. Program. Lang. Syst..

[43]  David C. Luckham,et al.  Ada exception handling: an axiomatic approach , 1980, TOPL.

[44]  M. F.,et al.  Bibliography , 1985, Experimental Gerontology.

[45]  Donald I. Good,et al.  Mechanical proofs about computer programs , 1984, Philosophical Transactions of the Royal Society of London. Series A, Mathematical and Physical Sciences.

[46]  Jeffrey D. Ullman,et al.  Formal languages and their relation to automata , 1969, Addison-Wesley series in computer science and information processing.

[47]  Susan S. Owicki,et al.  Axiomatic Proof Techniques for Parallel Programs , 1975, Outstanding Dissertations in the Computer Sciences.

[48]  D. Evelyn,et al.  Proving Programs Correct , 1979 .

[49]  Donald I. Good,et al.  Principles of proving concurrent programs in Gypsy , 1979, POPL '79.

[50]  Robert S. Boyer,et al.  A Verification Condition Generator for FORTRAN. , 1980 .

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

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

[53]  Donald I. Good,et al.  General Message Flow Modulator , 1984 .

[54]  David Gries Programming Methodology: A Collection of Articles by Members of IFIP WG 2.3 , 1978 .

[55]  Benedetto Lorenzo Di Vito,et al.  Verification of communications protocols and abstract process models , 1982 .

[56]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[57]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[58]  Joseph E. Stoy,et al.  Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory , 1981 .