Skip to main content
Springer Nature - PMC COVID-19 Collection logoLink to Springer Nature - PMC COVID-19 Collection
. 2020 Mar 13;12079:217–234. doi: 10.1007/978-3-030-45237-7_13

Verifying OpenJDK’s LinkedList using KeY

Hans-Dieter A Hiep 10,, Olaf Maathuis 12, Jinting Bian 10, Frank S de Boer 10, Marko van Eekelen 11, Stijn de Gouw 11
Editors: Armin Biere8, David Parker9
PMCID: PMC7480693

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

Articles from Tools and Algorithms for the Construction and Analysis of Systems are provided here courtesy of Nature Publishing Group

RESOURCES