Skip to main content

Towards a Usable and Sustainable Deductive Verification Tool

  • Conference paper
  • First Online:

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 13702))

Abstract

Deductive verification tools are logic-based, formal software verification tools that permit to verify complex, functional and non-functional properties with a very high degree of automation. They exhibit impressive performance at the hands of an expert, but are not ready for productive use by someone with limited or no training in formal verification. In this paper we analyze in some detail what needs to be done to make a concrete state-of-art tool so usable and robust that it can be successfully applied by Computer Science Researchers outside the core development team and we propose a set of actions that need to be taken towards this aim.

Partially funded by DFG project “KeY–A Deductive Software Analysis Tool for the Research Community” and by the Hessian LOEWE initiative within the “Software-Factory 4.0” project.

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   59.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   79.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Notes

  1. 1.

    Deductive verification papers are published, for example, in venues such as ASE, CAV, FASE, FM, FormaliSE, ICSE, IJCAR, ITP, TACAS, which all have a much wider focus. Elsewhere, deductive verification researchers mainly meet at competitions, such as VerifyThis [24].

References

  1. Ahrendt, W., et al.: The KeY tool: integrating object oriented design and formal verification. Software Syst. Model. 4(1), 32–54 (2005). https://doi.org/10.1007/s10270-004-0058-x

  2. 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, Lecture Notes in Computer Science, vol. 10001. Springer, Cham (2016). https://doi.org/10.1007/978-3-319-49812-6

  3. Ahrendt, W., Bubel, R.: Functional verification of smart contracts via strong data integrity. In: Margaria, T., Steffen, B. (eds.) ISoLA 2020. LNCS, vol. 12478, pp. 9–24. Springer, Cham (2020). https://doi.org/10.1007/978-3-030-61467-6_2

    Chapter  Google Scholar 

  4. Ahrendt, W., Chimento, J.M., Pace, G.J., Schneider, G.: Verifying data- and control-oriented properties combining static and runtime verification: theory and tools. Formal Methods in System Design 51(1), 200–265 (2017)

    Article  MATH  Google Scholar 

  5. Albarghouthi, A., Dillig, I., Gurfinkel, A.: Maximal specification synthesis. SIGPLAN Not. 51(1), 789–801 (2016). Jan

    Article  MATH  Google Scholar 

  6. Albert, E., Bubel, R., Genaim, S., Hähnle, R., Díez, G.R.: A formal verification framework for static analysis–as well as its instantiation to the resource analyzer COSTA and formal verification tool KeY. Software Syst. Model. 15(4), 987–1012 (2016). https://doi.org/10.1007/s10270-015-0476-y

  7. Barnett, M., Chang, B.-Y.E., DeLine, R., Jacobs, B., Leino, K.R.M.: Boogie: a modular reusable verifier for object-oriented programs. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, W.-P. (eds.) FMCO 2005. LNCS, vol. 4111, pp. 364–387. Springer, Heidelberg (2006). https://doi.org/10.1007/11804192_17

    Chapter  Google Scholar 

  8. Baudin, P., Filliâtre, J.C., Marché, C., Monate, B., Moy, Y., Prevosto, V.: ACSL: ANSI/ISO C Specification Language. Preliminary Design, 1.4 edn. (2008). https://www.frama-c.cea.fr/download/acsl_1.4.pdf

  9. Baumann, C., Beckert, B., Blasum, H., Bormer, T.: Lessons learned from microkernel verification - specification is the new bottleneck. In: Cassez, F., Huuck, R., Klein, G., Schlich, B. (eds.) Proceedings of the 7th Conference on Systems Software Verification. EPTCS, vol. 102, pp. 18–32 (2012)

    Google Scholar 

  10. Beckert, B., et al.: Taclets: a new paradigm for constructing interactive theorem provers. Revista de la Real Academia de Ciencias Exactas, Físicas y Naturales, Serie A: Matemáticas 98(1), 17–53 (2004). Special Issue on Symbolic Computation in Logic and Artificial Intelligence

    Google Scholar 

  11. Beckert, B., Grebing, S.: Interactive theorem proving: modelling the user in the proof process. In: Furbach, U., Schon, C. (eds.) Workshop on Bridging the Gap between Human and Automated Reasoning, Berlin, Germany. CEUR Workshop Proceedings, vol. 1412, pp. 60–73. CEUR-WS.org (2015). http://ceur-ws.org/Vol-1412/6o.pdf

  12. Beckert, B., Grebing, S., Böhl, F.: A usability evaluation of interactive theorem provers using focus groups. In: Canal, C., Idani, A. (eds.) SEFM 2014. LNCS, vol. 8938, pp. 3–19. Springer, Cham (2015). https://doi.org/10.1007/978-3-319-15201-1_1

    Chapter  Google Scholar 

  13. Beckert, B., Hähnle, R.: Reasoning and verification. IEEE Intell. Syst. 29(1), 20–29 (2014)

    Article  Google Scholar 

  14. Beckert, B., Hähnle, R., Schmitt, P.H. (eds.): Verification of Object-Oriented Software. The KeY Approach - Foreword by K. Rustan M. Leino, Lecture Notes in Computer Science, vol. 4334. Springer (2007). http://doi.org/10.1007/978-3-540-69061-0

  15. Bertot, Y., Castéran, P.: Interactive Theorem Proving and Program Development–Coq’Art: The Calculus of Inductive Constructions. Texts in Theoretical Computer Science. An EATCS Series. Springer, Cham (2004). https://doi.org/10.1007/978-3-662-07964-5

  16. Beyer, D.: Progress on software verification: SV-COMP 2022. In: TACAS 2022. LNCS, vol. 13244, pp. 375–402. Springer, Cham (2022). https://doi.org/10.1007/978-3-030-99527-0_20

    Chapter  Google Scholar 

  17. Blanchette, J.C., Nipkow, T.: Nitpick: a counterexample generator for higher-order logic based on a relational model finder. In: Kaufmann, M., Paulson, L.C. (eds.) ITP 2010. LNCS, vol. 6172, pp. 131–146. Springer, Heidelberg (2010). https://doi.org/10.1007/978-3-642-14052-5_11

    Chapter  Google Scholar 

  18. Blom, S., Huisman, M.: The VerCors tool for verification of concurrent programs. In: Jones, C., Pihlajasaari, P., Sun, J. (eds.) FM 2014. LNCS, vol. 8442, pp. 127–131. Springer, Cham (2014). https://doi.org/10.1007/978-3-319-06410-9_9

    Chapter  Google Scholar 

  19. Bobot, F., Filliâtre, J.C., Marché, C., Paskevich, A.: Why3: shepherd your herd of provers. In: Boogie 2011: First International Workshop on Intermediate Verification Languages. pp. 53–64. Wrocław, Poland, August 2011

    Google Scholar 

  20. Chakarov, A., Fedchin, A., Rakamarić, Z., Rungta, N.: Better counterexamples for dafny. In: TACAS 2022. LNCS, vol. 13243, pp. 404–411. Springer, Cham (2022). https://doi.org/10.1007/978-3-030-99524-9_23

    Chapter  Google Scholar 

  21. Cok, D.R.: OpenJML: Software verification for Java 7 using JML, OpenJDK, and Eclipse. In: Dubois, C., Giannakopoulou, D., Méry, D. (eds.) 1st Workshop on Formal Integrated Development Environment, F-IDE, Grenoble, France. EPTCS, vol. 149, pp. 79–92 (2014)

    Google Scholar 

  22. Dahlweid, M., Moskal, M., Santen, T., Tobies, S., Schulte, W.: VCC: contract-based modular verification of concurrent C. In: International Conference on Software Engineering - Companion Volume, pp. 429–430 (2009)

    Google Scholar 

  23. 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. J. Automated Reasoning 62(6) (2019). http://doi.org/10.1007/s10817-017-9426-4

  24. Dross, C., Furia, C.A., Huisman, M., Monahan, R., Müller, P.: VerifyThis 2019: a program verification competition. Int. J. Softw. Tools Technol. Transf. 23(6), 883–893 (2021). https://doi.org/10.1007/s10009-021-00619-x

    Article  Google Scholar 

  25. Ernst, G., Pfähler, J., Schellhorn, G., Haneberg, D., Reif, W.: KIV: overview and VerifyThis competition. Int. J. Softw. Tools Technol. Transf. 17(6), 677–694 (2015). https://doi.org/10.1007/s10009-014-0308-3

    Article  Google Scholar 

  26. Fielding, R.T.: Architectural Styles and the Design of Network-based Software Architectures. Ph.D. thesis, University of California, Irvine (2000), aAI9980887

    Google Scholar 

  27. Filliâtre, J.-C., Marché, C.: The Why/Krakatoa/Caduceus platform for deductive program verification. In: Damm, W., Hermanns, H. (eds.) CAV 2007. LNCS, vol. 4590, pp. 173–177. Springer, Heidelberg (2007). https://doi.org/10.1007/978-3-540-73368-3_21

    Chapter  Google Scholar 

  28. Le Goues, C., Leino, K.R.M., Moskal, M.: The boogie verification debugger (tool paper). In: Barthe, G., Pardo, A., Schneider, G. (eds.) SEFM 2011. LNCS, vol. 7041, pp. 407–414. Springer, Heidelberg (2011). https://doi.org/10.1007/978-3-642-24690-6_28

    Chapter  Google Scholar 

  29. de Gouw, S., de Boer, F.S., Rot, J.: Proof pearl: the KeY to correct and stable sorting. J. Automated Reasoning 53(2), 129–139 (2014)

    Article  MathSciNet  MATH  Google Scholar 

  30. Grätz, L., Hähnle, R., Bubel, R.: Finding semantic bugs fast. In: FASE 2022. LNCS, vol. 13241, pp. 145–154. Springer, Cham (2022). https://doi.org/10.1007/978-3-030-99429-7_8

    Chapter  Google Scholar 

  31. Grebing, S.: User interaction in deductive interactive program verification. Ph.D. thesis, Karlsruhe Institute of Technology (KIT), February 2019

    Google Scholar 

  32. Grebing, S., Klamroth, J., Ulbrich, M.: Seamless interactive program verification. In: 11th Working Conference on Verified Software: Theories, Tools, and Experiments (VSTTE 2019), Jul 2019. Accepted, in print

    Google Scholar 

  33. Hähnle, R., Baum, M., Bubel, R., Rothe, M.: A visual interactive debugger based on symbolic execution. In: Andrews, J., Nitto, E.D. (eds.) Proceedings of the 25th IEEE/ACM International Conference on Automated Software Engineering, Antwerp, Belgium, pp. 143–146. ACM Press (2010)

    Google Scholar 

  34. Hähnle, R., Huisman, M.: Deductive software verification: from pen-and-paper proofs to industrial tools. In: Steffen, B., Woeginger, G. (eds.) Computing and Software Science. LNCS, vol. 10000, pp. 345–373. Springer, Cham (2019). https://doi.org/10.1007/978-3-319-91908-9_18

    Chapter  MATH  Google Scholar 

  35. Hähnle, R., Menzel, W., Schmitt, P.: Integrierter deduktiver Software-Entwurf. Künstliche Intelligenz pp. 40–41, December 1998

    Google Scholar 

  36. Hentschel, M., Bubel, R., Hähnle, R.: The Symbolic Execution Debugger (SED): a platform for interactive symbolic execution, debugging, verification and more. Int. J. Software Tools Technol. Transf. 21(5), 485–513 (2018). http://doi.org/10.1007/s10009-018-0490-9

  37. Hentschel, M., Hähnle, R., Bubel, R.: The interactive verification debugger: effective understanding of interactive proof attempts. In: Lo, D., Apel, S., Khurshid, S. (eds.) Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering (ASE), Singapore, pp. 846–851. ACM Press, September 2016

    Google Scholar 

  38. Herda, M., et al.: Understanding counterexamples for relational properties with DIbugger. In: De Angelis, E., Fedyukovich, G., Tzevelekos, N., Ulbrich, M. (eds.) Proceedings of the Sixth Workshop on Horn Clauses for Verification and Synthesis and Third Workshop on Program Equivalence and Relational Reasoning, HCVS/PERR@ETAPS 2019, Prague, Czech Republic. EPTCS, vol. 296, pp. 6–13 (2019). https://doi.org/10.4204/EPTCS.296.4

  39. Heydari Tabar, A., Hähnle, R., Bubel, R.: Automatic loop invariant generation for data dependence analysis. In: Hartmans, A., Schaefer, I. (eds.) Proceedings of the FormaliSE Conference on Pittsburgh, PA, US. LNCS, ACM Press, May 2022

    Google Scholar 

  40. Hiep, H.-D.A., Maathuis, O., Bian, J., de Boer, F.S., van Eekelen, M., de Gouw, S.: Verifying OpenJDK’s LinkedList using KeY. In: TACAS 2020. LNCS, vol. 12079, pp. 217–234. Springer, Cham (2020). https://doi.org/10.1007/978-3-030-45237-7_13

    Chapter  Google Scholar 

  41. Hoang, D., Moy, Y., Wallenburg, A., Chapman, R.: SPARK 2014 and gnatprove - a competition report from builders of an industrial-strength verifying compiler. Int. J. Softw. Tools Technol. Transf. 17(6), 695–707 (2015). https://doi.org/10.1007/s10009-014-0322-5

    Article  Google Scholar 

  42. Jacobs, B., Piessens, F.: The VeriFast program verifier. Technical Report CW-520, Department of Computer Science, Katholieke Universiteit Leuven, August 2008

    Google Scholar 

  43. Kirchner, F., Kosmatov, N., Prevosto, V., Signoles, J., Yakobowski, B.: Frama-C: a software analysis perspective. Formal Aspects Comput. 27(3), 573–609 (2015)

    Article  MathSciNet  Google Scholar 

  44. Knüppel, A., Thüm, T., Schaefer, I.: GUIDO: automated guidance for the configuration of deductive program verifiers. In: Bliudze, S., Gnesi, S., Plat, N., Semini, L. (eds.) 9th IEEE/ACM Intl. Conference on Formal Methods in Software Engineering, FormaliSE@ICSE, Madrid, Spain, pp. 124–129. IEEE (2021). https://doi.org/10.1109/FormaliSE52586.2021.00018

  45. Küsters, R., Truderung, T., Beckert, B., Bruns, D., Kirsten, M., Mohr, M.: A hybrid approach for proving noninterference of Java programs. In: Fournet, C., Hicks, M.W., Viganò, L. (eds.) IEEE 28th Computer Security Foundations Symposium, CSF, Verona, Italy, pp. 305–319. IEEE Computer Society (2015). https://doi.org/10.1109/CSF.2015.28

  46. Leavens, G.T., et al.: JML Reference Manual (May 2013), draft revision 2344

    Google Scholar 

  47. Leino, K.R.M., Wüstholz, V.: The Dafny integrated development environment. In: F-IDE 2014. EPTCS, vol. 149, pp. 3–15 (2014)

    Google Scholar 

  48. Livshits, B., et al.: In defense of soundiness: a manifesto. Commun. ACM 58(2), 44–46 (2015)

    Article  Google Scholar 

  49. Mariño, J., Alborodo, R.N.N., Fredlund, L.Å., Herranz, Á.: Synthesis of verifiable concurrent java components from formal models. Software Syst. Modeling 18(1), 71–105 (2019). https://doi.org/10.1007/s10270-017-0581-1

    Article  Google Scholar 

  50. McCarthy, J.: A basis for a mathematical theory of computation. In: Braffort, P., Hirschberg, D. (eds.) Computer Programming and Formal Systems, pp. 33–69. North Holland (1963)

    Google Scholar 

  51. Moura, L., Ullrich, S.: The lean 4 theorem prover and programming language. In: Platzer, A., Sutcliffe, G. (eds.) CADE 2021. LNCS (LNAI), vol. 12699, pp. 625–635. Springer, Cham (2021). https://doi.org/10.1007/978-3-030-79876-5_37

    Chapter  Google Scholar 

  52. Müller, P., Ruskiewicz, J.N.: Using debuggers to understand failed verification attempts. In: Butler, M., Schulte, W. (eds.) FM 2011. LNCS, vol. 6664, pp. 73–87. Springer, Heidelberg (2011). https://doi.org/10.1007/978-3-642-21437-0_8

    Chapter  Google Scholar 

  53. Müller, P., Schwerhoff, M., Summers, A.J.: Viper: a verification infrastructure for permission-based reasoning. In: Jobstmann, B., Leino, K.R.M. (eds.) VMCAI 2016. LNCS, vol. 9583, pp. 41–62. Springer, Heidelberg (2016). https://doi.org/10.1007/978-3-662-49122-5_2

    Chapter  MATH  Google Scholar 

  54. Nipkow, T., Paulson, L.C., Wenzel, M.: Isabelle/HOL – A Proof Assistant for Higher-Order Logic, LNCS, vol. 2283. Springer, Heidelberg (2002). https://doi.org/10.1007/3-540-45949-9

  55. Platzer, A., Quesel, J.-D.: KeYmaera: a hybrid theorem prover for hybrid systems (system description). In: Armando, A., Baumgartner, P., Dowek, G. (eds.) IJCAR 2008. LNCS (LNAI), vol. 5195, pp. 171–178. Springer, Heidelberg (2008). https://doi.org/10.1007/978-3-540-71070-7_15

    Chapter  Google Scholar 

  56. Runge, T., Schaefer, I., Cleophas, L., Thüm, T., Kourie, D., Watson, B.W.: Tool support for correctness-by-construction. In: Hähnle, R., van der Aalst, W. (eds.) FASE 2019. LNCS, vol. 11424, pp. 25–42. Springer, Cham (2019). https://doi.org/10.1007/978-3-030-16722-6_2

    Chapter  Google Scholar 

  57. Schaefer, I., Runge, T., Knüppel, A., Cleophas, L., Kourie, D., Watson, B.W.: Towards confidentiality-by-construction. In: Margaria, T., Steffen, B. (eds.) ISoLA 2018. LNCS, vol. 11244, pp. 502–515. Springer, Cham (2018). https://doi.org/10.1007/978-3-030-03418-4_30

    Chapter  Google Scholar 

  58. Steinhöfel, D.: REFINITY to model and prove program transformation rules. In: Oliveira, B.C.S. (ed.) APLAS 2020. LNCS, vol. 12470, pp. 311–319. Springer, Cham (2020). https://doi.org/10.1007/978-3-030-64437-6_16

    Chapter  Google Scholar 

  59. Stucki, S., Sánchez, C., Schneider, G., Bonakdarpour, B.: Gray-box monitoring of hyperproperties. In: ter Beek, M.H., McIver, A., Oliveira, J.N. (eds.) FM 2019. LNCS, vol. 11800, pp. 406–424. Springer, Cham (2019). https://doi.org/10.1007/978-3-030-30942-8_25

    Chapter  Google Scholar 

  60. Tschannen, J., Furia, C.A., Nordio, M., Polikarpova, N.: AutoProof: auto-active functional verification of object-oriented programs. In: Baier, C., Tinelli, C. (eds.) TACAS 2015. LNCS, vol. 9035, pp. 566–580. Springer, Heidelberg (2015). https://doi.org/10.1007/978-3-662-46681-0_53

    Chapter  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Richard Bubel .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2022 The Author(s), under exclusive license to Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Beckert, B., Bubel, R., Hähnle, R., Ulbrich, M. (2022). Towards a Usable and Sustainable Deductive Verification Tool. In: Margaria, T., Steffen, B. (eds) Leveraging Applications of Formal Methods, Verification and Validation. Software Engineering. ISoLA 2022. Lecture Notes in Computer Science, vol 13702. Springer, Cham. https://doi.org/10.1007/978-3-031-19756-7_16

Download citation

  • DOI: https://doi.org/10.1007/978-3-031-19756-7_16

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-031-19755-0

  • Online ISBN: 978-3-031-19756-7

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics