Ravichandhran Madhavan

dblp:91/10109 · DBLP profile ↗
← Back
6ranked-venue papers
6as first author
0since 2021 · last 2017
0000-0003-0227-266XORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 6 · 6 first-authorTheory of computation · 1 · 1 first-author

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
3 papers
Program verification · 52% Program analysis · 31% Programming languages and type systems · 17%
Theoretical computer science
1 paper
Automata and formal languages · 100%

Topics — the 15 heaviest of 16, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program verification
contract verification
0.312017
Contract-based resource verification for higher-order functions with memoization · POPL 2017
Program verification › quantitative verification
resource bound verification
0.312017
Contract-based resource verification for higher-order functions with memoization · POPL 2017
Program verification › quantitative verification
resource verification
0.312017
Contract-based resource verification for higher-order functions with memoization · POPL 2017
Programming languages and type systems
functional programming
0.322017
Symbolic Resource Bound Inference for Functional Programs · CAV 2014
Contract-based resource verification for higher-order functions with memoization · POPL 2017
Automata and formal languages › formal grammars
context-free grammar
0.212015
Automating grammar comparison · OOPSLA 2015
Automata and formal languages › grammar formalisms
formal grammar comparison
0.212015
Automating grammar comparison · OOPSLA 2015
Automata and formal languages › equivalence problem
grammar equivalence
0.212015
Automating grammar comparison · OOPSLA 2015
Program analysis
resource analysis
0.212014
Symbolic Resource Bound Inference for Functional Programs · CAV 2014
Program analysis › resource analysis
resource bound inference
0.212014
Symbolic Resource Bound Inference for Functional Programs · CAV 2014
Program analysis
data flow analysis
0.112011
Null dereference verification via over-approximated weakest pre-conditions analysis · OOPSLA 2011
Program analysis
static analysis
0.112011
Null dereference verification via over-approximated weakest pre-conditions analysis · OOPSLA 2011
Program verification › predicate transformers
weakest precondition
0.112011
Null dereference verification via over-approximated weakest pre-conditions analysis · OOPSLA 2011
Programming languages and type systems
lazy evaluation
0.112017
Contract-based resource verification for higher-order functions with memoization · POPL 2017
Computing education › programming education
programming language learning
0.112015
Automating grammar comparison · OOPSLA 2015
Program analysis › static analysis
pointer analysis
0.012011
Null dereference verification via over-approximated weakest pre-conditions analysis · OOPSLA 2011

Methods — techniques the papers use, named apart from their topics

word and parse tree enumeration · 0.4counterexample generation · 0.4assume-guarantee reasoning · 0.3SMT solving · 0.3path sensitivity · 0.1over-approximated weakest preconditions · 0.1abstract interpretation · 0.1
YearPublicationVenuePosition
2017 Contract-based resource verification for higher-order functions with memoization
abstract
We present a new approach for specifying and verifying resource utilization of higher-order functional programs that use lazy evaluation and memoization. In our approach, users can specify the desired resource bound as templates with numerical holes e.g. as steps ≤ ? * size(l) + ? in the contracts of functions. They can also express invariants necessary for establishing the bounds that may depend on the state of memoization. Our approach operates in two phases: first generating an instrumented first-order program that accurately models the higher-order control flow and the effects of memoization on resources using sets, algebraic datatypes and mutual recursion, and then verifying the contracts of the first-order program by producing verification conditions of the form ∃ ∀ using an extended assume/guarantee reasoning. We use our approach to verify precise bounds on resources such as evaluation steps and number of heap-allocated objects on 17 challenging data structures and algorithms. Our benchmarks, comprising of 5K lines of functional Scala code, include lazy mergesort, Okasaki's real-time queue and deque data structures that rely on aliasing of references to first-class functions; lazy data structures based on numerical representations such as the conqueue data structure of Scala's data-parallel library, cyclic streams, as well as dynamic programming algorithms such as knapsack and Viterbi. Our evaluations show that when averaged over all benchmarks the actual runtime resource consumption is 80% of the value inferred by our tool when estimating the number of evaluation steps, and is 88% for the number of heap-allocated objects.
Ravichandhran Madhavan, Sumith Kulal, Viktor Kuncak
POPL1
2015 Automating grammar comparison
abstract
We consider from a practical perspective the problem of checking equivalence of context-free grammars. We present techniques for proving equivalence, as well as techniques for finding counter-examples that establish non-equivalence. Among the key building blocks of our approach is a novel algorithm for efficiently enumerating and sampling words and parse trees from arbitrary context-free grammars; the algorithm supports polynomial time random access to words belonging to the grammar. Furthermore, we propose an algorithm for proving equivalence of context-free grammars that is complete for LL grammars, yet can be invoked on any context-free grammar, including ambiguous grammars. Our techniques successfully find discrepancies between different syntax specifications of several real-world languages, and are capable of detecting fine-grained incremental modifications performed on grammars. Our evaluation shows that our tool improves significantly on the existing available state of the art tools. In addition, we used these algorithms to develop an online tutoring system for grammars that we then used in an undergraduate course on computer language processing. On questions involving grammar constructions, our system was able to automatically evaluate the correctness of 95% of the solutions submitted by students: it disproved 74% of cases and proved 21% of them.
Ravichandhran Madhavan, Mikaël Mayer, Sumit Gulwani, Viktor Kuncak
OOPSLA1
2014 Symbolic Resource Bound Inference for Functional Programs
Ravichandhran Madhavan, Viktor Kuncak
CAV1
2012 Modular Heap Analysis for Higher-Order Programs
Ravichandhran Madhavan, G. Ramalingam, Kapil Vaswani
SAS1
2011 Null dereference verification via over-approximated weakest pre-conditions analysis
abstract
Null dereferences are a bane of programming in languages such as Java. In this paper we propose a sound, demand-driven, inter-procedurally context-sensitive dataflow analysis technique to verify a given dereference as safe or potentially unsafe. Our analysis uses an abstract lattice of formulas to find a pre-condition at the entry of the program such that a null-dereference can occur only if the initial state of the program satisfies this pre-condition. We use a simplified domain of formulas, abstracting out integer arithmetic, as well as unbounded access paths due to recursive data structures. For the sake of precision we model aliasing relationships explicitly in our abstract lattice, enable strong updates, and use a limited notion of path sensitivity. For the sake of scalability we prune formulas continually as they get propagated, reducing to true conjuncts that are less likely to be useful in validating or invalidating the formula. We have implemented our approach, and present an evaluation of it on a set of ten real Java programs. Our results show that the set of design features we have incorporated enable the analysis to (a) explore long, inter-procedural paths to verify each dereference, with (b) reasonable accuracy, and (c) very quick response time per dereference, making it suitable for use in desktop development environments.
Ravichandhran Madhavan, Raghavan Komondoor
OOPSLA1
2011 Purity Analysis: An Abstract Interpretation Formulation
Ravichandhran Madhavan, G. Ramalingam, Kapil Vaswani
SAS1