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
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