Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Josh Berdine

dblp:61/1623 · DBLP profile ↗
← Back
27ranked-venue papers
11as first author
3since 2021 · last 2023
0000-0002-9691-1348ORCID · verified

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

Software engineering, systems software and programming languages · 22 · 8 first-author · 2 since 2021Theory of computation · 11 · 8 first-author · 1 since 2021Artificial intelligence and machine learning · 2 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 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
12 papers
Program analysis · 48% Program verification · 44% Concurrent programming · 8%
Network and information security
2 papers
Systems and software security · 100%

Topics — the 22 heaviest of 24, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program analysis
static analysis
1.132022
Finding real bugs in big programs with incorrectness logic · Proc. ACM Program. Lang. 2022
Local Reasoning About the Presence of Bugs: Incorrectness Separation Logic · CAV (2) 2020
Variance analyses from invariance analyses · POPL 2007
Program analysis › static analysis
bug detection
1.022022
Concurrent incorrectness separation logic · Proc. ACM Program. Lang. 2022
Local Reasoning About the Presence of Bugs: Incorrectness Separation Logic · CAV (2) 2020
Program verification › program logic
incorrectness logic
1.022022
Finding real bugs in big programs with incorrectness logic · Proc. ACM Program. Lang. 2022
Local Reasoning About the Presence of Bugs: Incorrectness Separation Logic · CAV (2) 2020
Program verification › program logic
incorrectness reasoning
0.612022
Concurrent incorrectness separation logic · Proc. ACM Program. Lang. 2022
Program analysis › dynamic analysis
memory error detection
0.612022
Finding real bugs in big programs with incorrectness logic · Proc. ACM Program. Lang. 2022
Concurrent programming › concurrency bug detection
race and deadlock detection
0.612022
Concurrent incorrectness separation logic · Proc. ACM Program. Lang. 2022
Program verification › program logic
separation logic
0.522020
Local Reasoning About the Presence of Bugs: Incorrectness Separation Logic · CAV (2) 2020
Structuring the verification of heap-manipulating programs · POPL 2010
Program verification › program logic › separation logic
incorrectness separation logic
0.412020
Local Reasoning About the Presence of Bugs: Incorrectness Separation Logic · CAV (2) 2020
Program analysis
symbolic execution
0.412020
Local Reasoning About the Presence of Bugs: Incorrectness Separation Logic · CAV (2) 2020
Program analysis › static analysis › pointer analysis
shape analysis
0.342008
Scalable Shape Analysis for Systems Code · CAV 2008
Thread Quantification for Concurrent Shape Analysis · CAV 2008
Thread-modular shape analysis · PLDI 2007
Systems and software security
memory safety
0.322022
Finding real bugs in big programs with incorrectness logic · Proc. ACM Program. Lang. 2022
SLAyer: Memory Safety for Systems-Level Code · CAV 2011
Program analysis › static analysis
abstract interpretation
0.112012
Diagnosing Abstraction Failure for Separation Logic-Based Analyses · CAV 2012
Program verification › modular reasoning
local reasoning
0.112020
Local Reasoning About the Presence of Bugs: Incorrectness Separation Logic · CAV (2) 2020
Program verification
program logic
0.112020
Local Reasoning About the Presence of Bugs: Incorrectness Separation Logic · CAV (2) 2020
Program analysis › error detection
memory safety analysis
0.112011
SLAyer: Memory Safety for Systems-Level Code · CAV 2011
Program verification › pointer program verification
heap-manipulating program verification
0.112010
Structuring the verification of heap-manipulating programs · POPL 2010
Program verification
proof assistants
0.112010
Structuring the verification of heap-manipulating programs · POPL 2010
Program verification › system verification
systems code verification
0.112008
Scalable Shape Analysis for Systems Code · CAV 2008
Program verification › pointer program verification
heap verification
0.112007
Shape Analysis for Composite Data Structures · CAV 2007
Program analysis
heap analysis
0.112006
Automatic Termination Proofs for Programs with Shape-Shifting Heaps · CAV 2006
Program verification
termination analysis
0.112006
Automatic Termination Proofs for Programs with Shape-Shifting Heaps · CAV 2006
Logic in computer science › proof theory › substructural logic
bunched implications
0.012010
Structuring the verification of heap-manipulating programs · POPL 2010

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

separation logic · 2.8compositional bug-reporting criterion · 1.1ISL · 1.1views framework · 0.6under-approximate reasoning · 0.6symbolic execution · 0.4incorrectness logic · 0.4type theory · 0.2abstract interpretation · 0.2least fixed points · 0.1
YearPublicationVenuePosition
2023 A General Approach to Under-Approximate Reasoning About Concurrent Programs
Azalea Raad, Julien Vanegue, Josh Berdine, Peter W. O'Hearn
CONCUR3
2022 Finding real bugs in big programs with incorrectness logic
abstract
Incorrectness Logic (IL) has recently been advanced as a logical theory for compositionally proving the presence of bugs—dual to Hoare Logic, which is used to compositionally prove their absence. Though IL was motivated in large part by the aim of providing a logical foundation for bug-catching program analyses, it has remained an open question: is IL useful only retrospectively (to explain existing analyses), or can it actually be useful in developing new analyses which can catch real bugs in big programs? In this work, we develop Pulse-X, a new, automatic program analysis for catching memory errors, based on ISL, a recent synthesis of IL and separation logic. Using Pulse-X, we have found 15 new real bugs in OpenSSL, which we have reported to OpenSSL maintainers and have since been fixed. In order not to be overwhelmed with potential but false error reports, we develop a compositional bug-reporting criterion based on a distinction between latent and manifest errors, which references the under-approximate ISL abstractions computed by Pulse-X, and we investigate the fix rate resulting from application of this criterion. Finally, to probe the potential practicality of our bug-finding method, we conduct a comparison to Infer, a widely used analyzer which has proven useful in industrial engineering practice.
Quang Loc Le, Azalea Raad, Jules Villard, Josh Berdine, Derek Dreyer, Peter W. O'Hearn
Proc. ACM Program. Lang.4
2022 Concurrent incorrectness separation logic
abstract
Incorrectness separation logic (ISL) was recently introduced as a theory of under-approximate reasoning, with the goal of proving that compositional bug catchers find actual bugs. However, ISL only considers sequential programs. Here, we develop concurrent incorrectness separation logic (CISL), which extends ISL to account for bug catching in concurrent programs. Inspired by the work on Views, we design CISL as a parametric framework, which can be instantiated for a number of bug catching scenarios, including race detection, deadlock detection, and memory safety error detection. For each instance, the CISL meta-theory ensures the soundness of incorrectness reasoning for free, thereby guaranteeing that the bugs detected are true positives.
Azalea Raad, Josh Berdine, Derek Dreyer, Peter W. O'Hearn
Proc. ACM Program. Lang.2
2020 Local Reasoning About the Presence of Bugs: Incorrectness Separation Logic
abstract
There has been a large body of work on local reasoning for proving the absence of bugs, but none for proving their presence . We present a new formal framework for local reasoning about the presence of bugs, building on two complementary foundations: 1) separation logic and 2) incorrectness logic. We explore the theory of this new incorrectness separation logic (ISL), and use it to derive a begin-anywhere, intra-procedural symbolic execution analysis that has no false positives by construction . In so doing, we take a step towards transferring modular, scalable techniques from the world of program verification to bug catching.
Azalea Raad, Josh Berdine, Hoang-Hai Dang, Derek Dreyer, Peter W. O'Hearn, Jules Villard
CAV (2)2
2015 Spatial Interpolants
Aws Albarghouthi, Josh Berdine, Byron Cook, Zachary Kincaid
ESOP2
2015 A Forward Analysis for Recurrent Sets
Alexey Bakhirkin, Josh Berdine, Nir Piterman
SAS2
2014 Backward Analysis via over-Approximate Abstraction and under-Approximate Subtraction
Alexey Bakhirkin, Josh Berdine, Nir Piterman
SAS2
2013 Resourceful Reachability as HORN-LA
Josh Berdine, Nikolaj S. Bjørner, Samin Ishtiaq, Jael E. Kriener, Christoph M. Wintersteiger
LPAR1
2012 Diagnosing Abstraction Failure for Separation Logic-Based Analyses
Josh Berdine, Arlen Cox, Samin Ishtiaq, Christoph M. Wintersteiger
CAV1
2011 SLAyer: Memory Safety for Systems-Level Code
Josh Berdine, Byron Cook, Samin Ishtiaq
CAV1
2010 Structuring the verification of heap-manipulating programs
abstract
Most systems based on separation logic consider only restricted forms of implication or non-separating conjunction, as full support for these connectives requires a non-trivial notion of variable context, inherited from the logic of bunched implications (BI). We show that in an expressive type theory such as Coq, one can avoid the intricacies of BI, and support full separation logic very efficiently, using the native structuring primitives of the type theory.
Aleksandar Nanevski, Viktor Vafeiadis, Josh Berdine
POPL3
2009 Automatic Verification of Heap Manipulation Using Separation Logic
Josh Berdine
SOFSEM1
2008 Thread Quantification for Concurrent Shape Analysis
Josh Berdine, Tal Lev-Ami, Roman Manevich, G. Ramalingam, Shmuel Sagiv
CAV1
2008 Scalable Shape Analysis for Systems Code
Hongseok Yang, Oukseh Lee, Josh Berdine, Cristiano Calcagno, Byron Cook, Dino Distefano, Peter W. O'Hearn
CAV3
2008 Diagrammatic Reasoning in Separation Logic
M. Ridsdale, Mateja Jamnik, Nick Benton, Josh Berdine
Diagrams4
2008 Heap Decomposition for Concurrent Shape Analysis
Roman Manevich, Tal Lev-Ami, Shmuel Sagiv, G. Ramalingam, Josh Berdine
SAS5
2007 Local Reasoning for Storable Locks and Threads
Alexey Gotsman, Josh Berdine, Byron Cook, Noam Rinetzky, Shmuel Sagiv
APLAS2
2007 Shape Analysis for Composite Data Structures
Josh Berdine, Cristiano Calcagno, Byron Cook, Dino Distefano, Peter W. O'Hearn, Thomas Wies, Hongseok Yang
CAV1
2007 Thread-modular shape analysis
abstract
We present the first shape analysis for multithreaded programs that avoids the explicit enumeration of execution-interleavings. Our approach is to automatically infer a resource invariant associated with each lock that describes the part of the heap protected by the lock. This allows us to use a sequential shape analysis on each thread. We show that resource invariants of a certain class can be characterized as least fixed points and computed via repeated applications of shape analysis only on each individual thread. Based on this approach, we have implemented a thread-modular shape analysis tool and applied it to concurrent heap-manipulating code from Windows device drivers.
Alexey Gotsman, Josh Berdine, Byron Cook, Shmuel Sagiv
PLDI2
2007 Variance analyses from invariance analyses
Josh Berdine, Aziem Chawdhary, Byron Cook, Dino Distefano, Peter W. O'Hearn
POPL1
2007 Local reasoning about storable locks
abstract
This talk will present a resource-oriented program logic that is able to reason about concurrent heap-manipulating programs with unbounded numbers of dynamically-allocated locks, and note an extension to storable threads. The logic is inspired by concurrent separation logic, but handles these more realistic concurrency primitives. We demonstrate that the proposed logic allows for local reasoning about programs that exhibit a high degree of information hiding in their locking mechanisms. Soundness is proved using a novel thread-local fixed-point semantics.
Josh Berdine
PPDP1
2007 Arithmetic Strengthening for Shape Analysis
Stephen Magill, Josh Berdine, Edmund M. Clarke, Byron Cook
SAS2
2007 Shape Analysis by Graph Decomposition
Roman Manevich, Josh Berdine, Byron Cook, G. Ramalingam, Shmuel Sagiv
TACAS2
2006 Automatic Termination Proofs for Programs with Shape-Shifting Heaps
Josh Berdine, Byron Cook, Dino Distefano, Peter W. O'Hearn
CAV1
2006 Interprocedural Shape Analysis with Separated Heap Abstractions
Alexey Gotsman, Josh Berdine, Byron Cook
SAS2
2005 Symbolic Execution with Separation Logic
Josh Berdine, Cristiano Calcagno, Peter W. O'Hearn
APLAS1
2004 A Decidable Fragment of Separation Logic
Josh Berdine, Cristiano Calcagno, Peter W. O'Hearn
FSTTCS1