VLDB 2026 Research / reviewers in the wild / expert
Marianna Rapoport
dblp:148/3254
· DBLP profile ↗
10ranked-venue papers
5as first author
1since 2021 · last 2025
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 10 · 5 first-author · 1 since 2021Databases, data management, data science and information retrieval · 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
5 papers |
Programming languages and type systems · 53% Program verification · 34% Program analysis · 9% | |
| Computer architecture, parallel and distributed computing, and storage systems
1 paper |
Distributed systems · 100% |
Topics — the 14 heaviest of 16, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Programming languages and type systems › type systems
type soundness |
0.7 | 2 | 2019 | A path to DOT: formalizing fully path-dependent types · Proc. ACM Program. Lang. 2019 A simple soundness proof for dependent object types · Proc. ACM Program. Lang. 2017 |
Programming languages and type systems
type theory |
0.7 | 2 | 2019 | A path to DOT: formalizing fully path-dependent types · Proc. ACM Program. Lang. 2019 A simple soundness proof for dependent object types · Proc. ACM Program. Lang. 2017 |
Program verification › program logic
hoare logic |
0.4 | 1 | 2020 | The future is ours: prophecy variables in separation logic · Proc. ACM Program. Lang. 2020 |
Program verification
prophecy variables |
0.4 | 1 | 2020 | The future is ours: prophecy variables in separation logic · Proc. ACM Program. Lang. 2020 |
Program verification › program logic
separation logic |
0.4 | 1 | 2020 | The future is ours: prophecy variables in separation logic · Proc. ACM Program. Lang. 2020 |
Programming languages and type systems › type theory › dependent types
path-dependent types |
0.4 | 1 | 2019 | A path to DOT: formalizing fully path-dependent types · Proc. ACM Program. Lang. 2019 |
Programming languages and type systems › type theory › dependent types
dependent object types |
0.3 | 1 | 2017 | A simple soundness proof for dependent object types · Proc. ACM Program. Lang. 2017 |
Program verification › formal proof
soundness proof |
0.3 | 1 | 2017 | A simple soundness proof for dependent object types · Proc. ACM Program. Lang. 2017 |
Program analysis › static analysis
call graph construction |
0.2 | 1 | 2015 | Type-Based Call Graph Construction Algorithms for Scala · ACM Trans. Softw. Eng. Methodol. 2015 |
Program analysis
static analysis |
0.2 | 1 | 2015 | Type-Based Call Graph Construction Algorithms for Scala · ACM Trans. Softw. Eng. Methodol. 2015 |
Programming languages and type systems
type systems |
0.2 | 1 | 2015 | Type-Based Call Graph Construction Algorithms for Scala · ACM Trans. Softw. Eng. Methodol. 2015 |
Programming languages and type systems › functional language
scala |
0.2 | 2 | 2019 | A path to DOT: formalizing fully path-dependent types · Proc. ACM Program. Lang. 2019 A simple soundness proof for dependent object types · Proc. ACM Program. Lang. 2017 |
Concurrent programming › atomicity
linearizability |
0.1 | 1 | 2020 | The future is ours: prophecy variables in separation logic · Proc. ACM Program. Lang. 2020 |
Programming languages and type systems › language semantics
core calculus |
0.1 | 1 | 2017 | A simple soundness proof for dependent object types · Proc. ACM Program. Lang. 2017 |
Methods — techniques the papers use, named apart from their topics
shadow testing · 1.7differential testing · 1.7dafny · 1.7iris · 0.4coq · 0.4auxiliary variables · 0.4singleton types · 0.4coq mechanization · 0.4modular proof strategy · 0.3featherweight scala · 0.2
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2025 | Formally Verified Cloud-Scale AuthorizationabstractAll critical systems must evolve to meet the needs of a growing and diversifying user base. But supporting that evolution is challenging at increasing scale: Maintainers must find a way to ensure that each change does only what is intended, and will not inadvertently change behavior for existing users. This paper presents how we addressed this challenge for the Amazon Web Services (AWS) authorization engine, invoked 1 billion times per second, by using formal verification. Over a period of four years, we built a new authorization engine, one that behaves functionally the same as its predecessor, using the verification-aware programming language Dafny. We can now confidently deploy enhancements and optimizations while maintaining the highest assurance of both correctness and backward compatibility. We deployed the new engine in 2024 without incident and customers immediately enjoyed a threefold performance improvement. The methodology we followed to build this new engine was not an off-the-shelf application of an existing verification tool, and this paper presents several key insights: 1) Rather than prove correct the existing engine, written in Java, we found it more effective to write a new engine in Dafny, a language built for verification from the ground up, and then compile the result to Java. 2) To ensure performance, debuggability, and to gain trust from stakeholders, we needed to generate readable, idiomatic Java code, essentially a transliteration of the source Dafny. 3) To ensure that the specification matches the system's actual behavior, we performed extensive differential and shadow testing throughout the development process, ultimately comparing against 1015production samples prior to deployment. Our approach demonstrates how formal verification can be effectively applied to evolve critical legacy software at scale. Aleks Chakarov, Jaco Geldenhuys, Matthew Heck, Michael Hicks 0001, Sam Huang, Georges-Axel Jaloyan, Anjali Joshi, K. Rustan M. Leino, Mikael Mayer, Sean McLaughlin, Akhilesh Mritunjai, Clément Pit-Claudel, Sorawee Porncharoenwase, Florian Rabe 0001, Marianna Rapoport, Giles Reger, Cody Roux, Neha Rungta, Robin Salkeld, Matthias Schlaipfer, Daniel Schoepe, Johanna Schwartzentruber, Serdar Tasiran, Aaron Tomb, Emina Torlak, Jean-Baptiste Tristan, Lucas G. Wagner, Michael W. Whalen, Remy Willems, Tongtong Xiang, Taejoon Byun, Joshua M. Cohen, Ruijie Fang, Junyoung Jang 0001, Jakob Rath, Syeda Hira Taqdees, Dominik Wagner 0001, Yongwei Yuan |
ICSE | 15 |
| 2020 | Blame for Null
Abel Nieto, Marianna Rapoport, Gregor Richards, Ondrej Lhoták |
ECOOP | 2 |
| 2020 | The future is ours: prophecy variables in separation logicabstractEarly in the development of Hoare logic, Owicki and Gries introduced auxiliary variables as a way of encoding information about the history of a program’s execution that is useful for verifying its correctness. Over a decade later, Abadi and Lamport observed that it is sometimes also necessary to know in advance what a program will do in the future . To address this need, they proposed prophecy variables , originally as a proof technique for refinement mappings between state machines. However, despite the fact that prophecy variables are a clearly useful reasoning mechanism, there is (surprisingly) almost no work that attempts to integrate them into Hoare logic. In this paper, we present the first account of prophecy variables in a Hoare-style program logic that is flexible enough to verify logical atomicity (a relative of linearizability) for classic examples from the concurrency literature like RDCSS and the Herlihy-Wing queue. Our account is formalized in the Iris framework for separation logic in Coq. It makes essential use of ownership to encode the exclusive right to resolve a prophecy, which in turn enables us to enforce soundness of prophecies with a very simple set of proof rules. Ralf Jung 0002, Rodolphe Lepigre, Gaurav Parthasarathy, Marianna Rapoport, Amin Timany, Derek Dreyer, Bart Jacobs 0002 |
Proc. ACM Program. Lang. | 4 |
| 2019 | A path to DOT: formalizing fully path-dependent typesabstractThe Dependent Object Types (DOT) calculus aims to formalize the Scala programming language with a focus on path-dependent types — types such as x . a 1 … a n . T that depend on the runtime value of a path x . a 1 … a n to an object. Unfortunately, existing formulations of DOT can model only types of the form x . A which depend on variables rather than general paths. This restriction makes it impossible to model nested module dependencies. Nesting small components inside larger ones is a necessary ingredient of a modular, scalable language. DOT’s variable restriction thus undermines its ability to fully formalize a variety of programming-language features including Scala’s module system, family polymorphism, and covariant specialization. This paper presents the pDOT calculus, which generalizes DOT to support types that depend on paths of arbitrary length, as well as singleton types to track path equality. We show that naive approaches to add paths to DOT make it inherently unsound, and present necessary conditions for such a calculus to be sound. We discuss the key changes necessary to adapt the techniques of the DOT soundness proofs so that they can be applied to pDOT. Our paper comes with a Coq-mechanized type-safety proof of pDOT. With support for paths of arbitrary length, pDOT can realize DOT’s full potential for formalizing Scala-like calculi. Marianna Rapoport, Ondrej Lhoták |
Proc. ACM Program. Lang. | 1 |
| 2017 | Mutable WadlerFest DOTabstractThe Dependent Object Types (DOT) calculus aims to model the essence of Scala, with a focus on abstract type members, path-dependent types, and subtyping. Other Scala features could be defined by translation to DOT. Marianna Rapoport, Ondrej Lhoták |
FTfJP@ECOOP | 1 |
| 2017 | Who you gonna call?: analyzing web requests in Android applicationsabstractRelying on ubiquitous Internet connectivity, applications on mobile devices frequently perform web requests during their execution. They fetch data for users to interact with, invoke remote functionalities, or send user-generated content or meta-data. These requests collectively reveal common practices of mobile application development, like what external services are used and how, and they point to possible negative effects like security and privacy violations, or impacts on battery life. In this paper, we assess different ways to analyze what web requests Android applications make. We start by presenting dynamic data collected from running 20 randomly selected Android applications and observing their network activity. Next, we present a static analysis tool, Stringoid, that analyzes string concatenations in Android applications to estimate constructed URL strings. Using Stringoid, we extract URLs from 30, 000 Android applications, and compare the performance with a simpler constant extraction analysis. Finally, we present a discussion of the advantages and limitations of dynamic and static analyses when extracting URLs, as we compare the data extracted by Stringoid from the same 20 applications with the dynamically collected data. Marianna Rapoport, Philippe Suter, Erik Wittern, Ondrej Lhoták, Julian Dolby |
MSR | 1 |
| 2017 | A simple soundness proof for dependent object typesabstractDependent Object Types (DOT) is intended to be a core calculus for modelling Scala. Its distinguishing feature is abstract type members, fields in objects that hold types rather than values. Proving soundness of DOT has been surprisingly challenging, and existing proofs are complicated, and reason about multiple concepts at the same time (e.g. types, values, evaluation). To serve as a core calculus for Scala, DOT should be easy to experiment with and extend, and therefore its soundness proof needs to be easy to modify. This paper presents a simple and modular proof strategy for reasoning in DOT. The strategy separates reasoning about types from other concerns. It is centred around a theorem that connects the full DOT type system to a restricted variant in which the challenges and paradoxes caused by abstract type members are eliminated. Almost all reasoning in the proof is done in the intuitive world of this restricted type system. Once we have the necessary results about types, we observe that the other aspects of DOT are mostly standard and can be incorporated into a soundness proof using familiar techniques known from other calculi. Marianna Rapoport, Ifaz Kabir, Paul He 0002, Ondrej Lhoták |
Proc. ACM Program. Lang. | 1 |
| 2015 | Precise Data Flow Analysis in the Presence of Correlated Method Calls
Marianna Rapoport, Ondrej Lhoták, Frank Tip |
SAS | 1 |
| 2015 | Type-Based Call Graph Construction Algorithms for ScalaabstractCall graphs have many applications in software engineering. For example, they serve as the basis for code navigation features in integrated development environments and are at the foundation of static analyses performed in verification tools. While many call graph construction algorithms have been presented in the literature, we are not aware of any that handle Scala features such as traits and abstract type members. Applying existing algorithms to the JVM bytecodes generated by the Scala compiler produces very imprecise results because type information is lost during compilation. We adapt existing type-based call graph construction algorithms to Scala and present a formalization based on Featherweight Scala. An experimental evaluation shows that our most precise algorithm generates call graphs with 1.1--3.7 times fewer nodes and 1.5--17.3 times fewer edges than a bytecode-based RTA analysis. Karim Ali 0001, Marianna Rapoport, Ondrej Lhoták, Julian Dolby, Frank Tip |
ACM Trans. Softw. Eng. Methodol. | 2 |
| 2014 | Constructing Call Graphs of Scala Programs
Karim Ali 0001, Marianna Rapoport, Ondrej Lhoták, Julian Dolby, Frank Tip |
ECOOP | 2 |