VAlloy - Virtual Functions Meet a Relational Language

We propose VAlloy, a veneer onto the first order, relational language Alloy. Alloy is suitable for modeling structural properties of object-oriented software. However, Alloy lacks support for dynamic dispatch, i.e., function invocation based on actual parameter types. VAlloy introduces virtual functions in Alloy, which enables intuitive modeling of inheritance. Models in VAlloy are automatically translated into Alloy and can be automatically checked using the existing Alloy Analyzer. We illustrate the use of VAlloy by modeling object equality, such as in Java. We also give specifications for a part of the Java Collections Framework.

[1]  Bart Jacobs,et al.  A case study in class library verification: Java’s vector class , 1999, International Journal on Software Tools for Technology Transfer.

[2]  Sarfraz Khurshid,et al.  TestEra: a novel framework for automated testing of Java programs , 2001, Proceedings 16th Annual International Conference on Automated Software Engineering (ASE 2001).

[3]  Michael D. Ernst,et al.  Dynamically discovering likely program invariants , 2000 .

[4]  Barbara Liskov,et al.  Program Development in Java - Abstraction, Specification, and Object-Oriented Design , 1986 .

[5]  Bart Jacobs,et al.  The LOOP Compiler for Java and JML , 2001, TACAS.

[6]  Alan Fekete,et al.  Lightweight Analysis of Object Interactions , 2001, TACS.

[7]  Chris Moss Prolog++ - the power of object-oriented and logic programming , 1994, International series in logic programming.

[8]  Sarfraz Khurshid,et al.  An analyzable annotation language , 2002, OOPSLA '02.

[9]  Daniel Jackson,et al.  Alloy: a lightweight object modelling notation , 2002, TSEM.

[10]  Ilya Shlyakhter,et al.  Generating effective symmetry-breaking predicates for search problems , 2001, Discrete Applied Mathematics.

[11]  Mukesh Dalal,et al.  OOLP: A Translation Approach to Object-Oriented Logic Programming , 1989, DOOD.

[12]  Daniel Jackson,et al.  Finding bugs with a constraint solver , 2000, ISSTA '00.

[13]  J. Michael Spivey,et al.  The Z notation - a reference manual , 1992, Prentice Hall International Series in Computer Science.

[14]  Nancy A. Lynch,et al.  An inheritance-based technique for building simulation proofs incrementally , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[15]  Graeme Smith,et al.  The Object-Z Specification Language , 1999, Advances in Formal Methods.

[16]  Manu Sridharan,et al.  A micromodularity mechanism , 2001, ESEC/FSE-9.

[17]  Seif Haridi,et al.  Distributed Algorithms , 1992, Lecture Notes in Computer Science.

[18]  Daniel Jackson,et al.  Alcoa: the Alloy constraint analyzer , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[19]  Nancy A. Lynch,et al.  An inheritance-based technique for building simulation proofs incrementally , 2002, TSEM.

[20]  James M. Crawford,et al.  Symmetry-Breaking Predicates for Search Problems , 1996, KR.