The fundamental challenge of software engineering is that of the complexity of the software being developed. Essentially, the complexity grows faster than what humans can manage when not aided by automated development tools. At the same time, software systems are used in many safety-critical applications (such as various control systems) whose failures can lead to huge financial losses and potentially also endangered human lives. Moreover, not only that software defects can themselves cause failures, they can also be abused for targeted attacks—e.g., in recent years, 70 % of security issues in the Chrome browser as well as in Microsoft products were based on abusing various memory-safety errors such as out-of-bound accesses or use-after-free errors (which belong among the below-mentioned concrete targets of this project).

The overall aim of this project is hence to propose new techniques for automated analysis and verification of advanced software that uses either low-level programming, new high-level constructs, or both. To obtain such methods, we intend to build primarily on our long-term experience with various logic-based approaches (though, if suitable, we may use other approaches too). To facilitate the considered methods, we will also develop or significantly improve decision procedures for various logics suitable for our purposes. Accordingly, we discuss below in more detail the state of the art in analysis and verification of low-level and high-level software (with stress on memory safety in the former case), the verification techniques we intend to improve on, and the decision procedures underlying these techniques.

R. Otoni, M. Blicha, P. Eugster, N. Sharygina:
CHC Model Validation with Proof Guarantees, in iFM 2023, pp. 62-81, 2024
ISBN: 978-3-031-47705-8, DOI: 10.1007/978-3-031-47705-8_4
C. Artho, P. Parízek, D. Qu, V. Galgali, P. Yi:
JPF: From 2003 to 2023, in 30th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS 2024), pp. 3-22, 2024
DOI: 10.1007/978-3-031-57249-4_1
V. Dort, Y. Li, O. Lhoták, P. Parízek:
Pure Methods for roDOT, in 38th European Conference on Object-Oriented Programming (ECOOP 2024), pp. 13:1-13:29, 2024
DOI: 10.4230/LIPICS.ECOOP.2024.13
V. Dort, L. Yufeng, O. Lhoták, P. Parízek:
Pure methods for roDOT (an extended version), Technical report no. D3S-TR-2024-01, Department of Distributed and Dependable Systems, Charles University, 2024
K. Britikov, M. Blicha, N. Sharygina, G. Fedyukovich:
Reachability Analysis for Multiloop Programs Using Transition Power Abstraction, in Formal Methods, pp. 558-576, 2024
ISBN: 978-3-031-71162-6, DOI: 10.1007/978-3-031-71162-6_29
R. Husák, J. Kofroň, F. Zavoral:
Slicito: Using Computational Notebooks for Program Comprehension, in 2023 IEEE/ACM 31st International Conference on Program Comprehension (ICPC), pp. 64-68, 2023
DOI: 10.1109/ICPC58990.2023.00019
S. Asadi, M. Blicha, A. Hyvärinen, G. Fedyukovich, N. Sharygina:
SMT-based verification of program changes through summary repair, in Formal Methods in System Design, 2023
DOI: 10.1007/s10703-023-00423-0
J. Jakubovic, J. Edwards, T. Petříček:
Technical Dimensions of Programming Systems, in The Art, Science, and Engineering of Programming 7(3), pp. 13:1-13:59, 2023
DOI: 10.22152/programming-journal.org/2023/7/13
M. Blicha, K. Britikov, N. Sharygina:
The Golem Horn Solver, in Computer Aided Verification, pp. 209–223, 2023
ISBN: 978-3-031-37703-7, DOI: 10.1007/978-3-031-37703-7_10
Project data
Duration: 2023-2025
Funding body: Czech Science Foundation
ID: 23-06506S
Contact: Jan Kofroň