Skip to main content

Supporting Algorithm Analysis with Symbolic Execution in Alk

  • Conference paper
  • First Online:
Theoretical Aspects of Software Engineering (TASE 2022)

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

Included in the following conference series:

Abstract

Alk is an educational platform designed for writing, executing, and analyzing algorithms. The platform consists of an algorithmic language, an interpreter able to execute algorithms, and tools to understand, analyse, and evaluate algorithms, and to acquire a rigorous algorithm thinking. In this paper, we present Alk and show how the analysis and evaluation tools are built using symbolic execution and data-flow analysis.

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 79.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 99.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

Institutional subscriptions

Notes

  1. 1.

    The symbolic execution is given only for non-randomized algorithms.

  2. 2.

    This is work in progress and it is also data-flow-based.

  3. 3.

    This tool is under development and it reached a state in which it can display recurrence formulas for each variable modified inside a loop statement.

References

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

    Book  Google Scholar 

  2. Arusoaie, A., Lucanu, D., Rusu, V.: A generic framework for symbolic execution. In: Erwig, M., Paige, R.F., Van Wyk, E. (eds.) SLE 2013. LNCS, vol. 8225, pp. 281–301. Springer, Cham (2013). https://doi.org/10.1007/978-3-319-02654-1_16

    Chapter  Google Scholar 

  3. Ballabriga, C., Forget, J., Lipari, G.: Symbolic WCET computation. ACM Trans. Embed. Comput. Syst. 17(2), 39:1–39:26 (2018)

    Google Scholar 

  4. Blieberger, J.: Data-flow frameworks for worst-case execution time analysis. Real Time Syst. 22(3), 183–227 (2002)

    Article  Google Scholar 

  5. Bobot, F., Filliâtre, J.-C., Marché, C., Paskevich, A.: Let’s verify this with why3. Int. J. Softw. Tools Technol. Transf. 17(6), 709–727 (2015)

    Article  Google Scholar 

  6. Chen, X., Roşu, G.: Matching \(\mu \)-logic: foundation of K framework. In: Proceedings of the 8th Conference on Algebra and Coalgebra in Computer Science (CALCO 2019). Leibniz International Proceedings in Informatics (LIPIcs), vol. 139, pp. 1–4. Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik (2019)

    Google Scholar 

  7. Chen, X., Roşu, G.: \(\mathbb{K}\)—a semantic framework for programming languages and formal analysis. In: Bowen, J.P., Liu, Z., Zhang, Z. (eds.) SETSS 2019. LNCS, vol. 12154, pp. 122–158. Springer, Cham (2020). https://doi.org/10.1007/978-3-030-55089-9_4

    Chapter  Google Scholar 

  8. Cousot, P.: Principles of Abstract Interpretation. MIT Press, Cambridge (2021)

    MATH  Google Scholar 

  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). https://doi.org/10.1007/978-3-540-78800-3_24

    Chapter  Google Scholar 

  10. Eilers, M., Müller, P.: Nagini: a static verifier for Python. In: Chockler, H., Weissenbacher, G. (eds.) CAV 2018. LNCS, vol. 10981, pp. 596–603. Springer, Cham (2018). https://doi.org/10.1007/978-3-319-96145-3_33

    Chapter  Google Scholar 

  11. Huisman, M., Ahrendt, W., Grahl, D., Hentschel, M.: Formal specification with the Java modeling language. In: Ahrendt, W., Beckert, B., Bubel, R., Hähnle, R., Schmitt, P., Ulbrich, M. (eds.) Deductive Software Verification – The KeY Book. LNCS, vol. 10001, pp. 193–241. Springer, Cham (2016). https://doi.org/10.1007/978-3-319-49812-6_7

    Chapter  Google Scholar 

  12. Kosmatov, N., Signoles, J.: Frama-C, a collaborative framework for C code verification: tutorial synopsis. In: Falcone, Y., Sánchez, C. (eds.) RV 2016. LNCS, vol. 10012, pp. 92–115. Springer, Cham (2016). https://doi.org/10.1007/978-3-319-46982-9_7

    Chapter  Google Scholar 

  13. 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). https://doi.org/10.1007/978-3-642-17511-4_20

    Chapter  MATH  Google Scholar 

  14. Lucanu, D., Rusu, V., Arusoaie, A.: A generic framework for symbolic execution: a coinductive approach. J. Symb. Comput. 80, 125–163 (2017)

    Article  MathSciNet  Google Scholar 

  15. Lungu, A., Lucanu, D.: Alk interpreter. https://github.com/alk-language/java-semantics. Accessed 23 Feb 2022

  16. Lungu, A., Lucanu, D.: Alk interpreter - reference manual. https://github.com/alk-language/java-semantics/wiki/Reference-Manual. Accessed 27 Feb 2022

  17. Lungu, A.-I.: Extended Z3 array. In: 23th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing (FROM Workshop), SYNASC 2021. IEEE (2021, to appear)

    Google Scholar 

  18. Müller, P., Schwerhoff, M., Summers, A.J.: Viper: a verification infrastructure for permission-based reasoning. In: Pretschner, A., Peled, D., Hutzelmann, T. (eds.) Dependable Software Systems Engineering. NATO Science for Peace and Security Series - D: Information and Communication Security, vol. 50, pp. 104–125. IOS Press (2017)

    Google Scholar 

  19. Nielson, F., Nielson, H.R.: Principles of Program Analysis. Springer, Cham (1999). https://doi.org/10.1007/978-3-662-03811-6

    Book  MATH  Google Scholar 

  20. Rival, X., Yi, K.: Introduction to Static Analysis: An Abstract Interpretation Perspective. MIT Press, Cambridge (2020)

    Google Scholar 

  21. Stefanescu, A., Ciobâcă, Ş., Mereuta, R., Moore, B.M., Serbanuta, T.-F., Rosu, G.: All-path reachability logic. Log. Methods Comput. Sci. 15(2) (2019)

    Google Scholar 

  22. Vogels, F., Jacobs, B., Piessens, F.: Featherweight verifast. Log. Methods Comput. Sci. 11(3), 1–57 (2015)

    MathSciNet  MATH  Google Scholar 

Download references

Acknowledgment

We warmly thank the anonymous TASE reviewers for their insightful comments, which helped us to improve the presentation.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Dorel Lucanu .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2022 Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Lungu, AI., Lucanu, D. (2022). Supporting Algorithm Analysis with Symbolic Execution in Alk. In: Aït-Ameur, Y., Crăciun, F. (eds) Theoretical Aspects of Software Engineering. TASE 2022. Lecture Notes in Computer Science, vol 13299. Springer, Cham. https://doi.org/10.1007/978-3-031-10363-6_27

Download citation

  • DOI: https://doi.org/10.1007/978-3-031-10363-6_27

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-031-10362-9

  • Online ISBN: 978-3-031-10363-6

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics