Radu Grigore

dblp:12/1369 · DBLP profile ↗
← Back
17ranked-venue papers
7as first author
2since 2021 · last 2024
0000-0003-1128-0311ORCID · corroborated

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

Software engineering, systems software and programming languages · 11 · 5 first-author · 1 since 2021Theory of computation · 8 · 3 first-author · 1 since 2021Artificial intelligence and machine learning · 2Applied, interdisciplinary, general and emerging computing · 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
8 papers
Program analysis · 66% Program verification · 25% Programming languages and type systems · 6%
Theoretical computer science
3 papers
Distributed computing theory · 44% Algorithms and data structures · 34% Automated reasoning and model checking · 12%

Topics — the 20 heaviest of 21, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program analysis
static analysis
1.332024
Enhancing Compositional Static Analysis with Dynamic Analysis · ASE 2024
Effective interactive resolution of static analysis alarms · Proc. ACM Program. Lang. 2017
Abstraction refinement guided by a learnt probabilistic model · POPL 2016
Program analysis › static analysis › modular analysis
compositional static analysis
0.812024
Enhancing Compositional Static Analysis with Dynamic Analysis · ASE 2024
Program verification
abstraction refinement
0.422016
Abstraction refinement guided by a learnt probabilistic model · POPL 2016
On abstraction refinement for program analyses in Datalog · PLDI 2014
Program verification › abstraction refinement
counterexample-guided abstraction refinement
0.422016
Abstraction refinement guided by a learnt probabilistic model · POPL 2016
On abstraction refinement for program analyses in Datalog · PLDI 2014
Programming languages and type systems
type checking
0.312017
Java generics are turing complete · POPL 2017
Program analysis › static analysis › pointer analysis › context-sensitive pointer analysis
object-sensitive pointer analysis
0.212016
Abstraction refinement guided by a learnt probabilistic model · POPL 2016
Program analysis › static analysis
pointer analysis
0.212016
Abstraction refinement guided by a learnt probabilistic model · POPL 2016
Algorithms and data structures
randomized algorithms
0.212016
Proving the Herman-Protocol Conjecture · ICALP 2016
Distributed computing theory
self-stabilization
0.212016
Proving the Herman-Protocol Conjecture · ICALP 2016
Program analysis
dynamic analysis
0.212024
Enhancing Compositional Static Analysis with Dynamic Analysis · ASE 2024
Compilers and program optimization
intermediate representation
0.212015
Tree Buffers · CAV (1) 2015
Program analysis › static analysis
datalog-based analysis
0.212014
On abstraction refinement for program analyses in Datalog · PLDI 2014
Program verification
automated verification
0.112011
jStar-eclipse: an IDE for automated verification of Java programs · SIGSOFT FSE 2011
Program verification › code-level verification
java verification
0.112011
jStar-eclipse: an IDE for automated verification of Java programs · SIGSOFT FSE 2011
Program verification › program logic
separation logic
0.112011
jStar-eclipse: an IDE for automated verification of Java programs · SIGSOFT FSE 2011
Program analysis › concurrent program analysis
data race analysis
0.112017
Effective interactive resolution of static analysis alarms · Proc. ACM Program. Lang. 2017
Automated reasoning and model checking › satisfiability
maximum satisfiability
0.112017
Maximum Satisfiability in Software Analysis: Applications and Techniques · CAV (1) 2017
Computational complexity
undecidability
0.112017
Java generics are turing complete · POPL 2017
Distributed computing theory › distributed graph algorithms
ring networks
0.112016
Proving the Herman-Protocol Conjecture · ICALP 2016
User interface design and tools › programming environments
integrated development environment
0.012011
jStar-eclipse: an IDE for automated verification of Java programs · SIGSOFT FSE 2011

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

static analysis · 0.8dynamic analysis · 0.8datalog · 0.7reduction from halting problem · 0.6user interaction · 0.3optimization problem formulation · 0.3separation logic · 0.2probabilistic model · 0.2martingale analysis · 0.2markov chain analysis · 0.2erdos–renyi random graph model · 0.2boolean satisfiability · 0.2
YearPublicationVenuePosition
2024 Enhancing Compositional Static Analysis with Dynamic Analysis
abstract
In this paper we introduce a novel method for improving static analysis of real code by using dynamic analysis. We have implemented our technique to enhance the Infer static analyzer [6] for Erlang by supplementing its analysis with data obtained by FAUSTA [24] dynamic analysis. We present the technical details of the algorithm combining static and dynamic analysis and a case study on its evaluation on WhatsApp's Erlang code to detect software defects. Results show an increase in detected bugs in 76% of the runs when data from dynamic analysis is used. In particular, on average, data provided by dynamic analysis for 1 function enables static analysis of 2.1 additional functions. Moreover, dynamic data enabled analysis of a property not verifiable using static analysis alone.
Dino Distefano, Matteo Marescotti, Cons T. Åhs, Sopot Cela, Gabriela Cunha Sampaio, Radu Grigore, Ákos Hajdu, Timotej Kapus, Ke Mao, Thibault Suzanne
ASE6
2021 Selective monitoring
Radu Grigore, Stefan Kiefer
J. Comput. Syst. Sci.1
2018 Selective Monitoring
abstract
We study selective monitors for labelled Markov chains. Monitors observe the outputs that are generated by a Markov chain during its run, with the goal of identifying runs as correct or faulty. A monitor is selective if it skips observations in order to reduce monitoring overhead. We are interested in monitors that minimize the expected number of observations. We establish an undecidability result for selectively monitoring general Markov chains. On the other hand, we show for non-hidden Markov chains (where any output identifies the state the Markov chain is in) that simple optimal monitors exist and can be computed efficiently, based on DFA language equivalence. These monitors do not depend on the precise transition probabilities in the Markov chain. We report on experiments where we compute these monitors for several open-source Java projects.
Radu Grigore, Stefan Kiefer
CONCUR1
2017 Maximum Satisfiability in Software Analysis: Applications and Techniques
Xujie Si, Xin Zhang 0035, Radu Grigore, Mayur Naik
CAV (1)3
2017 Java generics are turing complete
abstract
This paper describes a reduction from the halting problem of Turing machines to subtype checking in Java. It follows that subtype checking in Java is undecidable, which answers a question posed by Kennedy and Pierce in 2007. It also follows that Java's type checker can recognize any recursive language, which improves a result of Gill and Levy from 2016. The latter point is illustrated by a parser generator for fluent interfaces.
Radu Grigore
POPL1
2017 Effective interactive resolution of static analysis alarms
abstract
We propose an interactive approach to resolve static analysis alarms. Our approach synergistically combines a sound but imprecise analysis with precise but unsound heuristics, through user interaction. In each iteration, it solves an optimization problem to find a set of questions for the user such that the expected payoff is maximized. We have implemented our approach in a tool, Ursa, that enables interactive alarm resolution for any analysis specified in the declarative logic programming language Datalog. We demonstrate the effectiveness of Ursa on a state-of-the-art static datarace analysis using a suite of 8 Java programs comprising 41-194 KLOC each. Ursa is able to eliminate 74% of the false alarms per benchmark with an average payoff of 12× per question. Moreover, Ursa prioritizes user effort effectively by posing questions that yield high payoffs earlier.
Xin Zhang 0035, Radu Grigore, Xujie Si, Mayur Naik
Proc. ACM Program. Lang.2
2016 Proving the Herman-Protocol Conjecture
abstract
Herman's self-stabilisation algorithm, introduced 25 years ago, is a well-studied synchronous randomised protocol for enabling a ring of $N$ processes collectively holding any odd number of tokens to reach a stable state in which a single token remains. Determining the worst-case expected time to stabilisation is the central outstanding open problem about this protocol. It is known that there is a constant $h$ such that any initial configuration has expected stabilisation time at most $h N^2$. Ten years ago, McIver and Morgan established a lower bound of $4/27 \approx 0.148$ for $h$, achieved with three equally-spaced tokens, and conjectured this to be the optimal value of $h$. A series of papers over the last decade gradually reduced the upper bound on $h$, with the present record (achieved in 2014) standing at approximately $0.156$. In this paper, we prove McIver and Morgan's conjecture and establish that $h = 4/27$ is indeed optimal.
Maria Bruna, Radu Grigore, Stefan Kiefer, Joël Ouaknine, James Worrell 0001
ICALP2
2016 Abstraction refinement guided by a learnt probabilistic model
abstract
The core challenge in designing an effective static program analysis is to find a good program abstraction -- one that retains only details relevant to a given query. In this paper, we present a new approach for automatically finding such an abstraction. Our approach uses a pessimistic strategy, which can optionally use guidance from a probabilistic model. Our approach applies to parametric static analyses implemented in Datalog, and is based on counterexample-guided abstraction refinement. For each untried abstraction, our probabilistic model provides a probability of success, while the size of the abstraction provides an estimate of its cost in terms of analysis time. Combining these two metrics, probability and cost, our refinement algorithm picks an optimal abstraction. Our probabilistic model is a variant of the Erdos--Renyi random graph model, and it is tunable by what we call hyperparameters. We present a method to learn good values for these hyperparameters, by observing past runs of the analysis on an existing codebase. We evaluate our approach on an object sensitive pointer analysis for Java programs, with two client analyses (PolySite and Downcast).
Radu Grigore, Hongseok Yang
POPL1
2015 Tree Buffers
Radu Grigore, Stefan Kiefer
CAV (1)1
2014 On abstraction refinement for program analyses in Datalog
abstract
A central task for a program analysis concerns how to efficiently find a program abstraction that keeps only information relevant for proving properties of interest. We present a new approach for finding such abstractions for program analyses written in Datalog. Our approach is based on counterexample-guided abstraction refinement: when a Datalog analysis run fails using an abstraction, it seeks to generalize the cause of the failure to other abstractions, and pick a new abstraction that avoids a similar failure. Our solution uses a boolean satisfiability formulation that is general, complete, and optimal: it is independent of the Datalog solver, it generalizes the failure of an abstraction to as many other abstractions as possible, and it identifies the cheapest refined abstraction to try next. We show the performance of our approach on a pointer analysis and a typestate analysis, on eight real-world Java benchmark programs.
Xin Zhang 0035, Ravi Mangal, Radu Grigore, Mayur Naik, Hongseok Yang
PLDI3
2013 History-Register Automata
Nikos Tzevelekos, Radu Grigore
FoSSaCS2
2013 On QBF Proofs and Preprocessing
Mikolás Janota, Radu Grigore, João Marques-Silva 0001
LPAR2
2013 Runtime Verification Based on Register Automata
Radu Grigore, Dino Distefano, Rasmus Lerchedahl Petersen, Nikos Tzevelekos
TACAS1
2011 jStar-eclipse: an IDE for automated verification of Java programs
abstract
jStar is a tool for automatically verifying Java programs. It uses separation logic to support abstract reasoning about object specifications. jStar can verify a number of challenging design patterns, including Subject/Observer, Visitor, Factory and Pooling. However, to use jStar one has to deal with a family of command-line tools that expect specifications in separate files and diagnose the errors by inspecting the text output from these tools.
Daiva Naudziuniene, Matko Botincan, Dino Distefano, Mike Dodds, Radu Grigore, Matthew J. Parkinson
SIGSOFT FSE5
2010 Counterexample Guided Abstraction Refinement Algorithm for Propositional Circumscription
Mikolás Janota, Radu Grigore, João Marques-Silva 0001
JELIA2
2010 How to Complete an Interactive Configuration Process?
Mikolás Janota, Goetz Botterweck, Radu Grigore, João Marques-Silva 0001
SOFSEM3
2009 Strongest postcondition of unstructured programs
abstract
To avoid exponential explosion, program verifiers turn the program into a passive form before generating verification conditions. A little known fact is that the passive form makes it easy to use a strongest postcondition calculus to derive the verification condition. In the first part of this paper, the passivation phase is defined precisely enough to allow a study of its algorithmic properties. In the second part, the weakest precondition and strongest postcondition methods are presented in a unified way and then compared empirically.
Radu Grigore, Julien Charles, Fintan Fairmichael, Joseph Kiniry
FTfJP@ECOOP1