Abstract
In the current work, we investigate the benefits of immutability guarantees for allowing more flexible handling of aliasing, as well as more precise and concise specifications. Our approach supports finer levels of control that can mark data structures as being immutable through the use of immutability annotations. By using such annotations to encode immutability guarantees, we expect to obtain better specifications that can more accurately describe the intentions, as well as prohibitions, of the method. Ultimately, our goal is improving the precision of the verification process, as well as making the specifications more readable, more precise and as an enforceable program documentation. We have designed and implemented a new entailment procedure to formally and automatically reason about immutability enhanced specifications. We have also formalised the soundness for our new procedure through an operational semantics with mutability assertions on the heap. Lastly, we have carried out a set of experiments to both validate and affirm the utility of our current proposal on immutability enhanced specification mechanism.
- J. Berdine, C. Calcagno, and P. W. O'Hearn. Smallfoot: Modular automatic assertion checking with separation logic. In 4th International Symposium on Formal Methods for Components and Objects (FMCO05), volume 4111 of Springer LNCS, 2006. Google Scholar
Digital Library
- Adrian Birka and Michael D. Ernst. A practical type system and language for reference immutability. In John M. Vlissides and Douglas C. Schmidt, editors, OOPSLA, pages 35--49. ACM, 2004. Google Scholar
Digital Library
- Richard Bornat, Cristiano Calcagno, Peter W. O'Hearn, and Matthew J. Parkinson. Permission accounting in separation logic. In POPL, pages 259--270, 2005. Google Scholar
Digital Library
- Cristina David and Wei-Ngan Chin. Immutable specifications for more concise and precise verification. Technical report, National University of Singapore, 2011. avail. at http://www.comp.nus.edu.sg/~davidcri/reports/imm_tech.pdf.Google Scholar
- Dino Distefano and Matthew J. Parkinson. jstar: towards practical verification for java. In OOPSLA, pages 213--226, 2008. Google Scholar
Digital Library
- Robert Dockins, Aquinas Hobor, and Andrew W. Appel. A fresh look at separation algebras and share accounting. In APLAS, pages 161--177, 2009. Google Scholar
Digital Library
- A. Gotsman, J. Berdine, and B. Cook. Interprocedural Shape Analysis with Separated Heap Abstractions. In SAS, Springer LNCS, Seoul, Korea, August 2006. Google Scholar
Digital Library
- Christian Haack, Erik Poll, Jan Schafer, and Aleksy Schubert. Immutable objects for a java-like language. In ESOP, pages 347--362, 2007. Google Scholar
Digital Library
- S. Ishtiaq and P. W. O'Hearn. BI as an Assertion Language for Mutable Data Structures. In ACM POPL, London, January 2001. Google Scholar
Digital Library
- Nils Klarlund and Anders Møller. Mona version 1.4 - user manual.Google Scholar
- H. H. Nguyen, C. David, S.C. Qin, and W.N. Chin. Automated Verification of Shape And Size Properties via Separation Logic. In Intl Conf. on Verification, Model Checking and Abstract Interpretation, Nice, France, January 2007. Google Scholar
Digital Library
- Tobias Nipkow, Lawrence C. Paulson, and Markus Wenzel. Isabelle/HOL -- A Proof Assistant for Higher-Order Logic, volume 2283 of LNCS. Springer, 2002. Google Scholar
Digital Library
- M. J. Parkinson. Local Reasoning for Java. PhD thesis, Computer Laboratory, University of Cambridge, 2005. UCAM-CL-TR-654.Google Scholar
- W. Pugh. The Omega Test: A fast practical integer programming algorithm for dependence analysis. Communications of the ACM, 8:102--114, 1992. Google Scholar
Digital Library
- Jaime Quinonez, Matthew S. Tschantz, and Michael D. Ernst. Inference of reference immutability. In ECOOP, pages 616--641, 2008. Google Scholar
Digital Library
- J. Reynolds. Separation Logic: A Logic for Shared Mutable Data Structures. In IEEE Logic in Computer Science, Copenhagen, Denmark, July 2002. Google Scholar
Digital Library
- J. Reynolds. Separation Logic: A Logic for Shared Mutable Data Structures. In IEEE Logic in Computer Science, Copenhagen, Denmark, July 2002. Google Scholar
Digital Library
- Alexandru Salcianu and Martin C. Rinard. Purity and side effect analysis for java programs. In VMCAI, pages 199--215, 2005. Google Scholar
Digital Library
- Yoav Zibin, Alex Potanin, Mahmood Ali, Shay Artzi, Adam Kiezun, and Michael D. Ernst. Object and reference immutability using java generics. In Ivica Crnkovic and Antonia Bertolino, editors, ESEC/SIGSOFT FSE, pages 75--84. ACM, 2007. Google Scholar
Digital Library
- Yoav Zibin, Alex Potanin, Paley Li, Mahmood Ali, and Michael D. Ernst. Ownership and immutability in generic java. In William R. Cook, Siobhán Clarke, and Martin C. Rinard, editors, OOPSLA, pages 598--617. ACM, 2010. Google Scholar
Digital Library
Index Terms
Immutable specifications for more concise and precise verification
Recommendations
Immutable specifications for more concise and precise verification
OOPSLA '11: Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applicationsIn the current work, we investigate the benefits of immutability guarantees for allowing more flexible handling of aliasing, as well as more precise and concise specifications. Our approach supports finer levels of control that can mark data structures ...
Formal Specifications for Java's Synchronisation Classes
PDP '14: Proceedings of the 2014 22nd Euromicro International Conference on Parallel, Distributed, and Network-Based ProcessingThis paper discusses formal specification and verification of the synchronisation classes of the Java API. In many verification systems for concurrent programs, synchronisation is treated as a primitive operation. As a result, verification rules for ...
Verifying executable object-oriented specifications with separation logic
ECOOP'10: Proceedings of the 24th European conference on Object-oriented programmingSpecifications of Object-Oriented programs conventionally employ Boolean expressions of the programming language for assertions. Programming errors can be discovered by checking at runtime whether an assertion, such as a precondition or class invariant, ...







Comments