Demo Data from VLDB 2026 / reviewers in the wild / expert
Andrey Rybalchenko
dblp:r/AndreyRybalchenko
· DBLP profile ↗
64ranked-venue papers
4as first author
1since 2021 · last 2021
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 53 · 3 first-authorTheory of computation · 20 · 3 first-authorArtificial intelligence and machine learning · 2 · 1 since 2021Security and privacy · 2
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
20 papers |
Program verification · 84% Program analysis · 13% Concurrent programming · 2% | |
| Theoretical computer science
8 papers |
Automated reasoning and model checking · 75% Logic in computer science · 14% Algorithmic game theory and mechanism design · 7% | |
| Computer networks
3 papers |
Network management and operations · 54% Network performance modeling · 20% Network measurement and analytics · 20% |
Topics — the 30 heaviest of 51, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Program verification
termination analysis |
0.4 | 6 | 2008 | Proving non-termination · POPL 2008 Proving Conditional Termination · CAV 2008 Transition predicate abstraction and fair termination · ACM Trans. Program. Lang. Syst. 2007 |
Program verification
invariant generation |
0.4 | 3 | 2016 | Cardinalities and universal quantifiers for verifying parameterized systems · PLDI 2016 InvGen: An Efficient Invariant Generator · CAV 2009 Path invariants · PLDI 2007 |
Network performance modeling
network emulation |
0.3 | 1 | 2017 | CrystalNet: Faithfully Emulating Large Production Networks · SOSP 2017 |
Network management and operations
network validation |
0.3 | 1 | 2017 | CrystalNet: Faithfully Emulating Large Production Networks · SOSP 2017 |
Automated reasoning and model checking
program verification |
0.3 | 2 | 2014 | A constraint-based approach to solving games on infinite graphs · POPL 2014 Heap Assumptions on Demand · CAV 2008 |
Program verification › abstraction-based verification
predicate abstraction |
0.3 | 3 | 2011 | Predicate abstraction and refinement for verifying multi-threaded programs · POPL 2011 Transition predicate abstraction and fair termination · ACM Trans. Program. Lang. Syst. 2007 Transition predicate abstraction and fair termination · POPL 2005 |
Network management and operations
network verification |
0.2 | 1 | 2016 | Scaling network verification using symmetry and surgery · POPL 2016 |
Network management and operations › network verification
reachability analysis |
0.2 | 1 | 2016 | Scaling network verification using symmetry and surgery · POPL 2016 |
Automated reasoning and model checking
parameterized verification |
0.2 | 1 | 2016 | Cardinalities and universal quantifiers for verifying parameterized systems · PLDI 2016 |
Program verification
constraint-based verification |
0.2 | 2 | 2011 | Threader: A Constraint-Based Verifier for Multi-threaded Programs · CAV 2011 Constraint Solving for Program Verification: Theory and Practice by Example · CAV 2010 |
Program verification › termination analysis
fair termination |
0.2 | 3 | 2009 | Verifying liveness for asynchronous programs · POPL 2009 Transition predicate abstraction and fair termination · ACM Trans. Program. Lang. Syst. 2007 Transition predicate abstraction and fair termination · POPL 2005 |
Automated reasoning and model checking › automated reasoning
interpolation |
0.2 | 1 | 2015 | Symbolic Polytopes for Quantitative Interpolation and Verification · CAV (1) 2015 |
Automated reasoning and model checking
model checking |
0.2 | 1 | 2015 | Symbolic Polytopes for Quantitative Interpolation and Verification · CAV (1) 2015 |
Automated reasoning and model checking
quantitative verification |
0.2 | 1 | 2015 | Symbolic Polytopes for Quantitative Interpolation and Verification · CAV (1) 2015 |
Program verification
abstraction refinement |
0.2 | 2 | 2011 | Predicate abstraction and refinement for verifying multi-threaded programs · POPL 2011 Path invariants · PLDI 2007 |
Program verification
concurrent program verification |
0.2 | 2 | 2011 | Threader: A Constraint-Based Verifier for Multi-threaded Programs · CAV 2011 Proving thread termination · PLDI 2007 |
Algorithmic game theory and mechanism design
graph games |
0.2 | 1 | 2014 | A constraint-based approach to solving games on infinite graphs · POPL 2014 |
Automated reasoning and model checking › game-based verification
infinite-state games |
0.2 | 1 | 2014 | A constraint-based approach to solving games on infinite graphs · POPL 2014 |
Automated reasoning and model checking › model checking
infinite-state model checking |
0.2 | 1 | 2014 | A constraint-based approach to solving games on infinite graphs · POPL 2014 |
Logic in computer science › temporal logic
linear temporal logic |
0.2 | 1 | 2014 | A constraint-based approach to solving games on infinite graphs · POPL 2014 |
Logic in computer science
temporal logic |
0.2 | 1 | 2014 | A constraint-based approach to solving games on infinite graphs · POPL 2014 |
Program analysis › static analysis
abstract interpretation |
0.2 | 3 | 2011 | HMC: Verifying Functional Programs Using Abstract Interpreters · CAV 2011 Transition Invariants · LICS 2004 Transition predicate abstraction and fair termination · POPL 2005 |
Automated reasoning and model checking
constraint solving |
0.2 | 1 | 2013 | Solving Existentially Quantified Horn Clauses · CAV 2013 |
Program verification › temporal logic verification
liveness verification |
0.1 | 2 | 2007 | Proving that programs eventually do something good · POPL 2007 Transition predicate abstraction and fair termination · POPL 2005 |
Program verification
deductive verification |
0.1 | 1 | 2011 | Threader: A Constraint-Based Verifier for Multi-threaded Programs · CAV 2011 |
Program verification › code-level verification
functional program verification |
0.1 | 1 | 2011 | HMC: Verifying Functional Programs Using Abstract Interpreters · CAV 2011 |
Program verification › concurrent program verification
multithreaded program verification |
0.1 | 1 | 2011 | Predicate abstraction and refinement for verifying multi-threaded programs · POPL 2011 |
Program verification
safety verification |
0.1 | 1 | 2011 | Predicate abstraction and refinement for verifying multi-threaded programs · POPL 2011 |
Program verification › program logic
separation logic |
0.1 | 1 | 2011 | Separation logic + superposition calculus = heap theorem prover · PLDI 2011 |
Automated reasoning and model checking
automated theorem proving |
0.1 | 1 | 2011 | Separation logic + superposition calculus = heap theorem prover · PLDI 2011 |
Methods — techniques the papers use, named apart from their topics
constraint solving · 0.6universal quantification · 0.5cardinality reasoning · 0.5real device firmware · 0.3container and virtual machine emulation · 0.3network symmetry · 0.2network surgery · 0.2modal logic · 0.2first-order reasoning with equality · 0.2entailment checking · 0.2bisimulation · 0.2symbolic polytopes · 0.2interpolation · 0.2horn clauses · 0.2deductive proof rules · 0.2recursive equations over auxiliary assertions · 0.1procedure summaries · 0.1inductive invariants · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2021 | Supercharging Plant Configurations Using Z3
Nikolaj S. Bjørner, Maxwell Levatich, Nuno P. Lopes, Andrey Rybalchenko, Chandrasekar Vuppalapati |
CPAIOR | 4 |
| 2019 | SL-COMP: Competition of Solvers for Separation LogicabstractSL-COMP aims at bringing together researchers interested on improving the state of the art of the automated deduction methods for Separation Logic (SL). The event took place twice until now and collected more than 1K problems for different fragments of SL. The input format of problems is based on the SMT-LIB format and therefore fully typed; only one new command is added to SMT-LIB’s list, the command for the declaration of the heap’s type. The SMT-LIB theory of SL comes with ten logics, some of them being combinations of SL with linear arithmetics. The competition’s divisions are defined by the logic fragment, the kind of decision problem (satisfiability or entailment) and the presence of quantifiers. Until now, SL-COMP has been run on the StarExec platform, where the benchmark set and the binaries of participant solvers are freely available. The benchmark set is also available with the competition’s documentation on a public repository in GitHub. Mihaela Sighireanu, Juan Antonio Navarro Pérez, Andrey Rybalchenko, Nikos Gorogiannis, Radu Iosif, Andrew Reynolds 0001, Cristina Serban, Jens Pagel, Christoph Matheja, Thomas Noll 0001, Florian Zuleger, Wei-Ngan Chin, Quang Loc Le, Quang-Trung Ta, Ton Chanh Le, Thanh-Toan Nguyen, Siau-Cheng Khoo, Michal Cyprian, Adam Rogalewicz, Tomás Vojnar, Constantin Enea, Ondrej Lengál, Zhilin Wu |
TACAS (3) | 3 |
| 2019 | Fast BGP Simulation of Large Datacenters
Nuno P. Lopes, Andrey Rybalchenko |
VMCAI | 2 |
| 2017 | CrystalNet: Faithfully Emulating Large Production NetworksabstractNetwork reliability is critical for large clouds and online service providers like Microsoft. Our network is large, heterogeneous, complex and undergoes constant churns. In such an environment even small issues triggered by device failures, buggy device software, configuration errors, unproven management tools and unavoidable human errors can quickly cause large outages. A promising way to minimize such network outages is to proactively validate all network operations in a high-fidelity network emulator, before they are carried out in production. To this end, we present CrystalNet, a cloud-scale, high-fidelity network emulator. It runs real network device firmwares in a network of containers and virtual machines, loaded with production configurations. Network engineers can use the same management tools and methods to interact with the emulated network as they do with a production network. CrystalNet can handle heterogeneous device firmwares and can scale to emulate thousands of network devices in a matter of minutes. To reduce resource consumption, it carefully selects a boundary of emulations, while ensuring correctness of propagation of network changes. Microsoft's network engineers use CrystalNet on a daily basis to test planned network operations. Our experience shows that CrystalNet enables operators to detect many issues that could trigger significant outages. Hongqiang Harry Liu, Yibo Zhu 0001, Jitendra Padhye, Jiaxin Cao, Sri Tallapragada, Nuno P. Lopes, Andrey Rybalchenko, Guohan Lu |
SOSP | 7 |
| 2016 | Cardinalities and universal quantifiers for verifying parameterized systemsabstractParallel and distributed systems rely on intricate protocols to manage shared resources and synchronize, i.e., to manage how many processes are in a particular state. Effective verification of such systems requires universally quantification to reason about parameterized state and cardinalities tracking sets of processes, messages, failures to adequately capture protocol logic. In this paper we present Tool, an automatic invariant synthesis method that integrates cardinality-based reasoning and universal quantification. The resulting increase of expressiveness allows Tool to verify, for the first time, a representative collection of intricate parameterized protocols. Klaus von Gleissenthall, Nikolaj S. Bjørner, Andrey Rybalchenko |
PLDI | 3 |
| 2016 | Scaling network verification using symmetry and surgeryabstractOn the surface, large data centers with about 100,000 stations and nearly a million routing rules are complex and hard to verify. However, these networks are highly regular by design; for example they employ fat tree topologies with backup routers interconnected by redundant patterns. To exploit these regularities, we introduce network transformations: given a reachability formula and a network, we transform the network into a simpler to verify network and a corresponding transformed formula, such that the original formula is valid in the network if and only if the transformed formula is valid in the transformed network. Our network transformations exploit network surgery (in which irrelevant or redundant sets of nodes, headers, ports, or rules are ``sliced'' away) and network symmetry (say between backup routers). The validity of these transformations is established using a formal theory of networks. In particular, using Van Benthem-Hennessy-Milner style bisimulation, we show that one can generally associate bisimulations to transformations connecting networks and formulas with their transforms. Our work is a development in an area of current wide interest: applying programming language techniques (in our case bisimulation and modal logic) to problems in switching networks. We provide experimental evidence that our network transformations can speed up by 65x the task of verifying the communication between all pairs of Virtual Machines in a large datacenter network with about 100,000 VMs. An all-pair reachability calculation, which formerly took 5.5 days, can be done in 2 hours, and can be easily parallelized to complete in Gordon D. Plotkin, Nikolaj S. Bjørner, Nuno P. Lopes, Andrey Rybalchenko, George Varghese |
POPL | 4 |
| 2016 | Preface: Special Issue on Interpolation
Daniel Kroening, Andrey Rybalchenko |
J. Autom. Reason. | 2 |
| 2015 | Symbolic Polytopes for Quantitative Interpolation and Verification
Klaus von Gleissenthall, Boris Köpf, Andrey Rybalchenko |
CAV (1) | 3 |
| 2014 | Reduction for compositional verification of multi-threaded programsabstractAutomated verification of multi-threaded programs requires keeping track of a very large number of possible interactions between the program threads. Different reasoning methods have been proposed that alleviate the explicit enumeration of all thread interleavings, e.g., Lipton's theory of reduction or Owicki-Gries method for compositional reasoning, however their synergistic interplay has not yet been fully explored. In this paper we explore the applicability of the theory of reduction for pruning of equivalent interleavings for the automated verification of multi-threaded programs with infinite-state spaces. We propose proof rules for safety and termination of multi-threaded programs that integrate into an Owicki-Gries based compositional verifier. The verification conditions of our method are Horn clauses, thus facilitating automation by using off-the-shelf Horn clause solvers. We present preliminary experimental results that show the advantages of our approach when compared to state-of-the-art verifiers of C programs. Corneliu Popeea, Andrey Rybalchenko, Andreas Wilhelm |
FMCAD | 2 |
| 2014 | A constraint-based approach to solving games on infinite graphsabstractWe present a constraint-based approach to computing winning strategies in two-player graph games over the state space of infinite-state programs. Such games have numerous applications in program verification and synthesis, including the synthesis of infinite-state reactive programs and branching-time verification of infinite-state programs. Our method handles games with winning conditions given by safety, reachability, and general Linear Temporal Logic (LTL) properties. For each property class, we give a deductive proof rule that --- provided a symbolic representation of the game players --- describes a winning strategy for a particular player. Our rules are sound and relatively complete. We show that these rules can be automated by using an off-the-shelf Horn constraint solver that supports existential quantification in clause heads. The practical promise of the rules is demonstrated through several case studies, including a challenging "Cinderella-Stepmother game" that allows infinite alternation of discrete and continuous choices by two players, as well as examples derived from prior work on program repair and synthesis. Tewodros A. Beyene, Swarat Chaudhuri, Corneliu Popeea, Andrey Rybalchenko |
POPL | 4 |
| 2014 | CTL+FO verification as constraint solvingabstractExpressing program correctness often requires relating program data throughout (different branches of) an execution. Such properties can be represented using CTL+FO, a logic that allows mixing temporal and first-order quantification. Verifying that a program satisfies a CTL+FO property is a challenging problem that requires both temporal and data reasoning. Temporal quantifiers require discovery of invariants and ranking functions, while first-order quantifiers demand instantiation techniques. In this paper, we present a constraint-based method for proving CTL+FO properties automatically. Our method makes the interplay between the temporal and first-order quantification explicit in a constraint encoding that combines recursion and existential quantification. By integrating this constraint encoding with an off-the-shelf solver we obtain an automatic verifier for CTL+FO. Tewodros A. Beyene, Marc Brockschmidt, Andrey Rybalchenko |
SPIN | 3 |
| 2013 | Separation Logic Modulo Theories
Juan Antonio Navarro Pérez, Andrey Rybalchenko |
APLAS | 2 |
| 2013 | Solving Existentially Quantified Horn Clauses
Tewodros A. Beyene, Corneliu Popeea, Andrey Rybalchenko |
CAV | 3 |
| 2013 | An Epistemic Perspective on Consistency of Concurrent Computations
Klaus von Gleissenthall, Andrey Rybalchenko |
CONCUR | 2 |
| 2013 | On Solving Universally Quantified Horn Clauses
Nikolaj S. Bjørner, Kenneth L. McMillan, Andrey Rybalchenko |
SAS | 3 |
| 2013 | Threader: A Verifier for Multi-threaded Programs - (Competition Contribution)
Corneliu Popeea, Andrey Rybalchenko |
TACAS | 2 |
| 2013 | From tests to proofs
Ashutosh Gupta 0001, Rupak Majumdar, Andrey Rybalchenko |
Int. J. Softw. Tools Technol. Transf. | 3 |
| 2012 | Synthesizing software verifiers from proof rulesabstractAutomatically generated tools can significantly improve programmer productivity. For example, parsers and dataflow analyzers can be automatically generated from declarative specifications in the form of grammars, which tremendously simplifies the task of implementing a compiler. In this paper, we present a method for the automatic synthesis of software verification tools. Our synthesis procedure takes as input a description of the employed proof rule, e.g., program safety checking via inductive invariants, and produces a tool that automatically discovers the auxiliary assertions required by the proof rule, e.g., inductive loop invariants and procedure summaries. We rely on a (standard) representation of proof rules using recursive equations over the auxiliary assertions. The discovery of auxiliary assertions, i.e., solving the equations, is based on an iterative process that extrapolates solutions obtained for finitary unrollings of equations. We show how our method synthesizes automatic safety and liveness verifiers for programs with procedures, multi-threaded programs, and functional programs. Our experimental comparison of the resulting verifiers with existing state-of-the-art verification tools confirms the practicality of the approach. Sergey Grebenshchikov, Nuno P. Lopes, Corneliu Popeea, Andrey Rybalchenko |
PLDI | 4 |
| 2012 | Binary Reachability Analysis of Higher Order Functional Programs
Ruslán Ledesma-Garza, Andrey Rybalchenko |
SAS | 2 |
| 2012 | HSF(C): A Software Verifier Based on Horn Clauses - (Competition Contribution)
Sergey Grebenshchikov, Ashutosh Gupta 0001, Nuno P. Lopes, Corneliu Popeea, Andrey Rybalchenko |
TACAS | 5 |
| 2012 | Compositional Termination Proofs for Multi-threaded Programs
Corneliu Popeea, Andrey Rybalchenko |
TACAS | 2 |
| 2011 | Solving Recursion-Free Horn Clauses over LI+UIF
Ashutosh Gupta 0001, Corneliu Popeea, Andrey Rybalchenko |
APLAS | 3 |
| 2011 | Threader: A Constraint-Based Verifier for Multi-threaded Programs
Ashutosh Gupta 0001, Corneliu Popeea, Andrey Rybalchenko |
CAV | 3 |
| 2011 | HMC: Verifying Functional Programs Using Abstract Interpreters
Ranjit Jhala, Rupak Majumdar, Andrey Rybalchenko |
CAV | 3 |
| 2011 | Separation logic + superposition calculus = heap theorem proverabstractProgram analysis and verification tools crucially depend on the ability to symbolically describe and reason about sets of program behaviors. Separation logic provides a promising foundation for dealing with heap manipulating programs, while the development of practical automated deduction/satisfiability checking tools for separation logic is a challenging problem. In this paper, we present an efficient, sound and complete automated theorem prover for checking validity of entailments between separation logic formulas with list segment predicates. Our theorem prover integrates separation logic inference rules that deal with list segments and a superposition calculus to deal with equality/aliasing between memory locations. The integration follows a modular combination approach that allows one to directly incorporate existing advanced techniques for first-order reasoning with equality, as well as account for additional theories, e.g., linear arithmetic, using extensions of superposition. An experimental evaluation of our entailment prover indicates speedups of several orders of magnitude with respect to the available state-of-the-art tools. Juan Antonio Navarro Pérez, Andrey Rybalchenko |
PLDI | 2 |
| 2011 | Predicate abstraction and refinement for verifying multi-threaded programsabstractAutomated verification of multi-threaded programs requires explicit identification of the interplay between interacting threads, so-called environment transitions, to enable scalable, compositional reasoning. Once the environment transitions are identified, we can prove program properties by considering each program thread in isolation, as the environment transitions keep track of the interleaving with other threads. Finding adequate environment transitions that are sufficiently precise to yield conclusive results and yet do not overwhelm the verifier with unnecessary details about the interleaving with other threads is a major challenge. In this paper we propose a method for safety verification of multi-threaded programs that applies (transition) predicate abstraction-based discovery of environment transitions, exposing a minimal amount of information about the thread interleaving. The crux of our method is an abstraction refinement procedure that uses recursion-free Horn clauses to declaratively state abstraction refinement queries. Then, the queries are resolved by a corresponding constraint solving algorithm. We present preliminary experimental results for mutual exclusion protocols and multi-threaded device drivers. Ashutosh Gupta 0001, Corneliu Popeea, Andrey Rybalchenko |
POPL | 3 |
| 2011 | Towards automatic synthesis of software verification toolsabstractAutomatically generated tools can significantly improve programmer productivity. For example, parsers can be automatically generated from declarative specifications in form of grammars, which tremendously simplifies the task of implementing a compiler. In this talk, we present a method for the automatic synthesis of software verification tools. Our synthesis procedure takes as input a description of the employed proof rule, e.g., program safety checking via inductive invariants, and produces a tool that automatically discovers the auxiliary assertions required by the proof rule, e.g., inductive loop invariants and procedure summaries. We rely on a (standard) representation of proof rules using recursive equations over the auxiliary assertions. The discovery of auxiliary assertions, i.e., solving the equations, is based on an iterative process that extrapolates solutions obtained for finitary unrollings of equations. We show how our method synthesizes automatic safety and liveness verifiers for programs with procedures, multi-threaded programs, and higher-order functional programs. Andrey Rybalchenko |
PPDP | 1 |
| 2011 | Transition Invariants and Transition Predicate Abstraction for Program Termination
Andreas Podelski, Andrey Rybalchenko |
TACAS | 2 |
| 2011 | Distributed and Predictable Software Model Checking
Nuno P. Lopes, Andrey Rybalchenko |
VMCAI | 2 |
| 2010 | Non-monotonic Refinement of Control Abstraction for Concurrent Programs
Ashutosh Gupta 0001, Corneliu Popeea, Andrey Rybalchenko |
ATVA | 3 |
| 2010 | Constraint Solving for Program Verification: Theory and Practice by Example
Andrey Rybalchenko |
CAV | 1 |
| 2010 | Approximation and Randomization for Quantitative Information-Flow AnalysisabstractQuantitative information-flow analysis (QIF) is an emerging technique for establishing information-theoretic confidentiality properties. Automation of QIF is an important step towards ensuring its practical applicability, since manual reasoning about program security has been shown to be a tedious and expensive task. Existing automated techniques for QIF fall short of providing full coverage of all program executions, especially in the presence of unbounded loops and data structures, which are notoriously difficult to analyze automatically. In this paper we propose a blend of approximation and randomization techniques to bear on the challenge of sufficiently precise, yet efficient computation of quantitative information flow properties. Our approach relies on a sampling method to enumerate large or unbounded secret spaces, and applies both static and dynamic program analysis techniques to deliver necessary over- and under-approximations of information-theoretic characteristics. Boris Köpf, Andrey Rybalchenko |
CSF | 2 |
| 2010 | Thread-Modular Counterexample-Guided Abstraction Refinement
Alexander Malkis, Andreas Podelski, Andrey Rybalchenko |
SAS | 3 |
| 2010 | Constraint solving for interpolation
Andrey Rybalchenko, Viorica Sofronie-Stokkermans |
J. Symb. Comput. | 1 |
| 2010 | Applying Prolog to develop distributed systemsabstractAbstract Development of distributed systems is a difficult task. Declarative programming techniques hold a promising potential for effectively supporting programmer in this challenge. While Datalog-based languages have been actively explored for programming distributed systems, Prolog received relatively little attention in this application area so far. In this paper we present a Prolog-based programming system, called DAHL, for the declarative development of distributed systems. DAHL extends Prolog with an event-driven control mechanism and built-in networking procedures. Our experimental evaluation using a distributed hash-table data structure, a protocol for achieving Byzantine fault tolerance, and a distributed software model checker—all implemented in DAHL—indicates the viability of the approach. Nuno P. Lopes, Juan Antonio Navarro Pérez, Andrey Rybalchenko, Atul Singh |
Theory Pract. Log. Program. | 3 |
| 2009 | InvGen: An Efficient Invariant Generator
Ashutosh Gupta 0001, Andrey Rybalchenko |
CAV | 2 |
| 2009 | Cardinality Abstraction for Declarative Networking Applications
Juan Antonio Navarro Pérez, Andrey Rybalchenko, Atul Singh |
CAV | 2 |
| 2009 | Finding heap-bounds for hardware synthesisabstractDynamically allocated and manipulated data structures cannot be translated into hardware unless there is an upper bound on the amount of memory the program uses during all executions. This bound can depend on the generic parameters to the program, i.e., program inputs that are instantiated at synthesis time. We propose a constraint based method for the discovery of memory usage bounds, which leads to the first-known C-to-gates hardware synthesis supporting programs with non-trivial use of dynamically allocated memory, e.g., linked lists maintained with malloc and free. We illustrate the practicality of our tool on a range of examples. Byron Cook, Ashutosh Gupta 0001, Stephen Magill, Andrey Rybalchenko, Jiri Simsa, Satnam Singh, Viktor Vafeiadis |
FMCAD | 4 |
| 2009 | Operational Semantics for Declarative Networking
Juan Antonio Navarro Pérez, Andrey Rybalchenko |
PADL | 2 |
| 2009 | Verifying liveness for asynchronous programsabstractAsynchronous or 'event-driven' programming is a popular technique to efficiently and flexibly manage concurrent interactions. In these programs, the programmer can post tasks that get stored in a task buffer and get executed atomically by a non-preemptive scheduler at a future point. We give a decision procedure for the fair termination property of asynchronous programs. The fair termination problem asks, given an asynchronous program and a fairness condition on its executions, does the program always terminate on fair executions? The fairness assumptions rule out certain undesired bad behaviors, such as where the scheduler ignores a set of posted tasks forever, or where a non-deterministic branch is always chosen in one direction. Since every liveness property reduces to a fair termination property, our decision procedure extends to liveness properties of asynchronous programs. Our decision procedure for the fair termination of asynchronous programs assumes all variables are finite-state. Even though variables are finite-state, asynchronous programs can have an unbounded stack from recursive calls made by tasks, as well as an unbounded task buffer of pending tasks. We show a reduction from the fair termination problem for asynchronous programs to fair termination problems on Petri Nets, and our main technical result is a reduction of the latter problem to Presburger satisfiability. Our decidability result is in contrast to multithreaded recursive programs, for which liveness properties are undecidable. While we focus on fair termination, we show our reduction to Petri Nets can be used to prove related properties such as fair nonstarvation (every posted task is eventually executed) and safety properties such as boundedness (find a bound on the maximum number of posted tasks that can be in the task buffer at any point). Pierre Ganty, Rupak Majumdar, Andrey Rybalchenko |
POPL | 3 |
| 2009 | Automatic Discovery and Quantification of Information LeaksabstractInformation-flow analysis is a powerful technique for reasoning about the sensitive information exposed by a program during its execution. We present the first automatic method for information-flow analysis that discovers what information is leaked and computes its comprehensive quantitative interpretation. The leaked information is characterized by an equivalence relation on secret artifacts, and is represented by a logical assertion over the corresponding program variables. Our measurement procedure computes the number of discovered equivalence classes and their sizes. This provides a basis for computing a set of quantitative properties, which includes all established information-theoretic measures in quantitative information-flow. Our method exploits an inherent connection between formal models of qualitative information-flow and program verification techniques. We provide an implementation of our method that builds upon existing tools for program verification and information-theoretic analysis. Our experimental evaluation indicates the practical applicability of the presented method. Michael Backes 0001, Boris Köpf, Andrey Rybalchenko |
SP | 3 |
| 2009 | From Tests to Proofs
Ashutosh Gupta 0001, Rupak Majumdar, Andrey Rybalchenko |
TACAS | 3 |
| 2009 | Summarization for termination: no return!
Byron Cook, Andreas Podelski, Andrey Rybalchenko |
Formal Methods Syst. Des. | 3 |
| 2008 | Proving Conditional Termination
Byron Cook, Sumit Gulwani, Tal Lev-Ami, Andrey Rybalchenko, Shmuel Sagiv |
CAV | 4 |
| 2008 | Heap Assumptions on Demand
Andreas Podelski, Andrey Rybalchenko, Thomas Wies |
CAV | 2 |
| 2008 | Proving non-terminationabstractThe search for proof and the search for counterexamples (bugs) are complementary activities that need to be pursued concurrently in order to maximize the practical success rate of verification tools.While this is well-understood in safety verification, the current focus of liveness verification has been almost exclusively on the search for termination proofs. A counterexample to termination is an infinite programexecution. In this paper, we propose a method to search for such counterexamples. The search proceeds in two phases. We first dynamically enumerate lasso-shaped candidate paths for counterexamples, and then statically prove their feasibility. We illustrate the utility of our nontermination prover, called TNT, on several nontrivial examples, some of which require bit-level reasoning about integer representations. Ashutosh Gupta 0001, Thomas A. Henzinger, Rupak Majumdar, Andrey Rybalchenko, Ru-Gang Xu |
POPL | 4 |
| 2008 | Model checking Duration Calculus: a practical approach
Roland Meyer 0001, Johannes Faber, Jochen Hoenicke, Andrey Rybalchenko |
Formal Aspects Comput. | 4 |
| 2007 | ARMC: The Logical Choice for Software Model Checking with Abstraction Refinement
Andreas Podelski, Andrey Rybalchenko |
PADL | 2 |
| 2007 | Path invariantsabstractThe success of software verification depends on the ability to find a suitable abstraction of a program automatically. We propose a method for automated abstraction refinement which overcomes some limitations of current predicate discovery schemes. In current schemes, the cause of a false alarm is identified as an infeasible error path, and the abstraction is refined in order to remove that path. By contrast, we view the cause of a false alarm -the spurious counterexample- as a full-fledged program, namely, a fragment of the original program whose control-flow graph may contain loops and represent unbounded computations. There are two advantages to using such path programs as counterexamples for abstraction refinement. First, we can bring the whole machinery of program analysis to bear on path programs, which are typically small compared to the original program. Specifically, we use constraint-based invariant generation to automatically infer invariants of path programs-so-called path invariants. Second, we use path invariants for abstraction refinement in order to remove not one infeasibility at a time, but at once all (possibly infinitely many) infeasible error computations that are represented by a path program. Unlike previous predicate discovery schemes, our method handles loops without unrolling them; it infers abstractions that involve universal quantification and naturally incorporates disjunctive reasoning. Dirk Beyer 0001, Thomas A. Henzinger, Rupak Majumdar, Andrey Rybalchenko |
PLDI | 4 |
| 2007 | Proving thread terminationabstractConcurrent programs are often designed such that certain functions executing within critical threads must terminate. Examples of such cases can be found in operating systems, web servers, e-mail clients, etc. Unfortunately, no known automatic program termination prover supports a practical method of proving the termination of threads. In this paper we describe such a procedure. The procedure's scalability is achieved through the use of environment models that abstract away the surrounding threads. The procedure's accuracy is due to a novel method of incrementally constructing environment abstractions. Our method finds the conditions that a thread requires of its environment in order to establish termination by looking at the conditions necessary to prove that certain paths through the thread represent well-founded relations if executed in isolation of the other threads. The paper gives a description of experimental results using an implementation of our procedureon Windows device drivers and adescription of a previously unknown bug found withthe tool. Byron Cook, Andreas Podelski, Andrey Rybalchenko |
PLDI | 3 |
| 2007 | Proving that programs eventually do something goodabstractIn recent years we have seen great progress made in the area of automatic source-level static analysis tools. However, most of today's program verification tools are limited to properties that guarantee the absence of bad events (safety properties). Until now no formal software analysis tool has provided fully automatic support for proving properties that ensure that good events eventually happen (liveness properties). In this paper we present such a tool, which handles liveness properties of large systems written in C. Liveness properties are described in an extension of the specification language used in the SDV system. We have used the tool to automatically prove critical liveness properties of Windows device drivers and found several previously unknown liveness bugs. Byron Cook, Alexey Gotsman, Andreas Podelski, Andrey Rybalchenko, Moshe Y. Vardi |
POPL | 4 |
| 2007 | Precise Thread-Modular Verification
Alexander Malkis, Andreas Podelski, Andrey Rybalchenko |
SAS | 3 |
| 2007 | Invariant Synthesis for Combined Theories
Dirk Beyer 0001, Thomas A. Henzinger, Rupak Majumdar, Andrey Rybalchenko |
VMCAI | 4 |
| 2007 | Constraint Solving for Interpolation
Andrey Rybalchenko, Viorica Sofronie-Stokkermans |
VMCAI | 1 |
| 2007 | Transition predicate abstraction and fair termination
Andreas Podelski, Andrey Rybalchenko |
ACM Trans. Program. Lang. Syst. | 2 |
| 2006 | Terminator: Beyond Safety
Byron Cook, Andreas Podelski, Andrey Rybalchenko |
CAV | 3 |
| 2006 | Thread-Modular Verification Is Cartesian Abstract Interpretation
Alexander Malkis, Andreas Podelski, Andrey Rybalchenko |
ICTAC | 3 |
| 2006 | Model Checking Duration Calculus: A Practical ApproachabstractAbstract Model checking of real-time systems against Duration Calculus (DC) specifications requires the translation of DC formulae into automata-based semantics. The existing algorithms provide a limited DC coverage and do not support compositional verification. We propose a translation algorithm that advances the applicability of model checking tools to realistic applications. Our algorithm significantly extends the subset of DC that can be checked automatically. The central part of the algorithm is the automatic decomposition of DC specifications into sub-properties that can be verified independently. The decomposition is based on a novel distributive law for DC. We implemented the algorithm in a tool chain for the automated verification of systems comprising data, communication, and real-time aspects. We applied the tool chain to verify safety properties in an industrial case study from the European Train Control System (ETCS). Roland Meyer 0001, Johannes Faber, Andrey Rybalchenko |
ICTAC | 3 |
| 2006 | Termination proofs for systems codeabstractProgram termination is central to the process of ensuring that systems code can always react. We describe a new program termination prover that performs a path-sensitive and context-sensitive program analysis and provides capacity for large program fragments (i.e. more than 20,000 lines of code) together with support for programming language features such as arbitrarily nested loops, pointers, function-pointers, side-effects, etc.We also present experimental results on device driver dispatch routines from theWindows operating system. The most distinguishing aspect of our tool is how it shifts the balance between the two tasks of constructing and respectively checking the termination argument. Checking becomes the hard step. In this paper we show how we solve the corresponding challenge of checking with binary reachability analysis. Byron Cook, Andreas Podelski, Andrey Rybalchenko |
PLDI | 3 |
| 2005 | Transition predicate abstraction and fair terminationabstractPredicate abstraction is the basis of many program verification tools. Until now, the only known way to overcome the inherent limitation of predicate abstraction to safety properties was to manually annotate the finite-state abstraction of a program. We extend predicate abstraction to transition predicate abstraction. Transition predicate abstraction goes beyond the idea of finite abstract-state programs (and checking the absence of loops). Instead, our abstraction algorithm transforms a program into a finite abstract-transition program. Then, a second algorithm checks fair termination. The two algorithms together yield an automated method for the verification of liveness properties under full fairness assumptions (justice and compassion). In summary, we exhibit principles that extend the applicability of predicate abstraction-based program verification to the full set of temporal properties. Andreas Podelski, Andrey Rybalchenko |
POPL | 2 |
| 2005 | Abstraction Refinement for Termination
Byron Cook, Andreas Podelski, Andrey Rybalchenko |
SAS | 3 |
| 2005 | Separating Fairness and Well-Foundedness for the Analysis of Fair Discrete Systems
Amir Pnueli, Andreas Podelski, Andrey Rybalchenko |
TACAS | 3 |
| 2004 | Transition InvariantsabstractProof rules for program verification rely on auxiliary assertions. We propose a (sound and relatively complete) proof rule whose auxiliary assertions are transition invariants. A transition invariant of a program is a binary relation over program states that contains the transitive closure of the transition relation of the program. A relation is disjunctively well-founded if it is a finite union of well-founded relations. We characterize the validity of termination or another liveness property by the existence of a disjunctively well-founded transition invariant. The main contribution of our proof rule lies in its potential for automation via abstract interpretation. Andreas Podelski, Andrey Rybalchenko |
LICS | 2 |
| 2004 | A Complete Method for the Synthesis of Linear Ranking Functions
Andreas Podelski, Andrey Rybalchenko |
VMCAI | 2 |