Coq Implementation of OO Verification Framework VeriJ

We implement an OO specification and verification framework VeriJ in the proof assistant Coq. This framework covers the main OO features like encapsulation, inheritance and polymorphism. It can modularly specify and verify programs, while only one specification per method is necessary. In this paper, we introduce the framework VeriJ, our tool in Coq, and an example to illustrate how to specify/verify the program in a modular and abstract way.

[1]  Gary T. Leavens,et al.  Specification and verification challenges for sequential object-oriented programs , 2007, Formal Aspects of Computing.

[2]  Matthew J. Parkinson,et al.  jStar: towards practical verification for java , 2008, OOPSLA.

[3]  Andrew McCreight,et al.  Practical Tactics for Separation Logic , 2009, TPHOLs.

[4]  Lars Birkedal,et al.  Verifying Object-Oriented Programs with Higher-Order Separation Logic in Coq , 2011, ITP.

[5]  John C. Reynolds,et al.  Separation logic: a logic for shared mutable data structures , 2002, Proceedings 17th Annual IEEE Symposium on Logic in Computer Science.

[6]  Liu Yijing,et al.  Modular verification of OO programs with interfaces , 2012, ICFEM 2012.

[7]  Jeannette M. Wing,et al.  A behavioral notion of subtyping , 1994, TOPL.

[8]  Gavin M. Bierman,et al.  Separation Logic for Object-Oriented Programming , 2013, Aliasing in Object-Oriented Programming.

[9]  Gavin M. Bierman,et al.  Separation logic, abstraction and inheritance , 2008, POPL '08.

[10]  Frank Piessens,et al.  VeriFast: A Powerful, Sound, Predictable, Fast Verifier for C and Java , 2011, NASA Formal Methods.

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

[12]  Liu Yijing,et al.  Inheritance and Modularity in Specification and Verification of OO Programs , 2011, 2011 Fifth International Conference on Theoretical Aspects of Software Engineering.