HIPimm: verifying granular immutability guarantees

HIPimm, an extension of the HIP/SLEEK automatic verification system, offers immutability guarantees on top of ensuring functional correctness for heap-manipulating programs. The extra capability of HIPimm, as compared to its precursor, is the ability to reason about immutability guarantees in a granular manner.For this purpose, we enhance the specification language with immutability annotations which provide the means to assert whether the annotated heap can be mutated or whether is inaccessible. As part of user defined predicates, these annotations are integrated at the data field level offering granular immutability guarantees. An immediate result of this new functionality is a finer level of precision in the verification process of programs involving heap data structures. That is, we enable the verification of program properties such as preservation of data structures shapes and/or values, flexible aliases, and information leakage prevention.

[1]  Matthew J. Parkinson,et al.  Uniqueness and reference immutability for safe parallelism , 2012, OOPSLA '12.

[2]  John Tang Boyland,et al.  Checking Interference with Fractional Permissions , 2003, SAS.

[3]  Michael D. Ernst,et al.  Object and reference immutability using Java generics , 2007, ESEC-FSE '07.

[4]  Shengchao Qin,et al.  Automated Verification of Shape and Size Properties Via Separation Logic , 2007, VMCAI.

[5]  Shengchao Qin,et al.  Structured Specifications for Better Verification of Heap-Manipulating Programs , 2011, FM.

[6]  Wei-Ngan Chin,et al.  Immutable specifications for more concise and precise verification , 2011, OOPSLA '11.

[7]  Alexandru Salcianu,et al.  Pointer analysis for Java programs: novel techniques and applications , 2006 .

[8]  ChinWei-Ngan,et al.  Automated verification of shape, size and bag properties via user-defined predicates in separation logic , 2012 .

[9]  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.

[10]  K. Rustan M. Leino,et al.  A Basis for Verifying Multi-threaded Programs , 2009, ESOP.

[11]  Naoki Kobayashi,et al.  Fractional Ownerships for Safe Memory Deallocation , 2009, APLAS.

[12]  Peter W. O'Hearn,et al.  The Logic of Bunched Implications , 1999, Bulletin of Symbolic Logic.

[13]  Peter W. O'Hearn,et al.  Permission accounting in separation logic , 2005, POPL '05.

[14]  Nikolaj Bjørner,et al.  Z3: An Efficient SMT Solver , 2008, TACAS.

[15]  Thomas Sturm,et al.  REDLOG: computer algebra meets computer logic , 1997, SIGS.

[16]  Pasquale Malacaria,et al.  Quantifying information leaks in software , 2010, ACSAC '10.