VLDB 2026 Research / reviewers in the wild / expert
Aleksandar S. Dimovski
dblp:47/2013
· DBLP profile ↗
42ranked-venue papers
35as first author
13since 2021 · last 2026
0000-0002-3601-2631ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 36 · 30 first-author · 13 since 2021Theory of computation · 6 · 6 first-authorArtificial intelligence and machine learning · 2 · 2 first-author · 1 since 2021Databases, data management, data science and information retrieval · 2 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 2 · 2 first-author · 1 since 2021
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2026 | Abstract Symbolic Finite Automata for Algorithmic Game Semantics
Aleksandar S. Dimovski |
FASE | 1 |
| 2025 | While-guard Synthesis by Abstract Static Analysis and CHC SolvingabstractThis paper introduces a novel technique for automatically synthesizing assertion-safe while-guards in imperative programs.Given a partial program (sketch) with missing whileguards, the proposed algorithm synthesizes complete Boolean expressions for the missing ones, such that the obtained complete program satisfies the given assertions.To solve this problem, our technique uses forward and backward abstract static analyses of programs to generate (logical) constraints with unknown predicates that are subsequently solved by employing the logical Constraint Horn Clause (CHC) solvers.We have implemented our synthesis algorithm in a proofof-concept tool, and evaluated it on a set of C programs with missing while-guards.By experiments we prove the effectiveness of the proposed technique for synthesizing arbitrary Boolean expressions defined over program variables for some interesting program sketches written in C. Aleksandar S. Dimovski |
FedCSIS | 1 |
| 2025 | Imperative Program Synthesis by Abstract Static Analysis and SMT MutationsabstractThis paper introduces a novel technique for synthesizing imperative programs that meet behavioral specifications given in the form of assumptions and assertions (logic formulas). In particular, we combine basic statement-directed enumerative search, static analysis via abstract interpretation, and expression-directed enumerative search via (incremental) SMT-based mutations to efficiently explore all candidate complete programs generated from an input program template (with statement and expression holes) until a solution is found. Firstly, the algorithm uses a basic enumerative search through the space of all possible statements, thus filling in all statement holes. In effect, we obtain partial programs with only missing (arithmetic and boolean) expressions, which are subsequently classified by a static analysis either as potential solutions or as definite failures. Finally, we repeatedly mutate the missing expressions in potential solutions and check if the resulting complete programs become bounded correct with respect to the given assertions. Aleksandar S. Dimovski |
GPCE | 1 |
| 2025 | Variability Fault Localization by Abstract Interpretation and its Application to SPL RepairabstractFault localization is an important step in software debugging that aims to isolate and localize the bugs (errors) to a small part of the program. This becomes more challenging in Software Product Lines (SPLs) due to the variable nature of bugs (so-called variability bugs). This paper introduces a novel variability fault localization algorithm for SPLs. Moreover, we present its practical application for automatic repair of variability bugs in SPLs. Aleksandar S. Dimovski |
SLE | 1 |
| 2024 | Mutation-Based Lifted Repair of Software Product LinesabstractThe introduction of separation logic has led to the development of symbolic execution techniques and tools that are (functionally) compositional with function specifications that can be used in broader calling contexts. Many of the compositional symbolic execution tools developed in academia and industry have been grounded on a formal foundation, but either the function specifications are not validated with respect to the underlying separation logic of the theory, or there is a large gulf between the theory and the implementation of the tool. We introduce a formal compositional symbolic execution engine which creates and uses function specifications from an underlying separation logic and provides a sound theoretical foundation for, and indeed was partially inspired by, the Gillian symbolic execution platform. This is achieved by providing an axiomatic interface which describes the properties of the consume and produce operations used in the engine to update compositionally the symbolic state, for example when calling function specifications. This consume-produce technique is used by VeriFast, Viper, and Gillian, but has not been previously characterised independently of the tool. As part of our result, we give consume and produce operations inspired by the Gillian implementation that satisfy the properties described by our axiomatic interface. A surprising property is that our engine semantics provides a common foundation for both correctness and incorrectness reasoning, with the difference in the underlying engine only amounting to the choice to use satisfiability or validity. We use this property to extend the Gillian platform, which previously only supported correctness reasoning, with incorrectness reasoning and automatic true bug-finding using incorrectness bi-abduction. We evaluate our new Gillian platform by using the Gillian instantiation to C. This instantiation is the first tool grounded on a common formal compositional symbolic execution engine to support both correctness and incorrectness reasoning. Aleksandar S. Dimovski |
ECOOP | 1 |
| 2023 | Error Invariants for Fault Localization via Abstract Interpretation
Aleksandar S. Dimovski |
SAS | 1 |
| 2023 | Generalized Program Sketching by Abstract Interpretation and Logical Abduction
Aleksandar S. Dimovski |
SAS | 1 |
| 2022 | Quantitative Program Sketching using Lifted Static AnalysisabstractAbstract We present a novel approach for resolving numerical program sketches under Boolean and quantitative objectives. The input is a program sketch, which represents a partial program with missing numerical parameters (holes). The aim is to automatically synthesize values for the parameters, such that the resulting complete program satisfies: a Boolean (qualitative) specification given in the form of assertions; and a quantitative specification that estimates the number of execution steps to termination and which the synthesizer is expected to optimize. To address the above quantitative sketching problem, we encode a program sketch as a program family (a.k.a. software product line) and analyze it by the specifically designed lifted analysis algorithms based on abstract interpretation. In particular, we use a combination of forward (numerical) and backward (termination) lifted analysis of program families to find the variants (family members) that satisfy all assertions, and moreover are optimal with respect to the given quantitative objective. Such obtained variants represent “correct & optimal” sketch realizations. We present a prototype implementation of our approach within the FamilySketcher tool for resolving C sketches with numerical types. We have evaluated our approach on a set of benchmarks, and experimental results confirm the effectiveness of our approach. Aleksandar S. Dimovski |
FASE | 1 |
| 2022 | Several lifted abstract domains for static analysis of numerical program families
Aleksandar S. Dimovski, Sven Apel, Axel Legay |
Sci. Comput. Program. | 1 |
| 2021 | Lifted Static Analysis of Dynamic Program Families by Abstract InterpretationabstractProgram families (software product lines) are increasingly adopted by industry for building families of related software systems. A program family offers a set of features (configured options) to control the presence and absence of software functionality. Features in program families are often assigned at compile-time, so their values can only be read at run-time. However, today many program families and application domains demand run-time adaptation, reconfiguration, and post-deployment tuning. Dynamic program families (dynamic software product lines) have emerged as an attempt to handle variability at run-time. Features in dynamic program families can be controlled by ordinary program variables, so reads and writes to them may happen at run-time. Recently, a decision tree lifted domain for analyzing traditional program families with numerical features has been proposed, in which decision nodes contain linear constraints defined over numerical features and leaf nodes contain analysis properties defined over program variables. Decision nodes partition the configuration space of possible feature values, while leaf nodes provide analysis information corresponding to each partition of the configuration space. As features are statically assigned at compile-time, decision nodes can be added, modified, and deleted only when analyzing read accesses of features. In this work, we extend the decision tree lifted domain so that it can be used to efficiently analyze dynamic program families with numerical features. Since features can now be changed at run-time, decision nodes can be modified when handling read and write accesses of feature variables. For this purpose, we define extended transfer functions for assignments and tests as well as a special widening operator to ensure termination of the lifted analysis. To illustrate the potential of this approach, we have implemented a lifted static analyzer, called DSPLNum²Analyzer, for inferring numerical invariants of dynamic program families written in C. An empirical evaluation on benchmarks from SV-COMP indicates that our tool is effective and provides a flexible way of adjusting the precision/cost ratio in static analysis of dynamic program families. Aleksandar S. Dimovski, Sven Apel |
ECOOP | 1 |
| 2021 | A Decision Tree Lifted Domain for Analyzing Program Families with Numerical FeaturesabstractAbstract Lifted (family-based) static analysis by abstract interpretation is capable of analyzing all variants of a program family simultaneously, in a single run without generating any of the variants explicitly. The elements of the underlying lifted analysis domain are tuples, which maintain one property per variant. Still, explicit property enumeration in tuples, one by one for all variants, immediately yields combinatorial explosion. This is particularly apparent in the case of program families that, apart from Boolean features, contain also numerical features with large domains, thus giving rise to astronomical configuration spaces. The key for an efficient lifted analysis is a proper handling of variability-specific constructs of the language (e.g., feature-based runtime tests and $$\texttt {\#if}$$ # if directives). In this work, we introduce a new symbolic representation of the lifted abstract domain that can efficiently analyze program families with numerical features. This makes sharing between property elements corresponding to different variants explicitly possible. The elements of the new lifted domain are constraint-based decision trees, where decision nodes are labeled with linear constraints defined over numerical features and the leaf nodes belong to an existing single-program analysis domain. To illustrate the potential of this representation, we have implemented an experimental lifted static analyzer, called SPLNum $$^2$$ 2 Analyzer, for inferring invariants of C programs. An empirical evaluation on BusyBox and on benchmarks from SV-COMP yields promising preliminary results indicating that our decision trees-based approach is effective and outperforms the baseline tuple-based approach. Aleksandar S. Dimovski, Sven Apel, Axel Legay |
FASE | 1 |
| 2021 | Lifted termination analysis by abstract interpretation and its applicationsabstractThis paper is focused on proving termination for program families with numerical features by using abstract interpretation. Furthermore, we present an interesting application of the above lifted termination analysis for resolving “sketches”, i.e. partial programs with missing numerical parameters (holes), such that the resulting complete programs always terminate. To successfully address the above problems, we employ an abstract interpretation-based framework for inferring sufficient preconditions for termination of single programs that synthesizes piecewise-defined ranking functions. Aleksandar S. Dimovski |
GPCE | 1 |
| 2021 | Verification of Program Transformations with Inductive Refinement TypesabstractHigh-level transformation languages like Rascal include expressive features for manipulating large abstract syntax trees: first-class traversals, expressive pattern matching, backtracking, and generalized iterators. We present the design and implementation of an abstract interpretation tool, Rabit, for verifying inductive type and shape properties for transformations written in such languages. We describe how to perform abstract interpretation based on operational semantics, specifically focusing on the challenges arising when analyzing the expressive traversals and pattern matching. Finally, we evaluate Rabit on a series of transformations (normalization, desugaring, refactoring, code generators, type inference, etc.) showing that we can effectively verify stated properties. Ahmad Salim Al-Sibahi, Thomas P. Jensen, Aleksandar S. Dimovski, Andrzej Wasowski |
ACM Trans. Softw. Eng. Methodol. | 3 |
| 2020 | Computing Program Reliability Using Forward-Backward Precondition Analysis and Model CountingabstractThe goal of probabilistic static analysis is to quantify the probability that a given program satisfies/violates a required property (assertion). In this work, we use a static analysis by abstract interpretation and model counting to construct probabilistic analysis of deterministic programs with uncertain input data, which can be used for estimating the probabilities of assertions ( program reliability ). In particular, we automatically infer necessary preconditions in order a given assertion to be satisfied/violated at run-time using a combination of forward and backward static analyses. The focus is on numeric properties of variables and numeric abstract domains, such as polyhedra. The obtained preconditions in the form of linear constraints are then analyzed to quantify how likely is an input to satisfy them. Model counting techniques are employed to count the number of solutions that satisfy given linear constraints. These counts are then used to assess the probability that the target assertion is satisfied/violated. We also present how to extend our approach to analyze non-deterministic programs by inferring sufficient preconditions. We built a prototype implementation and evaluate it on several interesting examples. Aleksandar S. Dimovski, Axel Legay |
FASE | 1 |
| 2020 | $\hbox {CTL}^{\star }$ family-based model checking using variability abstractions and modal transition systems
Aleksandar S. Dimovski |
Int. J. Softw. Tools Technol. Transf. | 1 |
| 2020 | Generalized abstraction-refinement for game-based CTL lifted model checking
Aleksandar S. Dimovski, Axel Legay, Andrzej Wasowski |
Theor. Comput. Sci. | 1 |
| 2019 | Variability Abstraction and Refinement for Game-Based Lifted Model Checking of Full CTLabstractVariability models allow effective building of many custom model variants for various configurations. Lifted model checking for a variability model is capable of verifying all its variants simultaneously in a single run by exploiting the similarities between the variants. The computational cost of lifted model checking still greatly depends on the number of variants (the size of configuration space), which is often huge. One of the most promising approaches to fighting the configuration space explosion problem in lifted model checking are variability abstractions . In this work, we define a novel game-based approach for variability-specific abstraction and refinement for lifted model checking of the full CTL, interpreted over 3-valued semantics. We propose a direct algorithm for solving a 3-valued (abstract) lifted model checking game. In case the result of model checking an abstract variability model is indefinite, we suggest a new notion of refinement, which eliminates indefinite results. This provides an iterative incremental variability-specific abstraction and refinement framework, where refinement is applied only where indefinite results exist and definite results from previous iterations are reused. Aleksandar S. Dimovski, Axel Legay, Andrzej Wasowski |
FASE | 1 |
| 2019 | Lifted static analysis using a binary decision diagram abstract domainabstractMany software systems are today variational. They can produce a potentially large variety of related programs (variants) by selecting suitable configuration options (features) at compile time. Specialized variability-aware (lifted, family-based) static analyses allow analyzing all variants of the family, simultaneously, in a single run without generating any of the variants explicitly. In effect, they produce precise analysis results for all individual variants. The elements of the lifted analysis domain represent tuples (i.e. disjunction of properties), which maintain one property from an existing single-program analysis domain per variant. Nevertheless, explicit property enumeration in tuples, one by one for all variants, immediately yields to combinatorial explosion given that the number of variants can grow exponentially with the number of features. Therefore, such lifted analyses may be too costly or even infeasible for families with a large number of variants. Aleksandar S. Dimovski |
GPCE | 1 |
| 2019 | Finding suitable variability abstractions for lifted analysisabstractAbstract Many software systems are today variational: they are built as program families or Software Product Lines. They can produce a potentially huge number of related programs, known as products or variants, by selecting suitable configuration options (features) at compile time. Many such program families are safety critical, yet the appropriate tools only rarely are able to analyze them effeciently. Researchers have addressed this problem by designing specialized variability-aware static (dataflow) analyses, which allow analyzing all variants of the family, simultaneously, in a single run without generating any of the variants explicitly. They are also known as lifted or family-based analyses. They take as input the common code base, which encodes all variants of a program family, and produce precise analysis results corresponding to all variants. These analyses scale much better than “brute force” approach, where all individual variants are analyzed in isolation, one-by-one, using off-the-shelf single-program analyzers. Nevertheless, the computational cost of lifted analyses still greatly depends on the number of features and variants (which is often huge). For families with a large number of features and variants, the lifted analyses may be too costly or even infeasible. In order to speed up lifted analyses and make them computationally cheaper, variability abstractions which simplify variability away from program families and lifted analyses have been introduced. However, the space of possible variability abstractions is still intractably large to search naively, with most abstractions being either too imprecise or too costly. We introduce here a method to efficiently find suitable variability abstractions from a large space of possible abstractions for a lifted static analysis. The main idea is to use a pre-analysis to estimate the impact of variability-specific parts of the program family on the analysis’s precision. The pre-analysis is fully variability-aware while it aggressively abstracts the other semantics aspects. Then we use the pre-analysis results to find out when and where the subsequent abstract lifted analysis should turn off or on its variability-awareness. The abstraction constructed in this way is effective in discarding variability-specific program details that are irrelevant for showing the analysis’s ultimate goal. We formalize this approach and we illustrate its effectiveness on several Java case studies. The evaluation shows that our approach which consists of running a pre-analysis followed by a subsequent abstract lifted analysis achieves competitive the precision-speed tradeoff compared to the standard lifted analysis. Aleksandar S. Dimovski, Claus Brabrand, Andrzej Wasowski |
Formal Aspects Comput. | 1 |
| 2018 | Abstract Family-Based Model Checking Using Modal Featured Transition Systems: Preservation of CTL\(^{\star }\)abstractVariational systems allow effective building of many custom variants by using features (configuration options) to mark the variable functionality. In many of the applications, their quality assurance and formal verification are of paramount importance. Family-based model checking allows simultaneous verification of all variants of a variational system in a single run by exploiting the commonalities between the variants. Yet, its computational cost still greatly depends on the number of variants (often huge). In this work, we show how to achieve efficient family-based model checking of CTL $$^{\star }$$ temporal properties using variability abstractions and off-the-shelf (single-system) tools. We use variability abstractions for deriving abstract family-based model checking, where the variability model of a variational system is replaced with an abstract (smaller) version of it, called modal featured transition system, which preserves the satisfaction of both universal and existential temporal properties, as expressible in CTL $$^{\star }$$ . Modal featured transition systems contain two kinds of transitions, termed may and must transitions, which are defined by the conservative (over-approximating) abstractions and their dual (under-approximating) abstractions, respectively. The variability abstractions can be combined with different partitionings of the set of variants to infer suitable divide-and-conquer verification plans for the variational system. We illustrate the practicality of this approach for several variational systems. Aleksandar S. Dimovski |
FASE | 1 |
| 2018 | Verification of high-level transformations with inductive refinement typesabstractHigh-level transformation languages like Rascal include expressive features for manipulating large abstract syntax trees: first-class traversals, expressive pattern matching, backtracking and generalized iterators. We present the design and implementation of an abstract interpretation tool, Rabit, for verifying inductive type and shape properties for transformations written in such languages. We describe how to perform abstract interpretation based on operational semantics, specifically focusing on the challenges arising when analyzing the expressive traversals and pattern matching. Finally, we evaluate Rabit on a series of transformations (normalization, desugaring, refactoring, code generators, type inference, etc.) showing that we can effectively verify stated properties. Ahmad Salim Al-Sibahi, Thomas P. Jensen, Aleksandar S. Dimovski, Andrzej Wasowski |
GPCE | 3 |
| 2018 | Variability abstractions for lifted analyses
Aleksandar S. Dimovski, Claus Brabrand, Andrzej Wasowski |
Sci. Comput. Program. | 1 |
| 2018 | Verifying annotated program families using symbolic game semantics
Aleksandar S. Dimovski |
Theor. Comput. Sci. | 1 |
| 2017 | Variability-Specific Abstraction Refinement for Family-Based Model Checking
Aleksandar S. Dimovski, Andrzej Wasowski |
FASE | 1 |
| 2017 | Efficient family-based model checking via variability abstractions
Aleksandar S. Dimovski, Ahmad Salim Al-Sibahi, Claus Brabrand, Andrzej Wasowski |
Int. J. Softw. Tools Technol. Transf. | 1 |
| 2016 | Finding Suitable Variability Abstractions for Family-Based Analysis
Aleksandar S. Dimovski, Claus Brabrand, Andrzej Wasowski |
FM | 1 |
| 2016 | Symbolic execution of high-level transformations
Ahmad Salim Al-Sibahi, Aleksandar S. Dimovski, Andrzej Wasowski |
SLE | 2 |
| 2016 | Symbolic Game Semantics for Model Checking Program Families
Aleksandar S. Dimovski |
SPIN | 1 |
| 2015 | Variability Abstractions: Trading Precision for Speed in Family-Based AnalysesabstractFamily-based (lifted) data-flow analysis for Software Product Lines (SPLs) is capable of analyzing all valid products (variants) without generating any of them explicitly. It takes as input only the common code base, which encodes all variants of a SPL, and produces analysis results corresponding to all variants. However, the computational cost of the lifted analysis still depends inherently on the number of variants (which is exponential in the number of features, in the worst case). For a large number of features, the lifted analysis may be too costly or even infeasible. In this paper, we introduce variability abstractions defined as Galois connections and use abstract interpretation as a formal method for the calculational-based derivation of approximate (abstracted) lifted analyses of SPL programs, which are sound by construction. Moreover, given an abstraction we define a syntactic transformation that translates any SPL program into an abstracted version of it, such that the analysis of the abstracted SPL coincides with the corresponding abstracted analysis of the original SPL. We implement the transformation in a tool, that works on Object-Oriented Java program families, and evaluate the practicality of this approach on three Java SPL benchmarks. Aleksandar S. Dimovski, Claus Brabrand, Andrzej Wasowski |
ECOOP | 1 |
| 2015 | Experiences from Designing and Validating a Software Modernization Transformation (E)abstractSoftware modernization often involves complex code transformations that convert legacy code to new architectures or platforms, while preserving the semantics of the original programs. We present the lessons learnt from an industrial software modernization project of considerable size. This includes collecting requirements for a code-to-model transformation, designing and implementing the transformation algorithm, and then validating correctness of this transformation for the code-base at hand. Our transformation is implemented in the TXL rewriting language and assumes specifically structured C++ code as input, which it translates to a declarative configuration model. The correctness criterion for the transformation is that the produced model admits the same configurations as the input code. The transformation converts C++ functions specifying around a thousand configuration parameters. We verify the correctness for each run individually, using translation validation and symbolic execution. The technique is formally specified and is applicable automatically for most of the code-base. Alexandru F. Iosif-Lazar, Ahmad Salim Al-Sibahi, Aleksandar S. Dimovski, Juha Savolainen, Krzysztof Sierszecki, Andrzej Wasowski |
ASE | 3 |
| 2015 | Family-Based Model Checking Without a Family-Based Model Checker
Aleksandar S. Dimovski, Ahmad Salim Al-Sibahi, Claus Brabrand, Andrzej Wasowski |
SPIN | 1 |
| 2015 | Family-based model checking using off-the-shelf model checkers: extended abstractabstractModel checking provides a convenient way to check whether a given software system is correct with respect to a set of relevant semantic properties. To use a model checker like SPIN [5], the software system must be modelled as a transition system (TS). Afterwards, the model checker can check the correctness of the translated TS by exhaustively exploring all possible transitions. Aleksandar S. Dimovski, Ahmad Salim Al-Sibahi, Claus Brabrand, Andrzej Wasowski |
SPLC | 1 |
| 2015 | Systematic derivation of correct variability-aware program analyses
Jan Midtgaard, Aleksandar S. Dimovski, Claus Brabrand, Andrzej Wasowski |
Sci. Comput. Program. | 2 |
| 2014 | Program verification using symbolic game semantics
Aleksandar S. Dimovski |
Theor. Comput. Sci. | 1 |
| 2012 | Efficient Processing of Top-K Join Queries by Attribute Domain Refinement
Dragan Sahpaski, Aleksandar S. Dimovski, Goran Velinov, Margita Kon-Popovska |
ADBIS | 2 |
| 2010 | Horizontal Partitioning by Predicate Abstraction and Its Application to Data Warehouse Design
Aleksandar S. Dimovski, Goran Velinov, Dragan Sahpaski |
ADBIS | 1 |
| 2010 | A Compositional Method for Deciding Equivalence and Termination of Nondeterministic Programs
Aleksandar S. Dimovski |
IFM | 1 |
| 2010 | Data-abstraction refinement: a game semantic approach
Adam Bakewell, Aleksandar S. Dimovski, Dan R. Ghica, Ranko Lazic 0001 |
Int. J. Softw. Tools Technol. Transf. | 2 |
| 2007 | Compositional software verification based on game semantics and process algebra
Aleksandar S. Dimovski, Ranko Lazic 0001 |
Int. J. Softw. Tools Technol. Transf. | 1 |
| 2006 | Assume-Guarantee Software Verification Based on Game Semantics
Aleksandar S. Dimovski, Ranko Lazic 0001 |
ICFEM | 1 |
| 2005 | Data-Abstraction Refinement: A Game Semantic Approach
Aleksandar S. Dimovski, Dan R. Ghica, Ranko Lazic 0001 |
SAS | 1 |
| 2004 | CSP Representation of Game Semantics for Second-Order Idealized Algol
Aleksandar S. Dimovski, Ranko Lazic 0001 |
ICFEM | 1 |