Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data.

Lukás Korencik

dblp:284/7151 · DBLP profile ↗
← Back
2ranked-venue papers
1as first author
1since 2021 · last 2022
0000-0002-1468-1594ORCID · reported

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 2 · 1 first-author · 1 since 2021

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
1 paper
Program analysis · 70% Program verification · 30%

Topics — the 4 heaviest of 4, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program analysis › static analysis › abstract interpretation
abstract domain
0.612022
Verification of Programs Sensitive to Heap Layout · ACM Trans. Softw. Eng. Methodol. 2022
Program analysis › static analysis
abstract interpretation
0.612022
Verification of Programs Sensitive to Heap Layout · ACM Trans. Softw. Eng. Methodol. 2022
Program verification › pointer program verification
heap verification
0.612022
Verification of Programs Sensitive to Heap Layout · ACM Trans. Softw. Eng. Methodol. 2022
Program analysis › static analysis
pointer analysis
0.212022
Verification of Programs Sensitive to Heap Layout · ACM Trans. Softw. Eng. Methodol. 2022

Methods — techniques the papers use, named apart from their topics

under-approximating abstract domain · 0.6
YearPublicationVenuePosition
2022 Verification of Programs Sensitive to Heap Layout
abstract
Most C and C++ programs use dynamically allocated memory (often known as a heap) to store and organize their data. In practice, it can be useful to compare addresses of different heap objects, for instance, to store them in a binary search tree or a sorted array. However, comparisons of pointers to distinct objects are inherently ambiguous: The address order of two objects can be reversed in different executions of the same program, due to the nature of the allocation algorithm and other external factors. This poses a significant challenge to program verification, since a sound verifier must consider all possible behaviors of a program, including an arbitrary reordering of the heap. A naive verification of all possibilities, of course, leads to a combinatorial explosion of the state space: For this reason, we propose an under-approximating abstract domain that can be soundly refined to consider all relevant heap orderings. We have implemented the proposed abstract domain and evaluated it against several existing software verification tools on a collection of pointer-manipulating programs. In many cases, existing tools only consider a single fixed heap order, which is a source of unsoundness. We demonstrate that using our abstract domain, this unsoundness can be repaired at only a very modest performance cost. Additionally, we show that, even though many verifiers ignore it, ambiguous behavior is present in a considerable fraction of programs from software verification competition ( sv-comp ).
Henrich Lauko, Lukás Korencik, Petr Rockai
ACM Trans. Softw. Eng. Methodol.2
2020 On Symbolic Execution of Decompiled Programs
abstract
In this paper, we present a combination of existing and new tools that together make it possible to apply formal verification methods to programs in the form of ×86_64 machine code. Our approach first uses a decompilation tool (remill) to extract low-level intermediate representation (LLVM) from the machine code. This step consists of instruction translation (i.e. recovery of operation semantics), control flow extraction and address identification.The main contribution of this paper is the second step, which builds on data flow analysis and refinement of indirect (i.e. data-dependent) control flow. This step makes the processed bitcode much more amenable to formal analysis.To demonstrate the viability of our approach, we have compiled a set of benchmark programs into native executables and analysed them using two LLVM-based tools: DIVINE, a software model checker and KLEE, a symbolic execution engine. We have compared the outcomes to direct analysis of the same programs.
Lukás Korencik, Petr Rockai, Henrich Lauko, Jiri Barnat
QRS1