G. Ramalingam

dblp:r/GRamalingam · also Ganesan Ramalingam · DBLP profile ↗
← Back
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

TopicWeightPapersLastEvidence papers
Program analysis
static analysis
0.882019
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.632015
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.532019
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.542019
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.422015
Automatic scalable atomicity via semantic locking · PPoPP 2015
Automatic semantic locking · PPoPP 2014
Concurrent programming
synchronization
0.322015
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.332011
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.322015
Composing concurrency control · PLDI 2015
Sequential verification of serializability · POPL 2010
Distributed systems
fault tolerance
0.322013
Fault tolerance via idempotence · POPL 2013
Generalized lattice agreement · PODC 2012
Concurrent programming
transactional memory
0.212015
Composing concurrency control · PLDI 2015
Programming languages and type systems
abstract data types
0.212014
Automatic semantic locking · PPoPP 2014
Concurrent programming
concurrent data structures
0.212013
Concurrent libraries with foresight · PLDI 2013
Distributed systems
replication
0.112012
Generalized lattice agreement · PODC 2012
Distributed systems › replication
state machine replication
0.112012
Generalized lattice agreement · PODC 2012
Concurrent programming › synchronization
fine-grained locking
0.112011
Automatic fine-grain locking using shape properties · OOPSLA 2011
Program verification › program logic
hoare logic
0.112011
Bottom-up shape analysis using LISF · ACM Trans. Program. Lang. Syst. 2011
Program verification › program logic
separation logic
0.112011
Bottom-up shape analysis using LISF · ACM Trans. Program. Lang. Syst. 2011
Program synthesis and code generation
code completion
0.112019
From typestate verification to interpretable deep models (invited talk abstract) · ISSTA 2019
Software testing › test generation
automated test generation
0.112010
Representation dependence testing using program inversion · SIGSOFT FSE 2010
Compilers and program optimization › program transformation
program inversion
0.112010
Representation dependence testing using program inversion · SIGSOFT FSE 2010
Parallel and multicore computing
speculative parallelization
0.112010
Safe programmable speculative parallelism · PLDI 2010
Concurrent programming
concurrency bugs
0.112009
ISOLATOR: dynamically ensuring isolation in comcurrent programs · ASPLOS 2009
Concurrent programming › concurrency bugs
data races
0.112009
ISOLATOR: dynamically ensuring isolation in comcurrent programs · ASPLOS 2009
Operating systems › system security › operating system security › protection mechanism
isolation
0.112009
ISOLATOR: dynamically ensuring isolation in comcurrent programs · ASPLOS 2009
Program analysis
control flow analysis
0.132002
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.112008
EON: modeling and analyzing dynamic access control systems with logic programs · CCS 2008
Authentication and access control › access control
dynamic access control
0.112008
EON: modeling and analyzing dynamic access control systems with logic programs · CCS 2008
Program analysis › data flow analysis
context-sensitive dataflow analysis
0.112008
Effective typestate verification in the presence of aliasing · ACM Trans. Softw. Eng. Methodol. 2008
Computational complexity › complexity of reasoning
complexity of program analysis
0.112008
On the complexity of partially-flow-sensitive alias analysis · ACM Trans. Program. Lang. Syst. 2008
Logic in computer science › logic programming
datalog
0.112008
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
YearPublicationVenuePosition
2019 Checking Observational Purity of Procedures
abstract
Verifying 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
FASE3
2019 From typestate verification to interpretable deep models (invited talk abstract)
abstract
The 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
ISSTA4
2018 Safe Transferable Regions
abstract
There 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
ECOOP2
2018 AutoCalib: Automatic Traffic Camera Calibration at Scale
abstract
Emerging 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. Networks3
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
HotOS6
2015 Composing concurrency control
abstract
Concurrency 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
PLDI4
2015 Automatic scalable atomicity via semantic locking
abstract
In 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
PPoPP2
2014 Checking Linearizability of Encapsulated Extended Operations
Oren Zomer, Guy Golan-Gueta, G. Ramalingam, Shmuel Sagiv
ESOP3
2014 Automatic semantic locking
abstract
In 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
PPoPP2
2013 Concurrent libraries with foresight
abstract
Linearizable 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
PLDI2
2013 Fault tolerance via idempotence
abstract
Building 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
POPL1
2013 Asynchronous Resilient Linearizability
Sagar Chordia, Sriram K. Rajamani, Kaushik Rajan, G. Ramalingam, Kapil Vaswani
DISC4
2012 Generalized lattice agreement
abstract
Lattice 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
PODC4
2012 Modular Heap Analysis for Higher-Order Programs
Ravichandhran Madhavan, G. Ramalingam, Kapil Vaswani
SAS2
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 properties
abstract
We 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
OOPSLA4
2011 Purity Analysis: An Abstract Interpretation Formulation
Ravichandhran Madhavan, G. Ramalingam, Kapil Vaswani
SAS2
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 LISF
abstract
In 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
ESOP2
2010 Safe programmable speculative parallelism
abstract
Execution 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
PLDI2
2010 Sequential verification of serializability
abstract
Serializability 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
POPL2
2010 Representation dependence testing using program inversion
abstract
The 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 FSE4
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
APLAS4
2009 ISOLATOR: dynamically ensuring isolation in comcurrent programs
abstract
In 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
ASPLOS2
2009 Bottom-Up Shape Analysis
Bhargav S. Gulavani, Supratik Chakraborty, G. Ramalingam, Aditya V. Nori
SAS3
2008 Thread Quantification for Concurrent Shape Analysis
Josh Berdine, Tal Lev-Ami, Roman Manevich, G. Ramalingam, Shmuel Sagiv
CAV4
2008 EON: modeling and analyzing dynamic access control systems with logic programs
abstract
We 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
CCS4
2008 Global Software Servicing: Observational Experiences at Microsoft
abstract
Software 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
ICGSE4
2008 Heap Decomposition for Concurrent Shape Analysis
Roman Manevich, Tal Lev-Ami, Shmuel Sagiv, G. Ramalingam, Josh Berdine
SAS4
2008 On the complexity of partially-flow-sensitive alias analysis
abstract
We 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 aliasing
abstract
This 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
ESOP3
2007 Shape Analysis by Graph Decomposition
Roman Manevich, Josh Berdine, Byron Cook, G. Ramalingam, Shmuel Sagiv
TACAS4
2006 Semantics-based reverse engineering of object-oriented data models
abstract
We 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
ICSE1
2006 Effective typestate verification in the presence of aliasing
abstract
This 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
ISSTA4
2005 Dependent Types for Program Understanding
Raghavan Komondoor, G. Ramalingam, Satish Chandra 0001, John Field
TACAS2
2005 Predicate Abstraction and Canonical Abstraction for Singly-Linked Lists
Roman Manevich, Eran Yahav, G. Ramalingam, Shmuel Sagiv
VMCAI3
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 abstractions
abstract
In 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
PLDI2
2004 Partially Disjunctive Heap Abstraction
Roman Manevich, Shmuel Sagiv, G. Ramalingam, John Field
SAS3
2003 Typestate Verification: Abstraction Techniques and Complexity Results
John Field, Deepak Goyal, G. Ramalingam, Eran Yahav
SAS3
2002 Deriving Specialized Program Analyses for Certifying Component-Client Conformance
abstract
We 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
PLDI1
2002 Compactly Representing First-Order Structures for Static Analysis
Roman Manevich, G. Ramalingam, John Field, Deepak Goyal, Shmuel Sagiv
SAS2
2002 On sparse evaluation representations
G. Ramalingam
Theor. Comput. Sci.1
2002 On loops, dominators, and dominance frontiers
abstract
This 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 frontier
abstract
Article 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
PLDI1
2000 Context-sensitive synchronization-sensitive analysis is undecidable
abstract
Static 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 Programs
abstract
The 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
PASTE2
1999 Aggregate Structure Identification and Its Application to Program Analysis
abstract
In 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
POPL1
1999 Solving Systems of Difference Constraints Incrementally
G. Ramalingam, Junehwa Song, Leo Joskowicz, Raymond E. Miller
Algorithmica1
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 Time
abstract
Loop 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++
abstract
The 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
PLDI1
1997 On Sparse Evaluation Representations
G. Ramalingam
SAS1
1996 Slicing Class Hierarchies in C++
abstract
This 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
OOPSLA4
1996 Data Flow Frequency Analysis
abstract
Conventional 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
PLDI1
1996 On the Computational Complexity of Dynamic Graph Problems
G. Ramalingam, Thomas W. Reps
Theor. Comput. Sci.1
1995 Parametric Program Slicing
abstract
Program 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
POPL2
1994 An Incremental Algorithm for Maintaining the Dominator Tree of a Reducible Flowgraph
abstract
We 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
POPL1
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 Aliasing
abstract
Alias 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 Computation
abstract
In 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
POPL1
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