Inheritance in Higher Order Logic: Modeling and Reasoning

This paper describes a way of modeling inheritance (in object-oriented programming languages) in higher order logic. This particular approach is used in the LOOP project for reasoning about JAVA classes, with the proof tools PVS and ISABELLE. It relies on nested interface types to capture the superclasses, fields, methods, and constructors of classes, together with suitable casting functions incorporating the difference between hiding of fields and overriding of methods. This leads to the proper handling of late binding, as illustrated in several verification examples.

[1]  Jens Palsberg,et al.  A Denotational Semantics of Inheritance and Its Correctness , 1994, Inf. Comput..

[2]  Bart Jacobs,et al.  Reasoning about Java classes: preliminary report , 1998, OOPSLA '98.

[3]  Wolfgang Naraschewski,et al.  Object-Oriented Verification Based on Record Subtyping in Higher-Order Logic , 1998, TPHOLs.

[4]  Aaas News,et al.  Book Reviews , 1893, Buffalo Medical and Surgical Journal.

[5]  Lawrence C. Paulson,et al.  Isabelle: The Next 700 Theorem Provers , 2000, ArXiv.

[6]  Bart Jacobs,et al.  Inheritance and Cofree Constructions , 1996, ECOOP.

[7]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[8]  G. G. Stokes "J." , 1890, The New Yale Book of Quotations.

[9]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Information and Computation.

[10]  Marieke Huisman,et al.  Reasoning about Java programs in higher order logic using PVS and Isabelle , 2001 .

[11]  Ken Arnold,et al.  The Java programming language (2nd ed.) , 1998 .

[12]  Martin Hofmann,et al.  Inheritance of Proofs , 1998, Theory Pract. Object Syst..

[13]  Luca Cardelli,et al.  Comparing Object Encodings , 1997, Inf. Comput..

[14]  Benjamin C. Pierce,et al.  Simple type-theoretic foundations for object-oriented programming , 1994, Journal of Functional Programming.

[15]  Miles H. Krumbine Hell , 1930, The Journal of Religion.

[16]  Ken Arnold,et al.  The Java Programming Language , 1996 .

[17]  Bart Jacobs,et al.  Objects and Classes, Co-Algebraically , 1995, Object Orientation with Parallelism and Persistence.

[18]  John C. Mitchell Toward a typed foundation for method specialization and inheritance , 1989, POPL '90.

[19]  Bart Jacobs,et al.  Specification of the JavaCard API in JML , 2000, CARDIS.

[20]  Martín Abadi,et al.  A Theory of Objects , 1996, Monographs in Computer Science.

[21]  Natarajan Shankar,et al.  Formal Verification for Fault-Tolerant Architectures: Prolegomena to the Design of PVS , 1995, IEEE Trans. Software Eng..

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

[23]  Bart Jacobs,et al.  Java Program Verification via a Hoare Logic with Abrupt Termination , 2000, FASE.

[24]  Bart Jacobs,et al.  A Type-Theoretic Memory Model for Verification of Sequential Java Programs , 1999, WADT.

[25]  Jens Palsberg,et al.  A Denotational Semantics of Inheritance and its Correctness , 1989, OOPSLA.