EDBT 2026 Demo / reviewers in the wild / expert
Pavol Cerný
dblp:34/6556
· DBLP profile ↗
39ranked-venue papers
17as 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 · 26 · 9 first-author · 1 since 2021Theory of computation · 18 · 11 first-authorSecurity and privacy · 2 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 2 · 2 first-authorArtificial intelligence and machine learning · 1Graphics, computer vision, multimedia, augmented reality and games · 1
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
15 papers |
Debugging and program repair · 33% Program synthesis and code generation · 19% Program analysis · 18% | |
| Computer networks
3 papers |
Software-defined and programmable networks · 87% Network management and operations · 13% | |
| Network and information security
4 papers |
Hardware security and side channels · 60% Privacy and data protection · 28% Systems and software security · 12% | |
| Theoretical computer science
3 papers |
Automated reasoning and model checking · 84% Automata and formal languages · 16% | |
| Computer architecture, parallel and distributed computing, and storage systems
3 papers |
Embedded and real-time systems · 58% Parallel and multicore computing · 42% |
Topics — the 30 heaviest of 42, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Debugging and program repair
fault localization |
0.6 | 2 | 2020 | Detecting and understanding real-world differential performance bugs in machine learning libraries · ISSTA 2020 Data-Driven Debugging for Functional Side Channels · NDSS 2020 |
Program synthesis and code generation
concurrent program synthesis |
0.5 | 3 | 2014 | Regression-Free Synthesis for Concurrency · CAV 2014 Efficient Synthesis for Concurrency by Semantics-Preserving Transformations · CAV 2013 Quantitative Synthesis for Concurrent Programs · CAV 2011 |
Software-defined and programmable networks › network update
consistent network update |
0.5 | 2 | 2016 | Event-driven network programming · PLDI 2016 Efficient synthesis of network updates · PLDI 2015 |
Software-defined and programmable networks
network update |
0.5 | 2 | 2016 | Event-driven network programming · PLDI 2016 Efficient synthesis of network updates · PLDI 2015 |
Hardware security and side channels
side-channel attack |
0.4 | 1 | 2020 | Data-Driven Debugging for Functional Side Channels · NDSS 2020 |
Software testing
fuzzing |
0.4 | 1 | 2020 | Detecting and understanding real-world differential performance bugs in machine learning libraries · ISSTA 2020 |
Debugging and program repair › performance debugging
performance bug detection |
0.4 | 1 | 2020 | Detecting and understanding real-world differential performance bugs in machine learning libraries · ISSTA 2020 |
Debugging and program repair › fault localization
performance bug localization |
0.4 | 1 | 2020 | Detecting and understanding real-world differential performance bugs in machine learning libraries · ISSTA 2020 |
Privacy and data protection
information leakage |
0.4 | 1 | 2019 | Quantitative Mitigation of Timing Side Channels · CAV (1) 2019 |
Hardware security and side channels › side-channel attack
timing side channel |
0.4 | 1 | 2019 | Quantitative Mitigation of Timing Side Channels · CAV (1) 2019 |
Program analysis
dynamic analysis |
0.3 | 1 | 2018 | Differential Performance Debugging With Discriminant Regression Trees · AAAI 2018 |
Debugging and program repair
performance debugging |
0.3 | 1 | 2018 | Differential Performance Debugging With Discriminant Regression Trees · AAAI 2018 |
Program analysis › dynamic analysis
profiling |
0.3 | 1 | 2018 | Differential Performance Debugging With Discriminant Regression Trees · AAAI 2018 |
Program analysis › type-based analysis
typestate analysis |
0.3 | 1 | 2018 | DroidStar: callback typestates for Android classes · ICSE 2018 |
Software-defined and programmable networks › network programming
network programming languages |
0.2 | 1 | 2016 | Event-driven network programming · PLDI 2016 |
Program synthesis and code generation › inductive program synthesis
counterexample-guided inductive synthesis |
0.2 | 1 | 2015 | Efficient synthesis of network updates · PLDI 2015 |
Operating systems › resource management › process management › CPU scheduling
preemptive scheduling |
0.2 | 1 | 2015 | From Non-preemptive to Preemptive Scheduling Using Synchronization Synthesis · CAV (2) 2015 |
Concurrent programming › synchronization
synchronization synthesis |
0.2 | 1 | 2015 | From Non-preemptive to Preemptive Scheduling Using Synchronization Synthesis · CAV (2) 2015 |
Embedded and real-time systems
real-time scheduling |
0.2 | 1 | 2015 | From Non-preemptive to Preemptive Scheduling Using Synchronization Synthesis · CAV (2) 2015 |
Automated reasoning and model checking › synthesis
program synthesis |
0.2 | 1 | 2015 | Synthesis Through Unification · CAV (2) 2015 |
Automated reasoning and model checking
synthesis |
0.2 | 1 | 2015 | Synthesis Through Unification · CAV (2) 2015 |
Debugging and program repair › automated program repair
concurrency bug fixing |
0.2 | 1 | 2014 | Regression-Free Synthesis for Concurrency · CAV 2014 |
Program verification
abstraction refinement |
0.2 | 1 | 2013 | Quantitative abstraction refinement · POPL 2013 |
Compilers and program optimization › program transformation
semantics-preserving transformation |
0.2 | 1 | 2013 | Efficient Synthesis for Concurrency by Semantics-Preserving Transformations · CAV 2013 |
Systems and software security
information flow control |
0.2 | 2 | 2009 | Automated Analysis of Java Methods for Confidentiality · CAV 2009 Preserving Secrecy Under Refinement · ICALP (2) 2006 |
Network management and operations
configuration verification |
0.1 | 2 | 2016 | Event-driven network programming · PLDI 2016 Efficient synthesis of network updates · PLDI 2015 |
Automata and formal languages
transducers |
0.1 | 1 | 2011 | Streaming transducers for algorithmic verification of single-pass list-processing programs · POPL 2011 |
Concurrent programming
concurrent data structures |
0.1 | 1 | 2010 | Model Checking of Linearizability of Concurrent List Implementations · CAV 2010 |
Concurrent programming › atomicity
linearizability |
0.1 | 1 | 2010 | Model Checking of Linearizability of Concurrent List Implementations · CAV 2010 |
Automated reasoning and model checking › program verification › verification of concurrent systems
linearizability verification |
0.1 | 1 | 2010 | Model Checking of Linearizability of Concurrent List Implementations · CAV 2010 |
Methods — techniques the papers use, named apart from their topics
statistical testing · 0.9data-driven analysis · 0.9program synthesis · 0.6evolutionary fuzzing · 0.4discriminant learning · 0.4decision tree classifier · 0.4clustering · 0.4optimization · 0.4mixed-integer linear programming · 0.4spectral clustering · 0.3k-means clustering · 0.3discriminant regression tree · 0.3synchronization synthesis · 0.3mutable state semantics · 0.2formal semantics · 0.2NetKAT · 0.2unification · 0.2incremental model checking · 0.2
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2021 | Quantitative estimation of side-channel leaks with neural networks
Saeid Tizpaz-Niari, Pavol Cerný, Sriram Sankaranarayanan 0001, Ashutosh Trivedi 0001 |
Int. J. Softw. Tools Technol. Transf. | 2 |
| 2020 | Detecting and understanding real-world differential performance bugs in machine learning librariesabstractProgramming errors that degrade the performance of systems are widespread, yet there is very little tool support for finding and diagnosing these bugs. We present a method and a tool based on differential performance analysis---we find inputs for which the performance varies widely, despite having the same size. To ensure that the differences in the performance are robust (i.e. hold also for large inputs), we compare the performance of not only single inputs, but of classes of inputs, where each class has similar inputs parameterized by their size. Thus, each class is represented by a performance function from the input size to performance. Importantly, we also provide an explanation for why the performance differs in a form that can be readily used to fix a performance bug. The two main phases in our method are discovery with fuzzing and explanation with decision tree classifiers, each of which is supported by clustering. First, we propose an evolutionary fuzzing algorithm to generate inputs that characterize different performance functions. For this fuzzing task, the unique challenge is that we not only need the input class with the worst performance, but rather a set of classes exhibiting differential performance. We use clustering to merge similar input classes which significantly improves the efficiency of our fuzzer. Second, we explain the differential performance in terms of program inputs and internals (e.g., methods and conditions). We adapt discriminant learning approaches with clustering and decision trees to localize suspicious code regions. We applied our techniques on a set of micro-benchmarks and real-world machine learning libraries. On a set of micro-benchmarks, we show that our approach outperforms state-of-the-art fuzzers in finding inputs to characterize differential performance. On a set of case-studies, we discover and explain multiple performance bugs in popular machine learning frameworks, for instance in implementations of logistic regression in scikit-learn. Four of these bugs, reported first in this paper, have since been fixed by the developers. Saeid Tizpaz-Niari, Pavol Cerný, Ashutosh Trivedi 0001 |
ISSTA | 2 |
| 2020 | Data-Driven Debugging for Functional Side Channels
Saeid Tizpaz-Niari, Pavol Cerný, Ashutosh Trivedi 0001 |
NDSS | 2 |
| 2019 | Quantitative Mitigation of Timing Side ChannelsabstractTiming side channels pose a significant threat to the security and privacy of software applications. We propose an approach for mitigating this problem by decreasing the strength of the side channels as measured by entropy-based objectives, such as min-guess entropy. Our goal is to minimize the information leaks while guaranteeing a user-specified maximal acceptable performance overhead. We dub the decision version of this problem Shannon mitigation , and consider two variants, deterministic and stochastic . First, we show that the deterministic variant is NP -hard. However, we give a polynomial algorithm that finds an optimal solution from a restricted set. Second, for the stochastic variant, we develop an approach that uses optimization techniques specific to the entropy-based objective used. For instance, for min-guess entropy, we used mixed integer-linear programming. We apply the algorithm to a threat model where the attacker gets to make functional observations , that is, where she observes the running time of the program for the same secret value combined with different public input values. Existing mitigation approaches do not give confidentiality or performance guarantees for this threat model. We evaluate our tool Schmit on a number of micro-benchmarks and real-world applications with different entropy-based objectives. In contrast to the existing mitigation approaches, we show that in the functional-observation threat model, Schmit is scalable and able to maximize confidentiality under the performance overhead bound. Saeid Tizpaz-Niari, Pavol Cerný, Ashutosh Trivedi 0001 |
CAV (1) | 2 |
| 2019 | Efficient Detection and Quantification of Timing Leaks with Neural Networks
Saeid Tizpaz-Niari, Pavol Cerný, Sriram Sankaranarayanan 0001, Ashutosh Trivedi 0001 |
RV | 2 |
| 2019 | Type-Directed Bounding of Collections in Reactive Programs
Tianhan Lu, Pavol Cerný, Bor-Yuh Evan Chang, Ashutosh Trivedi 0001 |
VMCAI | 2 |
| 2019 | Sequential programming for replicated data storesabstractWe introduce Carol, a refinement-typed programming language for replicated data stores. The salient feature of Carol is that it allows programming and verifying replicated store operations modularly , without consideration of other operations that might interleave, and sequentially , without requiring reference to or knowledge of the concurrent execution model. This is in stark contrast with existing systems, which require understanding the concurrent interactions of all pairs of operations when developing or verifying them. The key enabling idea is the consistency guard , a two-state predicate relating the locally-viewed store and the hypothetical remote store that an operation’s updates may eventually be applied to, which is used by the Carol programmer to declare their precise consistency requirements. Guards appear to the programmer and refinement typechecker as simple data pre-conditions, enabling sequential reasoning, while appearing to the distributed runtime as consistency control instructions. We implement and evaluate the Carol system in two parts: (1) the algorithm used to statically translate guards into the runtime coordination actions required to enforce them, and (2) the networked-replica runtime which executes arbitrary operations, written in a Haskell DSL, according to the Carol language semantics. Nicholas V. Lewchenko, Arjun Radhakrishna, Akash Gaonkar, Pavol Cerný |
Proc. ACM Program. Lang. | 4 |
| 2018 | Differential Performance Debugging With Discriminant Regression TreesabstractDifferential performance debugging is a technique to find performance problems. It applies in situations where the performance of a program is (unexpectedly) different for different classes of inputs. The task is to explain the differences in asymptotic performance among various input classes in terms of program internals. We propose a data-driven technique based on discriminant regression tree (DRT) learning problem where the goal is to discriminate among different classes of inputs. We propose a new algorithm for DRT learning that first clusters the data into functional clusters, capturing different asymptotic performance classes, and then invokes off-the-shelf decision tree learning algorithms to explain these clusters. We focus on linear functional clusters and adapt classical clustering algorithms (K-means and spectral) to produce them. For the K-means algorithm, we generalize the notion of the cluster centroid from a point to a linear function. We adapt spectral clustering by defining a novel kernel function to capture the notion of linear similarity between two data points. We evaluate our approach on benchmarks consisting of Java programs where we are interested in debugging performance. We show that our algorithm significantly outperforms other well-known regression tree learning algorithms in terms of running time and accuracy of classification. Saeid Tizpaz-Niari, Pavol Cerný, Bor-Yuh Evan Chang, Ashutosh Trivedi 0001 |
AAAI | 2 |
| 2018 | DroidStar: callback typestates for Android classesabstractEvent-driven programming frameworks, such as Android, are based on components with asynchronous interfaces. The protocols for interacting with these components can often be described by finite-state machines we dub callback typestates. Callback typestates are akin to classical typestates, with the difference that their outputs (callbacks) are produced asynchronously. While useful, these specifications are not commonly available, because writing them is difficult and error-prone. Arjun Radhakrishna, Nicholas V. Lewchenko, Shawn Meier, Sergio Mover, Krishna Chaitanya Sripada, Damien Zufferey, Bor-Yuh Evan Chang, Pavol Cerný |
ICSE | 8 |
| 2017 | Synchronization Synthesis for Network Programs
Jedidiah McClurg, Hossein Hojjat, Pavol Cerný |
CAV (2) | 3 |
| 2017 | Discriminating Traces with Time
Saeid Tizpaz-Niari, Pavol Cerný, Bor-Yuh Evan Chang, Sriram Sankaranarayanan 0001, Ashutosh Trivedi 0001 |
TACAS (2) | 2 |
| 2017 | From non-preemptive to preemptive scheduling using synchronization synthesisabstractWe present a computer-aided programming approach to concurrency. The approach allows programmers to program assuming a friendly, non-preemptive scheduler, and our synthesis procedure inserts synchronization to ensure that the final program works even with a preemptive scheduler. The correctness specification is implicit, inferred from the non-preemptive behavior. Let us consider sequences of calls that the program makes to an external interface. The specification requires that any such sequence produced under a preemptive scheduler should be included in the set of sequences produced under a non-preemptive scheduler. We guarantee that our synthesis does not introduce deadlocks and that the synchronization inserted is optimal w.r.t. a given objective function. The solution is based on a finitary abstraction, an algorithm for bounded language inclusion modulo an independence relation, and generation of a set of global constraints over synchronization placements. Each model of the global constraints set corresponds to a correctness-ensuring synchronization placement. The placement that is optimal w.r.t. the given objective function is chosen as the synchronization solution. We apply the approach to device-driver programming, where the driver threads call the software interface of the device and the API provided by the operating system. Our experiments demonstrate that our synthesis method is precise and efficient. The implicit specification helped us find one concurrency bug previously missed when model-checking using an explicit, user-provided specification. We implemented objective functions for coarse-grained and fine-grained locking and observed that different synchronization placements are produced for our experiments, favoring a minimal number of synchronization operations or maximum concurrency, respectively. Pavol Cerný, Edmund M. Clarke, Thomas A. Henzinger, Arjun Radhakrishna, Leonid Ryzhyk, Roopsha Samanta, Thorsten Tarrach |
Formal Methods Syst. Des. | 1 |
| 2016 | Program synthesis for networksabstractSoftware is eating the world. But how will we write all the programs to control everything from sensors to data centers? Program synthesis provides an answer. It increases the productivity of programmers by enabling them to capture their insights in a variety of forms, not just in standard code. In this tutorial, we focus on some challenges in programming networks, and we show how program synthesis algorithms can help. Developing network programs is difficult, as networks are large distributed systems. In particular, implementing programs that update the configuration of a network in response to events is an intricate problem. First, even if initial and final configurations are correct, subtle bugs in update programs can lead to incorrect transient behaviors, including forwarding loops, black holes, and access control violations. Second, if the update program reacts to events occurring near simultaneously in different parts of the network, naive implementations can lead to causality violations and conflicts. We present scalable program synthesis algorithms that produce network programs that are both correct by construction and efficient. Pavol Cerný |
FMCAD | 1 |
| 2016 | Optimizing horn solvers for network repairabstractAutomatic program repair modifies a faulty program to make it correct with respect to a specification. Previous approaches have typically been restricted to specific programming languages and a fixed set of syntactical mutation techniques-e.g., changing the conditions of if statements. We present a more general technique based on repairing sets of unsolvable Horn clauses. Working with Horn clauses enables repairing programs from many different source languages, but also introduces challenges, such as navigating the large space of possible repairs. We propose a conservative semantic repair technique that only removes incorrect behaviors and does not introduce new behaviors. Our proposed framework allows the user to request the best repairs-it constructs an optimization lattice representing the space of possible repairs, and uses a novel local search technique that exploits heuristics to avoid searching through sub-lattices with no feasible repairs. To illustrate the applicability of our approach, we apply it to problems in software-defined networking (SDN), and illustrate how it is able to help network operators fix buggy configurations by properly filtering undesired traffic. We show that interval and Boolean lattices are effective choices of optimization lattices in this domain, and we enable optimization objectives such as modifying the minimal number of switches. We have implemented a prototype repair tool, and present preliminary experimental results on several benchmarks using real topologies and realistic repair scenarios in data centers and congested networks. Hossein Hojjat, Philipp Rümmer, Jedidiah McClurg, Pavol Cerný, Nate Foster |
FMCAD | 4 |
| 2016 | Event-driven network programmingabstractSoftware-defined networking (SDN) programs must simultaneously describe static forwarding behavior and dynamic updates in response to events. Event-driven updates are critical to get right, but difficult to implement correctly due to the high degree of concurrency in networks. Existing SDN platforms offer weak guarantees that can break application invariants, leading to problems such as dropped packets, degraded performance, security violations, etc. This paper introduces EVENT-DRIVEN CONSISTENT UPDATES that are guaranteed to preserve well-defined behaviors when transitioning between configurations in response to events. We propose NETWORK EVENT STRUCTURES (NESs) to model constraints on updates, such as which events can be enabled simultaneously and causal dependencies between events. We define an extension of the NetKAT language with mutable state, give semantics to stateful programs using NESs, and discuss provably-correct strategies for implementing NESs in SDNs. Finally, we evaluate our approach empirically, demonstrating that it gives well-defined consistency guarantees while avoiding expensive synchronization and packet buffering. Jedidiah McClurg, Hossein Hojjat, Nate Foster, Pavol Cerný |
PLDI | 4 |
| 2016 | Optimal Consistent Network Updates in Polynomial Time
Pavol Cerný, Nate Foster, Nilesh Jagnik, Jedidiah McClurg |
DISC | 1 |
| 2015 | Synthesis Through Unification
Rajeev Alur, Pavol Cerný, Arjun Radhakrishna |
CAV (2) | 2 |
| 2015 | From Non-preemptive to Preemptive Scheduling Using Synchronization Synthesis
Pavol Cerný, Edmund M. Clarke, Thomas A. Henzinger, Arjun Radhakrishna, Leonid Ryzhyk, Roopsha Samanta, Thorsten Tarrach |
CAV (2) | 1 |
| 2015 | Segment Abstraction for Worst-Case Execution Time Analysis
Pavol Cerný, Thomas A. Henzinger, Laura Kovács, Arjun Radhakrishna, Jakob Zwirchmayr |
ESOP | 1 |
| 2015 | Efficient synthesis of network updatesabstractSoftware-defined networking (SDN) is revolutionizing the networking industry, but current SDN programming platforms do not provide automated mechanisms for updating global configurations on the fly. Implementing updates by hand is challenging for SDN programmers because networks are distributed systems with hundreds or thousands of interacting nodes. Even if initial and final configurations are correct, naively updating individual nodes can lead to incorrect transient behaviors, including loops, black holes, and access control violations. This paper presents an approach for automatically synthesizing updates that are guaranteed to preserve specified properties. We formalize network updates as a distributed programming problem and develop a synthesis algorithm based on counterexample-guided search and incremental model checking. We describe a prototype implementation, and present results from experiments on real-world topologies and properties demonstrating that our tool scales to updates involving over one-thousand nodes. Jedidiah McClurg, Hossein Hojjat, Pavol Cerný, Nate Foster |
PLDI | 3 |
| 2014 | Regression-Free Synthesis for Concurrency
Pavol Cerný, Thomas A. Henzinger, Arjun Radhakrishna, Leonid Ryzhyk, Thorsten Tarrach |
CAV | 1 |
| 2014 | Interface simulation distances
Pavol Cerný, Martin Chmelik, Thomas A. Henzinger, Arjun Radhakrishna |
Theor. Comput. Sci. | 1 |
| 2013 | Efficient Synthesis for Concurrency by Semantics-Preserving Transformations
Pavol Cerný, Thomas A. Henzinger, Arjun Radhakrishna, Leonid Ryzhyk, Thorsten Tarrach |
CAV | 1 |
| 2013 | Quantitative abstraction refinementabstractWe propose a general framework for abstraction with respect to quantitative properties, such as worst-case execution time, or power consumption. Our framework provides a systematic way for counter-example guided abstraction refinement for quantitative properties. The salient aspect of the framework is that it allows anytime verification, that is, verification algorithms that can be stopped at any time (for example, due to exhaustion of memory), and report approximations that improve monotonically when the algorithms are given more time. Pavol Cerný, Thomas A. Henzinger, Arjun Radhakrishna |
POPL | 1 |
| 2012 | Synthesis from incompatible specificationsabstractSystems are often specified using multiple requirements on their behavior. In practice, these requirements can be contradictory. The classical approach to specification, verification, and synthesis demands more detailed specifications that resolve any contradictions in the requirements. These detailed specifications are usually large, cumbersome, and hard to maintain or modify. In contrast, quantitative frameworks allow the formalization of the intuitive idea that what is desired is an implementation that comes "closest" to satisfying the mutually incompatible requirements, according to a measure of fit that can be defined by the requirements engineer. One flexible framework for quantifying how "well" an implementation satisfies a specification is offered by simulation distances that are parameterized by an error model. We introduce this framework, study its properties, and provide an algorithmic solution for the following quantitative synthesis question: given two (or more) behavioral requirements specified by possibly incompatible finite-state machines, and an error model, find the finite-state implementation that minimizes the maximal simulation distance to the given requirements. Furthermore, we generalize the framework to handle infinite alphabets (for example, realvalued domains). We also demonstrate how quantitative specifications based on simulation distances might lead to smaller and easier to modify specifications. Finally, we illustrate our approach using case studies on error correcting codes and scheduler synthesis. Pavol Cerný, Sivakanth Gopi, Thomas A. Henzinger, Arjun Radhakrishna, Nishant Totla |
EMSOFT | 1 |
| 2012 | Simulation distances
Pavol Cerný, Thomas A. Henzinger, Arjun Radhakrishna |
Theor. Comput. Sci. | 1 |
| 2012 | Algorithmic analysis of array-accessing programsabstractFor programs whose data variables range over Boolean or finite domains, program verification is decidable, and this forms the basis of recent tools for software model checking. In this article, we consider algorithmic verification of programs that use Boolean variables, and in addition, access a single read-only array whose length is potentially unbounded, and whose elements range over an unbounded data domain. We show that the reachability problem, while undecidable in general, is (1) Pspace-complete for programs in which the array-accessing for-loops are not nested, (2) decidable for a restricted class of programs with doubly nested loops. The second result establishes connections to automata and logics defining languages over data words. Rajeev Alur, Pavol Cerný, Scott Weinstein |
ACM Trans. Comput. Log. | 2 |
| 2011 | Quantitative Synthesis for Concurrent Programs
Pavol Cerný, Krishnendu Chatterjee, Thomas A. Henzinger, Arjun Radhakrishna, Rohit Singh 0002 |
CAV | 1 |
| 2011 | The Complexity of Quantitative Information Flow ProblemsabstractIn this paper, we investigate the computational complexity of quantitative information flow (QIF) problems. Information-theoretic quantitative relaxations of noninterference (based on Shannon entropy)have been introduced to enable more fine-grained reasoning about programs in situations where limited information flow is acceptable. The QIF bounding problem asks whether the information flow in a given program is bounded by a constant $d$. Our first result is that the QIF bounding problem is PSPACE-complete. The QIF memoryless synthesis problem asks whether it is possible to resolve nondeterministic choices in a given partial program in such a way that in the resulting deterministic program, the quantitative information flow is bounded by a given constant $d$. Our second result is that the QIF memoryless synthesis problem is also EXPTIME-complete. The QIF memoryless synthesis problem generalizes to QIF general synthesis problem which does not impose the memoryless requirement (that is, by allowing the synthesized program to have more variables then the original partial program). Our third result is that the QIF general synthesis problem is EXPTIME-hard. Pavol Cerný, Krishnendu Chatterjee, Thomas A. Henzinger |
CSF | 1 |
| 2011 | From boolean to quantitative synthesisabstractMotivated by improvements in constraint-solving technology and by the increase of routinely available computational power, partial-program synthesis is emerging as an effective approach for increasing programmer productivity. The goal of the approach is to allow the programmer to specify a part of her intent imperatively (that is, give a partial program) and a part of her intent declaratively, by specifying which conditions need to be achieved or maintained. The task of the synthesizer is to construct a program that satisfies the specification. As an example, consider a partial program where threads access shared data without using any synchronization mechanism, and a declarative specification that excludes data races and deadlocks. The task of the synthesizer is then to place locks into the program code in order for the program to meet the specification. Pavol Cerný, Thomas A. Henzinger |
EMSOFT | 1 |
| 2011 | Streaming transducers for algorithmic verification of single-pass list-processing programsabstractWe introduce streaming data string transducers that map input data strings to output data strings in a single left-to-right pass in linear time. Data strings are (unbounded) sequences of data values, tagged with symbols from a finite set, over a potentially infinite data domain that supports only the operations of equality and ordering. The transducer uses a finite set of states, a finite set of variables ranging over the data domain, and a finite set of variables ranging over data strings. At every step, it can make decisions based on the next input symbol, updating its state, remembering the input data value in its data variables, and updating data-string variables by concatenating data-string variables and new symbols formed from data variables, while avoiding duplication. We establish PSPACE bounds for the problems of checking functional equivalence of two streaming transducers, and of checking whether a streaming transducer satisfies pre/post verification conditions specified by streaming acceptors over input/output data-strings. Rajeev Alur, Pavol Cerný |
POPL | 2 |
| 2010 | Model Checking of Linearizability of Concurrent List Implementations
Pavol Cerný, Arjun Radhakrishna, Damien Zufferey, Swarat Chaudhuri, Rajeev Alur |
CAV | 1 |
| 2010 | Simulation Distances
Pavol Cerný, Thomas A. Henzinger, Arjun Radhakrishna |
CONCUR | 1 |
| 2010 | Expressiveness of streaming string transducersabstractStreaming string transducers define (partial) functions from input strings to output strings. A streaming string transducer makes a single pass through the input string and uses a finite set of variables that range over strings from the output alphabet. At every step, the transducer processes an input symbol, and updates all the variables in parallel using assignments whose right-hand-sides are concatenations of output symbols and variables with the restriction that a variable can be used at most once in a right-hand-side expression. It has been shown that streaming string transducers operating on strings over infinite data domains are of interest in algorithmic verification of list-processing programs, as they lead to Pspace decision procedures for checking pre/postconditions and for checking semantic equivalence, for a well-defined class of heap-manipulating programs. In order to understand the theoretical expressiveness of streaming transducers, we focus on streaming transducers processing strings over finite alphabets, given the existence of a robust and well-studied class of ``regular'' transductions for this case. Such regular transductions can be defined either by two-way deterministic finite-state transducers, or using a logical MSO-based characterization. Our main result is that the expressiveness of streaming string transducers coincides exactly with this class of regular transductions. Rajeev Alur, Pavol Cerný |
FSTTCS | 2 |
| 2009 | Automated Analysis of Java Methods for Confidentiality
Pavol Cerný, Rajeev Alur |
CAV | 1 |
| 2009 | Parallel programming with object assembliesabstractWe present Chorus, a high-level parallel programming model suitable for irregular, heap-manipulating applications like mesh refinement and epidemic simulations, and JChorus, an implementation of the model on top of Java. One goal of Chorus is to express the dynamic and instance-dependent patterns of memory access that are common in typical irregular applications. Its other focus is locality of effects: the property that in many of the same applications, typical imperative commands only affect small, local regions in the shared heap. Roberto Lublinerman, Swarat Chaudhuri, Pavol Cerný |
OOPSLA | 3 |
| 2007 | Model Checking on Trees with Path Equivalences
Rajeev Alur, Pavol Cerný, Swarat Chaudhuri |
TACAS | 2 |
| 2006 | Preserving Secrecy Under Refinement
Rajeev Alur, Pavol Cerný, Steve Zdancewic |
ICALP (2) | 2 |
| 2005 | Synthesis of interface specifications for Java classesabstractWhile a typical software component has a clearly specified (static) interface in terms of the methods and the input/output types they support, information about the correct sequencing of method calls the client must invoke is usually undocumented. In this paper, we propose a novel solution for automatically extracting such temporal specifications for Java classes. Given a Java class, and a safety property such as “the exception E should not be raised”, the corresponding (dynamic) interface is the most general way of invoking the methods in the class so that the safety property is not violated. Our synthesis method first constructs a symbolic representation of the finite state-transition system obtained from the class using predicate abstraction. Constructingthe interface then corresponds to solving a partial-information two-player game on this symbolic graph. We present a sound approach to solve this computationally-hard problem approximately using algorithms for learning finite automata and symbolic model checking for branching-time logics. We describe an implementation of the proposed techniques in the tool JIST — Java Interface Synthesis Tool—and demonstrate that the tool can construct interfaces accurately and efficiently for sample Java2SDK library classes. Categories and Subject Descriptors: D.2.4 [Software Engineering] Software/Program Verification-formal methods, model checking; D.2.1 [Software Engineering] Requirements/Specification-methodologies, tools; D.2.2 [Software Rajeev Alur, Pavol Cerný, P. Madhusudan, Wonhong Nam |
POPL | 2 |