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.
Related publications
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
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
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
Pure methods for roDOT (an extended version), Technical report no. D3S-TR-2024-01, Department of Distributed and Dependable Systems, Charles University, 2024
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
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
SMT-based verification of program changes through summary repair, in Formal Methods in System Design, 2023
DOI: 10.1007/s10703-023-00423-0
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
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