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:

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.

Interested? Contact us:

Recent results and artifacts

M. Blicha, A. Hyvärinen, J. Kofroň, N. Sharygina:
Using linear algebra in decomposition of Farkas interpolants, in International Journal on Software Tools for Technology Transfer, 2021
DOI: 10.1007/s10009-021-00641-z
P. Arcaini, J. Kofroň, P. Ježek:
Validation of the Hybrid ERTMS/ETCS Level 3 using Spin, in International Journal on Software Tools for Technology Transfer 22(3), pp. 265-279, 2020
DOI: 10.1007/s10009-019-00539-x
V. Dort, O. Lhoták:
Reference mutability for DOT – roDOT definitions and proofs, Technical report no. D3S-TR-2020-01, Department of Distributed and Dependable Systems, Charles University, 2020
S. Asadi, M. Blicha, A. Hyvärinen, G. Fedyukovich, N. Sharygina:
Farkas-Based Tree Interpolation, in Static Analysis, pp. 357-379, 2020
ISBN: 978-3-030-65474-0, DOI: 10.1007/978-3-030-65474-0_16
A. Čižmárik, P. Parízek:
SharpDetect: Dynamic Analysis Framework for C#/.NET Programs, in Proceedings of the 20th International Conference on Runtime Verification (RV 2020), pp. 298-309, 2020
DOI: 10.1007/978-3-030-60508-7_16
V. Dort, O. Lhoták:
Reference Mutability for DOT, in Proceedings of 34th European Conference on Object-Oriented Programming, 2020
ISBN: 978-3-95977-154-2, DOI: 10.4230/LIPIcs.ECOOP.2020.18
M. Blicha, A. Hyvärinen, M. Marescotti, N. Sharygina:
A Cooperative Parallelization Approach for Property-Directed k-Induction, in Verification, Model Checking, and Abstract Interpretation, pp. 270-292, 2020
ISBN: 978-3-030-39322-9, DOI: 10.1007/978-3-030-39322-9_13
R. Kápl, P. Parízek:
Endicheck: Dynamic Analysis for Detecting Endianness Bugs, in Proceedings of the 26th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS 2020), pp. 254-270, 2020
DOI: 10.1007/978-3-030-45237-7_15
S. Asadi, M. Blicha, A. Hyvärinen, G. Fedyukovich, N. Sharygina:
Incremental Verification by SMT-based Summary Repair, in Proceedings of the 20th Conference on Formal Methods in Computer-Aided Design – FMCAD 2020, 2020
ISBN: 978-3-85448-042-6, DOI: 10.34727/2020/isbn.978-3-85448-042-6
R. Husák, J. Kofroň, F. Zavoral:
AskTheCode: Interactive Call Graph Exploration for Error Fixing and Prevention, in Electronic Communications of the EASST 77(0), 2019
DOI: 10.14279/tuj.eceasst.77.1109
M. Blicha, A. Hyvärinen, J. Kofroň, N. Sharygina:
Decomposing Farkas Interpolants, in Tools and Algorithms for the Construction and Analysis of Systems, pp. 3-20, 2019
ISBN: 978-3-030-17462-0, DOI: 10.1007/978-3-030-17462-0_1
R. Husák, J. Kofroň, F. Zavoral:
Handling Heap Data Structures in Backward Symbolic Execution, in Pre-proceedings for TAPAS 2019, 2019
P. Parízek, O. Lhoták:
Fast Detection of Concurrency Errors by State Space Traversal with Randomization and Early Backtracking, in International Journal on Software Tools for Technology Transfer 21(4), pp. 365-400, 2019
DOI: 10.1007/s10009-018-0484-7
P. Parízek:
BUBEN: Automated Library Abstractions Enabling Scalable Bug Detection for Large Programs with I/O and Complex Environment, in Proceedings of the 17th International Symposium on Automated Technology for Verification and Analysis (ATVA 2019), pp. 228-245, 2019
DOI: 10.1007/978-3-030-31784-3_13
P. Jančík, J. Kofroň, L. Alt, G. Fedyukovich, A. Hyvärinen, N. Sharygina:
Exploiting partial variable assignment in interpolation-based model checking, in Formal Methods in System Design 55(1), pp. 33-71, 2019
DOI: 10.1007/s10703-019-00342-z

Grants and Projects