Practical Methods for Reasoning About Java 8’s Functional Programming Features

  • David R. CokEmail author
  • Serdar Tasiran
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 11294)


We describe new capabilities added to the Java Modeling Language and the OpenJML deductive program verification tool to support functional programming features introduced in Java 8. We also report on the application of the extensions to a secure streaming protocol library developed by Amazon Web Services and used as a foundation by services it provides. We found that the application under study used a small set of functional programming idioms; methods using these idioms could be verified by techniques that used only first-order logic and did not need all the features that might be required for full generality of functional programming.


  1. 1.
    Ahrendt, W., Beckert, B., Bubel, R., Hähnle, R., Schmitt, P.H., Ulbrich, M. (eds.): Deductive Software Verification - The KeY Book: From Theory to Practice, vol. 10001. Springer, Heidelberg (2016). Scholar
  2. 2.
    Barrett, C., Stump, A., Tinelli, C.: The SMT-LIB standard: version 2.0. In: Gupta, A., Kroening, D. (eds.) Proceedings of the 8th International Workshop on Satisfiability Modulo Theories, Edinburgh, England (2010)Google Scholar
  3. 3.
    Baudin, P., Filliâtre, J.C., Marché, C., Monate, B., Moy, Y., Prevosto, V.: ACSL: ANSI/ISO C Specification Language, version 1.10 (2013).
  4. 4.
    Burdy, L., et al.: An overview of JML tools and applications. In: Thomas, A., Wan F. (eds.) Eighth International Workshop on Formal Methods for Industrial Critical Systems (FMICS 2003). Electronic Notes in Theoretical Computer Science (ENTCS), vol. 80, pp. 73–89. Elsevier, June 2003Google Scholar
  5. 5.
    Cok, D.: Improved usability and performance of SMT solvers for debugging specifications. STTT 12, 467–481 (2010)CrossRefGoogle Scholar
  6. 6.
    Cok, D.R.: OpenJML: JML for Java 7 by extending OpenJDK. In: Bobaru, M., Havelund, K., Holzmann, G.J., Joshi, R. (eds.) NFM 2011. LNCS, vol. 6617, pp. 472–479. Springer, Heidelberg (2011). Scholar
  7. 7.
    Cok, D.R.: OpenJML: software verification for Java 7 using JML, OpenJDK, and Eclipse. In: Workshop on Formal Integrated Development Environment (F-IDE 2014). EPTCS, vol. 149, pp. 79–92, 06 April 2014, Grenoble, France (2014)CrossRefGoogle Scholar
  8. 8.
    Cok, D.R., Kiniry, J.R.: ESC/Java2: uniting ESC/Java and JML. In: Barthe, G., Burdy, L., Huisman, M., Lanet, J.-L., Muntean, T. (eds.) CASSIS 2004. LNCS, vol. 3362, pp. 108–128. Springer, Heidelberg (2005). Scholar
  9. 9.
    de Moura, L., Bjørner, N.: Z3: an efficient SMT solver. In: Ramakrishnan, C.R., Rehof, J. (eds.) TACAS 2008. LNCS, vol. 4963, pp. 337–340. Springer, Heidelberg (2008). Scholar
  10. 10.
    Garland, S.J., Guttag, J.V.: A guide to LP, the larch prover. Technical report 82, Digital Equipment Corporation, Systems Research Center, 130 Lytton Avenue, Palo Alto, CA 94301, December 1991. Order from
  11. 11.
    Hatcliff, J., Leavens, G.T., Rustan, K., Leino, M., Müller, P., Parkinson, M.: Behavioral interface specification languages. Technical report CS-TR-09-01, University of Central Florida, School of EECS, Orlando, FL, March 2009Google Scholar
  12. 12.
    Kanig, J., Filliâtre, J.-C.: Who: a verifier for effectful higher-order programs. In: Proceedings of the 2009 ACM SIGPLAN Workshop on ML, ML 2009, pp. 39–48, New York. ACM (2009)Google Scholar
  13. 13.
    Kassios, I.T., Müller, P.: Modular specification and verification of delegation with SMT solvers. Technical report, ETH Zurich (2011)Google Scholar
  14. 14.
    Leino, K.R.M.: Dafny: an automatic program verifier for functional correctness. In: Clarke, E.M., Voronkov, A. (eds.) LPAR 2010. LNCS (LNAI), vol. 6355, pp. 348–370. Springer, Heidelberg (2010). Scholar
  15. 15.
    McCormick, J.W., Chapin, P.C.: Building High Integrity Applications with SPARK. Cambridge University Press (2015)Google Scholar
  16. 16.
    Meyer, B.: Object-Oriented Software Construction. Prentice Hall, New York (1988)Google Scholar
  17. 17.
    Singleton, J.L., Leavens, G.T., Rajan, H., Cok, D.R.: Poster: an algorithm and tool to infer practical postconditions. In: 2018 IEEE/ACM 40th IEEE International Conference on Software Engineering (ICSE). IEEE (2018)Google Scholar
  18. 18.
    Unno, H., Terauchi, T., Kobayashi, N.: Automating relatively complete verification of higher-order functional programs. SIGPLAN Not. 48(1), 75–86 (2013)CrossRefzbMATHGoogle Scholar
  19. 19.
    Many papers regarding JML can be found on the JML web site.
  20. 20.
  21. 21.
  22. 22.
  23. 23.
    The Spec# web site gives code, documentation and papers.

Copyright information

© Springer Nature Switzerland AG 2018

Authors and Affiliations

  1. 1.Amazon Web ServicesSeattleUSA

Personalised recommendations