Abstract
As a particular case study of the formal verification of state-of-the-art, real software, we discuss the specification and verification of a corrected version of the implementation of a linked list as provided by the Java Collection framework.
Keywords: Java standard library, deductive verification, KeY, Java Modeling Language, case study, bug
Contributor Information
Armin Biere, Email: biere@jku.at.
David Parker, Email: d.a.parker@cs.bham.ac.uk.
Hans-Dieter A. Hiep, Email: hdh@cwi.nl
Olaf Maathuis, Email: olaf.maathuis@achmea.nl.
Jinting Bian, Email: j.bian@cwi.nl.
Frank S. de Boer, Email: frb@cwi.nl
Marko van Eekelen, Email: marko.vaneekelen@ou.nl.
Stijn de Gouw, Email: stijn.degouw@ou.nl.
References
- 1.Bian J, Hiep HA. Verifying OpenJDK’s LinkedList using KeY: Video. 2019 doi: 10.6084/m9.figshare.10033094.v2. [DOI] [Google Scholar]
- 2.Hiep HA, Maathuis O, Bian J, de Boer FS, van Eekelen M, de Gouw S. Verifying OpenJDK’s LinkedList using KeY: Proof Files. 2019 doi: 10.5281/zenodo.3517081. [DOI] [Google Scholar]
- 3.Ahrendt, W., Beckert, B., Bubel, R., Hähnle, R., Schmitt, P.H., Ulbrich, M. (eds.): Deductive Software Verification: The KeY Book, LNCS, vol. 10001. Springer (2016). 10.1007/978-3-319-49812-6
- 4.Baumann, C., Beckert, B., Blasum, H., Bormer, T.: Lessons learned from microkernel verification–specification is the new bottleneck. In: SSV 2012: Systems Software Verification. EPTCS, vol. 102, pp. 18–32. OPA (2012). 10.4204/EPTCS.102.4
- 5.Blom, S., Darabi, S., Huisman, M., Oortwijn, W.: The VerCors tool set: Verification of parallel and concurrent software. In: iFM 2017: Integrated Formal Methods. LNCS, vol. 10510, pp. 102–110. Springer (2017). 10.1007/978-3-319-66845-1_7
- 6.Cok, D.R.: OpenJML: Software verification for Java 7 using JML, OpenJDK, and Eclipse. In: F-IDE 2014: Workshop on Formal Integrated Development Environment. EPTCS, vol. 149, pp. 79–92. OPA (2014). 10.4204/EPTCS.149.8
- 7.de Gouw, S., de Boer, F.S., Bubel, R., Hähnle, R., Rot, J., Steinhöfel, D.: Verifying OpenJDK’s Sort Method for Generic Collections. Journal of Automated Reasoning 62(1), 93–126 (2017). 10.1007/s10817-017-9426-4 [DOI] [PMC free article] [PubMed]
- 8.de Gouw, S., de Boer, F.S., Rot, J.: Proof Pearl: The KeY to Correct and Stable Sorting. Journal of Automated Reasoning 53(2), 129–139 (2014). 10.1007/s10817-013-9300-y
- 9.de Gouw, S., Rot, J., de Boer, F.S., Bubel, R., Hähnle, R.: OpenJDK’s java.utils.Collection.sort() is broken: The good, the bad and the worst case. In: CAV 2015: Computer Aided Verification. LNCS, vol. 9206, pp. 273–289. Springer (2015). 10.1007/978-3-319-21690-4_16
- 10.Huisman, M., Ahrendt, W., Bruns, D., Hentschel, M.: Formal specification with JML. Tech. rep., Karlsruher Institut für Technologie (KIT) (2014). 10.5445/IR/1000041881
- 11.Ieu Eauvidoum, disk noise: Twenty years of escaping the Java sandbox. Phrack Magazine (September 2018), http://www.phrack.org/papers/escaping_the_java_sandbox.html
- 12.Klebanov, V., Müller, P., et al.: The 1st verified software competition: Experience report. In: FM 2011: Formal Methods. LNCS, vol. 6664, pp. 154–168. Springer (2011). 10.1007/978-3-642-21437-0_14
- 13.Klein G, Nipkow T. A machine-checked model for a Java-like language, virtual machine, and compiler. ACM TOPLAS. 2006;28(4):619–695. doi: 10.1145/1146809.1146811. [DOI] [Google Scholar]
- 14.Knüppel, A., Thüm, T., Pardylla, C., Schaefer, I.: Experience report on formally verifying parts of OpenJDK’s API with KeY. In: F-IDE 2018: Formal Integrated Development Environment. EPTCS, vol. 284, pp. 53–70. OPA (2018). 10.4204/EPTCS.284.5
- 15.Knuth, D.E.: The art of computer programming, vol. 1. Addison-Wesley, 3rd edn. (1997) ISBN: 978-0-201-89683-4
- 16.Leavens, G.T., Baker, A.L., Ruby, C.: JML: A notation for detailed design. In: Behavioral Specifications of Businesses and Systems, SECS, vol. 523, pp. 175–188. Springer (1999). 10.1007/978-1-4615-5229-1_12
- 17.Nipkow, T., von Oheimb, D.: Javalight is type-safe–definitely. In: POPL 1998: Principles of Programming Languages. pp. 161–170. ACM (1998). 10.1145/268946.268960
- 18.Polikarpova, N., Tschannen, J., Furia, C.A.: A fully verified container library. In: FM 2015: Formal Methods. LNCS, vol. 9109, pp. 414–434. Springer (2015). 10.1007/978-3-319-19249-9_26
