Enhancing program verifications by restricting object types

Object types are abstract specifications of object behaviors; object behaviors are abstractly indicated by object component interdependencies; and program verifications are based on object behaviors. In conventional object type systems, object component interdependencies are not taken into account. As a result, distinct behaviors of objects are confused, which can lead to fundamental typing/subtyping loopholes and program verification troubles. In this paper, we first identify a program verification problem which is caused by the loose conventional object typing/subtyping which is in turn caused by the overlooking of object component interdependencies. Then, as a new object typing scheme, we introduce object type graphs (OTG) in which object component interdependencies are integrated into object types. Finally, we show how the verification problem can be resolved under OTG.

[1]  William R. Cook,et al.  Inheritance is not subtyping , 1989, POPL '90.

[2]  John C. Mitchell,et al.  A lambda calculus of objects and method specialization , 1993, [1993] Proceedings Eighth Annual IEEE Symposium on Logic in Computer Science.

[3]  Kim B. Bruce,et al.  PolyTOIL: A type-safe polymorphic object-oriented language , 1995, TOPL.

[4]  Kim B. Bruce Foundations of object-oriented languages - types and semantics , 2002 .

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

[6]  Jens Palsberg,et al.  Foundations of object-oriented languages , 1994, SIGP.

[7]  Luigi Liquori,et al.  A Subtyping for the Fisher-Honsell-Mitchell Lambda Calculus of Objects , 1994, CSL.

[8]  Luigi Liquori,et al.  A Typed Lambda Calculus of Objects (Extended Abstract) , 1996, ASIAN.

[9]  Yuri Gurevich,et al.  Logic in Computer Science , 1993, Current Trends in Theoretical Computer Science.

[10]  Kim B. Bruce A paradigmatic object-oriented programming language: Design, static typing and semantics , 1994, Journal of Functional Programming.