Demo Data from EDBT 2026 / reviewers in the wild / expert
João C. Pereira
dblp:361/7348
· DBLP profile ↗
3ranked-venue papers
2as first author
3since 2021 · last 2025
0000-0003-4671-4132ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 2 · 1 first-author · 2 since 2021Security and privacy · 1 · 1 first-author · 1 since 2021
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 · 83% Programming languages and type systems · 17% | |
| Computer networks
1 paper |
Internet architecture and protocols · 100% | |
| Network and information security
1 paper |
Cryptographic protocols and secure computation · 100% |
Topics — the 10 heaviest of 10, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Internet architecture and protocols
future internet architecture |
0.9 | 1 | 2025 | Protocols to Code: Formal Verification of a Secure Next-Generation Internet Router · CCS 2025 |
Cryptographic protocols and secure computation › security protocol analysis
formal analysis of cryptographic protocols |
0.9 | 1 | 2025 | Protocols to Code: Formal Verification of a Secure Next-Generation Internet Router · CCS 2025 |
Program verification › program logic › separation logic
concurrent separation logic |
0.9 | 1 | 2025 | A Refinement Methodology for Distributed Programs in Rust · Proc. ACM Program. Lang. 2025 |
Program verification
modular verification |
0.9 | 1 | 2025 | Modular Reasoning about Global Variables and Their Initialization · Proc. ACM Program. Lang. 2025 |
Program verification
refinement |
0.9 | 1 | 2025 | A Refinement Methodology for Distributed Programs in Rust · Proc. ACM Program. Lang. 2025 |
Program verification › program logic
separation logic |
0.9 | 1 | 2025 | Modular Reasoning about Global Variables and Their Initialization · Proc. ACM Program. Lang. 2025 |
Programming languages and type systems
module systems |
0.3 | 1 | 2025 | Modular Reasoning about Global Variables and Their Initialization · Proc. ACM Program. Lang. 2025 |
Programming languages and type systems › type systems
ownership |
0.3 | 1 | 2025 | A Refinement Methodology for Distributed Programs in Rust · Proc. ACM Program. Lang. 2025 |
Program verification › refinement
refinement proof |
0.3 | 1 | 2025 | Protocols to Code: Formal Verification of a Secure Next-Generation Internet Router · CCS 2025 |
Programming languages and type systems › rust
rust type system |
0.3 | 1 | 2025 | A Refinement Methodology for Distributed Programs in Rust · Proc. ACM Program. Lang. 2025 |
Methods — techniques the papers use, named apart from their topics
refinement in Isabelle/HOL · 2.6automated program verification · 2.6separation logic · 0.9rocq · 0.9locally inductive invariants · 0.9iris · 0.9guarded transition systems · 0.9coq · 0.9
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2025 | Protocols to Code: Formal Verification of a Secure Next-Generation Internet RouterabstractWe present the first formally-verified Internet router, which is part of the SCION Internet architecture. SCION routers run a cryptographic protocol for secure packet forwarding in an adversarial environment. We verify both the protocol's network-wide security properties and the low-level properties of its implementation. Namely, we develop a series of protocol models by refinement in Isabelle/HOL and we use an automated program verifier to prove that the router's Go code satisfies crash freedom, freedom from data races, and adheres to the most concrete model in our series of refinements. Both verification efforts are soundly linked together. João C. Pereira, Tobias Klenze, Sofia Giampietro, Markus Limbeck, Dionysios Spiliopoulos, Felix A. Wolf, Marco Eilers, Christoph Sprenger 0001, David A. Basin, Peter Müller 0001, Adrian Perrig |
CCS | 1 |
| 2025 | A Refinement Methodology for Distributed Programs in RustabstractRefinement relates an abstract system model to a concrete, executable program, such that properties established for the abstract model carry over to the concrete implementation. Refinement has been used successfully in the development of substantial verified systems. Nevertheless, existing refinement techniques have limitations that impede their practical usefulness. Top-down refinement techniques that automatically generate executable code generally produce implementations with sub-optimal performance. Bottom-up refinement allows one to reason about existing, efficient implementations, but imposes strict requirements on the structure of the code, the structure of the refinement proofs, as well as the employed verification logic and tools. In this paper, we present a novel bottom-up refinement methodology that removes these limitations. Our methodology usesthe familiar notion of guarded transition systems to express abstract models, but combines guards with a novel notion of locally inductive invariants to relate the abstract model locally to concrete state. This approach is muchmore flexible than standard coupling invariants; in particular, it supports a wide range of program structures, data representations, and proof structures. We integrate our methodology as a library into Rust, leveraging the Rust type system to reason about ownership of guards. This integration allows oneto use our methodology with an off-the-shelf Rust verification tool. It also facilitates practical applications, as we demonstrate on a number of substantial case studies including a concurrent implementation of Memcached. Aurel Bílý, João C. Pereira, Peter Müller 0001 |
Proc. ACM Program. Lang. | 2 |
| 2025 | Modular Reasoning about Global Variables and Their InitializationabstractMany imperative programming languages offer global variables to implement common functionality such as global caches and counters. Global variables are typically initialized by module initializers (e.g., static initializers in Java), code blocks that are executed automatically by the runtime system. When or in what order these initializers run is typically not known statically and modularly. For instance in Java, initialization is triggered dynamically upon the first use of a class, while in Go, the order depends on all packages of a program. As a result, reasoning modularly about global variables and their initialization is difficult, especially because module initializers may perform arbitrary side effects and may have cyclic dependencies. Consequently, existing modular verification techniques either do not support global state or impose drastic restrictions that are not satisfied by mainstream languages and programs. In this paper, we present the first practical verification technique to reason formally and modularly about global state and its initialization. Our technique is based on separation logic and uses module invariants to specify ownership and values of global variables. A partial order on modules and methods allows us to reason modularly about when a module invariant may be soundly assumed to hold, irrespective of when exactly the module initializer establishing it runs. Our technique supports both thread-local and shared global state. We formalize it as a program logic in Iris and prove its soundness in Rocq. We make only minimal assumptions about the initialization semantics, making our technique applicable to a wide range of programming languages. We implemented our technique in existing verifiers for Java and Go and demonstrate its effectiveness on typical uses cases of global state as well as a substantial codebase implementing an Internet router. João C. Pereira, Isaac van Bakel, Patricia Firlejczyk, Marco Eilers, Peter Müller 0001 |
Proc. ACM Program. Lang. | 1 |