Frédéric Loulergue

dblp:l/FredericLoulergue · DBLP profile ↗
← Back
44ranked-venue papers
14as first author
10since 2021 · last 2025
0000-0001-9301-7829ORCID · verified

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

Software engineering, systems software and programming languages · 21 · 8 first-author · 7 since 2021Systems, architecture and hardware · 11 · 4 first-authorTheory of computation · 7 · 1 first-author · 5 since 2021Artificial intelligence and machine learning · 4 · 1 first-authorSecurity and privacy · 1
YearPublicationVenuePosition
2025 Towards Formal Verification of a TPM Software Stack: Achievements and Opportunities
abstract
The Trusted Platform Module (TPM) is a cryptoprocessor designed to protect integrity and security of modern computers. Communications with the TPM go through the TPM Software Stack (TSS). The open-source library tpm2-tss is a popular implementation of the TSS. Vulnerabilities in its code could allow attackers to recover sensitive information and take control of the system. This article presents a case study on formal verification of tpm2-tss using the Frama-C verification platform. Heavily based on linked lists and complex data structures, the library code appears to be highly challenging for the verification tool. We present several difficulties and tool limitations we faced, illustrate them with examples and describe solutions that allowed us to verify functional properties and the absence of runtime errors for a representative subset of functions. In particular, their verification required several lemmas proved in the interactive proof assistant Coq . We describe our verification results and desired tool improvements necessary to achieve a full formal verification of the target code.
Yani Ziani, Téo Bernier, Nikolai Kosmatov, Frédéric Loulergue, Daniel Gracia Pérez
Formal Aspects Comput.4
2024 Combining Deductive Verification with Shape Analysis
abstract
Abstract Deductive verification tools can prove a large range of program properties, but often face issues on recursive data structures. Abstract interpretation tools based on separation logic and shape analysis can efficiently reason about such structures but cannot deal with so large classes of properties. This short paper presents an ongoing work on combining both techniques. We show how a deductive verifier for C programs, Frama-C/Wp, can benefit from a shape analysis tool, MemCAD, where structural and separation properties proved in the latter become assumptions for the former. A case study on selected functions of the tpm2-tss library using linked lists confirms the interest of the approach.
Téo Bernier, Yani Ziani, Nikolai Kosmatov, Frédéric Loulergue
FASE4
2024 SyDPaCC: A Framework for the Development of Verified Scalable Parallel Functional Programs
Frédéric Loulergue, Jordan Ischard
ISoLA (3)1
2024 Runtime Verification for High-Level Security Properties: Case Study on the TPM Software Stack
Yani Ziani, Nikolai Kosmatov, Frédéric Loulergue, Daniel Gracia Pérez
TAP3
2024 Introduction to the Special Collection from the International Conference on Tests and Proofs (TAP) 2020 and 2021
abstract
Testing and formal proving are two core methods for ensuring high software quality, with testing being a dynamic and proving a static analysis technique.The TAP (Tests and Proofs) conference series promotes research in verification and formal methods that targets the interplay of proofs and testing: the advancement of techniques of each kind and their combination, with the ultimate goal of improving software and system dependability.This special issue contains selected papers of the 14th and 15th edition of TAP in 2020 and 2021, respectively.Out of the 16 papers accepted for TAP 2020 and 2021, published by Springer in their LNCS series, 7 papers were invited for this special issue and 3 finally were accepted.The papers cover combinations of fuzzing, runtime assertion checking, automata learning (specifically an evaluation of different learning and testing algorithms), and program transformation:-"JMLKelinci+: Detecting Semantic Bugs and Covering Branches with Valid Inputs Using Coverage-Guided Fuzzing and Runtime Assertion Checking" by Amirfarhad Nilizadeh, Gary T. Leavens, Corina S. Pǎsǎreanu, and Yannic Noller, -"Benchmarking Combinations of Learning and Testing Algorithms for Automata Learning" by Bernhard K. Aichernig, Martin Tappler, and Felix Wallner, and -"Sound Runtime Assertion Checking for Memory Properties via Program Transformation" by Dara Ly, Nikolai Kosmatov, Frédéric Loulergue, and Julien Signoles.
Wolfgang Ahrendt, Frédéric Loulergue, Heike Wehrheim
Formal Aspects Comput.2
2024 Sound Runtime Assertion Checking for Memory Properties via Program Transformation
abstract
Runtime Assertion Checking (RAC) for expressive specification languages is a non-trivial verification task that becomes even more complex for memory-related properties of imperative languages with dynamic memory allocation. It is important to ensure the soundness of RAC verdicts, in particular when RAC reports the absence of failures for execution traces. This article presents a formalization of a program transformation technique for RAC of memory properties for a representative language with pointers and memory operations, including dynamic allocation and deallocation. The generated program instrumentation relies on an axiomatized observation memory model, which is essential to record and monitor memory-related properties. We prove the soundness of RAC verdicts with regard to the semantics of this language.
Dara Ly, Nikolai Kosmatov, Frédéric Loulergue, Julien Signoles
Formal Aspects Comput.3
2023 Towards Verified Scalable Parallel Computing with Coq and Spark
abstract
SyDPaCC (Systematic Development of programs for Parallel and Cloud Computing) is a framework for the Coq interactive theorem prover. It allows to systematically develop correct parallel programs from specifications via verified and automated program transformations. The obtained programs are scalable, i.e. able to run on numerous processors. SyDPaCC produces programs written in the multi-paradigm and functional programming language OCaml with calls to the BSML (Bulk Synchronous parallel ML) parallel programming library. In this paper we present ongoing work towards an extension of SyDPaCC to be able to produce Scala programs using Apache Spark for parallel processing.
Frédéric Loulergue, Jolan Philippe
FTfJP@ECOOP1
2023 Towards Formal Verification of a TPM Software Stack
Yani Ziani, Nikolai Kosmatov, Frédéric Loulergue, Daniel Gracia Pérez, Téo Bernier
iFM3
2023 Verified Scalable Parallel Computing with Why3
Olivia Proust, Frédéric Loulergue
SEFM2
2023 Verified High Performance Computing: The SyDPaCC Approach
Frédéric Loulergue, Ali Ed-Dbali
VECoS1
2020 Pattern-driven Design of a Multiparadigm Parallel Programming Framework
abstract
International audience
Virginia Niculescu, Frédéric Loulergue, Darius Bufnea, Adrian Sterca
ENASE2
2020 Preface to the special issue on Formal Approaches to Parallel and Distributed Systems 2018
Frédéric Loulergue
J. Log. Algebraic Methods Program.1
2020 Transforming powerlist-based divide-and-conquer programs for an improved execution model
Virginia Niculescu, Frédéric Loulergue
J. Supercomput.2
2019 Automatic Optimization of Python Skeletal Parallel Programs
Frédéric Loulergue, Jolan Philippe
ICA3PP (1)1
2019 A First Step in the Translation of Alloy to Coq
Salwa Souaf, Frédéric Loulergue
ICFEM2
2019 New List Skeletons for the Python Skeleton Library
abstract
Algorithmic skeletons are patterns of parallel computations. Skeletal parallel programming eases parallel programming: a program is merely a composition of such patterns. Data-parallel skeletons operate on parallel data-structures that have often sequential counterparts. In algorithmic skeleton approaches that offer a global view of programs, a parallel program has therefore a structure similar to a sequential program but operates on parallel data-structures. PySke is such an algorithmic skeleton library for Python to program shared or distributed memory parallel architectures in a simple way. This paper presents an extension to PySke: new algorithmic skeletons on parallel lists. This extension is evaluated on an application.
Frédéric Loulergue, Jolan Philippe
PDCAT1
2018 MMFilter : A CHR-Based Solver for Generation of Executions under Weak Memory Models
Allan Blanchard, Nikolai Kosmatov, Frédéric Loulergue
Comput. Lang. Syst. Struct.3
2017 Implementing Algorithmic Skeletons with Bulk Synchronous Parallel ML
abstract
Skeletal parallelism offers a good trade-off between programming productivity and execution efficiency. In this style of parallelism, an application is a composition of algorithmic skeletons. An algorithmic skeleton captures a pattern of parallel algorithm on a distributed data structure, and is also often associated with a sequential algorithm on a sequential data structure that is the counterpart of the parallel data structure. The algorithmic skeleton approach has been inspired by functional programming. It is therefore very natural to embed algorithmic skeletons in a functional programming language. In this paper we present a new algorithmic skeleton library for the statically typed functional language OCaml, and illustrate its use on some applications. This functional skeletal parallel programming library is implemented using the Bulk Synchronous Parallel ML parallel programming library for OCaml.
Frédéric Loulergue
PDCAT1
2017 A Java Framework for High Level Parallel Programming Using Powerlists
abstract
Parallel programs based on the Divide&Conquer paradigm could be successfully defined in a simple way using powerlists. These parallel recursive data structures and their algebraic theories offer both a methodology to design parallel algorithms and parallel programming abstractions to ease the development of parallel applications. The paper presents how programs based on powerlists can be implemented in Java using the JPLF framework we developed. The design of this framework is based on powerlists theory, but in the same time follows the object-oriented design principles that provide flexibility and maintainability. Examples are given and performance experiments are conducted. The results emphasize the utility and the efficiency of the framework.
Virginia Niculescu, Frédéric Loulergue, Darius Bufnea, Adrian Sterca
PDCAT2
2016 Conc2Seq: A Frama-C Plugin for Verification of Parallel Compositions of C Programs
abstract
Frama-C is an extensible modular framework for analysis of C programs that offers different analyzers in the form of collaborating plugins. Currently, Frama-C does not support the proof of functional properties of concurrent code. We present Conc2Seq, a new code transformation based tool realized as a Frama-C plugin and dedicated to the verification of concurrent C programs. Assuming the program under verification respects an interleaving semantics, Conc2Seq transforms the original concurrent C program into a sequential one in which concurrency is simulated by interleavings. User specifications are automatically reintegrated into the new code without manual intervention. The goal of the proposed code transformation technique is to allow the user to reason about a concurrent program through the interleaving semantics using existing Frama-C analyzers.
Allan Blanchard, Nikolai Kosmatov, Matthieu Lemerre, Frédéric Loulergue
SCAM4
2015 A Case Study on Formal Verification of the Anaxagoros Hypervisor Paging System with Frama-C
Allan Blanchard, Nikolai Kosmatov, Matthieu Lemerre, Frédéric Loulergue
FMICS4
2015 Cloud Resources Placement based on Functional and Non-functional Requirements
abstract
It is difficult for customers to select the adequate cloud providers which fit their needs, as the number of cloud offerings increases rapidly. Many works thus focus on the design of cloud brokers. Unfortunately, most of them do not consider precise security requirements of customers. In this paper, we propose a methodology defined to place services in a multi-provider cloud environment, based on functional and non-functional requirements, including security requirements. To eliminate inner conflicts within customers requirements, and to match the cloud providers offers with these customers requirements, we use a formal analysis tool: Alloy. The broker uses a matching algorithm to place the required services in the adequate cloud providers, in a way that fulfills all customer requirements. We finally present a prototype implementation of the proposed broker.
Asma Guesmi, Patrice Clemente, Frédéric Loulergue, Pascal Berthomé
SECRYPT3
2015 A formal semantics of nested atomic sections with thread escape
Frédéric Dabrowski, Frédéric Loulergue, Thomas Pinsard
Comput. Lang. Syst. Struct.2
2014 A Verified Generate-Test-Aggregate Coq Library for Parallel Programs Extraction
Kento Emoto, Frédéric Loulergue, Julien Tesson
ITP2
2013 Programming with BSP Homomorphisms
Joeffrey Legaux, Zhenjiang Hu 0002, Frédéric Loulergue, Kiminori Matsuzaki, Julien Tesson
Euro-Par3
2013 Nested Atomic Sections with Thread Escape: An Operational Semantics
abstract
We consider a simple imperative language with fork/join parallelism and lexically scoped nested atomic sections from which threads can escape. In this context, our contribution is a formal operational semantics of this language that satisfies a specification on execution traces designed in a companion paper.
Frédéric Dabrowski, Frédéric Loulergue, Thomas Pinsard
PDCAT2
2012 A Verified Library of Algorithmic Skeletons on Evenly Distributed Arrays
Wadoud Bousdira, Frédéric Loulergue, Julien Tesson
ICA3PP (1)2
2012 Experiments in Parallel Matrix Multiplication on Multi-core Systems
Joeffrey Legaux, Sylvain Jubertie, Frédéric Loulergue
ICA3PP (1)3
2010 Systematic Development of Correct Bulk Synchronous Parallel Programs
abstract
With the current generalisation of parallel architectures arises the concern of applying formal methods to parallelism. The complexity of parallel, compared to sequential, programs makes them more error-prone and difficult to verify. Bulk Synchronous Parallelism (BSP) is a model of computation which offers a high degree of abstraction like PRAM models but yet a realistic cost model based on a structured parallelism. We propose a framework for refining a sequential specification toward a functional BSP program, the whole process being done with the help of the Coq proof assistant. To do so we define BH, a new homomorphic skeleton, which captures the essence of BSP computation in an algorithmic level, and also serves as a bridge in mapping from high level specification to low level BSP parallel programs.
Louis Gesbert, Zhenjiang Hu 0002, Frédéric Loulergue, Kiminori Matsuzaki, Julien Tesson
PDCAT3
2010 Bulk synchronous parallel ML with exceptions
Louis Gesbert, Frédéric Gava, Frédéric Loulergue, Frédéric Dabrowski
Future Gener. Comput. Syst.3
2009 OSL: Optimized Bulk Synchronous Parallel Skeletons on Distributed Arrays
Noman Javed, Frédéric Loulergue
APPT2
2007 Semantics of an Exception Mechanism for Bulk Synchronous Parallel ML
abstract
Bulk Synchronous Parallel ML is a high-level language for programming parallel algorithms. Built upon OCaml and using the BSP model, it provides a safe setting for their implementation, avoiding concurrency related problems (deadlocks, indeterminism). Only a limited set of the features of OCaml can be used in BSML to respect its properties of safety: this paper describes a way to add exception handling to this set by extending and adapting OCaml 's exceptions. After a precise definition of the problems that arise and an informal description of the solutions, an extension of BSML is proposed. Formal semantics define the behaviour in all possible cases, followed by a short description of the implementation.
Louis Gesbert, Frédéric Loulergue
PDCAT2
2007 Introduction to the special issue on semantics and costs models for high-level parallel programming
Frédéric Loulergue
Comput. Lang. Syst. Struct.1
2006 A calculus of functional BSP programs with projection
abstract
Bulk synchronous parallel ML (BSML) is an extension of the functional language Objective Caml to program bulk synchronous parallel (BSP) algorithms. It is deterministic, deadlock free and performances are good and predictable. Parallelism is expressed with a set of 4 primitives on a parallel data structure called parallel vector. These primitives are pure functional ones: they have no side-effect. It is thus possible, and we did it, to prove the correctness of BSML programs using a proof assistant like Coq. The BSlambda-calculus is an extension of the lambda-calculus which models the core semantics of BSML. Nevertheless some principles of BSML are not well captured by this calculus. This paper presents a new calculus, with a projection primitive, which provides a better model of the core semantics of BSML
Frédéric Loulergue
IPDPS1
2005 Optimizing Bulk Synchronous Parallel ML
abstract
Bulk synchronous parallel ML is a functional parallel language based on the bulk synchronous parallelism model of computation. Deadlocks are avoided and programs are deterministic. The performance of programs can be accurately predicted. This paper addresses the optimization of BSML programs through the compilation of BSML primitives to Objective Caml code with calls to a low level library rather than their direct implementation as a high level library.
Frédéric Loulergue
SNPD1
2005 A static analysis for Bulk Synchronous Parallel ML to avoid parallel nesting
Frédéric Gava, Frédéric Loulergue
Future Gener. Comput. Syst.2
2004 Développement d'applications avec Objective CAML by E. Chailloux, P. Manoury and B. Pagano, O'Reilley, 2003
abstract
This book describes theoretical results about AnsProlog * that have been obtained over the past decade.AnsProlog * or Prolog with Answer Sets 1 is a variation of the Prolog programming language, and extends the language by allowing clauses of the form:in the program.The L i 's are the literals (or atoms) of the Prolog language and may be supplied with a prefix ¬ sign, indicating the negation of a literal, while the prefix of not indicates negation as failure.Hence the semantics of the clause (C) may be read as follows: if all the literals L1, . . ., L m are true and all the literals L m+1 , . . ., L n can be safely assumed false then at least one of the literals L 1 , . . ., L k is true.(The actual semantics of each AnsProlog * program will be defined in terms of the Herbrand Universe of ground terms and the Herbrand Base of ground atoms.)The book takes the approach that the clause (C) is the most general form of a clause in the AnsProlog * language and so various subclasses of AnsProlog * can be defined by restricting this clause.For example: an AnsProlog -not program is when none of the clauses of a program contain the prefix not.In this respect, the book discusses the tractability, the complexity, the expressibility of the various subclasses of AnsProlog * based on the premise that AnsProlog * is both an excellent knowledge representation language and that it has a number of advantages over the Prolog language implementations based on SLDNF.For example, the ordering of goals within a clause and the ordering of clauses within a Prolog program affects whether a solution can or cannot be found (i.e. the program might get into an infinite loop); but not this is not the case within an AnsProlog * program.The reason being is that the semantics of an implementation of the AnsProlog * language can be thought of as allowing all models of the program to exist and then by using the clauses within the program, to impose restrictions on these models.The actual model(s) produced can then be interpreted in either a bi-valent (where a ground atom is either true or false) fashion or a tri-valent (where a ground atom is either true, false or unknown) fashion.The implementation algorithms describing how to restrict the models are described in Chapter 7 and two systems implementing the AnsProlog * language (and various subclasses), viz: (i) lparse+smodels and (ii) dlv are discussed in Chapter 8.The lparse+smodels program produces the stable models (or bi-valent) implementation, while the dlv produces the well-founded models (or tri-valent) implementation.Baral does note that both systems are under development and so implying that Chapter 8 may be out of date within a few years.However this aspect is compensated by Baral having a website www.baral.us/bookonewhere hypertext links to both the two systems and an errata/additional notes for the book are presented.On the application side, the book is peppered with many examples and simple programs illustrating the current point being made in the text.For example: how various forms of the 1 AnsProlog * is sometimes called A-Prolog in the literature.
Frédéric Loulergue
J. Funct. Program.1
2003 Parallel Juxtaposition for Bulk Synchronous Parllel ML
Frédéric Loulergue
Euro-Par1
2003 Semantics of Minimally Synchronous Parallel ML
Myrto Arapinis, Frédéric Loulergue, Frédéric Gava, Frédéric Dabrowski
SNPD2
2003 A Parallel Categorical Abstract Machine for Bulk Synchronous Parallel ML
Frédéric Gava, Frédéric Loulergue, Frédéric Dabrowski
SNPD2
2003 Pattern Matching of Parallel Values in Bulk Synchronous Parallel ML
Frédéric Gava, Frédéric Loulergue, Frédéric Dabrowski
SNPD2
2001 Concrete data structures and functional parallel programming
Gaétan Hains, Frédéric Loulergue, John Mullins
Theor. Comput. Sci.2
2000 A calculus of functional BSP programs
Frédéric Loulergue, Gaétan Hains, Christian Foisy
Sci. Comput. Program.1
1997 Functional Parallel Programming with Explicit Processes: Beyond SPMD
Frédéric Loulergue, Gaétan Hains
Euro-Par1