Guillaume Melquiond

dblp:20/5309 · DBLP profile ↗
← Back
31ranked-venue papers
5as first author
10since 2021 · last 2026
0000-0002-6697-1809ORCID · verified

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

Theory of computation · 23 · 4 first-author · 8 since 2021Artificial intelligence and machine learning · 5 · 1 since 2021Software engineering, systems software and programming languages · 5 · 1 first-author · 2 since 2021Systems, architecture and hardware · 2
YearPublicationVenuePosition
2026 Certifying the Decidability of the Word Problem in Monoids at Large
abstract
While the word problem for monoids is undecidable in general, having a decision procedure for some finitely presented monoid of interest has numerous applications. This paper presents a toolbox for the Rocq proof assistant that can be used to verify the decidability of the word problem for a given monoid and, in some cases, to produce the corresponding decision procedure. As this verification can be computationally intensive, the toolbox heavily relies on proofs by reflection guided by an external oracle. This approach has been successfully used on several large presentations from the literature, as well as on a database of one million 1-relation monoids. The huge size of this database forced some unusual considerations onto the Rocq formalization, so that the formal proofs could be checked in a reasonable amount of time.
Reinis Cirpons, Florent Hivert, Assia Mahboubi, Guillaume Melquiond, James D. Mitchell, Finn Smith
CPP4
2026 Functional Correctness of an Optimized Modular Inversion Algorithm
abstract
This article describes the first mechanized proof of functional correctness of an algorithm due to Pornin (2020), for computing modular inverses via an optimized extended binary GCD algorithm. This algorithm is widely used in cryptography applications, due to its speed and constant-timeness. But this speed comes from the use of approximate computations during its loop iterations. In particular, the pen-and-paper proof of the fact that sufficiently many loop iterations were performed is especially intricate (and the originally published version was actually wrong), which negatively impacts the trust in the applications that rely on the algorithm. In this work, we expand the notes provided in the original description by Pornin into a complete formal proof. We discuss the challenges raised by its mechanization, which eventually relies on the collaboration of deductive program verification and interactive theorem proving through the use of the tools Rocq and Why3.
Assia Mahboubi, Guillaume Melquiond, Pierre-Yves Strub, Tomás Vallejos Parada
ITP2
2024 End-To-End Formal Verification of a Fast and Accurate Floating-Point Approximation
abstract
Designing an efficient yet accurate floating-point approximation of a mathematical function is an intricate and error-prone process. This warrants the use of formal methods, especially formal proof, to achieve some degree of confidence in the implementation. Unfortunately, the lack of automation or its poor interplay with the more manual parts of the proof makes it way too costly in practice. This article revisits the issue by proposing a methodology and some dedicated automation, and applies them to the use case of a faithful binary64 approximation of exponential. The peculiarity of this use case is that the target of the formal verification is not a simple modeling of an external code; it is an actual floating-point function defined in the logic of the Coq proof assistant, which is thus usable inside proofs once its correctness has been fully verified. This function presents all the attributes of a state-of-the-art implementation: bit-level manipulations, large tables of constants, obscure floating-point transformations, exceptional values, etc. This function has been integrated into the proof strategies of the CoqInterval library, bringing a 20× speedup with respect to the previous implementation.
Florian Faissole, Paul Geneau de Lamarlière, Guillaume Melquiond
ITP3
2024 A Safe Low-Level Language for Computer Algebra and Its Formally Verified Compiler
abstract
This article describes a programming language for writing low-level libraries for computer algebra systems. Such libraries (GMP, BLAS/LAPACK, etc) are usually written in C, Fortran, and Assembly, and make heavy use of arrays and pointers. The proposed language, halfway between C and Rust, is designed to be safe and to ease the deductive verification of programs, while being low-level enough to be suitable for this kind of computationally intensive applications. This article also describes a compiler for this language, based on CompCert. The safety of the language has been formally proved using the Coq proof assistant, and so has the property of semantics preservation for the compiler. While the language is not yet feature-complete, this article shows what it entails to design a new domain-specific programming language along its formally verified compiler.
Guillaume Melquiond, Josué Moreau
Proc. ACM Program. Lang.1
2023 Slimmer Formal Proofs for Mathematical Libraries
abstract
Short of being able to exhaustively test all the inputs, writing a formal proof offers the highest possible confidence in the correctness of a mathematical library. This comes at a large cost though, since formal proofs require taking into account all the details, even the seemingly insignificant ones, which makes them tedious to write. This issue is compounded by the fact that the objects whose properties we need to verify (floating-point numbers) are not the ones we would like to reason about (real numbers and integers). This short paper explores some ways of reducing the overhead of formal proofs in the setting of mathematical libraries, so as to let the user focus on the details that really matter.
Paul Geneau de Lamarlière, Guillaume Melquiond, Florian Faissole
ARITH2
2023 Enabling Floating-Point Arithmetic in the Coq Proof Assistant
Érik Martin-Dorel, Guillaume Melquiond, Pierre Roux 0001
J. Autom. Reason.2
2023 WhyMP, a formally verified arbitrary-precision integer library
Guillaume Melquiond, Raphaël Rieu-Helft
J. Symb. Comput.1
2023 A strong call-by-need calculus
abstract
We present a call-by-need $\lambda$-calculus that enables strong reduction (that is, reduction inside the body of abstractions) and guarantees that arguments are only evaluated if needed and at most once. This calculus uses explicit substitutions and subsumes the existing strong-call-by-need strategy, but allows for more reduction sequences, and often shorter ones, while preserving the neededness. The calculus is shown to be normalizing in a strong sense: Whenever a $\lambda$-term t admits a normal form n in the $\lambda$-calculus, then any reduction sequence from t in the calculus eventually reaches a representative of the normal form n. We also exhibit a restriction of this calculus that has the diamond property and that only performs reduction sequences of minimal length, which makes it systematically better than the existing strategy. We have used the Abella proof assistant to formalize part of this calculus, and discuss how this experiment affected its design. In particular, it led us to derive a new description of call-by-need reduction based on inductive rules.
Thibaut Balabonski, Antoine Lanco, Guillaume Melquiond
Log. Methods Comput. Sci.3
2021 Some Formal Tools for Computer Arithmetic: Flocq and Gappa
abstract
This invited paper presents two tools developed by the authors. Their purpose is to help the user in writing proofs regarding computer arithmetic, e.g., certifying a bound on a round-off error, while aiming at a high level of guarantee. Flocq is a library of mathematical definitions and theorems for the Coq proof assistant; Gappa is meant to compute bounds of values and errors, while producing the corresponding formal proof. We describe here these tools, how they interact and how they fit in a larger verification process.
Sylvie Boldo, Guillaume Melquiond
ARITH2
2021 A Strong Call-By-Need Calculus
abstract
We present a call-by-need λ-calculus that enables strong reduction (that is, reduction inside the body of abstractions) and guarantees that arguments are only evaluated if needed and at most once. This calculus uses explicit substitutions and subsumes the existing strong-call-by-need strategy, but allows for more reduction sequences, and often shorter ones, while preserving the neededness. The calculus is shown to be normalizing in a strong sense: Whenever a λ-term t admits a normal form n in the λ-calculus, then any reduction sequence from t in the calculus eventually reaches a representative of the normal form n. We also exhibit a restriction of this calculus that has the diamond property and that only performs reduction sequences of minimal length, which makes it systematically better than the existing strategy. We have used the Abella proof assistant to formalize part of this calculus, and discuss how this experiment affected its design.
Thibaut Balabonski, Antoine Lanco, Guillaume Melquiond
FSCD3
2020 WhyMP, a formally verified arbitrary-precision integer library
abstract
Arbitrary-precision integer libraries such as GMP are a critical building block of computer algebra systems. GMP provides state-of-the-art algorithms that are intricate enough to justify formal verification. In this paper, we present a C library that has been formally verified using the Why3 verification platform in about four person-years. This verification deals not only with safety, but with full functional correctness. It has been performed using a mixture of mechanically checked handwritten proofs and automated theorem proving. We have implemented and verified a nontrivial subset of GMP's algorithms, including their optimizations and intricacies. Our library provides the same interface as GMP and is almost as efficient for smaller inputs. We detail our verification methodology and the algorithms we have implemented, and include some benchmarks to compare our library with GMP.
Guillaume Melquiond, Raphaël Rieu-Helft
ISSAC1
2019 Formal Verification of a State-of-the-Art Integer Square Root
abstract
We present the automatic formal verification of a state-of-the-art algorithm from the GMP library that computes the square root of a 64-bit integer. Although it uses only integer operations, the best way to understand the program is to view it as a fixed-point arithmetic algorithm that implements Newton's method. The C code is short but intricate, involving magic constants and intentional arithmetic overflows. We have verified the algorithm using the Why3 tool and automated solvers such as Gappa.
Guillaume Melquiond, Raphaël Rieu-Helft
ARITH1
2019 Formally Verified Approximations of Definite Integrals
Assia Mahboubi, Guillaume Melquiond, Thomas Sibut-Pinote
J. Autom. Reason.2
2017 A Three-Tier Strategy for Reasoning About Floating-Point Numbers in SMT
Sylvain Conchon, Mohamed Iguernlala, Kailiang Ji, Guillaume Melquiond, Clément Fumex
CAV (2)4
2016 Formally Verified Approximations of Definite Integrals
Assia Mahboubi, Guillaume Melquiond, Thomas Sibut-Pinote
ITP2
2016 Proving Tight Bounds on Univariate Expressions with Elementary Functions in Coq
Érik Martin-Dorel, Guillaume Melquiond
J. Autom. Reason.2
2016 Formalization of real analysis: a survey of proof assistants and libraries
abstract
In the recent years, numerous proof systems have improved enough to be used for formally verifying non-trivial mathematical results. They, however, have different purposes and it is not always easy to choose which one is adapted to undertake a formalization effort. In this survey, we focus on properties related to real analysis: real numbers, arithmetic operators, limits, differentiability, integrability and so on. We have chosen to look into the formalizations provided in standard by the following systems: Coq, HOL4, HOL Light, Isabelle/HOL, Mizar, ProofPower-HOL, and PVS. We have also accounted for large developments that play a similar role or extend standard libraries: ACL2(r) for ACL2, C-CoRN/MathClasses for Coq, and the NASA PVS library. This survey presents how real numbers have been defined in these various provers and how the notions of real analysis described above have been formalized. We also look at the methods of automation these systems provide for real analysis.
Sylvie Boldo, Catherine Lelay, Guillaume Melquiond
Math. Struct. Comput. Sci.3
2015 Verified Compilation of Floating-Point Computations
Sylvie Boldo, Jacques-Henri Jourdan, Xavier Leroy, Guillaume Melquiond
J. Autom. Reason.4
2013 A Formally-Verified C Compiler Supporting Floating-Point Arithmetic
abstract
Floating-point arithmetic is known to be tricky: roundings, formats, exceptional values. The IEEE-754 standard was a push towards straightening the field and made formal reasoning about floating-point computations easier and flourishing. Unfortunately, this is not sufficient to guarantee the final result of a program, as several other actors are involved: programming language, compiler, architecture. The Comp Certformally-verified compiler provides a solution to this problem: this compiler comes with a mathematical specification of the semantics of its source language (a large subset of ISO C90) and target platforms (ARM, PowerPC, x86-SSE2), and with a proof that compilation preserves semantics. In this paper, we report on our recent success in formally specifying and proving correct Comp Cert's compilation of floating-point arithmetic. Since CompCert is verified using the Coq proof assistant, this effort required a suitable Coq formalization of the IEEE-754 standard, we extended the Flocq library for this purpose. As a result, we obtain the first formally verified compiler that provably preserves the semantics of floating-point programs.
Sylvie Boldo, Jacques-Henri Jourdan, Xavier Leroy, Guillaume Melquiond
IEEE Symposium on Computer Arithmetic4
2013 Inductive Verification of Hybrid Automata with Strongest Postcondition Calculus
Daisuke Ishii, Guillaume Melquiond, Shin Nakajima 0001
IFM2
2013 Wave Equation Numerical Resolution: A Comprehensive Mechanized Proof of a C Program
Sylvie Boldo, François Clément, Jean-Christophe Filliâtre, Micaela Mayero, Guillaume Melquiond, Pierre Weis
J. Autom. Reason.5
2012 Improving Real Analysis in Coq: A User-Friendly Approach to Integrals and Derivatives
Sylvie Boldo, Catherine Lelay, Guillaume Melquiond
CPP3
2012 Floating-point arithmetic in the Coq system
Guillaume Melquiond
Inf. Comput.1
2011 Flocq: A Unified Library for Proving Floating-Point Algorithms in Coq
abstract
Several formalizations of floating-point arithmetic have been designed for the Coq system, a generic proof assistant. Their different purposes have favored some specific applications: program verification, high-level properties, automation. Based on our experience using and/or developing these libraries, we have built a new system that is meant to encompass the other ones in a unified framework. It offers a multi-radix and multi-precision formalization for various floating- and fixed-point formats. This fresh setting has been the occasion for reevaluating known properties and generalizing them. This paper presents design decisions and examples of theorems from the Flocq system: a library easy to use, suitable for automation yet high-level and generic.
Sylvie Boldo, Guillaume Melquiond
IEEE Symposium on Computer Arithmetic2
2011 Certifying the Floating-Point Implementation of an Elementary Function Using Gappa
abstract
High confidence in floating-point programs requires proving numerical properties of final and intermediate values. One may need to guarantee that a value stays within some range, or that the error relative to some ideal value is well bounded. This certification may require a time-consuming proof for each line of code, and it is usually broken by the smallest change to the code, e.g., for maintenance or optimization purpose. Certifying floating-point programs by hand is, therefore, very tedious and error-prone. The Gappa proof assistant is designed to make this task both easier and more secure, due to the following novel features: It automates the evaluation and propagation of rounding errors using interval arithmetic. Its input format is very close to the actual code to validate. It can be used incrementally to prove complex mathematical properties pertaining to the code. It generates a formal proof of the results, which can be checked independently by a lower level proof assistant like Coq. Yet it does not require any specific knowledge about automatic theorem proving, and thus, is accessible to a wide community. This paper demonstrates the practical use of this tool for a widely used class of floating-point programs: implementations of elementary functions in a mathematical library.
Florent de Dinechin, Christoph Quirin Lauter, Guillaume Melquiond
IEEE Trans. Computers3
2010 Formal Proof of a Wave Equation Resolution Scheme: The Method Error
Sylvie Boldo, François Clément, Jean-Christophe Filliâtre, Micaela Mayero, Guillaume Melquiond, Pierre Weis
ITP5
2010 Certification of bounds on expressions involving rounded operators
abstract
Gappa is a tool designed to formally verify the correctness of numerical software and hardware. It uses interval arithmetic and forward error analysis to bound mathematical expressions that involve rounded as well as exact operators. It then generates a theorem and its proof for each verified enclosure. This proof can be automatically checked with a proof assistant, such as Coq or HOL Light. It relies on a large companion library of facts that we have developed. This Coq library provides theorems dealing with addition, multiplication, division, and square root, for both fixed- and floating-point arithmetics. Gappa uses multiple-precision dyadic fractions for the endpoints of intervals and performs forward error analysis on rounded operators when necessary. When asked, Gappa reports the best bounds it is able to reach for a given expression in a given context. This feature can be used to identify where the set of facts and automatic techniques implemented in Gappa becomes insufficient. Gappa handles seamlessly additional properties expressed as interval properties or rewriting rules in order to establish more intricate bounds. Recent work showed that Gappa is suited to discharge proof obligations generated for small pieces of software. They may be produced by third-party tools and the first applications of Gappa use proof obligations written by designers or obtained from traces of execution.
Marc Daumas, Guillaume Melquiond
ACM Trans. Math. Softw.2
2009 IEEE Interval Standard Working Group - P1788: Current Status
abstract
Late 2008, at SCAN 2008 in El Paso, TX, an effort to standardize interval computations was started by a working group of the IEEE Microprocessor Standards Committee, titled the Interval Arithmetic Working Group of the IEEE P1788 Standard. This paper describes the goals of this effort, the history of the working group, and how it relates to the IEEE 754 Standard. It gives a brief overview of the policies and procedures for constructing the standard, and its expected structure. It also presents some of the questions the group may have to solve in the future.
William W. Edmonson, Guillaume Melquiond
IEEE Symposium on Computer Arithmetic2
2008 Emulation of a FMA and Correctly Rounded Sums: Proved Algorithms Using Rounding to Odd
abstract
Rounding to odd is a nonstandard rounding on floating-point numbers. By using it for some intermediate values instead of rounding to nearest, correctly rounded results can be obtained at the end of computations. We present an algorithm for emulating the fused multiply-and-add operator. We also present an iterative algorithm for computing the correctly rounded sum of a set of floating-point numbers under mild assumptions. A variation on both previous algorithms is the correctly rounded sum of any three floating-point numbers. This leads to efficient implementations, even when this rounding is not available. In order to guarantee the correctness of these properties and algorithms, we formally proved them by using the Coq proof checker.
Sylvie Boldo, Guillaume Melquiond
IEEE Trans. Computers2
2006 The design of the Boost interval arithmetic library
Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
Theor. Comput. Sci.2
2005 Guaranteed Proofs Using Interval Arithmetic
abstract
This paper presents a set of tools for mechanical reasoning of numerical bounds using interval arithmetic. The tools implement two techniques for reducing decorrelation: interval splitting and Taylor's series expansions. Although the tools are designed for the proof assistant system PVS, expertise on PVS is not required. The ultimate goal of the tools is to provide guaranteed proofs of numerical properties with a minimal human-theorem prover interaction.
Marc Daumas, Guillaume Melquiond, César A. Muñoz
IEEE Symposium on Computer Arithmetic2