Verification methods
Symbolic techniques and tools (such as SAT and SMT solvers and theorem provers) are used in program verification (establishing interesting properties, such as deadlock absence, race conditions, no assertion violation) to overcome the scaling issues of explicit-state approaches. Some of these methods employ Craig interpolants as an abstract way of representation sets of states. Our research focuses on extending this idea to further improve performance of the verification tools in terms of both verification time and consumed memory.
Project team members wanted!
We seek students willing to participate in our projects focused on (but not restricted to) verification of C programs properties. This involves the following areas:
- Modelling: modelling program semantics (Horn clauses, control-flow graph, logical formulas)
- Model checking: algorithms for model checking (bounded model checking, k-induction, IC3/PDR, Craig interpolation)
- Reasoning engine: SAT solver, SMT solver (extending the algorithms, research on new ones)
Analysis of LLVM passes suitable for software verification
LLVM performs plenty of passes transforming the intermediate representation, usually with the goal to simplify the code for a particular purpose. The goal here is to identify those that contribute to the form being most suitable for software verification. An example of such tools is SeaHorn.
Implementation of new software verification algorithms
This includes development and implementation of new algorithms based on state of the art with the aim to win the software verification competition SV-COMP.
Optimization techniques inside SAT/SMT solver
The goal is to develop algorithms compatible with proof generation and interpolation that improve performance of the solver. This also includes techniques already published in scientific works, but not yet implemented in available tools.
Recent results and artifacts
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
Checking Just Pairs of Threads for Efficient and Scalable Incremental Verification of Multithreaded Programs, in Proceedings of JPF Workshop 2022, pp. 27-31, 2023
DOI: 10.1145/3573074.3573082
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
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
Incremental Verification of Multithreaded Programs by Checking Interleavings for Pairs of Threads, Technical report no. D3S-TR-2022-01, Department of Distributed and Dependable Systems, Charles University, pp. 1-15, 2022
SolCMC: Solidity Compiler’s Model Checker, in Computer Aided Verification, pp. 325-338, 2022
ISBN: 978-3-031-13185-1, DOI: 10.1007/978-3-031-13185-1_16
Split Transition Power Abstraction for Unbounded Safety, in Proceedings of FMCAD'22, pp. 349-358, 2022
ISBN: 978-3-85448-053-2, DOI: 10.34727/2022/isbn.978-3-85448-053-2_42
Summarization of branching loops, in Proceedings of the 37th ACM/SIGAPP Symposium on Applied Computing, pp. 1808–1816, 2022
ISBN: 978-1-4503-8713-2, DOI: 10.1145/3477314.3507042
Transition Power Abstractions for Deep Counterexample Detection, in Tools and Algorithms for the Construction and Analysis of Systems, pp. 524-542, 2022
ISBN: 978-3-030-99524-9, DOI: 10.1007/978-3-030-99524-9_29
Using linear algebra in decomposition of Farkas interpolants, in International Journal on Software Tools for Technology Transfer 24(1), pp. 111-125, 2022
DOI: 10.1007/s10009-021-00641-z
Grants and Projects
- GAČR 23-06506S: Advanced Analysis and Verification for Advanced Software
- GAČR 20-07487S: Scalable Techniques for Analysis of Complex Properties of Computer Systems
- GAČR 17-12465S: Verification and Bug-Hunting for Advanced Software