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

Rodolphe Lepigre

dblp:177/6126 · DBLP profile ↗
← Back
7ranked-venue papers
3as first author
4since 2021 · last 2022
0000-0002-2849-5338ORCID · corroborated

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

Software engineering, systems software and programming languages · 7 · 3 first-author · 4 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
6 papers
Program verification · 70% Programming languages and type systems · 28% Concurrent programming · 2%
Computer architecture, parallel and distributed computing, and storage systems
1 paper
Processor architecture and microarchitecture · 100%

Topics — the 18 heaviest of 19, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program verification › mechanized verification
foundational verification
1.122022
BFF: foundational and automated verification of bitfield-manipulating programs · Proc. ACM Program. Lang. 2022
RefinedC: automating the foundational verification of C code with refined ownership types · PLDI 2021
Program verification › proof assistants
coq verification
0.612022
BFF: foundational and automated verification of bitfield-manipulating programs · Proc. ACM Program. Lang. 2022
Programming languages and type systems › language semantics › memory model semantics
integer-pointer casts
0.612022
VIP: verifying real-world C idioms with integer-pointer casts · Proc. ACM Program. Lang. 2022
Program verification › code-level verification
machine code verification
0.612022
Islaris: verification of machine code against authoritative ISA semantics · PLDI 2022
Program verification › formal proof
mechanized proof
0.612022
BFF: foundational and automated verification of bitfield-manipulating programs · Proc. ACM Program. Lang. 2022
Processor architecture and microarchitecture
instruction set architecture
0.612022
Islaris: verification of machine code against authoritative ISA semantics · PLDI 2022
Program verification › code-level verification
c program verification
0.512021
RefinedC: automating the foundational verification of C code with refined ownership types · PLDI 2021
Programming languages and type systems › type systems
refinement types
0.512021
RefinedC: automating the foundational verification of C code with refined ownership types · PLDI 2021
Programming languages and type systems
type systems
0.512021
RefinedC: automating the foundational verification of C code with refined ownership types · PLDI 2021
Program verification › program logic
hoare logic
0.412020
The future is ours: prophecy variables in separation logic · Proc. ACM Program. Lang. 2020
Program verification
prophecy variables
0.412020
The future is ours: prophecy variables in separation logic · Proc. ACM Program. Lang. 2020
Program verification › program logic
separation logic
0.412020
The future is ours: prophecy variables in separation logic · Proc. ACM Program. Lang. 2020
Programming languages and type systems › type systems
subtyping
0.412019
Practical Subtyping for Curry-Style Languages · ACM Trans. Program. Lang. Syst. 2019
Program verification
termination analysis
0.412019
Practical Subtyping for Curry-Style Languages · ACM Trans. Program. Lang. Syst. 2019
Programming languages and type systems
type theory
0.412019
Practical Subtyping for Curry-Style Languages · ACM Trans. Program. Lang. Syst. 2019
Systems and software security
memory safety
0.212022
VIP: verifying real-world C idioms with integer-pointer casts · Proc. ACM Program. Lang. 2022
Program verification › system verification
systems code verification
0.212022
Islaris: verification of machine code against authoritative ISA semantics · PLDI 2022
Concurrent programming › atomicity
linearizability
0.112020
The future is ours: prophecy variables in separation logic · Proc. ACM Program. Lang. 2020

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

refinement types · 2.2validation · 1.1sail · 1.1foundational proofs in coq · 1.1formal semantics · 1.1PNVI compatibility · 1.1coq · 1.0SMT solving · 0.6separation logic · 0.5ownership types · 0.5
YearPublicationVenuePosition
2022 Islaris: verification of machine code against authoritative ISA semantics
abstract
Recent years have seen great advances towards verifying large-scale systems code. However, these verifications are usually based on hand-written assembly or machine-code semantics for the underlying architecture that only cover a small part of the instruction set architecture (ISA). In contrast, other recent work has used Sail to establish formal models for large real-world architectures, including Armv8-A and RISC-V, that are comprehensive (complete enough to boot an operating system or hypervisor) and authoritative (automatically derived from the Arm internal model and validated against the Arm validation suite, and adopted as the official formal specification by RISC-V International, respectively). But the scale and complexity of these models makes them challenging to use as a basis for verification.
Michael Sammler, Angus Hammond, Rodolphe Lepigre, Brian Campbell 0001, Jean Pichon-Pharabod, Derek Dreyer, Deepak Garg 0001, Peter Sewell
PLDI3
2022 VIP: verifying real-world C idioms with integer-pointer casts
abstract
Systems code often requires fine-grained control over memory layout and pointers, expressed using low-level ( e.g. , bitwise) operations on pointer values. Since these operations go beyond what basic pointer arithmetic in C allows, they are performed with the help of integer-pointer casts . Prior work has explored increasingly realistic memory object models for C that account for the desired semantics of integer-pointer casts while also being sound w.r.t. compiler optimisations, culminating in PNVI, the preferred memory object model in ongoing discussions within the ISO WG14 C standards committee. However, its complexity makes it an unappealing target for verification, and no tools currently exist to verify C programs under PNVI. In this paper, we introduce VIP, a new memory object model aimed at supporting C verification. VIP sidesteps the complexities of PNVI with a simple but effective idea: a new construct that lets programmers express the intended provenances of integer-pointer casts explicitly. At the same time, we prove VIP compatible with PNVI, thus enabling verification on top of VIP to benefit from PNVI’s validation with respect to practice. In particular, we build a verification tool, RefinedC-VIP, for verifying programs under VIP semantics. As the name suggests, RefinedC-VIP extends the recently developed RefinedC tool, which is automated yet also produces foundational proofs in Coq. We evaluate RefinedC-VIP on a range of systems-code idioms, and validate VIP’s expressiveness via an implementation in the Cerberus C semantics.
Rodolphe Lepigre, Michael Sammler, Kayvan Memarian, Robbert Krebbers, Derek Dreyer, Peter Sewell
Proc. ACM Program. Lang.1
2022 BFF: foundational and automated verification of bitfield-manipulating programs
abstract
Low-level systems code often needs to interact with data, such as page table entries or network packet headers, in which multiple pieces of information are packaged together as bitfield components of a single machine integer and accessed via bitfield manipulations (e.g., shifts and masking). Most existing approaches to verifying such code employ SMT solvers, instantiated with theories for bit vector reasoning: these provide a powerful hammer, but also significantly increase the trusted computing base of the verification toolchain. In this work, we propose an alternative approach to the verification of bitfield-manipulating systems code, which we call BFF. Building on the RefinedC framework, BFF is not only highly automated (as SMT-based approaches are) but also foundational---i.e., it produces a machine-checked proof of program correctness against a formal semantics for C programs, fully mechanized in Coq. Unlike SMT-based approaches, we do not try to solve the general problem of arbitrary bit vector reasoning, but rather observe that real systems code typically accesses bitfields using simple, well-understood programming patterns: the layout of a bit vector is known up front, and its bitfields are accessed in predictable ways through a handful of bitwise operations involving bit masks. Correspondingly, we center our approach around the concept of a structured bit vector---i.e., a bit vector with a known bitfield layout---which we use to drive simple and predictable automation. We validate the BFF approach by verifying a range of bitfield-manipulating C functions drawn from real systems code, including page table manipulation code from the Linux kernel and the pKVM hypervisor.
Fengmin Zhu, Michael Sammler, Rodolphe Lepigre, Derek Dreyer, Deepak Garg 0001
Proc. ACM Program. Lang.3
2021 RefinedC: automating the foundational verification of C code with refined ownership types
abstract
Given the central role that C continues to play in systems software, and the difficulty of writing safe and correct C code, it remains a grand challenge to develop effective formal methods for verifying C programs. In this paper, we propose a new approach to this problem: a type system we call RefinedC, which combines ownership types (for modular reasoning about shared state and concurrency) with refinement types (for encoding precise invariants on C data types and Hoare-style specifications for C functions).
Michael Sammler, Rodolphe Lepigre, Robbert Krebbers, Kayvan Memarian, Derek Dreyer, Deepak Garg 0001
PLDI2
2020 The future is ours: prophecy variables in separation logic
abstract
Early 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.2
2019 Practical Subtyping for Curry-Style Languages
abstract
We present a new, syntax-directed framework for Curry-style type systems with subtyping. It supports a rich set of features, and allows for a reasonably simple theory and implementation. The system we consider has sum and product types, universal and existential quantifiers, and inductive and coinductive types. The latter two may carry size invariants that can be used to establish the termination of recursive programs. For example, the termination of quicksort can be derived by showing that partitioning a list does not increase its size. The system deals with complex programs involving mixed induction and coinduction, or even mixed polymorphism and (co-)induction. One of the key ideas is to separate the notion of size from recursion. We do not check the termination of programs directly, but rather show that their (circular) typing proofs are well-founded. Termination is then obtained using a standard (semantic) normalisation proof. To demonstrate the practicality of the system, we provide an implementation accepting all the examples discussed in the article.
Rodolphe Lepigre, Christophe Raffalli
ACM Trans. Program. Lang. Syst.1
2016 A Classical Realizability Model for a Semantical Value Restriction
Rodolphe Lepigre
ESOP1