VLDB 2026 Research / reviewers in the wild / expert
David Pichardie
dblp:37/6728
· DBLP profile ↗
46ranked-venue papers
1as first author
8since 2021 · last 2025
0000-0002-2504-1760ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 27 · 6 since 2021Theory of computation · 11 · 1 first-author · 1 since 2021Security and privacy · 8 · 1 since 2021Artificial intelligence and machine learning · 3
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2025 | Contextual Equality Saturation
Alexandre Drewery, Thomas P. Jensen, David Pichardie |
SAS | 3 |
| 2025 | Preface of the special issue on the static analysis symposium 2020 and 2022
David Pichardie, Mihaela Sighireanu, Gagandeep Singh 0001, Caterina Urban |
Formal Methods Syst. Des. | 1 |
| 2023 | Formally Verified Native Code Generation in an Effectful JIT: Turning the CompCert Backend into a Formally Verified JIT CompilerabstractModern Just-in-Time compilers (or JITs) typically interleave several mechanisms to execute a program. For faster startup times and to observe the initial behavior of an execution, interpretation can be initially used. But after a while, JITs dynamically produce native code for parts of the program they execute often. Although some time is spent compiling dynamically, this mechanism makes for much faster times for the remaining of the program execution. Such compilers are complex pieces of software with various components, and greatly rely on a precise interplay between the different languages being executed, including on-stack-replacement. Traditional static compilers like CompCert have been mechanized in proof assistants, but JITs have been scarcely formalized so far, partly due to their impure nature and their numerous components. This work presents a model JIT with dynamic generation of native code, implemented and formally verified in Coq. Although some parts of a JIT cannot be written in Coq, we propose a proof methodology to delimit, specify and reason on the impure effects of a JIT. We argue that the daunting task of formally verifying a complete JIT should draw on existing proofs of native code generation. To this end, our work successfully reuses CompCert and its correctness proofs during dynamic compilation. Finally, our prototype can be extracted and executed. Aurèle Barrière, Sandrine Blazy, David Pichardie |
Proc. ACM Program. Lang. | 3 |
| 2022 | Semantic Foundations for Cost Analysis of Pipeline-Optimized Programs
Gilles Barthe, Adrien Koutsos, Solène Mirliaz, David Pichardie, Peter Schwabe |
SAS | 4 |
| 2022 | A Flow-Insensitive-Complete Program Representation
Solène Mirliaz, David Pichardie |
VMCAI | 2 |
| 2021 | Secure Compilation of Constant-Resource ProgramsabstractObservational non-interference (ONI) is a generic information-flow policy for side-channel leakage. Informally, a program is ONI-secure if observing program leakage during execution does not reveal any information about secrets. Formally, ONI is parametrized by a leakage functionl, and different instances of ONI can be recovered through different instantiations ofl. One popular instance of ONI is the cryptographic constant-time (CCT) policy, which is widely used in cryptographic libraries to protect against timing and cache attacks. Informally, a program is CCT-secure if it does not branch on secrets and does not perform secret-dependent memory accesses. Another instance of ONI is the constant-resource (CR) policy, a relaxation of the CCT policy which is used in Amazon's s2n implementation of TLS and in several other security applications. Informally, a program is CR-secure if its cost (modelled by a tick operator over an arbitrary semi-group) does not depend on secrets.In this paper, we consider the problem of preserving ONI by compilation. Prior work on the preservation of the CCT policy develops proof techniques for showing that main compiler optimisations preserve the CCT policy. However, these proof techniques critically rely on the fact that the semi-group used for modelling leakage satisfies the property:l1+l1'=l2+l2'⇒l1=l2∧l1'=l2'Unfortunately, this non-cancelling property fails for the CR policy, because its underlying semi-group is (\mathbbN, +) and it is currently not known how to extend existing techniques to policies that do not satisfy non-cancellation.We propose a methodology for proving the preservation of the CR policy during a program transformation. We present an implementation of some elementary compiler passes, and apply the methodology to prove the preservation of these passes. Our results have been mechanically verified using the Coq proof assistant. Gilles Barthe, Sandrine Blazy, Rémi Hutin, David Pichardie |
CSF | 4 |
| 2021 | Verified Functional Programming of an Abstract Interpreter
Lucas Franceschino, David Pichardie, Jean-Pierre Talpin |
SAS | 2 |
| 2021 | Formally verified speculation and deoptimization in a JIT compilerabstractJust-in-time compilers for dynamic languages routinely generate code under assumptions that may be invalidated at run-time, this allows for specialization of program code to the common case in order to avoid unnecessary overheads due to uncommon cases. This form of software speculation requires support for deoptimization when some of the assumptions fail to hold. This paper presents a model just-in-time compiler with an intermediate representation that explicits the synchronization points used for deoptimization and the assumptions made by the compiler's speculation. We also present several common compiler optimizations that can leverage speculation to generate improved code. The optimizations are proved correct with the help of a proof assistant. While our work stops short of proving native code generation, we demonstrate how one could use the verified optimization to obtain significant speed ups in an end-to-end setting. Aurèle Barrière, Sandrine Blazy, Olivier Flückiger, David Pichardie, Jan Vitek |
Proc. ACM Program. Lang. | 4 |
| 2020 | System-Level Non-interference of Constant-Time Cryptography. Part II: Verified Static Analysis and Stealth Memory
Gilles Barthe, Gustavo Betarte, Juan Diego Campo, Carlos Daniel Luna, David Pichardie |
J. Autom. Reason. | 5 |
| 2020 | Formal verification of a constant-time preserving C compilerabstractTiming side-channels are arguably one of the main sources of vulnerabilities in cryptographic implementations. One effective mitigation against timing side-channels is to write programs that do not perform secret-dependent branches and memory accesses. This mitigation, known as "cryptographic constant-time", is adopted by several popular cryptographic libraries. This paper focuses on compilation of cryptographic constant-time programs, and more specifically on the following question: is the code generated by a realistic compiler for a constant-time source program itself provably constant-time? Surprisingly, we answer the question positively for a mildly modified version of the CompCert compiler, a formally verified and moderately optimizing compiler for C. Concretely, we modify the CompCert compiler to eliminate sources of potential leakage. Then, we instrument the operational semantics of CompCert intermediate languages so as to be able to capture cryptographic constant-time. Finally, we prove that the modified CompCert compiler preserves constant-time. Our mechanization maximizes reuse of the CompCert correctness proof, through the use of new proof techniques for proving preservation of constant-time. These techniques achieve complementary trade-offs between generality and tractability of proof effort, and are of independent interest. Gilles Barthe, Sandrine Blazy, Benjamin Grégoire, Rémi Hutin, Vincent Laporte, David Pichardie, Alix Trieu |
Proc. ACM Program. Lang. | 6 |
| 2019 | Verifying a Concurrent Garbage Collector with a Rely-Guarantee Methodology
Yannick Zakowski, David Cachera, Delphine Demange, Gustavo Petri, David Pichardie, Suresh Jagannathan, Jan Vitek |
J. Autom. Reason. | 5 |
| 2019 | Verifying constant-time implementations by abstract interpretationabstractConstant-time programming is an established discipline to secure programs against timing attackers. Several real-world secure C libraries such as NaCl, mbedTLS, or Open Quantum Safe, follow this discipline. We propose an advanced static analysis, based on state-of-the-art techniques from abstract interpretation, to report time leakage during programming. To that purpose, we analyze source C programs and use full context-sensitive and arithmetic-aware alias analyses to track the tainted flows. We give semantic evidence of the correctness of our approach on a core language. We also present a prototype implementation for C programs that is based on the CompCert compiler toolchain and its companion Verasco static analyzer. We present verification results on various real-world constant-time programs and report on a successful verification of a challenging SHA-256 implementation that was out of scope of previous tool-assisted approaches. Sandrine Blazy, David Pichardie, Alix Trieu |
J. Comput. Secur. | 2 |
| 2018 | Semantic reasoning about the sea of nodesabstractThe Sea of Nodes intermediate representation was introduced by Cliff Click in the mid 90s as an enhanced Static Single Assignment (SSA) form. It improves on the initial SSA form by relaxing the total order on instructions in basic blocks into explicit data and control dependencies. This makes programs more flexible to optimize. This graph-based representation is now used in many industrial-strength compilers, such as HotSpot or Graal. While the SSA form is now well understood from a semantic perspective -- even formally verified optimizing compilers use it in their middle-end -- very few semantic studies have been conducted about the Sea of Nodes. Delphine Demange, Yon Fernández de Retana, David Pichardie |
CC | 3 |
| 2017 | Verified Translation Validation of Static AnalysesabstractMotivated by applications to security and high efficiency, we propose an automated methodology for validating on low-level intermediate representations the results of a source-level static analysis. Our methodology relies on two main ingredients: a relative-safety checker, an instance of a relational verifier which proves that a program is "safer" than another, and a transformation of programs into defensive form which verifies the analysis results at runtime. We prove the soundness of the methodology, and provide a formally verified instantiation based on the Verasco verified C static analyzer and the CompCert verified C compiler. We experiment with the effectiveness of our approach with client optimizations at RTL level, and static analyses for cache-based timing side-channels and memory usage at pre-assembly levels. Gilles Barthe, Sandrine Blazy, Vincent Laporte, David Pichardie, Alix Trieu |
CSF | 4 |
| 2017 | Verifying Constant-Time Implementations by Abstract Interpretation
Sandrine Blazy, David Pichardie, Alix Trieu |
ESORICS (1) | 2 |
| 2017 | Verifying a Concurrent Garbage Collector Using a Rely-Guarantee Methodology
Yannick Zakowski, David Cachera, Delphine Demange, Gustavo Petri, David Pichardie, Suresh Jagannathan, Jan Vitek |
ITP | 5 |
| 2016 | An Extended Buffered Memory Model With Full Reorderings
Gurvan Cabon, David Cachera, David Pichardie |
FTfJP@ECOOP | 3 |
| 2016 | An abstract memory functor for verified C static analyzersabstractAbstract interpretation provides advanced techniques to infer numerical invariants on programs. There is an abundant literature about numerical abstract domains that operate on scalar variables. This work deals with lifting these techniques to a realistic C memory model. We present an abstract memory functor that takes as argument any standard numerical abstract domain, and builds a memory abstract domain that finely tracks properties about memory contents, taking into account union types, pointer arithmetic and type casts. This functor is implemented and verified inside the Coq proof assistant with respect to the CompCert compiler memory model. Using the Coq extraction mechanism, it is fully executable and used by the Verasco C static analyzer. Sandrine Blazy, Vincent Laporte, David Pichardie |
ICFP | 3 |
| 2016 | Verified Abstract Interpretation Techniques for Disassembling Low-level Self-modifying Code
Sandrine Blazy, Vincent Laporte, David Pichardie |
J. Autom. Reason. | 3 |
| 2016 | A verified information-flow architectureabstractSAFE is a clean-slate design for a highly secure computer system, with pervasive mechanisms for tracking and limiting information flows. At the lowest level, the SAFE hardware supports fine-grained programmable tags, with efficient and flexible propagation and combination of tags as instructions ar e executed. The operating system virtualizes these generic facilities to present an information-flow abstract machine that allows user programs to label sensitive data with rich confidentiality policies. We present a formal, machine-checked model of the key hardware and software mechanisms used to dynamically control information flow in SAFE and an end-to-end proof of noninterference for this model. We use a refinement proof methodology to propagate the noninterference property of the abstract machine down to the concrete machine level. We use an intermediate layer in the refinement chain that factors out the details of the information-flow control policy and devise a code generator for compiling such information-flow policies into low-level monitor code. Finally, we verify the correctness of this generator using a dedicated Hoare logic that abstracts from low-level machine instructions into a reusable set of verified structured code generators. Arthur Azevedo de Amorim, Nathan Collins, André DeHon, Delphine Demange, Catalin Hritcu, David Pichardie, Benjamin C. Pierce, Randy Pollack, Andrew P. Tolmach |
J. Comput. Secur. | 6 |
| 2015 | Verifying Fast and Sparse SSA-Based Optimizations in Coq
Delphine Demange, David Pichardie, Léo Stefanesco |
CC | 2 |
| 2015 | Verified Validation of Program SlicingabstractProgram slicing is a well-known program transformation which simplifies a program wrt a given criterion while preserving its semantics. Since the seminal paper published by Weiser in 1981, program slicing is still widely used in various application domains. State of the art program slicers operate over program dependence graphs (PDG), a sophisticated data structure combining data and control dependences. Sandrine Blazy, André Maroneze, David Pichardie |
CPP | 3 |
| 2015 | Validating Dominator Trees for a Fast, Verified Dominance Test
Sandrine Blazy, Delphine Demange, David Pichardie |
ITP | 3 |
| 2015 | A Formally-Verified C Static AnalyzerabstractThis paper reports on the design and soundness proof, using the Coq proof assistant, of Verasco, a static analyzer based on abstract interpretation for most of the ISO C 1999 language (excluding recursion and dynamic allocation). Verasco establishes the absence of run-time errors in the analyzed programs. It enjoys a modular architecture that supports the extensible combination of multiple abstract domains, both relational and non-relational. Verasco integrates with the CompCert formally-verified C compiler so that not only the soundness of the analysis results is guaranteed with mathematical certitude, but also the fact that these guarantees carry over to the compiled code. Jacques-Henri Jourdan, Vincent Laporte, Sandrine Blazy, Xavier Leroy, David Pichardie |
POPL | 5 |
| 2014 | System-level Non-interference for Constant-time CryptographyabstractCache-based attacks are a class of side-channel attacks that are particularly effective in virtualized or cloud-based environments, where they have been used to recover secret keys from cryptographic implementations. One common approach to thwart cache-based attacks is to use constant-time implementations, i.e., which do not branch on secrets and do not perform memory accesses that depend on secrets. However, there is no rigorous proof that constant-time implementations are protected against concurrent cache-attacks in virtualization platforms with shared cache; moreover, many prominent implementations are not constant-time. An alternative approach is to rely on system-level mechanisms. One recent such mechanism is stealth memory, which provisions a small amount of private cache for programs to carry potentially leaking computations securely. Stealth memory induces a weak form of constant-time, called S-constant-time, which encompasses some widely used cryptographic implementations. However, there is no rigorous analysis of stealth memory and S-constant-time, and no tool support for checking if applications are S-constant-time. Gilles Barthe, Gustavo Betarte, Juan Diego Campo, Carlos Daniel Luna, David Pichardie |
CCS | 5 |
| 2014 | Verified Abstract Interpretation Techniques for Disassembling Low-level Self-modifying Code
Sandrine Blazy, Vincent Laporte, David Pichardie |
ITP | 3 |
| 2014 | Atomicity refinement for verified compilationabstractWe consider the verified compilation of high-level managed languages like Java or C# whose intermediate representations provide support for shared-memory synchronization and automatic memory management. In this environment, the interactions between application threads and the language runtime (e.g., the garbage collector) are regulated by compiler-injected code snippets. Example of snippets include allocation fast paths among others. In our TOPLAS paper we propose a refinement-based proof methodology that precisely relates concurrent code expressed at different abstraction levels, cognizant throughout of the relaxed memory semantics of the underlying processor. Our technique allows the compiler writer to reason compositionally about the atomicity of low-level concurrent code used to implement managed services. We illustrate our approach with examples taken from the verification of a concurrent garbage collector. Suresh Jagannathan, Gustavo Petri, Jan Vitek, David Pichardie, Vincent Laporte |
PLDI | 4 |
| 2014 | A verified information-flow architectureabstractSAFE is a clean-slate design for a highly secure computer system, with pervasive mechanisms for tracking and limiting information flows. At the lowest level, the SAFE hardware supports fine-grained programmable tags, with efficient and flexible propagation and combination of tags as instructions are executed. The operating system virtualizes these generic facilities to present an information-flow abstract machine that allows user programs to label sensitive data with rich confidentiality policies. We present a formal, machine-checked model of the key hardware and software mechanisms used to control information flow in SAFE and an end-to-end proof of noninterference for this model. Arthur Azevedo de Amorim, Nathan Collins, André DeHon, Delphine Demange, Catalin Hritcu, David Pichardie, Benjamin C. Pierce, Randy Pollack, Andrew P. Tolmach |
POPL | 6 |
| 2014 | Formal Verification of an SSA-Based Middle-End for CompCertabstractCompCert is a formally verified compiler that generates compact and efficient code for a large subset of the C language. However, CompCert foregoes using SSA, an intermediate representation employed by many compilers that enables writing simpler, faster optimizers. In fact, it has remained an open problem to verify formally an SSA-based compiler. We report on a formally verified, SSA-based middle-end for CompCert. In addition to providing a formally verified SSA-based middle-end, we address two problems raised by Leroy in [2009]: giving an intuitive formal semantics to SSA, and leveraging its global properties to reason locally about program optimizations. Gilles Barthe, Delphine Demange, David Pichardie |
ACM Trans. Program. Lang. Syst. | 3 |
| 2014 | Atomicity Refinement for Verified CompilationabstractWe consider the verified compilation of high-level managed languages like Java or C# whose intermediate representations provide support for shared-memory synchronization and automatic memory management. Our development is framed in the context of the Total Store Order relaxed memory model. Ensuring complier correctness is challenging because high-level actions are translated into sequences of nonatomic actions with compiler-injected snippets of racy code; the behavior of this code depends not only on the actions of other threads but also on out-of-order executions performed by the processor. A naïve proof of correctness would require reasoning over all possible thread interleavings. In this article, we propose a refinement-based proof methodology that precisely relates concurrent code expressed at different abstraction levels, cognizant throughout of the relaxed memory semantics of the underlying processor. Our technique allows the compiler writer to reason compositionally about the atomicity of low-level concurrent code used to implement managed services. We illustrate our approach with examples taken from the verification of a concurrent garbage collector. Suresh Jagannathan, Vincent Laporte, Gustavo Petri, David Pichardie, Jan Vitek |
ACM Trans. Program. Lang. Syst. | 4 |
| 2013 | Plan B: a buffered memory model for JavaabstractRecent advances in verification have made it possible to envision trusted implementations of real-world languages. Java with its type-safety and fully specified semantics would appear to be an ideal candidate; yet, the complexity of the translation steps used in production virtual machines have made it a challenging target for verifying compiler technology. One of Java's key innovations, its memory model, poses significant obstacles to such an endeavor. The Java Memory Model is an ambitious attempt at specifying the behavior of multithreaded programs in a portable, hardware agnostic, way. While experts have an intuitive grasp of the properties that the model should enjoy, the specification is complex and not well-suited for integration within a verifying compiler infrastructure. Moreover, the specification is given in an axiomatic style that is distant from the intuitive reordering-based reasonings traditionally used to justify or rule out behaviors, and ill suited to the kind of operational reasoning one would expect to employ in a compiler. This paper takes a step back, and introduces a Buffered Memory Model (BMM) for Java. We choose a pragmatic point in the design space sacrificing generality in favor of a model that is fully characterized in terms of the reorderings it allows, amenable to formal reasoning, and which can be efficiently applied to a specific hardware family, namely x86 multiprocessors. Although the BMM restricts the reorderings compilers are allowed to perform, it serves as the key enabling device to achieving a verification pathway from bytecode to machine instructions. Despite its restrictions, we show that it is backwards compatible with the Java Memory Model and that it does not cripple performance on TSO architectures. Delphine Demange, Vincent Laporte, Suresh Jagannathan, David Pichardie, Jan Vitek |
POPL | 5 |
| 2013 | Formal Verification of a C Value Analysis Based on Abstract Interpretation
Sandrine Blazy, Vincent Laporte, André Maroneze, David Pichardie |
SAS | 4 |
| 2013 | A certified lightweight non-interference Java bytecode verifierabstractNon-interference guarantees the absence of illicit information flow throughout program execution. It can be enforced by appropriate information flow type systems. Much of the previous work on type systems for non-interference has focused on calculi or high-level programming languages, and existing type systems for low-level languages typically omit objects, exceptions and method calls. We define an information flow type system for a sequential JVM-like language that includes all these programming features, and we prove, in the Coq proof assistant, that it guarantees non-interference. An additional benefit of the formalisation is that we have extracted from our proof a certified lightweight bytecode verifier for information flow. Our work provides, to the best of our knowledge, the first sound and certified information flow type system for such an expressive fragment of the JVM. Gilles Barthe, David Pichardie, Tamara Rezk |
Math. Struct. Comput. Sci. | 2 |
| 2012 | A Formally Verified SSA-Based Middle-End - Static Single Assignment Meets CompCert
Gilles Barthe, Delphine Demange, David Pichardie |
ESOP | 3 |
| 2011 | Modular SMT Proofs for Fast Reflexive Checking Inside Coq
Frédéric Besson, Pierre-Emmanuel Cornilleau, David Pichardie |
CPP | 3 |
| 2011 | Secure the Clones - Static Enforcement of Policies for Secure Object Copying
Thomas P. Jensen, Florent Kirchner, David Pichardie |
ESOP | 3 |
| 2010 | A Provably Correct Stackless Intermediate Representation for Java Bytecode
Delphine Demange, Thomas P. Jensen, David Pichardie |
APLAS | 3 |
| 2010 | Enforcing Secure Object Initialization in Java
Laurent Hubert, Thomas P. Jensen, Vincent Monfort, David Pichardie |
ESORICS | 4 |
| 2010 | A Certified Denotational Abstract Interpreter
David Cachera, David Pichardie |
ITP | 2 |
| 2010 | Verifying resource access control on mobile interactive devicesabstractA model of resource access control is presented in which the access control to resources can employ user interaction to obtain the necessary permissions. This model is inspired by and improves on the Java security architecture used in Java-enabled mobile telephones. We extend the Java model to incl ude access control permissions with multiplicities in order to allow to use a permission a certain number of times. We define a program model based on control flow graphs together with its operational semantics and provide a formal definition of the basic security policy to enforce viz that an application will always ask for a permission before using it to access a resource. A static analysis which enforces the security policy is defined and proved correct. A constraint solving algorithm implementing the analysis is presented. Frédéric Besson, Guillaume Dufay, Thomas P. Jensen, David Pichardie |
J. Comput. Secur. | 4 |
| 2008 | Preservation of Proof Pbligations for Hybrid Verification MethodsabstractProgram verification environments increasingly rely on hybrid methods that combine static analyses and verification condition generation. While such verification environments operate on source programs, it is often preferable to achieve guarantees about executable code. We show that, for a hybrid verification method based on numerical static analysis and verification condition generation, compilation preserves proof obligations and therefore it is possible to transfer evidence from source to compiled programs. Our result relies on the preservation of the solutions of analysis by compilation; this is achieved by relying on a byte code analysis that performs symbolic execution of stack expressions in order to overcome the loss of precision incurred by performing static analyses on compiled (rather than source) code. Finally, we show that hybrid verification methods are sound by proving that every program provable by hybrid methods is also provable (at a higher cost) by standard methods. Gilles Barthe, César Kunz, David Pichardie, Julián Samborski-Forlese |
SEFM | 3 |
| 2007 | A Certified Lightweight Non-interference Java Bytecode Verifier
Gilles Barthe, David Pichardie, Tamara Rezk |
ESOP | 2 |
| 2006 | Proof-carrying code from certified abstract interpretation and fixpoint compressionabstractProof-carrying code (PCC) is a technique for downloading mobile code on a host machine while ensuring that the code adheres to the host's safety policy. We show how certified abstract interpretation can be used to build a PCC architecture where the code producer can produce program certificates automatically. Code consumers use proof checkers derived from certified analysers to check certificates. Proof checkers carry their own correctness proofs and accepting a new proof checker amounts to type checking the checker in Coq. Certificates take the form of strategies for reconstructing a fixpoint and are kept small due to a technique for fixpoint compression. The PCC architecture has been implemented and evaluated experimentally on a byte code language for which we have designed an interval analysis that allows to generate certificates ascertaining that no array-out-of-bounds accesses will occur. Frédéric Besson, Thomas P. Jensen, David Pichardie |
Theor. Comput. Sci. | 3 |
| 2005 | Certified Memory Usage Analysis
David Cachera, Thomas P. Jensen, David Pichardie, Gerardo Schneider |
FM | 3 |
| 2005 | Extracting a data flow analyser in constructive logic
David Cachera, Thomas P. Jensen, David Pichardie, Vlad Rusu |
Theor. Comput. Sci. | 3 |
| 2004 | Extracting a Data Flow Analyser in Constructive Logic
David Cachera, Thomas P. Jensen, David Pichardie, Vlad Rusu |
ESOP | 3 |