Hi, my name is

Ghilain Bergeron

I mechanically prove things for a living.

I'm a Ph.D. Student at Inria Nancy in the VeriDis Team, working at the intersection of programming language semantics, compiler correctness and proof assistants. I build open-source tools and publish research you can actually use.

About

I’m a Ph.D. Student in Computer Science at Inria Nancy, advised by Prof. Horatiu Cirstea and Prof. Stephan Merz. My research focuses on compiler correctness, programming language semantics, and formal software verification.

Publications

Towards a verified compiler for Distributed PlusCal (extended)

Ghilain Bergeron, Horatiu Cirstea, Stephan Merz

To appear in: Journal of Logical and Algebraic Methods in Programming (2026)

Abstract

Formal verification techniques are frequently used to ensure correctness properties of distributed systems and algorithms. However, languages used for formal modeling and verification are often substantially different from languages used in software development, and verifying an abstract representation of an algorithm does not ensure that its handwritten implementation will be correct. This paper presents work in progress on a verified compiler for an extension of Lamport's PlusCal with threads and communication channels. Its syntax and semantics are formalized in the Lean 4 proof assistant and the passes compiling PlusCal algorithms into Go code are implemented in the underlying Lean 4 programming language. This paper gives formal semantics for the first pass of the compiler and outlines its mechanically verified correctness proof.

CompilationFormal VerificationLean 4PlusCalDistributed AlgorithmsRewriting

BARReL: A modern backend for Atelier B in Lean

Ghilain Bergeron, Vincent Trélat

Submitted (2026)

Abstract

BARReL is a Lean 4 library bridging Atelier B, an industrial tool for the B method, and the Lean proof assistant by enabling users to conduct their formal B developments—up to machine refinement and implementation—interactively inside Lean, while retaining standard B syntax. B partial operators are carefully encoded by generating explicit well-definedness conditions, leveraging Lean's dependent types to enforce a well-definedness discipline by construction. That is, proof obligations and proof steps cannot silently rely on ill-typed or ill-defined instantiations. BARReL also features basic automation to try to discharge such well-definedness conditions automatically. The implementation is written entirely using Lean meta-programming and is designed to be modular: extending the supported B fragment typically requires only adding new syntax and encoding clauses. We illustrate the approach on a small but representative case study, and argue that BARReL can act as a stepping stone towards a strongly reliable Atelier B toolchain grounded in the Lean proof assistant.

Lean 4B MethodMetaprogramming

Formalizing Splitting in Isabelle/HOL

Ghilain Bergeron, Florent Krasnopol, Sophie Tourret

In: 16th International Conference on Interactive Theorem Proving (2025)

Abstract

We describe the formalization in Isabelle/HOL of a framework for splitting, a theorem proving technique that extends saturation-based calculi with branching abilities. The framework preserves the completeness of the original calculus. We focus here on the simplest splitting model and provide an extension of the ordered resolution calculus with a variant of splitting called Lightweight AVATAR.

Formal VerificationIsabelle/HOLSaturation-Based CalculiSplitting

Towards a verified compiler for Distributed PlusCal

Ghilain Bergeron, Horatiu Cirstea, Stephan Merz

In: 11th International Workshop on Rewriting Techniques for Program Transformations and Evaluation (2025)

Abstract

Formal verification techniques are frequently used to ensure correctness properties of distributed systems and algorithms. However, languages used for formal modeling and verification are often substantially different from languages used in software development, and verifying an abstract representation of an algorithm does not ensure that its handwritten implementation will be correct. This paper presents work in progress on a verified compiler for an extension of Lamport's PlusCal with threads and communication channels. Its syntax and semantics are formalized in the Lean 4 proof assistant and the passes compiling PlusCal algorithms into Go code are implemented in the underlying Lean 4 programming language. This paper gives formal semantics for the first pass of the compiler and outlines its mechanically verified correctness proof.

CompilationFormal VerificationPlusCalDistributed AlgorithmsRewriting

HOL Light to Isabelle/HOL translation, rebooted

Ghilain Bergeron, Stéphane Glondu, Sophie Tourret

In: Isabelle Workshop (2024)

Abstract

This paper is a report on the use of a ten-year-old proof translation technique from HOL Light to Isabelle/HOL. We demonstrate the reusability of the technique and provide a detailed account of the steps needed to adapt the code both to a newer version of the HOL Light kernel and to the translation of specific HOL Light theorems. Thus, in addition to the proof of reusability, this paper provides a guideline for anyone wishing to use HOL Light theorems in Isabelle/HOL.

Isabelle/HOLHOL LightAutomatic Proof Translation

Talks

Sémantique Dénotationnelle, espaces métriques et Go

Journées LVP du GDR SciLog du CNRS

Towards a verified compiler for Distributed PlusCal

VeriDis retreat

Towards a verified compiler for Distributed PlusCal

11th International Workshop on Rewriting Techniques for Program Transformations and Evaluation · Main Workshop Talk

Compilation vérifiée de spécifications d'algorithmes distribués

Journées LVP du GDR SciLog du CNRS

An encoding of Distributed PlusCal in the Join Calculus

VINO'24

An encoding of Distributed PlusCal in the Join Calculus

VeriDis retreat

Some Things I've Built

Experience

Oct 2023–present

Ph.D. Student

University of Lorraine — Inria Nancy — Veridis Team

Advised by Prof. Horatiu Cirstea and Prof. Stephan Merz. Research on a formally verified compiler for Distributed PlusCal targetting Go. Teaching assistant for a Functional Programming Course in Haskell (2023-2024).

Mar–Aug 2023

Research Intern

University of Lorraine — Inria Nancy — Veridis Team

Formalization of a splitting framework for saturation-based calculi in Isabelle/HOL under the supervision of Sophie Tourret.

2021–2023

M.Sc. in Computer Science

University of Lorraine — Faculté des Sciences et Technologies

Jun 2021–Aug 2021

Research Intern

University of Lorraine — Inria Nancy — MFX Team

Development of a formal verification pipeline, including various primitives in the language, for Silice, a hardware description language.

Apr 2020–Jun 2020

Research Intern

University of Lorraine — Inria Nancy — MFX Team

Development of a tool for automatic “parameterization” of 2D-modeling scripts written in Lua.

2018–2021

B.Sc. in Computer Science

University of Lorraine — IUT Nancy-Charlemagne & Faculté des Sciences et Technologies

Get In Touch

I'm always happy to chat about research, collaborations, or just interesting ideas. Whether you have a question or just want to say hi, my inbox is open.

Say Hello