Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Arjun Radhakrishna is active.

Publication


Featured researches published by Arjun Radhakrishna.


computer aided verification | 2010

Model checking of linearizability of concurrent list implementations

Pavol Černý; Arjun Radhakrishna; Damien Zufferey; Swarat Chaudhuri; Rajeev Alur

Concurrent data structures with fine-grained synchronization are notoriously difficult to implement correctly The difficulty of reasoning about these implementations does not stem from the number of variables or the program size, but rather from the large number of possible interleavings These implementations are therefore prime candidates for model checking We introduce an algorithm for verifying linearizability of singly-linked heap-based concurrent data structures We consider a model consisting of an unbounded heap where each vertex stores an element from an unbounded data domain, with a restricted set of operations for testing and updating pointers and data elements Our main result is that linearizability is decidable for programs that invoke a fixed number of methods, possibly in parallel This decidable fragment covers many of the common implementation techniques — fine-grained locking, lazy synchronization, and lock-free synchronization We also show how the technique can be used to verify optimistic implementations with the help of programmer annotations We developed a verification tool CoLT and evaluated it on a representative sample of Java implementations of the concurrent set data structure The tool verified linearizability of a number of implementations, found a known error in a lock-free implementation and proved that the corrected version is linearizable.


computer aided verification | 2013

Efficient synthesis for concurrency by semantics-preserving transformations

Pavol Černý; Thomas A. Henzinger; Arjun Radhakrishna; Leonid Ryzhyk; Thorsten Tarrach

We develop program synthesis techniques that can help programmers fix concurrency-related bugs. We make two new contributions to synthesis for concurrency, the first improving the efficiency of the synthesized code, and the second improving the efficiency of the synthesis procedure itself. The first contribution is to have the synthesis procedure explore a variety of (sequential) semantics-preserving program transformations. Classically, only one such transformation has been considered, namely, the insertion of synchronization primitives (such as locks). Based on common manual bug-fixing techniques used by Linux device-driver developers, we explore additional, more efficient transformations, such as the reordering of independent instructions. The second contribution is to speed up the counterexample-guided removal of concurrency bugs within the synthesis procedure by considering partial-order traces (instead of linear traces) as counterexamples. A partial-order error trace represents a set of linear (interleaved) traces of a concurrent program all of which lead to the same error. By eliminating a partial-order error trace, we eliminate in a single iteration of the synthesis procedure all linearizations of the partial-order trace. We evaluated our techniques on several simplified examples of real concurrency bugs that occurred in Linux device drivers.


symposium on principles of programming languages | 2013

Quantitative abstraction refinement

Pavol Cerny; Thomas A. Henzinger; Arjun Radhakrishna

We 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. We instantiate the framework with a number of quantitative abstractions and refinement schemes, which differ in terms of how much quantitative information they keep from the original system. We introduce both state-based and trace-based quantitative abstractions, and we describe conditions that define classes of quantitative properties for which the abstractions provide over-approximations. We give algorithms for evaluating the quantitative properties on the abstract systems. We present algorithms for counter-example based refinements for quantitative properties for both state-based and segment-based abstractions. We perform a case study on worst-case execution time of executables to evaluate the anytime verification aspect and the quantitative abstractions we proposed.


tools and algorithms for construction and analysis of systems | 2017

Scaling Enumerative Program Synthesis via Divide and Conquer

Rajeev Alur; Arjun Radhakrishna; Abhishek Udupa

Given a semantic constraint specified by a logical formula, and a syntactic constraint specified by a context-free grammar, the Syntax-Guided Synthesis (SyGuS) problem is to find an expression that satisfies both the syntactic and semantic constraints. An enumerative approach to solve this problem is to systematically generate all expressions from the syntactic space with some pruning, and has proved to be surprisingly competitive in the newly started competition of SyGuS solvers. It performs well on small to medium sized benchmarks, produces succinct expressions, and has the ability to generalize from input-output examples. However, its performance degrades drastically with the size of the smallest solution. To overcome this limitation, in this paper we propose an alternative approach to solve SyGuS instances.


european symposium on programming | 2015

Segment Abstraction for Worst-Case Execution Time Analysis

Pavol Černý; Thomas A. Henzinger; Laura Kovács; Arjun Radhakrishna; Jakob Zwirchmayr

In the standard framework for worst-case execution time (WCET) analysis of programs, the main data structure is a single instance of integer linear programming (ILP) that represents the whole program. The instance of this NP-hard problem must be solved to find an estimate for WCET, and it must be refined if the estimate is not tight. We propose a new framework for WCET analysis, based on abstract segment trees (ASTs) as the main data structure. The ASTs have two advantages. First, they allow computing WCET by solving a number of independent small ILP instances. Second, ASTs store more expressive constraints, thus enabling a more efficient and precise refinement procedure. In order to realize our framework algorithmically, we develop an algorithm for WCET estimation on ASTs, and we develop an interpolation-based counterexample-guided refinement scheme for ASTs. Furthermore, we extend our framework to obtain parametric estimates of WCET. We experimentally evaluate our approach on a set of examples from WCET benchmark suites and linear-algebra packages. We show that our analysis, with comparable effort, provides WCET estimates that in many cases significantly improve those computed by existing tools.


computer aided verification | 2014

Regression-Free Synthesis for Concurrency

Pavol Černý; Thomas A. Henzinger; Arjun Radhakrishna; Leonid Ryzhyk; Thorsten Tarrach

While fixing concurrency bugs, program repair algorithms may introduce new concurrency bugs. We present an algorithm that avoids such regressions. The solution space is given by a set of program transformations we consider in for repair process. These include reordering of instructions within a thread and inserting atomic sections. The new algorithm learns a constraint on the space of candidate solutions, from both positive examples (error-free traces) and counterexamples (error traces). From each counterexample, the algorithm learns a constraint necessary to remove the errors. From each positive examples, it learns a constraint that is necessary in order to prevent the repair from turning the trace into an error trace. We implemented the algorithm and evaluated it on simplified Linux device drivers with known bugs.


computer aided verification | 2010

Gist: a solver for probabilistic games

Krishnendu Chatterjee; Thomas A. Henzinger; Barbara Jobstmann; Arjun Radhakrishna

Gist is a tool that (a) solves the qualitative analysis problem of turn-based probabilistic games with ω-regular objectives; and (b) synthesizes reasonable environment assumptions for synthesis of unrealizable specifications Our tool provides the first and efficient implementations of several reduction-based techniques to solve turn-based probabilistic games, and uses the analysis of turn-based probabilistic games for synthesizing environment assumptions for unrealizable specifications.


computer aided verification | 2015

Synthesis through Unification

Rajeev Alur; Pavol Černý; Arjun Radhakrishna

Given a specification and a set of candidate programs (program space), the program synthesis problem is to find a candidate program that satisfies the specification. We present the synthesis through unification (STUN) approach, which is an extension of the counter-example guided inductive synthesis (CEGIS) approach. In CEGIS, the synthesizer maintains a subset S of inputs and a candidate program \(\mathtt {Prog}\) that is correct for S. The synthesizer repeatedly checks if there exists a counterexample input c such that the execution of \(\mathtt {Prog}\) is incorrect on c. If so, the synthesizer enlarges S to include c, and picks a program from the program space that is correct for the new set S.


symposium on principles of programming languages | 2015

Succinct Representation of Concurrent Trace Sets

Ashutosh Gupta; Thomas A. Henzinger; Arjun Radhakrishna; Roopsha Samanta; Thorsten Tarrach

We present a method and a tool for generating succinct representations of sets of concurrent traces. We focus on trace sets that contain all correct or all incorrect permutations of events from a given trace. We represent trace sets as HB-Formulas that are Boolean combinations of happens-before constraints between events. To generate a representation of incorrect interleavings, our method iteratively explores interleavings that violate the specification and gathers generalizations of the discovered interleavings into an HB-Formula; its complement yields a representation of correct interleavings. We claim that our trace set representations can drive diverse verification, fault localization, repair, and synthesis techniques for concurrent programs. We demonstrate this by using our tool in three case studies involving synchronization synthesis, bug summarization, and abstraction refinement based verification. In each case study, our initial experimental results have been promising. In the first case study, we present an algorithm for inferring missing synchronization from an HB-Formula representing correct interleavings of a given trace. The algorithm applies rules to rewrite specific patterns in the HB-Formula into locks, barriers, and wait-notify constructs. In the second case study, we use an HB-Formula representing incorrect interleavings for bug summarization. While the HB-Formula itself is a concise counterexample summary, we present additional inference rules to help identify specific concurrency bugs such as data races, define-use order violations, and two-stage access bugs. In the final case study, we present a novel predicate learning procedure that uses HB-Formulas representing abstract counterexamples to accelerate counterexample-guided abstraction refinement (CEGAR). In each iteration of the CEGAR loop, the procedure refines the abstraction to eliminate multiple spurious abstract counterexamples drawn from the HB-Formula.


symposium on principles of programming languages | 2014

Battery transition systems

Udi Boker; Thomas A. Henzinger; Arjun Radhakrishna

The analysis of the energy consumption of software is an important goal for quantitative formal methods. Current methods, using weighted transition systems or energy games, model the energy source as an ideal resource whose status is characterized by one number, namely the amount of remaining energy. Real batteries, however, exhibit behaviors that can deviate substantially from an ideal energy resource. Based on a discretization of a standard continuous battery model, we introduce {\em battery transition systems}. In this model, a battery is viewed as consisting of two parts -- the available-charge tank and the bound-charge tank. Any charge or discharge is applied to the available-charge tank. Over time, the energy from each tank diffuses to the other tank. Battery transition systems are infinite state systems that, being not well-structured, fall into no decidable class that is known to us. Nonetheless, we are able to prove that the

Collaboration


Dive into the Arjun Radhakrishna's collaboration.

Top Co-Authors

Avatar

Pavol Černý

University of Colorado Boulder

View shared research outputs
Top Co-Authors

Avatar

Thomas A. Henzinger

Institute of Science and Technology Austria

View shared research outputs
Top Co-Authors

Avatar

Thorsten Tarrach

Institute of Science and Technology Austria

View shared research outputs
Top Co-Authors

Avatar

Roopsha Samanta

University of Texas at Austin

View shared research outputs
Top Co-Authors

Avatar

Edmund M. Clarke

Carnegie Mellon University

View shared research outputs
Top Co-Authors

Avatar

Rajeev Alur

University of Pennsylvania

View shared research outputs
Top Co-Authors

Avatar

Nicholas V. Lewchenko

University of Colorado Boulder

View shared research outputs
Top Co-Authors

Avatar

Krishnendu Chatterjee

Institute of Science and Technology Austria

View shared research outputs
Top Co-Authors

Avatar

Martin Chmelík

Institute of Science and Technology Austria

View shared research outputs
Researchain Logo
Decentralizing Knowledge