VLDB 2026 Research / reviewers in the wild / expert
G. Ramalingam
dblp:r/GRamalingam · also Ganesan Ramalingam
· DBLP profile ↗
67ranked-venue papers
22as first author
0since 2021 · last 2019
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 52 · 15 first-authorTheory of computation · 9 · 7 first-authorDatabases, data management, data science and information retrieval · 5 · 4 first-authorSystems, architecture and hardware · 4Computer networks · 1Security and privacy · 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
31 papers |
Program analysis · 40% Concurrent programming · 38% Program verification · 8% | |
| Computer architecture, parallel and distributed computing, and storage systems
3 papers |
Distributed systems · 86% Parallel and multicore computing · 14% | |
| Theoretical computer science
6 papers |
Logic in computer science · 53% Computational complexity · 26% Distributed computing theory · 14% |
Topics — the 30 heaviest of 71, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Program analysis
static analysis |
0.8 | 8 | 2019 | From typestate verification to interpretable deep models (invited talk abstract) · ISSTA 2019 Bottom-up shape analysis using LISF · ACM Trans. Program. Lang. Syst. 2011 Automatic fine-grain locking using shape properties · OOPSLA 2011 |
Concurrent programming
concurrency control |
0.6 | 3 | 2015 | Automatic scalable atomicity via semantic locking · PPoPP 2015 Composing concurrency control · PLDI 2015 Automatic semantic locking · PPoPP 2014 |
Program analysis › type-based analysis
typestate analysis |
0.5 | 3 | 2019 | From typestate verification to interpretable deep models (invited talk abstract) · ISSTA 2019 Effective typestate verification in the presence of aliasing · ACM Trans. Softw. Eng. Methodol. 2008 Effective typestate verification in the presence of aliasing · ISSTA 2006 |
Program analysis › static analysis
pointer analysis |
0.5 | 4 | 2019 | From typestate verification to interpretable deep models (invited talk abstract) · ISSTA 2019 On the complexity of partially-flow-sensitive alias analysis · ACM Trans. Program. Lang. Syst. 2008 Effective typestate verification in the presence of aliasing · ISSTA 2006 |
Concurrent programming › synchronization
synchronization synthesis |
0.4 | 2 | 2015 | Automatic scalable atomicity via semantic locking · PPoPP 2015 Automatic semantic locking · PPoPP 2014 |
Concurrent programming
synchronization |
0.3 | 2 | 2015 | Automatic scalable atomicity via semantic locking · PPoPP 2015 Automatic fine-grain locking using shape properties · OOPSLA 2011 |
Program analysis › static analysis › pointer analysis
shape analysis |
0.3 | 3 | 2011 | Bottom-up shape analysis using LISF · ACM Trans. Program. Lang. Syst. 2011 Automatic fine-grain locking using shape properties · OOPSLA 2011 Thread Quantification for Concurrent Shape Analysis · CAV 2008 |
Concurrent programming › concurrency control
serializability |
0.3 | 2 | 2015 | Composing concurrency control · PLDI 2015 Sequential verification of serializability · POPL 2010 |
Distributed systems
fault tolerance |
0.3 | 2 | 2013 | Fault tolerance via idempotence · POPL 2013 Generalized lattice agreement · PODC 2012 |
Concurrent programming
transactional memory |
0.2 | 1 | 2015 | Composing concurrency control · PLDI 2015 |
Programming languages and type systems
abstract data types |
0.2 | 1 | 2014 | Automatic semantic locking · PPoPP 2014 |
Concurrent programming
concurrent data structures |
0.2 | 1 | 2013 | Concurrent libraries with foresight · PLDI 2013 |
Distributed systems
replication |
0.1 | 1 | 2012 | Generalized lattice agreement · PODC 2012 |
Distributed systems › replication
state machine replication |
0.1 | 1 | 2012 | Generalized lattice agreement · PODC 2012 |
Concurrent programming › synchronization
fine-grained locking |
0.1 | 1 | 2011 | Automatic fine-grain locking using shape properties · OOPSLA 2011 |
Program verification › program logic
hoare logic |
0.1 | 1 | 2011 | Bottom-up shape analysis using LISF · ACM Trans. Program. Lang. Syst. 2011 |
Program verification › program logic
separation logic |
0.1 | 1 | 2011 | Bottom-up shape analysis using LISF · ACM Trans. Program. Lang. Syst. 2011 |
Program synthesis and code generation
code completion |
0.1 | 1 | 2019 | From typestate verification to interpretable deep models (invited talk abstract) · ISSTA 2019 |
Software testing › test generation
automated test generation |
0.1 | 1 | 2010 | Representation dependence testing using program inversion · SIGSOFT FSE 2010 |
Compilers and program optimization › program transformation
program inversion |
0.1 | 1 | 2010 | Representation dependence testing using program inversion · SIGSOFT FSE 2010 |
Parallel and multicore computing
speculative parallelization |
0.1 | 1 | 2010 | Safe programmable speculative parallelism · PLDI 2010 |
Concurrent programming
concurrency bugs |
0.1 | 1 | 2009 | ISOLATOR: dynamically ensuring isolation in comcurrent programs · ASPLOS 2009 |
Concurrent programming › concurrency bugs
data races |
0.1 | 1 | 2009 | ISOLATOR: dynamically ensuring isolation in comcurrent programs · ASPLOS 2009 |
Operating systems › system security › operating system security › protection mechanism
isolation |
0.1 | 1 | 2009 | ISOLATOR: dynamically ensuring isolation in comcurrent programs · ASPLOS 2009 |
Program analysis
control flow analysis |
0.1 | 3 | 2002 | On loops, dominators, and dominance frontiers · ACM Trans. Program. Lang. Syst. 2002 On loops, dominators, and dominance frontier · PLDI 2000 Identifying Loops in Almost Linear Time · ACM Trans. Program. Lang. Syst. 1999 |
Authentication and access control
access control |
0.1 | 1 | 2008 | EON: modeling and analyzing dynamic access control systems with logic programs · CCS 2008 |
Authentication and access control › access control
dynamic access control |
0.1 | 1 | 2008 | EON: modeling and analyzing dynamic access control systems with logic programs · CCS 2008 |
Program analysis › data flow analysis
context-sensitive dataflow analysis |
0.1 | 1 | 2008 | Effective typestate verification in the presence of aliasing · ACM Trans. Softw. Eng. Methodol. 2008 |
Computational complexity › complexity of reasoning
complexity of program analysis |
0.1 | 1 | 2008 | On the complexity of partially-flow-sensitive alias analysis · ACM Trans. Program. Lang. Syst. 2008 |
Logic in computer science › logic programming
datalog |
0.1 | 1 | 2008 | EON: modeling and analyzing dynamic access control systems with logic programs · CCS 2008 |
Methods — techniques the papers use, named apart from their topics
synthesis algorithm · 0.4commutativity specification · 0.4aliasing information · 0.4access paths · 0.4abstract domain · 0.4two-phase locking · 0.3wait-free algorithm · 0.3two-phase commit · 0.2software transactional memory · 0.2foresight · 0.2dynamic right-movers · 0.2query satisfiability · 0.2datalog · 0.2value speculation · 0.1complexity analysis · 0.1almost-linear time algorithms · 0.1interval-finding algorithm · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2019 | Checking Observational Purity of ProceduresabstractVerifying whether a procedure is observationally pure (that is, it always returns the same result for the same input argument) is challenging when the procedure uses mutable (private) global variables, e.g., for memoization, and when the procedure is recursive. We present a deductive verification approach for this problem. Our approach encodes the procedure’s code as a logical formula, with recursive calls being modeled using a mathematical function symbol assuming that the procedure is observationally pure . Then, a theorem prover is invoked to check whether this logical formula agrees with the function symbol referred to above in terms of input-output behavior for all arguments. We prove the soundness of this approach. We then present a conservative approximation of the first approach that reduces the verification problem to one of checking whether a quantifier-free formula is satisfiable and prove the soundness of the second approach. We evaluate our approach on a set of realistic examples, using the Boogie intermediate language and theorem prover. Our evaluation shows that the invariants are easy to construct manually, and that our approach is effective at verifying observationally pure procedures. Himanshu Arora, Raghavan Komondoor, G. Ramalingam |
FASE | 3 |
| 2019 | From typestate verification to interpretable deep models (invited talk abstract)abstractThe paper ``Effective Typestate Verification in the Presence of Aliasing'' was published in the International Symposium on Software Testing and Analysis (ISSTA) 2006 Proceedings, and has now been selected to receive the ISSTA 2019 Retrospective Impact Paper Award. The paper described a scalable framework for verification of typestate properties in real-world Java programs. The paper introduced several techniques that have been used widely in the static analysis of real-world programs. Specifically, it introduced an abstract domain combining access-paths, aliasing information, and typestate that turned out to be simple, powerful, and useful. We review the original paper and show the evolution of the ideas over the years. We show how some of these ideas have evolved into work on machine learning for code completion, and discuss recent general results in machine learning for programming. Eran Yahav, Stephen J. Fink, Nurit Dor, G. Ramalingam, Emmanuel Geay |
ISSTA | 4 |
| 2018 | Safe Transferable RegionsabstractThere is an increasing interest in alternative memory management schemes that seek to combine the convenience of garbage collection and the performance of manual memory management in a single language framework. Unfortunately, ensuring safety in presence of manual memory management remains as great a challenge as ever. In this paper, we present a C#-like object-oriented language called Broom that uses a combination of region type system and lightweight runtime checks to enforce safety in presence of user-managed memory regions called transferable regions. Unsafe transferable regions have been previously used to contain the latency due to unbounded GC pauses. Our approach shows that it is possible to restore safety without compromising on the benefits of transferable regions. We prove the type safety of Broom in a formal framework that includes its C#-inspired features, such as higher-order functions and generics. We complement our type system with a type inference algorithm, which eliminates the need for programmers to write region annotations on types. The inference algorithm has been proven sound and relatively complete. We describe a prototype implementation of the inference algorithm, and our experience of using it to enforce memory safety in dataflow programs. Gowtham Kaki, G. Ramalingam |
ECOOP | 2 |
| 2018 | AutoCalib: Automatic Traffic Camera Calibration at ScaleabstractEmerging smart cities are typically equipped with thousands of outdoor cameras. However, these cameras are usually not calibrated, i.e., information such as their precise mounting height and orientation is not available. Calibrating these cameras allows measurement of real-world distances from the video, thereby enabling a wide range of novel applications such as identifying speeding vehicles and city road planning . Unfortunately, robust camera calibration is a manual process today and is not scalable. In this article, we propose AutoCalib, a system for scalable, automatic calibration of traffic cameras. AutoCalib exploits deep learning to extract selected key-point features from car images in the video and uses a novel filtering and aggregation algorithm to automatically produce a robust estimate of the camera calibration parameters from just hundreds of samples. We have implemented AutoCalib as a service on Azure that takes in a video segment and computes the camera calibration parameters. Using video from real-world traffic cameras, we show that AutoCalib is able to estimate real-world distances with an error of less than 12%. Romil Bhardwaj, Gopi Krishna Tummala, G. Ramalingam, Ramachandran Ramjee, Prasun Sinha |
ACM Trans. Sens. Networks | 3 |
| 2015 | Broom: Sweeping Out Garbage Collection from Big Data Systems
Ionel Gog, Jana Giceva, Malte Schwarzkopf, Kapil Vaswani, Dimitrios Vytiniotis, G. Ramalingam, Manuel Costa, Derek Gordon Murray, Steven Hand 0001, Michael Isard |
HotOS | 6 |
| 2015 | Composing concurrency controlabstractConcurrency control poses significant challenges when composing computations over multiple data-structures (objects) with different concurrency-control implementations. We formalize the usually desired requirements (serializability, abort-safety, deadlock-safety, and opacity) as well as stronger versions of these properties that enable composition. We show how to compose protocols satisfying these properties so that the resulting combined protocol also satisfies these properties. Our approach generalizes well-known protocols (such as two-phase-locking and two-phase-commit) and leads to new protocols. We apply this theory to show how we can safely compose optimistic and pessimistic concurrency control. For example, we show how we can execute a transaction that accesses two objects, one controlled by an STM and another by locking. Ofri Ziv, Alex Aiken, Guy Golan-Gueta, G. Ramalingam, Shmuel Sagiv |
PLDI | 4 |
| 2015 | Automatic scalable atomicity via semantic lockingabstractIn this paper, we consider concurrent programs in which the shared state consists of instances of linearizable ADTs (abstract data types). We present an automated approach to concurrency control that addresses a common need: the need to atomically execute a code fragment, which may contain multiple ADT operations on multiple ADT instances. We present a synthesis algorithm that automatically enforces atomicity of given code fragments (in a client program) by inserting pessimistic synchronization that guarantees atomicity and deadlock-freedom (without using any rollback mechanism). Our algorithm takes a commutativity specification as an extra input. This specification indicates for every pair of ADT operations the conditions under which the operations commute. Our algorithm enables greater parallelism by permitting commuting operations to execute concurrently. We have implemented the synthesis algorithm in a Java compiler, and applied it to several Java programs. Our results show that our approach produces efficient and scalable synchronization. Guy Golan-Gueta, G. Ramalingam, Shmuel Sagiv, Eran Yahav |
PPoPP | 2 |
| 2014 | Checking Linearizability of Encapsulated Extended Operations
Oren Zomer, Guy Golan-Gueta, G. Ramalingam, Shmuel Sagiv |
ESOP | 3 |
| 2014 | Automatic semantic lockingabstractIn this paper, we consider concurrent programs in which the shared state consists of instances of linearizable ADTs (abstract data types). We develop a novel automated approach to concurrency control that addresses a common need: the need to atomically execute a code fragment, which may contain multiple ADT operations on multiple ADT instances. In our approach, each ADT implements ADT-specific semantic locking operations that serve to exploit the semantics of ADT operations. We develop a synthesis algorithm that automatically inserts calls to these locking operations in a set of given code fragments (in a client program) to ensure that these code fragments execute atomically without deadlocks, and without rollbacks. Guy Golan-Gueta, G. Ramalingam, Shmuel Sagiv, Eran Yahav |
PPoPP | 2 |
| 2013 | Concurrent libraries with foresightabstractLinearizable libraries provide operations that appear to execute atomically. Clients, however, may need to execute a sequence of operations (a composite operation) atomically. We consider the problem of extending a linearizable library to support arbitrary atomic composite operations by clients. We introduce a novel approach in which the concurrent library ensures atomicity of composite operations by exploiting information (foresight) provided by its clients. We use a correctness condition, based on a notion of dynamic right-movers, that guarantees that composite operations execute atomically without deadlocks, and without using rollbacks. Guy Golan-Gueta, G. Ramalingam, Shmuel Sagiv, Eran Yahav |
PLDI | 2 |
| 2013 | Fault tolerance via idempotenceabstractBuilding distributed services and applications is challenging due to the pitfalls of distribution such as process and communication failures. A natural solution to these problems is to detect potential failures, and retry the failed computation and/or resend messages. Ensuring correctness in such an environment requires distributed services and applications to be idempotent. G. Ramalingam, Kapil Vaswani |
POPL | 1 |
| 2013 | Asynchronous Resilient Linearizability
Sagar Chordia, Sriram K. Rajamani, Kaushik Rajan, G. Ramalingam, Kapil Vaswani |
DISC | 4 |
| 2012 | Generalized lattice agreementabstractLattice agreement is a key decision problem in distributed systems. In this problem, processes start with input values from a lattice, and must learn (non-trivial) values that form a chain. Unlike consensus, which is impossible in the presence of even a single process failure, lattice agreement has been shown to be decidable in the presence of failures. In this paper, we consider lattice agreement problems in asynchronous, message passing systems. We present an algorithm for the lattice agreement problem that guarantees liveness as long as a majority of the processes are non-faulty. The algorithm has a time complexity of O(N) message delays, where N is the number of processes. We then introduce the generalized lattice agreement problem, where each process receives a (potentially unbounded) sequence of values from an infinite lattice and must learn a sequence of increasing values such that the union of all learnt sequences is a chain and every proposed value is eventually learnt. We present a wait-free algorithm for solving generalized lattice agreement. The algorithm guarantees that every value received by a correct process is learnt in O(N) message delays. We show that this algorithm can be used to implement a class of replicated state machines where (a) commands can be classified as reads and updates, and (b) all update commands commute. This algorithm can be used to realize serializable and linearizable replicated versions of commonly used data types. Jose M. Faleiro, Sriram K. Rajamani, Kaushik Rajan, G. Ramalingam, Kapil Vaswani |
PODC | 4 |
| 2012 | Modular Heap Analysis for Higher-Order Programs
Ravichandhran Madhavan, G. Ramalingam, Kapil Vaswani |
SAS | 2 |
| 2012 | Mining quantified temporal rules: Formalism, algorithms, and evaluation
David Lo 0001, G. Ramalingam, Venkatesh Prasad Ranganath, Kapil Vaswani |
Sci. Comput. Program. | 2 |
| 2011 | Automatic fine-grain locking using shape propertiesabstractWe present a technique for automatically adding fine-grain locking to an abstract data type that is implemented using a dynamic forest -i.e., the data structures may be mutated, even to the point of violating forestness temporarily during the execution of a method of the ADT. Our automatic technique is based on Domination Locking, a novel locking protocol. Domination locking is designed specifically for software concurrency control, and in particular is designed for object-oriented software with destructive pointer updates. Domination locking is a strict generalization of existing locking protocols for dynamically changing graphs. We show our technique can successfully add fine-grain locking to libraries where manually performing locking is extremely challenging. We show that automatic fine-grain locking is more efficient than coarse-grain locking, and obtains similar performance to hand-crafted fine-grain locking. Guy Golan-Gueta, Nathan Bronson, Alex Aiken, G. Ramalingam, Shmuel Sagiv, Eran Yahav |
OOPSLA | 4 |
| 2011 | Purity Analysis: An Abstract Interpretation Formulation
Ravichandhran Madhavan, G. Ramalingam, Kapil Vaswani |
SAS | 2 |
| 2011 | Special issue on Partial Evaluation and Program Manipulation (selected papers from PEPM 2007)
G. Ramalingam, Eelco Visser |
Sci. Comput. Program. | 1 |
| 2011 | Bottom-up shape analysis using LISFabstractIn this article, we present a new shape analysis algorithm. The key distinguishing aspect of our algorithm is that it is completely compositional, bottom-up and noniterative. We present our algorithm as an inference system for computing Hoare triples summarizing heap manipulating programs. Our inference rules are compositional: Hoare triples for a compound statement are computed from the Hoare triples of its component statements. These inference rules are used as the basis for bottom-up shape analysis of programs. Specifically, we present a Logic of Iterated Separation Formulae (LISF), which uses the iterated separating conjunct of Reynolds [2002] to represent program states. A key ingredient of our inference rules is a strong bi-abduction operation between two logical formulas. We describe sound strong bi-abduction and satisfiability procedures for LISF. We have built a tool called S p I n E that implements these inference rules and have evaluated it on standard shape analysis benchmark programs. Our experiments show that S p I n E can generate expressive summaries, which are complete functional specifications in many cases. Bhargav S. Gulavani, Supratik Chakraborty, G. Ramalingam, Aditya V. Nori |
ACM Trans. Program. Lang. Syst. | 3 |
| 2010 | Logical Concurrency Control from Sequential Proofs
Jyotirmoy V. Deshmukh, G. Ramalingam, Venkatesh Prasad Ranganath, Kapil Vaswani |
ESOP | 2 |
| 2010 | Safe programmable speculative parallelismabstractExecution order constraints imposed by dependences can serialize computation, preventing parallelization of code and algorithms. Speculating on the value(s) carried by dependences is one way to break such critical dependences. Value speculation has been used effectively at a low level, by compilers and hardware. In this paper, we focus on the use of speculation by programmers as an algorithmic paradigm to parallelize seemingly sequential code. Prakash Prabhu, G. Ramalingam, Kapil Vaswani |
PLDI | 2 |
| 2010 | Sequential verification of serializabilityabstractSerializability is a commonly used correctness condition in concurrent programming. When a concurrent module is serializable, certain other properties of the module can be verified by considering only its sequential executions. In many cases, concurrent modules guarantee serializability by using standard locking protocols, such as tree locking or two-phase locking. Unfortunately, according to the existing literature, verifying that a concurrent module adheres to these protocols requires considering concurrent interleavings. Hagit Attiya, G. Ramalingam, Noam Rinetzky |
POPL | 2 |
| 2010 | Representation dependence testing using program inversionabstractThe definition of a data structure may permit many different concrete representations of the same logical content. A (client) program that accepts such a data structure as input is said to have a representation dependence if its behavior differs for logically equivalent input values. In this paper, we present a methodology and tool for automated testing of clients of a data structure for representation dependence. In the proposed methodology, the developer expresses the logical equivalence by writing a normalization program f that maps each concrete representation to a canonical one. Our solution relies on automatically synthesizing the one-to-many inverse function of f: given an input value x, we can generate multiple test inputs logically equivalent to x by executing the inverse with the canonical value f(x) as input repeatedly. We present an inversion algorithm for restricted classes of normalization programs including programs mapping arrays to arrays in a typical iterative manner. We present a prototype implementation of the algorithm, and demonstrate how our methodology reveals bugs due to representation dependence in open source software such as Open Office and Picasa using the widely used image format TIFF. TIFF is a challenging case study for our approach. Aditya Kanade 0001, Rajeev Alur, Sriram K. Rajamani, G. Ramalingam |
SIGSOFT FSE | 4 |
| 2010 | Reference count analysis with shallow aliasing
Akash Lal, G. Ramalingam |
Inf. Process. Lett. | 2 |
| 2009 | Abstract Transformers for Thread Correlation Analysis
Michal Segalov, Tal Lev-Ami, Roman Manevich, G. Ramalingam, Shmuel Sagiv |
APLAS | 4 |
| 2009 | ISOLATOR: dynamically ensuring isolation in comcurrent programsabstractIn this paper, we focus on concurrent programs that use locks to achieve isolation of data accessed by critical sections of code. We present ISOLATOR, an algorithm that guarantees isolation for well-behaved threads of a program that obey a locking discipline even in the presence of ill-behaved threads that disobey the locking discipline. ISOLATOR uses code instrumentation, data replication, and virtual memory protection to detect isolation violations and delays ill-behaved threads to ensure isolation. Our instrumentation scheme requires access only to the code of well-behaved threads. We have evaluated ISOLATOR on several benchmark programs and found that ISOLATOR can ensure isolation with reasonable runtime overheads. In addition, we present three general desiderata - safety, isolation, and permissiveness - for any scheme that attempts to ensure isolation, and formally prove that ISOLATOR satisfies all of these desiderata. Sriram K. Rajamani, G. Ramalingam, Venkatesh Prasad Ranganath, Kapil Vaswani |
ASPLOS | 2 |
| 2009 | Bottom-Up Shape Analysis
Bhargav S. Gulavani, Supratik Chakraborty, G. Ramalingam, Aditya V. Nori |
SAS | 3 |
| 2008 | Thread Quantification for Concurrent Shape Analysis
Josh Berdine, Tal Lev-Ami, Roman Manevich, G. Ramalingam, Shmuel Sagiv |
CAV | 4 |
| 2008 | EON: modeling and analyzing dynamic access control systems with logic programsabstractWe present EON, a logic-programming language and tool that can be used to model and analyze dynamic access control systems. Our language extends Datalog with some carefully designed constructs that allow the introduction and transformation of new relations. For example, these constructs can model the creation of processes and objects, and the modification of their security labels at runtime. The information-flow properties of such systems can be analyzed by asking queries in this language. We show that query evaluation in EON can be reduced to decidable query satisfiability in a fragment of Datalog, and further, under some restrictions, to efficient query evaluation in Datalog. Avik Chaudhuri, Prasad Naldurg, Sriram K. Rajamani, G. Ramalingam, Lakshmisubrahmanyam Velaga |
CCS | 4 |
| 2008 | Global Software Servicing: Observational Experiences at MicrosoftabstractSoftware servicing in an important software engineering activity that is gaining significant importance in the global software development context. In this paper we report on a study conducted to understand the processes, practices and problems in the Windows servicing organization in Microsoftpsilas India Development Center. We report on our observations and experiences from this study on the main processes and practices adopted for software servicing in Windows and the main problems pertaining to information needs and communication issues. We also discuss our experiences in this study within the context of prior research defined in the global software development community to explain the ways in which Microsoft addresses these common problems. Shilpa Bugde, Nachiappan Nagappan, Sriram K. Rajamani, G. Ramalingam |
ICGSE | 4 |
| 2008 | Heap Decomposition for Concurrent Shape Analysis
Roman Manevich, Tal Lev-Ami, Shmuel Sagiv, G. Ramalingam, Josh Berdine |
SAS | 4 |
| 2008 | On the complexity of partially-flow-sensitive alias analysisabstractWe introduce the notion of apartially-flow-sensitive analysis based on the number of read and write operations that are guaranteed to be analyzed in a sequential manner. We study the complexity of partially-flow-sensitive alias analysis and show that precise alias analysis with a very limited flow-sensitivity is as hard as precise flow-sensitive alias analysis, both when dynamic memory allocation is allowed, as well as in the absence of dynamic memory allocation. Noam Rinetzky, G. Ramalingam, Shmuel Sagiv, Eran Yahav |
ACM Trans. Program. Lang. Syst. | 2 |
| 2008 | Effective typestate verification in the presence of aliasingabstractThis article addresses the challenge of sound typestate verification, with acceptable precision, for real-world Java programs. We present a novel framework for verification of typestate properties, including several new techniques to precisely treat aliases without undue performance costs. In particular, we present a flow-sensitive, context-sensitive, integrated verifier that utilizes a parametric abstract domain combining typestate and aliasing information. To scale to real programs without compromising precision, we present a staged verification system in which faster verifiers run as early stages which reduce the workload for later, more precise, stages. We have evaluated our framework on a number of real Java programs, checking correct API usage for various Java standard libraries. The results show that our approach scales to hundreds of thousands of lines of code, and verifies correctness for 93% of the potential points of failure. Stephen J. Fink, Eran Yahav, Nurit Dor, G. Ramalingam, Emmanuel Geay |
ACM Trans. Softw. Eng. Methodol. | 4 |
| 2007 | Modular Shape Analysis for Dynamically Encapsulated Programs
Noam Rinetzky, Arnd Poetzsch-Heffter, G. Ramalingam, Shmuel Sagiv, Eran Yahav |
ESOP | 3 |
| 2007 | Shape Analysis by Graph Decomposition
Roman Manevich, Josh Berdine, Byron Cook, G. Ramalingam, Shmuel Sagiv |
TACAS | 4 |
| 2006 | Semantics-based reverse engineering of object-oriented data modelsabstractWe present an algorithm for reverse engineering object-oriented (OO) data models from programs written in weakly-typed languages like Cobol. These models, similar to UML class diagrams, can facilitate a variety of program maintenance and migration activities. Our algorithm is based on a semantic analysis of the program's code, and we provide a bisimulation-based formalization of what it means for an OO data model to be correct for a program. G. Ramalingam, Raghavan Komondoor, John Field, Saurabh Sinha 0003 |
ICSE | 1 |
| 2006 | Effective typestate verification in the presence of aliasingabstractThis paper addresses the challenge of sound typestate verification, with acceptable precision, for real-world Java programs. We present a novel framework for verification of typestate properties, including several new techniques to precisely treat aliases without undue performance costs. In particular, we present a flowsensitive, context-sensitive, integrated verifier that utilizes a parametric abstract domain combining typestate and aliasing information.To scale to real programs without compromising precision, we present a staged verification system in which faster verifiers run as early stages which reduce the workload for later, more precise, stages.We have evaluated our framework on a number of real Java programs, checking correct API usage for various Java standard libraries. The results show that our approach scales to hundreds of thousands of lines of code, and verifies correctness for 93% of the potential points of failure. Stephen J. Fink, Eran Yahav, Nurit Dor, G. Ramalingam, Emmanuel Geay |
ISSTA | 4 |
| 2005 | Dependent Types for Program Understanding
Raghavan Komondoor, G. Ramalingam, Satish Chandra 0001, John Field |
TACAS | 2 |
| 2005 | Predicate Abstraction and Canonical Abstraction for Singly-Linked Lists
Roman Manevich, Eran Yahav, G. Ramalingam, Shmuel Sagiv |
VMCAI | 3 |
| 2005 | Typestate verification: Abstraction techniques and complexity results
John Field, Deepak Goyal, G. Ramalingam, Eran Yahav |
Sci. Comput. Program. | 3 |
| 2004 | Verifying safety properties using separation and heterogeneous abstractionsabstractIn this paper, we show how separation (decomposing a verification problem into a collection of verification subproblems) can be used to improve the efficiency and precision of verification of safety properties. We present a simple language for specifying separation strategies for decomposing a single verification problem into a set of subproblems. (The strategy specification is distinct from the safety property specification and is specified separately.) We present a general framework of heterogeneous abstraction that allows different parts of the heap to be abstracted using different degrees of precision at different points during the analysis. We show how the goals of separation (i.e., more efficient verification) can be realized by first using a separation strategy to transform (instrument) a verification problem instance (consisting of a safety property specification and an input program), and by then utilizing heterogeneous abstraction during the verification of the transformed verification problem. Eran Yahav, G. Ramalingam |
PLDI | 2 |
| 2004 | Partially Disjunctive Heap Abstraction
Roman Manevich, Shmuel Sagiv, G. Ramalingam, John Field |
SAS | 3 |
| 2003 | Typestate Verification: Abstraction Techniques and Complexity Results
John Field, Deepak Goyal, G. Ramalingam, Eran Yahav |
SAS | 3 |
| 2002 | Deriving Specialized Program Analyses for Certifying Component-Client ConformanceabstractWe are concerned with the problem of statically certifying (verifying) whether the client of a software component conforms to the component's constraints for correct usage. We show how conformance certification can be efficiently carried out in a staged fashion for certain classes of first-order safety (FOS) specifications, which can express relationship requirements among potentially unbounded collections of runtime objects. In the first stage of the certification process, we systematically derive an abstraction that is used to model the component state during analysis of arbitrary clients. In general, the derived abstraction will utilize first-order predicates, rather than the propositions often used by model checkers. In the second stage, the generated abstraction is incorporated into a static analysis engine to produce a certifier. In the final stage, the resulting certifier is applied to a client to conservatively determine whether the client violates the component's constraints. Unlike verification approaches that analyze a specification and client code together, our technique can take advantage of computationally-intensive symbolic techniques during the abstraction generation phase, without affecting the performance of client analysis. Using as a running example the Concurrent Modification Problem (CMP), which arises when certain classes defined by the Java Collections Framework are misused, we describe several different classes of certifiers with varying time/space/precision tradeoffs. Of particular note are precise, polynomial-time, flow- and context-sensitive certifiers for certain classes of FOS specifications and client programs. Finally, we evaluate a prototype implementation of a certifier for CMP on a variety of test programs. The results of the evaluation show that our approach, though conservative, yields very few "false alarms," with acceptable performance. G. Ramalingam, Alex Varshavsky, John Field, Deepak Goyal, Shmuel Sagiv |
PLDI | 1 |
| 2002 | Compactly Representing First-Order Structures for Static Analysis
Roman Manevich, G. Ramalingam, John Field, Deepak Goyal, Shmuel Sagiv |
SAS | 2 |
| 2002 | On sparse evaluation representations
G. Ramalingam |
Theor. Comput. Sci. | 1 |
| 2002 | On loops, dominators, and dominance frontiersabstractThis article explores the concept of loops and loop nesting forests of control-flow graphs, using the problem of constructing the dominator tree of a graph and the problem of computing the iterated dominance frontier of a set of vertices in a graph as guiding applications. The contributions of this article include: (1) An axiomatic characterization, as well as a constructive characterization, of a family of loop nesting forests that includes various specific loop nesting forests that have been previously defined. (2) The definition of a new loop nesting forest, as well as an efficient, almost linear-time, algorithm for constructing this forest. (3) An illustration of how loop nesting forests can be used to transform arbitrary (potentially irreducible) problem instances into equivalent acylic graph problem instances in the case of the two problems of (a) constructing the dominator tree of a graph, and (b) computing the iterated dominance frontier of a set of vertices in a graph, leading to new, almost linear-time, algorithms for these problems. G. Ramalingam |
ACM Trans. Program. Lang. Syst. | 1 |
| 2000 | On loops, dominators, and dominance frontierabstractArticle On loops, dominators, and dominance frontier Share on Author: G. Ramalingam IBM T.J. Watson Research Center, P.O. Box 704, Yorktown Heights, NY IBM T.J. Watson Research Center, P.O. Box 704, Yorktown Heights, NYView Profile Authors Info & Claims PLDI '00: Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementationAugust 2000 Pages 233–241https://doi.org/10.1145/349299.349330Published:01 May 2000 18citation836DownloadsMetricsTotal Citations18Total Downloads836Last 12 Months6Last 6 weeks2 Get Citation AlertsNew Citation Alert added!This alert has been successfully added and will be sent to:You will be notified whenever a record that you have chosen has been cited.To manage your alert preferences, click on the button below.Manage my AlertsNew Citation Alert!Please log in to your account Save to BinderSave to BinderCreate a New BinderNameCancelCreateExport CitationPublisher SiteGet Access G. Ramalingam |
PLDI | 1 |
| 2000 | Context-sensitive synchronization-sensitive analysis is undecidableabstractStatic program analysis is concerned with the computation of approximations of the runtime behavior of programs. Precise information about a program's runtime behavior is, in general, uncomputable for various different reasons, and each reason may necessitate making certain approximations in the information computed. This article illustrates one source of difficulty in static analysis of concurrent programs. Specifically, the article shows that an analysis that is simultaneously both context-sensitive and synchronization-sensitive (that is, a context-sensitive analysis that precisely takes into account the constraints on execution order imposed by the synchronization statements in the program) is impossible even for the simplest of analysis problems. G. Ramalingam |
ACM Trans. Program. Lang. Syst. | 1 |
| 1999 | Identifying Procedural Structure in Cobol ProgramsabstractThe principal control-flow abstraction mechanism in the Cobol language is the perform statement. Normally, perform statements are used in a straightforward manner to define parameterless procedures (where global variables are used to pass data into and out of procedure bodies). However, unlike most procedural constructs, distinct performed procedures can share code in arbitrarily complicated ways. In addition, performs can also be used in such a way as to cause transfers of control that do not correspond to normal call/return semantics.In this paper, we show how a Cobol program can be efficiently transformed into a semantically-equivalent procedurally well-structured representation, in which conventional procedures (i.e., with the usual call and return semantics and without code sharing) and procedure call statements replace performed code and perform statements. This transformation process properly accounts for the non-procedural control flow that can result from ill-behaved perform statements.The program representation derived from our analysis can be used directly in program understanding applications, program restructuring tools, and inter-language translators. In addition, it can be used as the starting point for a variety of context-sensitive program analyses, e.g., program slicing. John Field, G. Ramalingam |
PASTE | 2 |
| 1999 | Aggregate Structure Identification and Its Application to Program AnalysisabstractIn this paper, we describe an efficient algorithm for lazily decomposing aggregates such as records and arrays into simpler components based on the access patterns specific to a given program. This process allows us both to identify implicit aggregate structure not evident from declarative information in the program, and to simplify the representation of declared aggregates when references are made only to a subset of their components. We show that the structure identification process can be exploited to yield the following principal results: - A fast type analysis algorithm applicable to program maintenance applications such as date usage inference for the "Year 2000" problem. - An efficient algorithm for atomization of aggregates. Given a program, an aggregate atomization decomposes all of the data that can be manipulated by the program into a set of disjoint atoms such that each data reference can be modeled as one or more references to atoms without loss of semantic information. Aggregate atomization can be used to adapt program analyses and representations designed for scalar data to aggregate data. In particular, atomization can be used to build more precise versions of program representations such as SSA form or PDGs. Such representations can in turn yield more accurate results for problems such as program slicing.Our techniques are especially useful in weakly-typed languages such as Cobol (where a variable need not be declared as an aggregate to store an aggregate value) and in languages where references to statically-defined subranges of data such as arrays or strings are allowed. G. Ramalingam, John Field, Frank Tip |
POPL | 1 |
| 1999 | Solving Systems of Difference Constraints Incrementally
G. Ramalingam, Junehwa Song, Leo Joskowicz, Raymond E. Miller |
Algorithmica | 1 |
| 1999 | Interactive Authoring of Multimedia Documents in a Constraint-Based Authoring System
Junehwa Song, G. Ramalingam, Raymond E. Miller, Byoung-Kee Yi |
Multim. Syst. | 2 |
| 1999 | Identifying Loops in Almost Linear TimeabstractLoop identification is an essential step in performing various loop optimizations and transformations. The classical algorithm for identifying loops is Tarjan's interval-finding algorithm, which is restricted to reducible graphs. More recently, serveral people have proposed extensions to Tarjan's algortihm to deal with irreducible graphs. Havlak presents one such extension, which constructs a loop-nesting forest for an arbitrary flow graph. We show that the running time of this algorithm is quadratic in the worst-case, and not almost linear as claimed. We then show how to modify the algorithm to make it run in almost linear time. We next consider the quadratic algorithm presented by Sreedhar et al. which constructs a loop-nesting forest different from the one constructed by Havlak algorithm. We show that this algorithm too can be adapted to run in almost linear time. We finally consider an algorithm due to Steensgaard, which constructs yet antoher loop-nesting forest. We show how this algorithm can be made more efficient by borrowing ideas from the other algorithms discussed earlier. G. Ramalingam |
ACM Trans. Program. Lang. Syst. | 1 |
| 1997 | A Member Lookup Algorithm for C++abstractThe member lookup problem in C++ is the problem of resolving a specified member name in the context of a specified class. Member lookup in C++ is complicated by the presence of virtual inheritance and multiple inheritance. In this paper, we present an efficient algorithm for member lookup in C++. We also present a formalism for the multiple inheritance mechanism of C++, which we use as the basis for deriving our algorithm. The formalism may also be of use as a formal basis for deriving other C++ compiler algorithms. G. Ramalingam, Harini Srinivasan |
PLDI | 1 |
| 1997 | On Sparse Evaluation Representations
G. Ramalingam |
SAS | 1 |
| 1996 | Slicing Class Hierarchies in C++abstractThis paper describes an algorithm for slicing class hierarchies in C++ programs. Given a C++ class hierarchy (a collection of C++ classes and inheritance relations among them) and a program P that uses the hierarchy, the algorithm eliminates from the hierarchy those data members, member functions, classes, and inheritance relations that are unnecessary for ensuring that the semantics of P is maintained.Class slicing is especially useful when the program P is generated from a larger program P' by a statement slicing algorithm. Such an algorithm eliminates statements that are irrelevant to a set of slicing criteria---program points of particular interest. There has been considerable previous work on statement slicing, and it will not be the concern of this paper. However, the combination of statement slicing and class slicing for C++ has two principal applications: First, class slicing can enhance statement slicing's utility in program debugging and understanding applications, by eliminating both executable and declarative program components irrelevant to the slicing criteria. Second, the combination of the two slicing algorithms can be used to decrease the space requirements of programs that do not use all the components of a class hierarchy. Such a situation is particularly common in programs that use class libraries. Frank Tip, Jong-Deok Choi, John Field, G. Ramalingam |
OOPSLA | 4 |
| 1996 | Data Flow Frequency AnalysisabstractConventional dataflow analysis computes information about what facts may or will not hold during the execution of a program. Sometimes it is useful, for program optimization, to know how often or with what probability a fact holds true during program execution. In this paper, we provide a precise formulation of this problem for a large class of dataflow problems --- the class of finite bi-distributive subset problems. We show how it can be reduced to a generalization of the standard dataflow analysis problem, one that requires a sum-over-all-paths quantity instead of the usual meet-overall -paths quantity. We show that Kildall's result expressing the meet-over-all-paths value as a maximal-fixed-point carries over to the generalized setting. We then outline ways to adapt the standard dataflow analysis algorithms to solve this generalized problem, both in the intraprocedural and the interprocedural case. 1 Introduction Conventional dataflow analysis computes information about what facts... G. Ramalingam |
PLDI | 1 |
| 1996 | On the Computational Complexity of Dynamic Graph Problems
G. Ramalingam, Thomas W. Reps |
Theor. Comput. Sci. | 1 |
| 1995 | Parametric Program SlicingabstractProgram slicing is a technique for isolating computational threads in programs. In this paper, we show how to mechanically extract a family of practical algorithms for computing slices directly from semantic specifications. These algorithms are based on combining the notion of dynamic dependence tracking in term rewriting systems with a program representation whose behavior is defined via an equational logic. Our approach is distinguished by the fact that changes to the behavior of the slicing algorithm can be accomplished through simple changes in rewriting rules that define the semantics of the program representation. Thus, e.g., different notions of dependence may be specified, properties of language-specific datatypes can be exploited, and various time, space, and precision tradeoffs may be made. This flexibility enables us to generalize the traditional notions of static and dynamic slices to that of a constrained slice, where any subset of the inputs of a program may be supplied. John Field, G. Ramalingam, Frank Tip |
POPL | 2 |
| 1994 | An Incremental Algorithm for Maintaining the Dominator Tree of a Reducible FlowgraphabstractWe present a new incremental algorithm for the problem of maintaining the dominator tree of a reducible flowgraph as the flowgraph undergoes changes such as the insertion and deletion of edges. Such an algorithm has applications in incremental dataflow analysis and incremental compilation. G. Ramalingam, Thomas W. Reps |
POPL | 1 |
| 1994 | On Competitive On-Line Algorithms for the Dynamic Priority-Ordering Problem
G. Ramalingam, Thomas W. Reps |
Inf. Process. Lett. | 1 |
| 1994 | The Undecidability of AliasingabstractAlias analysis is a prerequisite for performing most of the common program analyses such as reaching-definitions analysis or live-variables analysis. Landi [1992] recently established that it is impossible to compute statically precise alias information—either may-alias or must-alias—in languages with if statements, loops, dynamic storage, and recursive data structures: more precisely, he showed that the may-alias relation is not recursive, while the must-alias relation is not even recursively enumerable. This article presents simpler proofs of the same results. G. Ramalingam |
ACM Trans. Program. Lang. Syst. | 1 |
| 1993 | A Categorized Bibliography on Incremental ComputationabstractIn many kinds of emnputatiomd contexts, modifications of the input data are to be processed at once so as to have immediate effect on the output. Because small changes in the input to a computation often cause only small changes in the outpu~ the challenge is to compute the new output incrementally by updating parts of the old outpu~ rather than by recomputing the entire output from scratch (as a “batch computation”) G. Ramalingam, Thomas W. Reps |
POPL | 1 |
| 1990 | New Sequential and Parallel Algorithms for Interval Graph Recognition
G. Ramalingam, C. Pandu Rangan |
Inf. Process. Lett. | 1 |
| 1988 | Total Domination in Interval Graphs Revisited
G. Ramalingam, C. Pandu Rangan |
Inf. Process. Lett. | 1 |
| 1988 | A Unified Approach to Domination Problems on Interval Graphs
G. Ramalingam, C. Pandu Rangan |
Inf. Process. Lett. | 1 |