Reasoning about Procedure Calls with Repeated Arguments and the Reference-Value Distinction

2002 CR Categories: D.2.1 [Software Engineering] Requirements/Specifications languages; D.2.4 [Software Engineering] Software/Program Verification correctness proofs, formal methods, programming by contract, reliability; D.3.1 [Programming Languages] Formal Definitions and Theory semantics; D.3.3 [Programming Languages] Language Constructs and Features Procedures, functions, and subroutines; F.3.1 [Logics and Meanings of Programs] Specifying and Verifying and Reasoning about Programs Assertions, logics of programs, preand postconditions, specification techniques; F.3.3 [Logics and Meanings of Programs] Studies of Program Constructs Functional constructs, object-oriented constructs.

[1]  Bruce W. Weide,et al.  Experience report: using RESOLVE/C++ for commercial software , 2000, SIGSOFT '00/FSE-8.

[2]  Gary T. Leavens Modular specification and verification of object-oriented programs , 1991, IEEE Software.

[3]  Bertrand Meyer,et al.  Object-oriented software construction (2nd ed.) , 1997 .

[4]  Robert Cartwright,et al.  Unrestricted procedure calls in Hoare's logic , 1978, POPL '78.

[5]  K. Rustan M. Leino,et al.  ESC/Java User's Manual , 2000 .

[6]  John Tang Boyland,et al.  Alias burying: Unique variables without destructive reads , 2001, Softw. Pract. Exp..

[7]  Matthias Felleisen,et al.  Parameter-passing and the lambda calculus , 1991, POPL '91.

[8]  Noam Rinetzky,et al.  Interprocedural Shape Analysis for Recursive Programs , 2001, CC.

[9]  Peter Müller,et al.  Modular Specification and Verification of Object-Oriented Programs , 2002, Lecture Notes in Computer Science.

[10]  Stephen A. Cook,et al.  Soundness and Completeness of an Axiom System for Program Verification , 1978, SIAM J. Comput..

[11]  Charles Antony Richard Hoare,et al.  Hints on programming language design. , 1973 .

[12]  Philip Wadler,et al.  Linear Types can Change the World! , 1990, Programming Concepts and Methods.

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

[14]  Gary T. Leavens,et al.  Alias-free Parameters in C for Better Reasoning and Optimization , 2001 .

[15]  Henry G. Baker,et al.  Lively linear Lisp: “look ma, no garbage!” , 1992, SIGP.

[16]  Gregory Kulczycki,et al.  Component Technology for Pointers: Why and How , 2003 .

[17]  Graeme Smith Reasoning about Object-Z specifications , 1995, Proceedings 1995 Asia Pacific Software Engineering Conference.

[18]  David Walker,et al.  Alias Types , 2000, ESOP.

[19]  Olivier Tardieu,et al.  Ultra-fast aliasing analysis using CLA: a million lines of C code in a second , 2001, PLDI '01.

[20]  James J. Horning A Case Study in Language Design: Euclid , 1978, Program Construction.

[21]  David Gries,et al.  Assignment and Procedure Call Proof Rules , 1980, TOPL.

[22]  James Coplien,et al.  Advanced C++ Programming Styles and Idioms , 1991, Proceedings. Technology of Object-Oriented Languages and Systems, TOOLS 25 (Cat. No.97TB100239).

[23]  John Hogg Islands: aliasing protection in object-oriented languages , 1991, OOPSLA 1991.

[24]  Jan Vitek,et al.  Flexible Alias Protection , 1998, ECOOP.

[25]  Peter W. O'Hearn,et al.  Local Reasoning about Programs that Alter Data Structures , 2001, CSL.

[26]  Martín Abadi,et al.  A Logic of Object-Oriented Programs , 1997, Verification: Theory and Practice.

[27]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[28]  K. Rustan M. Leino,et al.  Data abstraction and information hiding , 2002, TOPL.

[29]  Murali Sitaraman,et al.  A Data Abstraction Alternative to Data Structure/Algorithm Modularization , 1998, Generic Programming.

[30]  Richard B. Kieburtz,et al.  Programming without pointer variables , 1976, Conference on Data: Abstraction, Definition and Structure.

[31]  William F. Ogden,et al.  Modular Verification of Data Abstractions with Shared Realizations , 1994, IEEE Trans. Software Eng..

[32]  James Noble,et al.  Ownership types for flexible alias protection , 1998, OOPSLA '98.

[33]  Michel Bidoit,et al.  TAPSOFT '97: Theory and Practice of Software Development , 1997, Lecture Notes in Computer Science.

[34]  C. A. R. Hoare,et al.  Procedures and parameters: An axiomatic approach , 1971, Symposium on Semantics of Algorithmic Languages.

[35]  Gary T. Leavens,et al.  ACL -- Eliminating Parameter Aliasing with Dynamic Dispatch , 1998 .

[36]  Mitchell Wand,et al.  Essentials of programming languages , 2008 .

[37]  M. Utting Reasoning about Aliasing , 1996 .

[38]  Robert D. Tennent,et al.  Language design methods based on semantic principles , 1977, Acta Informatica.

[39]  David C. Luckham,et al.  Verification of Array, Record, and Pointer Operations in Pascal , 1979, TOPL.

[40]  Jan Vitek,et al.  Confined types , 1999, OOPSLA '99.

[41]  Roger Duke,et al.  Object-Z: a specification language advocated for the description of standards , 1995 .

[42]  Albert L. Baker,et al.  JML: A Notation for Detailed Design , 1999, Behavioral Specifications of Businesses and Systems.

[43]  William Landi,et al.  Undecidability of static analysis , 1992, LOPL.

[44]  Murali Sitaraman,et al.  Special feature: component-based software using resolve , 1994 .

[45]  Peter Grogono,et al.  Copying and Comparing: Problems and Solutions , 2000, ECOOP.

[46]  John Mylopoulos,et al.  On the Frame Problem in Procedure Specifications , 1995, IEEE Trans. Software Eng..

[47]  Bruce W. Weide,et al.  Specification and Verification with References , 2001 .

[48]  Susan Horwitz,et al.  Precise flow-insensitive may-alias analysis is NP-hard , 1997, TOPL.

[49]  C. A. R. Hoare,et al.  Recursive data structures , 1975, International Journal of Computer & Information Sciences.

[50]  George W. Ernst Rules of inference for procedure calls , 2004, Acta Informatica.

[51]  Viktor Kuncak,et al.  Role analysis , 2002, POPL '02.

[52]  James J. Horning,et al.  A Proof Rule for Euclid Procedures , 1977, Formal Description of Programming Concepts.

[53]  M. Sitaraman Using Abstraction Relations to Verify Abstract Data Type Representations , .

[54]  Richard C. Holt,et al.  The Geneva convention on the treatment of object aliasing , 1992, OOPS.

[55]  K. Rustan M. Leino,et al.  Using data groups to specify and check side effects , 2002, PLDI '02.

[56]  Paulo Sérgio Almeida Balloon Types: Controlling Sharing of State in Data Types , 1997, ECOOP.

[57]  David Walker,et al.  Alias Types for Recursive Data Structures , 2000, Types in Compilation.

[58]  Gregory Kulczycki,et al.  Reasoning about Software-Component Behavior , 2000, ICSR.

[59]  Naftaly H. Minsky Towards Alias-Free Pointers , 1996, ECOOP.

[60]  Jeannette M. Wing A specifier's introduction to formal methods , 1990, Computer.

[61]  Bruce W. Weide,et al.  Copying and Swapping: Influences on the Design of Reusable Software Components , 1991, IEEE Trans. Software Eng..