<?xml version="1.0"?>
<raweb xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="en" year="2024">
  <identification id="gallinette" isproject="true">
    <shortname>GALLINETTE</shortname>
    <projectName>Gallinette: developing a new generation of proof assistants</projectName>
    <theme-de-recherche>Proofs and Verification</theme-de-recherche>
    <domaine-de-recherche>Algorithmics, Programming, Software and Architecture</domaine-de-recherche>
    <urlTeam>http://team.inria.fr/gallinette</urlTeam>
    <structure_exterieure type="Labs">
      <libelle>Laboratoire des Sciences du numérique de Nantes</libelle>
    </structure_exterieure>
    <structure_exterieure type="Organism">
      <libelle>Ecole Nationale Supérieure Mines-Télécom Atlantique Bretagne Pays de la Loire, Nantes Université</libelle>
    </structure_exterieure>
    <header_dates_team/>
    <LeTypeProjet>Project-Team</LeTypeProjet>
    <keywordsSdN>
      <term>A2.1.1. - Semantics of programming languages</term>
      <term>A2.1.2. - Imperative programming</term>
      <term>A2.1.3. - Object-oriented programming</term>
      <term>A2.1.4. - Functional programming</term>
      <term>A2.1.11. - Proof languages</term>
      <term>A2.2.3. - Memory management</term>
      <term>A2.4.3. - Proofs</term>
      <term>A7.2.3. - Interactive Theorem Proving</term>
      <term>A7.2.4. - Mechanized Formalization of Mathematics</term>
      <term>A8.4. - Computer Algebra</term>
    </keywordsSdN>
    <keywordsSecteurs>
      <term>B6.1. - Software industry</term>
    </keywordsSecteurs>
    <center type="main" id="RBA">Inria Centre at Rennes University</center>
    <UR name="Rennes"/>
  </identification>
  <team id="GALLINETTE-RA-2024-cid1">
    <person>
      <firstname>Nicolas</firstname>
      <lastname>Tabareau</lastname>
      <categoryPro>Chercheur</categoryPro>
      <moreinfo>Team leader, INRIA, Senior Researcher</moreinfo>
      <hdr>oui</hdr>
    </person>
    <person>
      <firstname>Valentin</firstname>
      <lastname>Blot</lastname>
      <categoryPro>Chercheur</categoryPro>
      <moreinfo>INRIA, Researcher, from Sep 2024</moreinfo>
    </person>
    <person>
      <firstname>Assia</firstname>
      <lastname>Mahboubi</lastname>
      <categoryPro>Chercheur</categoryPro>
      <moreinfo>INRIA, Senior Researcher</moreinfo>
      <hdr>oui</hdr>
    </person>
    <person>
      <firstname>Kenji</firstname>
      <lastname>Maillard</lastname>
      <categoryPro>Chercheur</categoryPro>
      <moreinfo>INRIA, ISFP</moreinfo>
    </person>
    <person>
      <firstname>Guillaume</firstname>
      <lastname>Munch</lastname>
      <categoryPro>Chercheur</categoryPro>
      <moreinfo>INRIA, Researcher</moreinfo>
    </person>
    <person>
      <firstname>Pierre-Marie</firstname>
      <lastname>Pedrot</lastname>
      <categoryPro>Chercheur</categoryPro>
      <moreinfo>INRIA, Researcher</moreinfo>
    </person>
    <person>
      <firstname>Matthieu</firstname>
      <lastname>Piquerez</lastname>
      <categoryPro>Chercheur</categoryPro>
      <moreinfo>INRIA, Starting Research Position</moreinfo>
    </person>
    <person>
      <firstname>Matthieu</firstname>
      <lastname>Sozeau</lastname>
      <categoryPro>Chercheur</categoryPro>
      <moreinfo>INRIA, Researcher</moreinfo>
    </person>
    <person>
      <firstname>Julien</firstname>
      <lastname>Cohen</lastname>
      <categoryPro>Enseignant</categoryPro>
      <moreinfo>Nantes University, Associate Professor</moreinfo>
    </person>
    <person>
      <firstname>Rémi</firstname>
      <lastname>Douence</lastname>
      <categoryPro>Enseignant</categoryPro>
      <moreinfo>IMT ATLANTIQUE, Associate Professor</moreinfo>
      <hdr>oui</hdr>
    </person>
    <person>
      <firstname>Guilhem</firstname>
      <lastname>Jaber</lastname>
      <categoryPro>Enseignant</categoryPro>
      <moreinfo>Nantes University, Associate Professor</moreinfo>
    </person>
    <person>
      <firstname>Thiago</firstname>
      <lastname>Felicissimo Cesar</lastname>
      <categoryPro>PostDoc</categoryPro>
      <moreinfo>INRIA, Post-Doctoral Fellow, from Oct 2024</moreinfo>
    </person>
    <person>
      <firstname>Koen</firstname>
      <lastname>Jacobs</lastname>
      <categoryPro>PostDoc</categoryPro>
      <moreinfo>INRIA, Post-Doctoral Fellow</moreinfo>
    </person>
    <person>
      <firstname>Axel</firstname>
      <lastname>Kerinec</lastname>
      <categoryPro>PostDoc</categoryPro>
      <moreinfo>INRIA, Post-Doctoral Fellow</moreinfo>
    </person>
    <person>
      <firstname>Sidney</firstname>
      <lastname>Congard</lastname>
      <categoryPro>PhD</categoryPro>
      <moreinfo>INRIA</moreinfo>
    </person>
    <person>
      <firstname>Enzo</firstname>
      <lastname>Crance</lastname>
      <categoryPro>PhD</categoryPro>
      <moreinfo>INRIA, until Jan 2024</moreinfo>
    </person>
    <person>
      <firstname>Hamza</firstname>
      <lastname>Jaafar</lastname>
      <categoryPro>PhD</categoryPro>
      <moreinfo>INRIA</moreinfo>
    </person>
    <person>
      <firstname>Thomas</firstname>
      <lastname>Lamiaux</lastname>
      <categoryPro>PhD</categoryPro>
      <moreinfo>Nantes University, from Sep 2024</moreinfo>
    </person>
    <person>
      <firstname>Yann</firstname>
      <lastname>Leray</lastname>
      <categoryPro>PhD</categoryPro>
      <moreinfo>Nantes University</moreinfo>
    </person>
    <person>
      <firstname>Josselin</firstname>
      <lastname>Poiret</lastname>
      <categoryPro>PhD</categoryPro>
      <moreinfo>Nantes University</moreinfo>
    </person>
    <person>
      <firstname>Vojtech</firstname>
      <lastname>Stepancik</lastname>
      <categoryPro>PhD</categoryPro>
      <moreinfo>INRIA, from Nov 2024</moreinfo>
    </person>
    <person>
      <firstname>Tomas Javier</firstname>
      <lastname>Vallejos Parada</lastname>
      <categoryPro>PhD</categoryPro>
      <moreinfo>INRIA, from Mar 2024</moreinfo>
    </person>
    <person>
      <firstname>Martin</firstname>
      <lastname>Baillon</lastname>
      <categoryPro>Technique</categoryPro>
      <moreinfo>INRIA, Engineer</moreinfo>
    </person>
    <person>
      <firstname>Kazuhiko</firstname>
      <lastname>Sakaguchi</lastname>
      <categoryPro>Technique</categoryPro>
      <moreinfo>INRIA, Engineer, until Oct 2024</moreinfo>
    </person>
    <person>
      <firstname>Thomas</firstname>
      <lastname>Lamiaux</lastname>
      <categoryPro>Stagiaire</categoryPro>
      <moreinfo>ENS PARIS-SACLAY, from Mar 2024 until Jul 2024</moreinfo>
    </person>
    <person>
      <firstname>Gaia</firstname>
      <lastname>Loutchmia</lastname>
      <categoryPro>Stagiaire</categoryPro>
      <moreinfo>INRIA, Intern, from Mar 2024 until Aug 2024</moreinfo>
    </person>
    <person>
      <firstname>Stefan Ignacy</firstname>
      <lastname>Malewski Correa</lastname>
      <categoryPro>Stagiaire</categoryPro>
      <moreinfo>UNIV CHILI, from Apr 2024 until Jul 2024</moreinfo>
    </person>
    <person>
      <firstname>Virgil</firstname>
      <lastname>Marionneau</lastname>
      <categoryPro>Stagiaire</categoryPro>
      <moreinfo>INRIA, Intern, from Sep 2024</moreinfo>
    </person>
    <person>
      <firstname>Oliver Benjamin</firstname>
      <lastname>Turner</lastname>
      <categoryPro>Stagiaire</categoryPro>
      <moreinfo>INRIA, Intern, from Jun 2024 until Sep 2024</moreinfo>
    </person>
    <person>
      <firstname>Anne-Claire</firstname>
      <lastname>Binetruy</lastname>
      <categoryPro>Assistant</categoryPro>
      <moreinfo>INRIA</moreinfo>
    </person>
    <person>
      <firstname>Tomas</firstname>
      <lastname>Diaz Troncoso</lastname>
      <categoryPro>Visiteur</categoryPro>
      <moreinfo>UNIV CHILI, until Jul 2024</moreinfo>
    </person>
  </team>
  <presentation id="GALLINETTE-RA-2024-cid2">
                <bodyTitle id="GALLINETTE-RA-2024_label_gallinette-context">Overall objectives</bodyTitle>
                <p>The EPI Gallinette aims at developing a new generation of proof assistants,
with the belief that practical experiments must go in pair with foundational
investigations:</p>
                <simplelist>
                  <li>The goal is to advance proof assistants both as certified programming
languages and mechanised logical systems. Advanced programming and
mathematical paradigms must be integrated, notably dependent types
and effects. The distinctive approach is to implement new programming
and logical paradigms on top of Coq by considering the latter as a
target language for compilation.</li>
                  <li>The aim of foundational investigations is to extend the boundaries
of the Curry-Howard correspondence. It is seen both as providing foundations
for programming languages and logic, and as a purveyor of techniques
essential to the development of proof assistants. Under this perspective,
the development of proof assistants is seen as a full-fledged experiment
using the correspondence in every aspect: programming languages, type
theory, proof theory, rewriting and algebra.</li>
                </simplelist>
              </presentation>
  <fondements id="GALLINETTE-RA-2024-cid3">
                <bodyTitle id="GALLINETTE-RA-2024_label_gallinette-research">Research program</bodyTitle>
                <subsection id="GALLINETTE-RA-2024-uid3" level="1">
                  <bodyTitle id="GALLINETTE-RA-2024_label_fondements-context">Scientific Context</bodyTitle>
                  <p>Software quality is a requirement that is becoming more and more prevalent,
by now far exceeding the traditional scope of embedded systems. The
development of tools to construct software that respects a given specification
is a major challenge in computer science. <hi rend="it">Proof assistants</hi>
such as Coq <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_Coq-manual">36</ref> provide a formal method whose central
innovation is to produce <hi rend="it">certified programs</hi> by transforming
the very activity of programming. Programming and proving are merged
into a single development activity, informed by an elegant but rigid
mathematical theory inspired by the correspondence between programming,
logic and algebra: the <hi rend="it">Curry-Howard correspondence</hi>. For the
certification of programs, this approach has shown its effectiveness
in the development of important pieces of certified software such
as the C compiler of the CompCert project <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_leroy2006formal">41</ref>.
The extracted CompCert compiler is reliable and efficient, running
only 15% slower than GCC 4 at optimisation level 2 (<hi rend="tt">gcc -O2</hi>),
a level of optimisation that was considered before to be unreliable from
critical applications such as embedded systems.</p>
                  <p>Proof assistants can also be used to <hi rend="it">formalise mathematical
theories</hi>: they not only provide a means of representing mathematical
theories in a form amenable to computer processing, but their internal
logic provides a language for reasoning about such theories. In the
last decade, proof assistants have been used to verify extremely large
and complicated proofs of recent mathematical results, sometimes requiring
either intensive computations <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_Gonthier-2008-FPF">39</ref>, <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_hales_et_al_2015">40</ref>
or intricate combinations of a multitude of mathematical theories
<ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_FTdone">38</ref>. But formalised mathematics is more than just proof
checking and proof assistants can help with the organisation of mathematical
knowledge or even with the discovery of new constructions and proofs.</p>
                  <p>Unfortunately, the rigidity of the theory behind proof assistants
restricts their expressiveness both as programming languages and as
logical systems. For instance, a program extracted from Coq only uses
a purely functional subset of OCaml, leaving behind important means
of expression such as side-effects and objects. Limitations also appear
in the formalisation of advanced mathematics: proof assistants do
not cope well with classical axioms such as excluded middle and choice
which are sometimes used crucially. The fact of the matter is that
the development of proof assistants cannot be dissociated from a reflection
on the nature of programs and proofs coming from the Curry-Howard
correspondence. In the EPC Gallinette, we propose to address several
limitations of proof assistants by pushing the boundaries of this correspondence.</p>
                  <p>In the 1970's, the Curry-Howard correspondence was seen as a perfect
match between functional programs, intuitionistic logic, and Cartesian
closed categories. It received several generalisations over the decades,
and now it is more widely understood as a fertile correspondence between
computation, logic, and algebra.</p>
                  <p>Nowadays, the Curry-Howard correspondence is not perceived as a perfect
match anymore, but rather as a collection of theories meant
to explain similar structures at work in logic and
computation, underpinned by mathematical abstractions. By relaxing
the requirement of a perfect match between programs and proofs, and
instead emphasising the common foundations of both, the insights of
the Curry-Howard correspondence may be extended to domains for which
the requirements of programming and mathematics may in fact be quite
different.</p>
                  <p>Consider the following two major theories of the past decades, which
were until recently thought to be irreconcilable:</p>
                  <simplelist>
                    <li>
<hi rend="bold">(Martin-Löf) Type theory:</hi> introduced by Martin-Löf in 1971,
this formalism <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_MLTTpred">42</ref> is both a programming language and
a logical system. The central ingredient is the use of <hi rend="it">dependent
types</hi> to allow fine-grained invariants to be expressed in program
types. In 1985, Coquand and Huet developed a similar system called
the <hi rend="it">calculus of constructions</hi>, which served as logical foundation
of the first implementation of Coq. This kind of systems is still
under active development, especially with the recent advent of homotopy
type theory (HoTT) <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_hottbook">44</ref> that gives a new point of view
on types and the notion of equality in type theory.</li>
                    <li>
<hi rend="bold">The theory of effects:</hi> starting in the 1980's, Moggi  <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_Moggi89computationallambda-calculus">43</ref>
and Girard <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_Gir87">37</ref> put forward monads and co-monads as describing
various compositional notions of computation. In this theory, programs
can have side-effects (state, exceptions, input-output), logics can
be non-intuitionistic (linear, classical), and different computational
universes can interact (modal logics). Recently, the safe and automatic
management of resources has also seen a coming of age (Rust, Modern
C++) confirming the importance of linear logic for various programming
concepts. It is now understood that the characteristic feature of
the theory of effects is sensitivity to <hi rend="it">evaluation order</hi>, in
contrast with type theory which is built around the assumption that
evaluation order is irrelevant.</li>
                  </simplelist>
                  <p>We now outline a series of scientific challenges aimed at understanding
of type theory, effects, and their combination.</p>
                  <p>More precisely, three key axes of improvement have been identified:</p>
                  <simplelist>
                    <li>Making the notion of equality closer to what is usually assumed when
doing proofs on black board, with a balance between irrelevant equality
for simple structures and equality up-to equivalences for more complex
ones (Section <ref location="intern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_label_fondements-fond1">3.2</ref>). Such a notion
of equality should allow one to implement traditional model transformations
that enhance the logical power of the proof assistant using distinct
compilation phases.</li>
                    <li>Advancing the foundations of effects within the Curry-Howard approach.
The objective is to pave the way for the integration of effects in
proof assistants and to prototype the corresponding implementation.
This integration should allow for not only certified programming with
effects, but also the expression of more powerful logics (Section
<ref location="intern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_label_fondements-fond2">3.3</ref>).</li>
                    <li>Making more programming features (notably, object polymorphism) available
in proof assistants, in order to scale to practical-sized developments.
The objective is to enable programming styles closer to common practices.
One of the key challenges here is to leverage gradual typing to dependent
programming (Section <ref location="intern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_label_fondements-fond3">3.4</ref>).</li>
                  </simplelist>
                  <p>To validate the new paradigms, we propose in Section <ref location="intern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_label_fondements-fond4">3.5</ref>
three particular application fields in which members of the team already
have a strong expertise: code refactoring, constraint programming
and symbolic computation.</p>
                </subsection>
                <subsection id="GALLINETTE-RA-2024-uid9" level="1">
                  <bodyTitle id="GALLINETTE-RA-2024_label_fondements-fond1">Enhance the computational and logical power of proof assistants</bodyTitle>
                  <subsection id="GALLINETTE-RA-2024-uid10" level="2">
                    <bodyTitle>Multiverse and Sort Polymorphism</bodyTitle>
                    <p>The experience of the team on various extensions of type theory (definitional
proof irrelevant propositions, observational type theory, gradual type theory,
opetopic type theory) begs naturally the question of the integration of these
distinct flavours of type theory in a single type theory.
At a theoretical level, we will investigate type theories with multiple universe
hierarchies hosting theories with potentially incompatible principles able to express
efficiently a variety of mathematical situations.
At a practical level, we will develop a version of the Coq proof assistant with
multiple sorts, generalizing the existing situation where the sorts of types,
propositions and definitionally proof-irrelevant propositions cohabit de facto.
An important challenge in that direction is to design a sound mechanism of sort
polymorphism to factor away the constructions common to multiple sorts and
prevent the combinatorial explosion induced by a naive implementation.
A somewhat related line of research is designing an efficient decision procedure
for universe level constraints, following the work of <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_BezemC22">35</ref>.</p>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid11" level="2">
                    <bodyTitle>Extensional Equalities</bodyTitle>
                    <p>In the long quest towards a practical and extensional notion of equality,
observational type theory, first introduced by <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_mcbrideEtAl-plpv2007">34</ref>
and further developped and studied in
<ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_pujet-hal-03367052">46</ref> and <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_pujet-hal-03857705">45</ref>, represents an important milestone
that should now be implemented in practice.
We will pursue in parallel other extensionality principles to enhance the
expressivity of type theories.</p>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid12" level="2">
                    <bodyTitle>Adding Effects in Type Theory</bodyTitle>
                    <p>The investigation of extensions of CIC with side effects, in particular
that of exceptions and the addition of a case analysis operator on types, yields
important insights to give sound models of the cast calculi behind gradual
dependent types.
We plan to go beyond these relatively simple extensions and consider other
widely used side effects, for instance the addition of global state to a type
theory.
These type theories with a primitive support for effectful operations could
provide a new approach to the verification of programs exhibiting side-effects.
Extending our previous work on classical sequent calculus with
dependent types, we will study the integration of classical axioms
such as excluded middle and choice in rich type theory. One goal is to
better integrate insights of (classical) proof theory in the state of
art of type theory (or in an alternative approach thereof). We also
aim to look at concrete issues met in formalized mathematics stemming
from the classical/intuitionist divide.</p>
                  </subsection>
                </subsection>
                <subsection id="GALLINETTE-RA-2024-uid13" level="1">
                  <bodyTitle id="GALLINETTE-RA-2024_label_fondements-fond2">Tools for Improving Proof Assistants</bodyTitle>
                  <subsection id="GALLINETTE-RA-2024-uid14" level="2">
                    <bodyTitle>MetaProgramming in Coq</bodyTitle>
                    <p>The MetaCoq project currently provides bare-bones meta-programming facilities of quotation
and denotation. We plan to improve this to provide a full-feature meta-programming facility,
and explore the possibility to give strong specifications and verify our meta-programs.
A prime example of this is the development of support for verified parametricity translations
that can have many uses during formalization (elimination principles, automatic transport, etc.).</p>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid15" level="2">
                    <bodyTitle>Automatic Transport of Libraries</bodyTitle>
                    <p>We aim at pursuing the study of representation independence principles
and the implementation of corresponding tools, so as to dramatically
reduce the practical cost of library development. The mid-term
expected outcome concerns the design of refinements libraries, which
connect proof-oriented with computation-oriented data-structures, and
better transport instruments for formalized mathematics, <hi rend="it">e.g.,</hi> automating reasoning modulo structure isomorphisms.</p>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid16" level="2">
                    <bodyTitle id="GALLINETTE-RA-2024_label_subsec-logrel-coq">Logical Frameworks for Proof Assistants</bodyTitle>
                    <p>The porting of the developement of logical relations for MLTT of Abel <hi rend="it">et al.</hi> from Agda to Coq paves the may to a much more modular library. We would like to
extend this work by developping a generic framework for dependently-typed
logical relations, and use it for a wide variety of new dependent type theories.
The main goal is to establish strong metatheoretical properties: normalization,
but also suitable forms of interoperability. Ultimately, we
believe this framework could interface with the MetaCoq project.</p>
                  </subsection>
                </subsection>
                <subsection id="GALLINETTE-RA-2024-uid17" level="1">
                  <bodyTitle id="GALLINETTE-RA-2024_label_fondements-fond3">Formal Verification and Semantics of Real World Programming
Languages</bodyTitle>
                  <subsection id="GALLINETTE-RA-2024-uid18" level="2">
                    <bodyTitle>Semantic foundations of resource management in programming languages</bodyTitle>
                    <p>We will keep investigating the semantic foundations of features of
systems programming languages from a mathematical point of view. Based
on our earlier work showing a link between resources and <hi rend="it">ordered
logic</hi>, we will study resources management in the context of the
formal theory of side-effects and linearity.
Existing theorems will need to be generalized in many ways (extension
of the notions of effect and resource modalities, handling of order,
etc.). A link with linear logic will help make tighter connections
between systems programming and “linear” approaches to program
semantics (ownership, linear types, etc.). The notion of “borrowing”
will be studied from the angle of linear logic, with possible
applications to program verification. This study should also be
extended to notions of fault tolerance (exception-safety and
isolation) which might show links with modal logics.
The anticipated outcome is an understanding of advanced notions in
programming languages that better align with proven concepts from
systems programming, compared to experimental type systems originating
from pure theory, while providing clear distinctions between essential
and accidental aspects of these real-world languages. As concrete
experiments, we will keep researching ways to integrate systems
programming concepts such as resources and fault tolerance in
functional programming languages (notably OCaml and the OCaml-Rust
interface).</p>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid19" level="2">
                    <bodyTitle id="GALLINETTE-RA-2024_label_sec-inter-semant">Interactive semantics</bodyTitle>
                    <p>We will continue our work on game semantics for programming languages, with the aim of studying interoperability and compilation between languages. Indeed, these semantics are particularly well suited to studying the interaction between a program and an environment written in different languages. We believe this approach will make it possible to overcome major open problems concerning interoperability between languages equipped with abstraction properties statically enforced by parametric polymorphism, and untyped languages where such abstractions properties are enforced dynamically.
We will also continue studying the automation of reasoning on these semantics, along the lines of the CAVOC project. To do this, we want to apply abstract interpretation techniques, in particular the Abstracting Abstract Machine methodology, to automatically check accessibility properties on programs, such as unverified assertions.</p>
                    <p>As part of the CANofGAS project, we also plan to apply these interactive semantics to develop compositional cost models for programs. This would provide compositional reasoning on time and space complexity for higher-order programs.</p>
                  </subsection>
                </subsection>
                <subsection id="GALLINETTE-RA-2024-uid20" level="1">
                  <bodyTitle id="GALLINETTE-RA-2024_label_fondements-fond4">Formal Verification of Computer Assisted Certification</bodyTitle>
                  <subsection id="GALLINETTE-RA-2024-uid21" level="2">
                    <bodyTitle>Certification of the Trusted Code Base of Coq</bodyTitle>
                    <p>The MetaCoq project's Achille's heel is that it relies on an assumption
of strong normalization for the calculus: there is ongoing work in the
team on defining powerful logical relations in Coq without relying on inductive-recursion,
that gives hope that a strong-normalization model for a large fragment of MetaCoq can be constructed in the future.
The main scientific obstacle is to specify the syntactic guard/productivity condition at the heart of
termination checking in such a way that it can be reduced to an eliminator-based definition of (co-)inductive types,
which is how they are usually modelled. We anticipate difficulties with nested and indexed inductive types, which might
be currently accepted by Coq but difficult to emulate with eliminators. However, this can only lead to a better understanding
of the theory.
As part of the ReCiProg project, we also plan to establish formal links between the validation criteria derived from circular proofs and this guard condition.</p>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid22" level="2">
                    <bodyTitle id="GALLINETTE-RA-2024_label_sec-form-verif-symb">Formally Verified Symbolic Computations</bodyTitle>
                    <p>The benefits of formally verified symbolic computations is twofold: increase the trust in computer-produced mathematics and expand the automation available for users of proof assistants. The main challenge is to enable the formal verification of efficient programs, whose correctness proofs involve sophisticated mathematical ingredients rather than subtle memory or parallelism issues. This involves in particular scaling up the automatic transport of libraries, as well as the formal verification of existing imperative code from computer algebra systems (typically written in C).</p>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid23" level="2">
                    <bodyTitle>Erasure/Extraction of Certified Programs</bodyTitle>
                    <p>The MetaCoq erasure pipeline, targeting C or OCaml, provides a guarantee that the evaluation
of the compiled program gives a semantically correct result. However, in general extracted programs
are linked to larger programs of the target language, where we lose guarantees of correctness
in most non-trivial cases of interoperability. We are hence interested in developing
techniques to show interoperability results between code that
is extracted through our certified compilation pipeline and external
code, <hi rend="it">e.g.,</hi> in OCaml or C.
In <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_forster-hal-04329663">14</ref>, we developped a complete verified extraction pipeline
from Coq to OCaml. The goal for the future is to scale this work to allow more scenarios of
interoperability with effectful target programs, using a formal semantics for the target language.
In particular, we should be able to soundly interpret the primitive constructs that are already part
of Coq, which are fixed-width integers, IEE-754 floating point numbers and applicative arrays.
There is a point of synergy here with the previous goal of enabling the development of efficient,
formally verified symbolic computation.</p>
                  </subsection>
                </subsection>
              </fondements>
  <domaine id="GALLINETTE-RA-2024-cid4">
                <bodyTitle id="GALLINETTE-RA-2024_label_gallinette-domain">Application domains</bodyTitle>
                <subsection id="GALLINETTE-RA-2024-uid24" level="1">
                  <bodyTitle>Programming</bodyTitle>
                  <simplelist>
                    <li>Correct and certified software engineering through the
development and the advancement of Coq (e.g. gradualizing type
theory, MetaCoq) and practical experiments for its application.</li>
                    <li>More general contributions to programming languages:
theoretical works advancing semantic techniques (e.g. deciding
equivalence between programs, abstract syntaxes and rewriting,
models of effects and resources), and practical works for functional
programming (e.g. related to OCaml and Rust).</li>
                  </simplelist>
                </subsection>
                <subsection id="GALLINETTE-RA-2024-uid27" level="1">
                  <bodyTitle>Foundations of mathematics</bodyTitle>
                  <simplelist>
                    <li>Formalisation of mathematics</li>
                    <li>Contributions to mathematical logic: type theory (e.g. dependent
types and univalence), proof theory (e.g. constructive classical
logic), categorical logic (e.g. higher algebra, models of focusing
and linear logic)</li>
                  </simplelist>
                </subsection>
              </domaine>
  <responsability id="GALLINETTE-RA-2024-cid5">
                <bodyTitle id="GALLINETTE-RA-2024_label_GALLINETTE-responsabilities">Social and environmental responsibility</bodyTitle>
                <p>The team actively participates in open science initiatives, sharing tools and results to avoid redundant efforts, further reducing the collective computational and material costs associated with formal verification research. It spends efforts on the usability of these tools.</p>
                <p>The team promotes a socially healthy governance for the tools it develops, taking into account the voices of all stakeholders, in accordance with the principles outlined in the ACM Code of Ethics. In particular, we have been actively involved in the renaming process of the Coq proof assistant, which is now called the Rocq Prover. This renaming initiative originated from a request by the Coq user community.</p>
                <p>The research activities of the Gallinette team at Inria have a relatively low environmental footprint compared to other computationally intensive fields, as their work primarily involves theoretical development, formal proofs, and software tool design.</p>
              </responsability>
  <highlights id="GALLINETTE-RA-2024-cid6">
                <bodyTitle id="GALLINETTE-RA-2024_label_GALLINETTE-highlights">Highlights of the year</bodyTitle>
                <subsection id="GALLINETTE-RA-2024-uid30" level="1">
                  <bodyTitle id="GALLINETTE-RA-2024_label_GALLINETTE-highlights-awards">Awards</bodyTitle>
                  <simplelist>
                    <li>Distinguished paper at CPP'24 <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_adjedj-hal-04214008">19</ref>
</li>
                    <li>Distinguished paper at PLDI'24 <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_forster-hal-04329663">14</ref>
</li>
                    <li>Two distinguished papers at LICS'24 <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_kerjean-hal-04583978">24</ref>, <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_pedrot-hal-04571149">27</ref>
</li>
                  </simplelist>
                </subsection>
                <subsection id="GALLINETTE-RA-2024-uid34" level="1">
                  <bodyTitle>Organisation of international conferences</bodyTitle>
                  <simplelist>
                    <li>We have created, organised and funded <hi rend="it">Undone Computer Science</hi>, the first conference on undone science in computer science, centred on ethics and epistemology of computer science, in collaboration with Nantes Université.</li>
                  </simplelist>
                </subsection>
              </highlights>
  <logiciels id="GALLINETTE-RA-2024-cid7">
                <bodyTitle id="GALLINETTE-RA-2024_label_gallinette-softwares-platforms">New software, platforms, open data</bodyTitle>
                <subsection id="GALLINETTE-RA-2024-uid36" level="1">
                  <bodyTitle id="GALLINETTE-RA-2024_label_softwares">New software</bodyTitle>
                  <subsection id="GALLINETTE-RA-2024-uid37" level="2">
                    <bodyTitle id="GALLINETTE-RA-2024_label_bil-3351">Ltac2</bodyTitle>
                    <descriptionlist>
                      <label>Keywords:</label><li>Coq, Proof assistant</li>
                      <label>Functional Description:</label><li>
                          <p noindent="true">Ltac2 is a member of the ML family of languages, in the sense that it is an
effectful call-by-value functional language, with static typing à la
Hindley-Milner. It is commonly accepted
that ML constitutes a sweet spot in PL design, as it is relatively expressive
while not being either too lax (unlike dynamic typing) nor too strict
(unlike, say, dependent types).</p>
                          <p>The main goal of Ltac2 is to serve as a meta-language for Coq. As such, it
naturally fits in the ML lineage, just as the historical ML was designed as
the tactic language for the LCF prover. It can also be seen as a general-purpose
language, by simply forgetting about the Coq-specific features.</p>
                          <p>Sticking to a standard ML type system can be considered somewhat weak for a
meta-language designed to manipulate Coq terms. In particular, there is no
way to statically guarantee that a Coq term resulting from an Ltac2
computation will be well-typed. This is actually a design choice, motivated
by backward compatibility with Ltac1. Instead, well-typedness is deferred to
dynamic checks, allowing many primitive functions to fail whenever they are
provided with an ill-typed term.</p>
                          <p>The language is naturally effectful as it manipulates the global state of the
proof engine. This allows to think of proof-modifying primitives as effects
in a straightforward way. Semantically, proof manipulation lives in a monad,
which allows to ensure that Ltac2 satisfies the same equations as a generic ML
with unspecified effects would do, e.g. function reduction is substitution
by a value.</p>
                        </li>
                      <label>Contact:</label><li>Pierre-Marie Pedrot</li>
                    </descriptionlist>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid41" level="2">
                    <bodyTitle id="GALLINETTE-RA-2024_label_bil-3165">Equations</bodyTitle>
                    <descriptionlist>
                      <label>Keywords:</label><li>Coq, Dependent Pattern-Matching, Proof assistant, Functional programming</li>
                      <label>Scientific Description:</label><li>
                          <p noindent="true">Equations is a tool designed to help with the definition of programs in the setting of dependent type theory, as implemented in the Coq proof assistant. Equations provides a syntax for defining programs by dependent pattern-matching and well-founded recursion and compiles them down to the core type theory of Coq, using the primitive eliminators for inductive types, accessibility and equality. In addition to the definitions of programs, it also automatically derives useful reasoning principles in the form of propositional equations describing the functions, and an elimination principle for calls to this function. It realizes this using a purely definitional translation of high-level definitions to core terms, without changing the core calculus in any way, or using axioms.</p>
                          <p>The main features of Equations include:</p>
                          <p>Dependent pattern-matching in the style of Agda/Epigram, with inaccessible patterns, with and where clauses. The use of the K axiom or a proof of K is configurable, and it is able to solve unification problems without resorting to the K rule if not necessary.</p>
                          <p>Support for well-founded and mutual recursion using measure/well-foundedness annotations, even on indexed inductive types, using an automatic derivation of the subterm relation for inductive families.</p>
                          <p>Support for mutual and nested structural recursion using with and where auxilliary definitions, allowing to factor multiple uses of the same nested fixpoint definition. It proves the expected elimination principles for mutual and nested definitions.</p>
                          <p>Automatic generation of the defining equations as rewrite rules for every definition.</p>
                          <p>Automatic generation of the unfolding lemma for well-founded definitions (requiring only functional extensionality).</p>
                          <p>Automatic derivation of the graph of the function and its elimination principle. In case the automation fails to prove these principles, the user is asked to provide a proof.</p>
                          <p>A new dependent elimination tactic based on the same splitting tree compilation scheme that can advantageously replace dependent destruction and sometimes inversion as well. The as clause of dependent elimination allows to specify exactly the patterns and naming of new variables needed for an elimination.</p>
                          <p>A set of Derive commands for automatic derivation of constructions from an inductive type: its signature, no-confusion property, well-founded subterm relation and decidable equality proof, if applicable.</p>
                        </li>
                      <label>Functional Description:</label><li>
                          <p noindent="true">Equations is a function definition plugin for Coq (supporting Coq 8.18 to 8.20, with special support for the Coq-HoTT library), that allows the definition of functions by dependent pattern-matching and well-founded, mutual or nested structural recursion and compiles them into core terms. It automatically derives the clauses equations, the graph of the function and its associated elimination principle.</p>
                          <p>Equations is based on a simplification engine for the dependent equalities appearing in dependent eliminations that is also usable as a separate tactic, providing an axiom-free variant of dependent destruction.</p>
                        </li>
                      <label>Release Contributions:</label><li>
                          <p noindent="true">This is a minor update of Equations, now compatible with Coq 8.20. The main changes are fixes in the funelim tactic and simplification engine to avoid trying to simplify unrelated hypotheses (those under "block" markers). which sometimes led to slowing down the tactic.
Also includes performance improvements by @ppedrot.</p>
                          <p>See https://github.com/mattam82/Coq-Equations/releases/tag/v1.3.1-8.20 for details</p>
                        </li>
                      <label>URL:</label><li>
                          <ref xlink:href="http://mattam82.github.io/Coq-Equations/" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://­mattam82.­github.­io/­Coq-Equations/</ref>
                        </li>
                      <label>Publications:</label><li>
<ref xlink:href="https://hal.inria.fr/hal-01671777" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">hal-01671777</ref>, <ref xlink:href="https://hal.inria.fr/hal-01248807" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">hal-01248807</ref>, <ref xlink:href="https://hal.inria.fr/inria-00628862" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">inria-00628862</ref>
</li>
                      <label>Contact:</label><li>Matthieu Sozeau</li>
                      <label>Participant:</label><li>Matthieu Sozeau</li>
                    </descriptionlist>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid50" level="2">
                    <bodyTitle id="GALLINETTE-RA-2024_label_bil-2390">Math-Components</bodyTitle>
                    <descriptionlist>
                      <label>Name:</label><li>Mathematical Components library</li>
                      <label>Keywords:</label><li>Proof assistant, Coq, Formalisation</li>
                      <label>Functional Description:</label><li>The Mathematical Components library is a set of Coq libraries that cover the prerequisites for the mechanization of the proof of the Odd Order Theorem.</li>
                      <label>URL:</label><li>
                          <ref xlink:href="https://math-comp.github.io/" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://­math-comp.­github.­io/</ref>
                        </li>
                      <label>Contact:</label><li>Assia Mahboubi</li>
                      <label>Participants:</label><li>Alexey Solovyev, Andrea Asperti, Assia Mahboubi, Cyril Cohen, Enrico Tassi, Francois Garillot, Georges Gonthier, Ioana Pasca, Jeremy Avigad, Laurence Rideau, Laurent Théry, Russell O'Connor, Sidi Ould Biha, Stéphane Le Roux, Yves Bertot</li>
                    </descriptionlist>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid57" level="2">
                    <bodyTitle id="GALLINETTE-RA-2024_label_bil-3753">Math-comp-analysis</bodyTitle>
                    <descriptionlist>
                      <label>Name:</label><li>Mathematical Components Analysis</li>
                      <label>Keywords:</label><li>Proof assistant, Coq, Formalisation</li>
                      <label>Functional Description:</label><li>This library adds definitions and theorems to the Math-components library for real numbers and their mathematical structures.</li>
                      <label>Release Contributions:</label><li>First major release, several results in topology, integration, and measure theory have been added.</li>
                      <label>URL:</label><li>
                          <ref xlink:href="https://github.com/math-comp/analysis" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://­github.­com/­math-comp/­analysis</ref>
                        </li>
                      <label>Publications:</label><li>
<ref xlink:href="https://hal.inria.fr/hal-02463336" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">hal-02463336</ref>, <ref xlink:href="https://hal.inria.fr/hal-03917948" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">hal-03917948</ref>, <ref xlink:href="https://hal.inria.fr/hal-01719918" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">hal-01719918</ref>
</li>
                      <label>Contact:</label><li>Cyril Cohen</li>
                      <label>Participants:</label><li>Cyril Cohen, Georges Gonthier, Marie Kerjean, Assia Mahboubi, Damien Rouhling, Pierre Roux, Laurence Rideau, Pierre-Yves Strub, Reynald Affeldt, Laurent Théry, Yves Bertot, Zachary Stone</li>
                      <label>Partners:</label><li>Ecole Polytechnique, AIST Tsukuba, Onera</li>
                    </descriptionlist>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid67" level="2">
                    <bodyTitle id="GALLINETTE-RA-2024_label_bil-4007">MetaCoq</bodyTitle>
                    <descriptionlist>
                      <label>Keyword:</label><li>Coq</li>
                      <label>Scientific Description:</label><li>
                          <p noindent="true">The MetaCoq project aims to provide a certified meta-programming environment in Coq. It builds on Template-Coq, a plugin for Coq originally implemented by Malecha (Extensible proof engineering in intensional type theory, Harvard University, 2014), which provided a reifier for Coq terms and global declarations, as represented in the Coq kernel, as well as a denotation command. Recently, it was used in the CertiCoq certified compiler project (Anand et al., in: CoqPL, Paris, France, 2017), as its front-end language, to derive parametricity properties (Anand and Morrisett, in: CoqPL’18, Los Angeles, CA, USA, 2018). However, the syntax lacked semantics, be it typing semantics or operational semantics, which should reflect, as formal specifications in Coq, the semantics of Coq ’s type theory itself. The tool was also rather bare bones, providing only rudimentary quoting and unquoting commands. MetaCoq generalizes it to handle the entire polymorphic calculus of cumulative inductive constructions, as implemented by Coq, including the kernel’s declaration structures for definitions and inductives, and implement a monad for general manipulation of Coq’s logical environment. The MetaCoq framework allows Coq users to define many kinds of general purpose plugins, whose correctness can be readily proved in the system itself, and that can be run efficiently after extraction. Examples of implemented plugins include a parametricity translation and a certified extraction to call-by-value lambda-calculus. The meta-theory of Coq itself is verified in MetaCoq along with verified conversion, type-checking and erasure procedures providing highly trustable alternatives to the procedures in Coq's OCaml kernel. MetaCoq is hence a foundation for the development of higher-level certified tools on top of Coq's kernel.
A meta-programming and proving framework for Coq.</p>
                          <p>MetaCoq is made of 4 main components:</p>
                          <p>- The entry point of the project is the Template-Coq quoting and unquoting library for Coq which allows quotation and denotation of terms between three variants of the Coq AST: the OCaml one used by Coq's kernel, the Coq one defined in MetaCoq and the one defined by the extraction of the MetaCoq AST, allowing to extract OCaml plugins from Coq implementations.</p>
                          <p>- The PCUIC component is a full formalization of Coq's typing and reduction rules, along with proofs of important metatheoretic properties: weakening, substitution, validity, subject reduction and principality. The PCUIC calculus differs slightly from the Template-Coq one and verified translations between the two are provided.</p>
                          <p>- The checker component contains verified implementations of weak-head reduction, conversion and type inference for the PCUIC calculus, along with a verified checker for Coq theories.</p>
                          <p>- The erasure compoment contains a verified implementation of erasure/extraction from PCUIC to untyped (call-by-value) lambda calculus extended with a dummy value for erased terms.</p>
                        </li>
                      <label>Functional Description:</label><li>MetaCoq is a framework containing a formalization and verified implementation of Coq's kernel in Coq along with a verified erasure procedure. It provides tools for manipulating Coq terms and developing certified plugins (i.e. translations, compilers or tactics) in Coq.</li>
                      <label>Release Contributions:</label><li>
                          <p noindent="true">Release 1.3.2 of the MetaCoq project for Coq 8.19 - 8.20 is available both as source and through opam. See the website for a detailed overview of the project, introductory material and related articles and presentations.</p>
                          <p>The main changes in this new version w.r.t. v1.2.1 are:</p>
                          <p>A full integration of the typed erasure phase from the ConCert project in the erasure pipeline, with a complete correctness proof, by @mattam82. Use option MetaCoq Erase -typed to switch it on. It can be configured with the "live" erasure function inside Coq (see erasure_live_test.v)
Generalizations of the correctness and simulation lemmas by @yforster @mattam82 and @tabareau, showing in particular that erasure of applications of functions from firstorder types to firstorder types is compiled to applications, justifying separate compilation of functions and their arguments.
Using standardization and canonicity, we also show that erased values of programs of firstorder inductive types (non-erasable inductives types for which all constructor argument types are themselves firstorder) are in direct correspondence with their Coq counterparts, allowing sound readback of these values. In other words, evaluating the erased terms under these assumptions faithfully simulates evaluation in Coq. Based on this, CertiCoq and coq-malfunction both implement an Eval variant that reads back Coq values and can be trusted.
Support for primitive ints, floats and array literal values. Primitive operations are still treated as axioms to be realized in target languages and the correctness theorems do not apply in their presence yet.
Optional passes have been added that replicate the Coq Extraction plugin's functionality, without proof (yet):
Inlining of defined constants (e.g. Extract Inline).
Reordering of constructors (e.g. part of Extract Inductive). This allows to target different representations in target languages (typically bool in OCaml).
Unboxing of singleton unary constructors. For example, exist nat (fun x : nat =&gt; x = 1) 1 p : { x : nat | x = 1 } becomes exist 1 after typed erasure and removal of constructor parameters, which can be further unboxed to just 1.
CoFixpoints/CoInductives to Lazy/Inductives: cofixpoints and (co)-constructors get translated to fixpoints + lazy/force constructs in lambda-box, allowing efficient evaluation of coinductive terms in target languages (supported only in coq-malfunction/ocaml extraction for now).
Beta-reduction. This reduces manifest beta-redexes in the erased terms, especially useful after inlining.
The preprint "Verified Extraction from Coq to OCaml" presents the development of the compilation pipeline from Coq to Malfunction/OCaml, including the correctness proofs mentioned above.</p>
                          <p>The preprint "Correct and Complete Type Checking and Certified Erasure for Coq, in Coq" presents the development of the sound and complete type checker based on bidirectional typing, the meta-theoretical results (subject reduction, standardization, canonicity and consistency) and the verified erasure procedure of this version of MetaCoq.</p>
                          <p>MetaCoq integrates Template-Coq, a reification and denotation plugin for Coq terms and global declarations, a Template monad for metaprogramming (including the ability to extract these metaprograms to OCaml for efficiency), a formalisation of Coq's calculus PCUIC in Coq, a relatively efficient, sound and complete type checker for PCUIC, a verified type and proof erasure procedure from PCUIC to untyped lambda calculus and a quotation library. MetaCoq provides a low-level interface to develop certified plugins like translations, compilers or tactics in Coq itself.</p>
                          <p>You can install MetaCoq directly from sources or using opam install coq-metacoq.
This release will be included in an upcoming Coq Platform.</p>
                          <p>The current release includes several subpackages, which can be compiled and installed separately if desired:</p>
                          <p>the utils library contains extensions to the standard library (notably for reasoning with All/All-n type-valued predicates) (in directory utils, and as coq-metacoq-utils).
the common libraries of basic definitions for the abstract syntax trees shared by multiple languages (common, coq-metacoq-common)
the Template-Coq quoting library and plugin (template-coq / coq-metacoq-template)
a formalisation of meta-theoretical properties of PCUIC, the calculus underlying Coq (pcuic / coq-metacoq-pcuic)
a verified equivalence between Template-Coq and PCUIC typing (in directory template-pcuic and as coq-metacoq-template-pcuic)
a total verified type-checker for Coq (safechecker / coq-metacoq-safechecker), usable inside Coq.
a plugin interfacing with the extracted type-checker in OCaml, providing the MetaCoq SafeCheck &lt;term&gt; command (safechecker-plugin, coq-metacoq-safechecker-plugin)
a verified type and proof erasure function for Coq (erasure / coq-metacoq-erasure), usable inside Coq.
a plugin interfacing with the extracted erasure pipeline in OCaml, providing the MetaCoq Erase &lt;term&gt; command (erasure-plugin, coq-metacoq-erasure-plugin)
a quoting library, allowing the quotation of terms and type derivations along with associated data structures as ASTs/terms (quotation / coq-metacoq-quotation).
a set of example translations from Type Theory to Type Theory (translation/ coq-metacoq-translations).
A good place to start are the files demo.v, safechecker_test.v, erasure_test.v in the test-suite directory.</p>
                          <p>This version of MetaCoq was developed by Yannick Forster, Jason Gross, Yann Leray, Matthieu Sozeau and Nicolas Tabareau with contributions from Yishuai Li. You are welcome to contribute by opening issues and PRs. A MetaCoq Zulip stream is also available.</p>
                          <p>The MetaCoq Team</p>
                        </li>
                      <label>News of the Year:</label><li>This year's work was mostly concentrated on improving the erasure/extraction pipeline, integrating and unifying parts of the CertiCoq and coq-malfunction projects to allow producing code that is ammenable to compilation by a functional programming language compiler. The new pipeline supports the proof of new interoperability theorems, improving the formal guarantees provided by MetaCoq's extraction.</li>
                      <label>URL:</label><li>
                          <ref xlink:href="https://metacoq.github.io" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://­metacoq.­github.­io</ref>
                        </li>
                      <label>Publications:</label><li>
<ref xlink:href="https://hal.inria.fr/hal-04077552" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">hal-04077552</ref>, <ref xlink:href="https://hal.inria.fr/hal-04329663" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">hal-04329663</ref>, <ref xlink:href="https://hal.inria.fr/hal-03516619" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">hal-03516619</ref>, <ref xlink:href="https://hal.inria.fr/hal-02901011" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">hal-02901011</ref>, <ref xlink:href="https://hal.inria.fr/hal-02380196" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">hal-02380196</ref>, <ref xlink:href="https://hal.inria.fr/hal-02167423" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">hal-02167423</ref>, <ref xlink:href="https://hal.inria.fr/hal-01809681" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">hal-01809681</ref>
</li>
                      <label>Contact:</label><li>Matthieu Sozeau</li>
                      <label>Participants:</label><li>Abhishek Anand, Danil Annenkov, Meven Lennon-Bertrand, Jakob Botsch Nielsen, Simon Boulier, Cyril Cohen, Yannick Forster, Kenji Maillard, Gregory Malecha, Matthieu Sozeau, Nicolas Tabareau, Theo Winterhalter</li>
                      <label>Partners:</label><li>Concordium Blockchain Research Center, Saarland University</li>
                    </descriptionlist>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid78" level="2">
                    <bodyTitle id="GALLINETTE-RA-2024_label_bil-532">Coq</bodyTitle>
                    <descriptionlist>
                      <label>Name:</label><li>The Coq Proof Assistant</li>
                      <label>Keyword:</label><li>Proof assistant</li>
                      <label>Scientific Description:</label><li>Coq is an interactive proof assistant based on the Calculus of (Co-)Inductive Constructions, extended with universe polymorphism. This type theory features inductive and co-inductive families, an impredicative sort and a hierarchy of predicative universes, making it a very expressive logic. The calculus allows to formalize both general mathematics and computer programs, ranging from theories of finite structures to abstract algebra and categories to programming language metatheory and compiler verification. Coq is organised as a (relatively small) kernel including efficient conversion tests on which are built a set of higher-level layers: a powerful proof engine and unification algorithm, various tactics/decision procedures, a transactional document model and, at the very top an integrated development environment (IDE).</li>
                      <label>Functional Description:</label><li>Coq provides both a dependently-typed functional programming language and a logical formalism, which, altogether, support the formalisation of mathematical theories and the specification and certification of properties of programs. Coq also provides a large and extensible set of automatic or semi-automatic proof methods. Coq's programs are extractible to OCaml, Haskell, Scheme, ...</li>
                      <label>Release Contributions:</label><li>An overview of the new features and changes, along with the full list of contributors is available at https://coq.inria.fr/refman/changes.html#version-8-20 .</li>
                      <label>News of the Year:</label><li>Coq version 8.20 adds a new rewrite rule mechanism along with a few new features, a host of improvements to the virtual machine, the notation system, Ltac2 and the standard library.</li>
                      <label>URL:</label><li>
                          <ref xlink:href="http://coq.inria.fr/" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://­coq.­inria.­fr/</ref>
                        </li>
                      <label>Contact:</label><li>Matthieu Sozeau</li>
                      <label>Participants:</label><li>Yves Bertot, Frédéric Besson, Tej Chajed, Cyril Cohen, Pierre Corbineau, Pierre Courtieu, Maxime Dénès, Jim Fehrle, Julien Forest, Emilio Jesús Gallego Arias, Gaëtan Gilbert, Georges Gonthier, Benjamin Grégoire, Jason Gross, Hugo Herbelin, Vincent Laporte, Olivier Laurent, Assia Mahboubi, Kenji Maillard, Erik Martin Dorel, Guillaume Melquiond, Pierre-Marie Pedrot, Clément Pit-Claudel, Kazuhiko Sakaguchi, Vincent Semeria, Michael Soegtrop, Arnaud Spiwack, Matthieu Sozeau, Enrico Tassi, Laurent Théry, Anton Trunov, Li-Yao Xia, Theo Zimmermann</li>
                    </descriptionlist>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid88" level="2">
                    <bodyTitle id="GALLINETTE-RA-2024_label_bil-4056">memprof-limits</bodyTitle>
                    <descriptionlist>
                      <label>Keyword:</label><li>Library</li>
                      <label>Scientific Description:</label><li>
                          <p noindent="true">Memprof-limits is an implementation of per-thread global memory limits, and per-thread allocation limits à la Haskell, and CPU-bound thread cancellation, for OCaml, compatible with multiple threads.</p>
                          <p>Memprof-limits interrupts the execution by raising an asynchronous exception: an exception that can arise at almost any location in the program. It is provided with a guide on how to recover from asynchronous exceptions and other unexpected exceptions, summarising for the first time practical knowledge acquired in OCaml by the Coq proof assistant as well as in other programming languages.</p>
                          <p>Memprof-limits is probabilistic, as it is based on the statistical memory accountant memprof. It is provided with a statistical analysis that the user can rely on to have guarantees about the enforcement of limits.</p>
                        </li>
                      <label>Functional Description:</label><li>
                          <p noindent="true">Memprof-limits is an implementation of (per-thread) global memory limits, (per-thread) allocation limits, and cancellation of CPU-bound
threads, for OCaml. Memprof-limits interrupts a computation by raising an exception asynchronously and offers features to recover from them such as interrupt-safe resources.</p>
                          <p>It is provided with an extensive documentation with examples which explains what must be done to ensure one recovers from an interrupt. This documentation summarises for the first time the experience acquired in OCaml in the Coq proof assistant, as well as in other situations in other programming languages.</p>
                        </li>
                      <label>Release Contributions:</label><li>Documentation improvements</li>
                      <label>URL:</label><li>
                          <ref xlink:href="https://gitlab.com/gadmm/memprof-limits" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://­gitlab.­com/­gadmm/­memprof-limits</ref>
                        </li>
                      <label>Publication:</label><li>
                          <ref xlink:href="https://hal.inria.fr/hal-03517592" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">hal-03517592</ref>
                        </li>
                      <label>Contact:</label><li>Guillaume Munch</li>
                    </descriptionlist>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid96" level="2">
                    <bodyTitle id="GALLINETTE-RA-2024_label_bil-4321">ocaml-boxroot</bodyTitle>
                    <descriptionlist>
                      <label>Keywords:</label><li>Interoperability, Library, Ocaml, Rust</li>
                      <label>Scientific Description:</label><li>Boxroot is an implementation of roots for the OCaml GC based on concurrent allocation techniques. These roots are designed to support a calling convention to interface between Rust and OCaml code that reconciles the latter's foreign function interface with the idioms from the former.</li>
                      <label>Functional Description:</label><li>Boxroot implements fast movable roots for OCaml in C. A root is a data type which contains an OCaml value, and interfaces with the OCaml GC to ensure that this value and its transitive children are kept alive while the root exists. This can be used to write programs in other languages that interface with programs written in OCaml.</li>
                      <label>URL:</label><li>
                          <ref xlink:href="https://gitlab.com/ocaml-rust/ocaml-boxroot" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://­gitlab.­com/­ocaml-rust/­ocaml-boxroot</ref>
                        </li>
                      <label>Publication:</label><li>
                          <ref xlink:href="https://hal.inria.fr/hal-03910313" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">hal-03910313</ref>
                        </li>
                      <label>Contact:</label><li>Guillaume Munch</li>
                      <label>Participants:</label><li>Guillaume Munch, Gabriel Scherer</li>
                    </descriptionlist>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid104" level="2">
                    <bodyTitle id="GALLINETTE-RA-2024_label_bil-5047">LogRel-Coq</bodyTitle>
                    <descriptionlist>
                      <label>Keyword:</label><li>Proof assistant</li>
                      <label>Functional Description:</label><li>This Coq library develop the metatheory of Martin-Löf Type Theory with a universe and some inductive types in order to establish consistency, normalisation, canonicity and decidability of a core theory close to that of Coq.</li>
                      <label>URL:</label><li>
                          <ref xlink:href="https://github.com/CoqHott/logrel-coq" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://­github.­com/­CoqHott/­logrel-coq</ref>
                        </li>
                      <label>Publications:</label><li>
<ref xlink:href="https://hal.inria.fr/hal-04379245" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">hal-04379245</ref>, <ref xlink:href="https://hal.inria.fr/hal-04214008" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">hal-04214008</ref>, <ref xlink:href="https://hal.inria.fr/hal-04160858" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">hal-04160858</ref>
</li>
                      <label>Contact:</label><li>Kenji Maillard</li>
                      <label>Participants:</label><li>Meven Lennon-Bertrand, Loic Pujet, Pierre-Marie Pedrot, Kenji Maillard, Yannick Forster, Arthur Adjedj</li>
                    </descriptionlist>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid111" level="2">
                    <bodyTitle id="GALLINETTE-RA-2024_label_bil-5011">Trocq</bodyTitle>
                    <descriptionlist>
                      <label>Keywords:</label><li>Proof synthesis, Proof transfer, Coq, Elpi, Logic programming, Parametricity, Univalence</li>
                      <label>Functional Description:</label><li>
                          <p noindent="true">Trocq is a prototype of a modular parametricity plugin for Coq, aiming to perform proof transfer by translating the goal into an associated goal featuring the target data structures as well as a rich parametricity witness from which a function justifying the goal substitution can be extracted.</p>
                          <p>The plugin features a hierarchy of parametricity witness types, ranging from structure-less relations to a new formulation of type equivalence, gathering several pre-existing parametricity translations, including univalent parametricity and CoqEAL, in the same framework.</p>
                          <p>This modular translation performs a fine-grained analysis and generates witnesses that are rich enough to preprocess the goal yet are not always a full-blown type equivalence, allowing to perform proof transfer with the power of univalent parametricity, but trying not to pull in the univalence axiom in cases where it is not required.</p>
                          <p>The translation is implemented in Coq-Elpi and features transparent and readable code with respect to a sequent-style theoretical presentation.</p>
                        </li>
                      <label>Release Contributions:</label><li>Support for the Prop sort</li>
                      <label>URL:</label><li>
                          <ref xlink:href="https://github.com/coq-community/trocq" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">https://­github.­com/­coq-community/­trocq</ref>
                        </li>
                      <label>Publication:</label><li>
                          <ref xlink:href="https://hal.inria.fr/hal-04177913" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">hal-04177913</ref>
                        </li>
                      <label>Contact:</label><li>Cyril Cohen</li>
                      <label>Participants:</label><li>Cyril Cohen, Enzo Crance, Assia Mahboubi</li>
                      <label>Partner:</label><li>Mitsubishi Electric R&amp;D Centre Europe, France</li>
                    </descriptionlist>
                  </subsection>
                </subsection>
              </logiciels>
  <resultats id="GALLINETTE-RA-2024-cid8">
                <bodyTitle id="GALLINETTE-RA-2024_label_gallinette-results">New results</bodyTitle>
                <subsection id="GALLINETTE-RA-2024-uid120" level="1">
                  <bodyTitle>Type Theory</bodyTitle>
                  <participants><person><firstname>Martin</firstname><lastname>Baillon</lastname></person><person><firstname>Gaëtan</firstname><lastname>Gilbert</lastname></person><person><firstname>Yann</firstname><lastname>Leray</lastname></person><person><firstname>Assia</firstname><lastname>Mahboubi</lastname></person><person><firstname>Kenji</firstname><lastname>Maillard</lastname></person><person><firstname>Josselin</firstname><lastname>Poiret</lastname></person><person><firstname>Matthieu</firstname><lastname>Piquerez</lastname></person><person><firstname>Pierre-Marie</firstname><lastname>Pédrot</lastname></person><person><firstname>Matthieu</firstname><lastname>Sozeau</lastname></person><person><firstname>Nicolas</firstname><lastname>Tabareau</lastname></person></participants>
                  <p/>
                  <subsection level="2">
                    <bodyTitle>All Your Base Are Belong to Us: Sort Polymorphism for Proof Assistants</bodyTitle>
                    <p>Proof assistants based on dependent type theory, such as Coq, Lean and Agda, use different universes to classify types, typically combining a predicative hierarchy of universes for computationally-relevant types, and an impredicative universe of proof-irrelevant propositions. In general, a universe is characterized by its sort, such as Type or Prop, and its level, in the case of a predicative sort. Recent research has also highlighted the potential of introducing more sorts in the type theory of the proof assistant as a structuring means to address the coexistence of different logical or computational principles, such as univalence, exceptions, or definitional proof irrelevance. This diversity raises concrete and subtle issues from both theoretical and practical perspectives. In particular, in order to avoid duplicating definitions to inhabit all (combinations of) universes, some sort of polymorphism is needed. Universe level polymorphism is well-known and effective to deal with hierarchies, but the handling of polymorphism between sorts is currently ad hoc and limited in all major proof assistants, hampering reuse and extensibility. In <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_poiret-hal-04801739">16</ref>, we develop sort polymorphism and its metatheory, studying in particular monomorphization, large elimination, and parametricity. Sort polymorphism is a natural solution that effectively addresses the limitations of current approaches and prepares the ground for future multi-sorted type theories.</p>
                  </subsection>
                  <subsection level="2">
                    <bodyTitle>Observational Equality Meets CIC</bodyTitle>
                    <p>Equality is at the heart of dependent type theory, as it plays a fundamental role in specifications and mathematical reasoning. The standard way to handle it in mainstream proof assistants such as Agda , Lean or Coq is based on Martin-Löf’s identity type, which comes straight out of the ’70s—its elegance and simplicity have earned it a long-standing use, despite a major discrepancy with traditional mathematical formulations: it does not satisfy any extensionality principles. Recently, the work on observational equality has regained interest as a new way to encode equality in proof assistants that support a universe of definitionally proof-irrelevant propositions; however it has yet to be integrated in any major proof assistant, because it is not fully compatible with another important feature of type theory: indexed inductive types. In <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_pujet-hal-04535982">28</ref>, we propose a systematic integration of indexed inductive types with an observational equality, and show that this integration can only be completely satisfactory if the observational equality satisfies the computational rule of Martin-Löf’s identity type. The second contribution of this paper is a formal proof that this additional computation rule, although not present in previous works on observational equality, can be integrated to the system without compromising the decidability of conversion.</p>
                  </subsection>
                  <subsection level="2">
                    <bodyTitle>Engineering logical relations for MLTT in Coq</bodyTitle>
                    <p>We report in <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_adjedj-hal-04214008">19</ref> on a mechanization in the Coq proof assistant of the decidability of conversion and type-checking for Martin-Löf Type Theory (MLTT), extending a previous Agda formalization. Our development proves the decidability not only of conversion, but also of type-checking, using bidirectional derivations that are canonical for typing. Moreover, we wish to narrow the gap between the object theory we formalize (currently MLTT with Π, Σ, N and one universe) and the metatheory used to prove the normalization result, e.g., MLTT, to a mere difference of universe levels. We thus avoid induction-recursion or impredicativity, which are central in previous work. Working in Coq, we also investigate how its features, including universe polymorphism and the metaprogramming facilities provided by tactics, impact the development of the formalization compared to the development style in Agda. The development is freely accessible on GitHub.</p>
                  </subsection>
                  <subsection level="2">
                    <bodyTitle>"Upon This Quote I Will Build My Church Thesis"</bodyTitle>
                    <p>The internal Church thesis (CT) is a logical principle stating that one can associate to any function <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>f</mi><mo>:</mo><mi>ℕ</mi><mo>→</mo><mi>ℕ</mi></mrow></math></formula> a concrete code, in some Turing-complete language, that computes f. While the compatibility of CT in simpler systems has been long known, its compatibility with dependent type theory is still an open question. In <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_pedrot-hal-04571149">27</ref>, we answer this question positively. We define “MLTT”, a type theory extending MLTT with quote operators in which CT is derivable. We furthermore prove that “MLTT” is consistent, strongly normalizing and enjoys canonicity using a rather standard logical relation model. All the results in this paper have been mechanized in Coq.</p>
                  </subsection>
                  <subsection level="2">
                    <bodyTitle>Gradual Indexed Inductive Types</bodyTitle>
                    <p>Indexed inductive types are essential in dependently-typed programming languages, enabling precise and expressive specifications of data structures and properties. Recognizing that programming and proving with dependent types could benefit from the smooth integration of static and dynamic checking that gradual typing offers, recent efforts have studied gradual dependent types. Gradualizing indexed inductive types however remains mostly unexplored: the standard encodings of indexed inductive types in intensional type theory, e.g., using type-level fixpoints or subset types, break in the presence of gradual features; and previous work on gradual dependent types focus on very specific instances of indexed inductive types. In <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_malewski-hal-04681546">15</ref>, we contribute a general framework, named PUNK, specifically designed for exploring the design space of gradual indexed inductive types. PUNK is a versatile framework, enabling the exploration of the space between eager and lazy cast reduction semantics that arise from the interaction between casts and the inductive eliminator, allowing them to coexist and interoperate in a single system. Our work provides significant insights into the intersection of dependent types and gradual typing, by proposing a criteria for well-behaved gradual indexed inductive types, systematically addressing the outlined challenges of integrating these types. The contributions of this paper are a step forward in the quest for making gradual theorem proving and gradual dependently-typed programming a reality.</p>
                  </subsection>
                  <subsection level="2">
                    <bodyTitle>A Zoo of Continuity Properties in Constructive Type Theory</bodyTitle>
                    <p>Continuity principles stating that all functions are continuous play a central role in some schools of constructive mathematics. However, there are different ways to formalise the property of being continuous in constructive foundations. We analyse these continuity properties from the perspective of constructive reverse mathematics. We work in constructive type theory, which can be seen as a minimal foundation for constructive reverse mathematics. We treat continuity of functions <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>F</mi><mo>:</mo><mo>(</mo><mi>Q</mi><mo>→</mo><mi>A</mi><mo>)</mo><mo>→</mo><mi>R</mi></mrow></math></formula>, i.e. with question type <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>Q</mi></math></formula>, answer type A, and result type <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>R</mi></math></formula>. Concretely, we discuss continuity defined via moduli, making the relevant list <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>L</mi><mo>:</mo><mi>L</mi><mi>Q</mi></mrow></math></formula> of questions explicit, dialogue trees, making the question answer process explicit as inductive tree, and tree functions, making the question answer process explicit as function. We prove equivalences where possible and isolate necessary and sufficient axioms for equivalence proofs. Many of the results we discuss are already present in the works of Hancock, Pattinson, Ghani, Kawai, Fujiwara, Brede, Herbelin, Escardó, and others. Our main contribution is their formulation over a uniform foundation, the observation that no choice axioms are necessary, the generalisation to arbitrary types from natural numbers where possible, and a mechanisation in the Coq proof assistant.</p>
                  </subsection>
                </subsection>
                <subsection id="GALLINETTE-RA-2024-uid121" level="1">
                  <bodyTitle>Proof Assistants</bodyTitle>
                  <participants><person><firstname>Gaëtan</firstname><lastname>Gilbert</lastname></person><person><firstname>Yann</firstname><lastname>Leray</lastname></person><person><firstname>Assia</firstname><lastname>Mahboubi</lastname></person><person><firstname>Kenji</firstname><lastname>Maillard</lastname></person><person><firstname>Pierre-Marie</firstname><lastname>Pédrot</lastname></person><person><firstname>Matthieu</firstname><lastname>Sozeau</lastname></person><person><firstname>Nicolas</firstname><lastname>Tabareau</lastname></person></participants>
                  <p/>
                  <subsection level="2">
                    <bodyTitle>The Rewster: The Coq Proof Assistant with Rewrite Rules</bodyTitle>
                    <p>Dependently typed languages such as Coq or Agda are very convenient tools to program with strong invariants and develop mathematical proofs. However, a user might be inconvenienced by things such as the fact that n and n+0 are not considered definitionally equal, or the inability to postulate one's own constructs with computation rules such as exceptions. Coq modulo theory solves the first of the two problems by extending Coq's conversion with decision procedures, e.g., for linear integer arithmetic. Rewrite rules can be used to deal with directed equalities for natural numbers, but also to implement exceptions that compute. They were introduced in Agda a few years ago, and later extended to provide more guarantees with a modular confluence checker. We present in <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_leray-hal-04511667">25</ref> a work-in-progress extension of Coq which supports user-defined rewrite rules. While we mostly follow in the footsteps of the Agda implementation, we also have to face new issues due to the differences in the implementation and meta-theory of Coq and Agda. The most prominent one being the different treatment of universes as Coq supports cumulativity but no first-class universe levels.</p>
                  </subsection>
                  <subsection level="2">
                    <bodyTitle>Trocq: Proof Transfer for Free, With or Without Univalence</bodyTitle>
                    <p>In interactive theorem proving, a range of different representations may be available for a single mathematical concept, and some proofs may rely on several representations. Without automated support such as proof transfer, theorems available with different representations cannot be combined, without light to major manual input from the user. Tools with such a purpose exist, but in proof assistants based on dependent type theory, it still requires human effort to prove transfer, whereas it is obvious and often left implicit on paper. In <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_cohen-hal-04177913">21</ref>, <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_cohen-hal-04623207">20</ref>, we present Trocq, a new proof transfer framework, based on a generalization of the univalent parametricity translation, thanks to a new formulation of type equivalence. This translation takes care to avoid dependency on the axiom of univalence for transfers in a delimited class of statements, and may be used with relations that are not necessarily isomorphisms. We motivate and apply our framework on a set of examples designed to show that it unifies several existing proof transfer tools. The article also discusses an implementation of this translation for the Coq proof assistant, in the Coq-Elpi metalanguage.</p>
                  </subsection>
                  <subsection level="2">
                    <bodyTitle>Correct and Complete Type Checking and Certified Erasure for Coq, in Coq</bodyTitle>
                    <p>Coq is built around a well-delimited kernel that performs type checking for definitions in a variant of the Calculus of Inductive Constructions (CIC). Although the metatheory of CIC is very stable and reliable, the correctness of its implementation in Coq is less clear. Indeed, implementing an efficient type checker for CIC is a rather complex task, and many parts of the code rely on implicit invariants which can easily be broken by further evolution of the code. Therefore, on average, one critical bug has been found every year in Coq. In <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_sozeau-hal-04077552">17</ref>, <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_sozeau-hal-04407164">18</ref>, we present the first implementation of a type checker for the kernel of Coq (without the module system, template polymorphism and <formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>η</mi></math></formula>-conversion), which is proven sound and complete in Coq with respect to its formal specification. Note that because of Gödel’s second incompleteness theorem, there is no hope to prove completely the soundness of the specification of Coq inside Coq (in particular strong normalization), but it is possible to prove the correctness and completeness of the implementation assuming soundness of the specification, thus moving from a trusted code base (TCB) to a trusted theory base (TTB) paradigm. Our work is based on the MetaCoq project which provides meta-programming facilities to work with terms and declarations at the level of the kernel. We verify a relatively efficient type checker based on the specification of the typing relation of the Polymorphic, Cumulative Calculus of Inductive Constructions (PCUIC) at the basis of Coq. It is worth mentioning that during the verification process, we have found a source of incompleteness in Coq’s official type checker, which has then been fixed in Coq 8.14 thanks to our work. In addition to the kernel implementation, another essential feature of Coq is the so-called extraction mechanism: the production of executable code in functional languages from Coq definitions. We present a verified version of this subtle type and proof erasure step, therefore enabling the verified extraction of a safe type checker for Coq in the future.</p>
                  </subsection>
                </subsection>
                <subsection id="GALLINETTE-RA-2024-uid122" level="1">
                  <bodyTitle>Logical Foundations of Programming Languages</bodyTitle>
                  <participants><person><firstname>Sidney</firstname><lastname>Congard</lastname></person><person><firstname>Hamza</firstname><lastname>Jaafar</lastname></person><person><firstname>Guillhem</firstname><lastname>Jaber</lastname></person><person><firstname>Guillaume</firstname><lastname>Munch-Maccagnoni</lastname></person></participants>
                  <p/>
                  <subsection level="2">
                    <bodyTitle>Semantic foundations of resource management in programming languages</bodyTitle>
                    <p>We continued previous work establishing a formal link between
resource-management features from systems programming (C++/Rust), and
ordered (or non-commutative) logic.</p>
                    <simplelist>
                      <li>We previously showed
that there exist algorithms for clean-up functions that are
efficient in time and space for ordered algebraic datatypes. In <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_caspar-hal-04406342">29</ref>, we extend this technique by making it more modular, in order to handle abstract types, separate compilation, and unboxed types, in
order to make it suitable for code generation, as part of Jean Caspar's internship. This addresses a
long-standing conceptual problem with compiler-generated clean-up
functions causing stack overflows in deep structures.</li>
                      <li>In <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_congard-hal-04360462">30</ref>, we present a functional translation of a subset of safe Rust programs, building upon the results of Aeneas. It preserves linearity and captures a new feature, namely lifetime bounds. This is a work in progress: in particular, translation rules are not set yet.</li>
                    </simplelist>
                  </subsection>
                  <subsection level="2">
                    <bodyTitle>Designing interrupts for ML and OCaml</bodyTitle>
                    <p>This is an ongoing work to propose a sound design for asynchronous exceptions (or interrupts, in ML parlance) in the OCaml language, inspired by fault-tolerance concepts and Rust's design for exceptions, in collaboration with researchers from Jane Street.
In <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_munchmaccagnoni-hal-04860321">32</ref>, we first describe the problems of recovering from interrupts in Standard ML and OCaml, and how these language deficiencies have been worked around, notably in the implementation of proof assistants and other interactive tools.
We then aim to explain more conceptually how safe interrupt handling is possible by evolving ML exceptions. We emphasize key notions: exception-safety concepts originating from C++ and Rust's extension of Erlang's "let it fail" approach to shared mutable state. Lastly we will discuss considerations specific to the OCaml language.
This work suggests, in the spirit of structured programming, that while the ML notion of exception lacks structure, it refines into better-structured abstractions for error handling, suggested by its relevant usage by programmers.</p>
                  </subsection>
                  <subsection level="2">
                    <bodyTitle>Führmann-Hasegawa theorem</bodyTitle>
                    <p>A result by Fürhmann and by Hasegawa is important in the
type-theoretic semantics of side-effects and linearity, as it
characterises what it means to be without side-effects in the context
of classical and linear logics. It was admitted to be true, but lacked
a written proof, for lack of a conceptual approach to the result. We
proposed such a conceptual proof with Éléonore Mangel.</p>
                  </subsection>
                </subsection>
                <subsection id="GALLINETTE-RA-2024-uid125" level="1">
                  <bodyTitle>Program Certifications and Formalisation of Mathematics</bodyTitle>
                  <participants><person><firstname>Yannick</firstname><lastname>Forster</lastname></person><person><firstname>Assia</firstname><lastname>Mahboubi</lastname></person><person><firstname>Kenji</firstname><lastname>Maillard</lastname></person><person><firstname>Matthieu</firstname><lastname>Piquerez</lastname></person><person><firstname>Kazuhiko</firstname><lastname>Sakaguchi</lastname></person><person><firstname>Matthieu</firstname><lastname>Sozeau</lastname></person><person><firstname>Nicolas</firstname><lastname>Tabareau</lastname></person></participants>
                  <p/>
                  <subsection level="2">
                    <bodyTitle>A First Order Theory of Diagram Chasing</bodyTitle>
                    <p>In <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_mahboubi-hal-04266479">26</ref>, we discuss the formalization of proofs "by diagram chasing", a standard technique for proving properties in abelian categories. We discuss how the essence of diagram chases can be captured by a simple many-sorted first-order theory, and we study the models and decidability of this theory. The longer-term motivation of this work is the design of a computer-aided instrument for writing reliable proofs in homological algebra, based on interactive theorem provers.</p>
                  </subsection>
                  <subsection level="2">
                    <bodyTitle>Machine-Checked Categorical Diagrammatic Reasoning</bodyTitle>
                    <p>In <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_guillemet-hal-04471683">23</ref>, we describe a formal proof library, developed using the Coq proof assistant, designed to assist users in writing correct diagrammatic proofs, for 1-categories. This library proposes a deep-embedded, domain-specific formal language, which features dedicated proof commands to automate the synthesis, and the verification, of the technical parts often eluded in the literature.</p>
                  </subsection>
                  <subsection level="2">
                    <bodyTitle>Geometric theories for real number algebra without sign test or dependent choice axiom</bodyTitle>
                    <p>In <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_lombardi-hal-04709177">31</ref>, we have constructed a dynamical theory that is as complete as possible to describe the algebraic properties of the real number field in constructive mathematics without a dependent choice axiom.</p>
                  </subsection>
                  <subsection level="2">
                    <bodyTitle>Verified Extraction from Coq to OCaml</bodyTitle>
                    <p>One of the central claims of fame of the Coq proof assistant is extraction, i.e., the ability to obtain efficient programs in industrial programming languages such as OCaml, Haskell, or Scheme from programs written in Coq's expressive dependent type theory. Extraction is of great practical usefulness, used crucially e.g., in the CompCert project. However, for such executables obtained by extraction, the extraction process is part of the trusted code base (TCB), as are Coq's kernel and the compiler used to compile the extracted code. The extraction process contains intricate semantic transformation of programs that rely on subtle operational features of both the source and target language. Its code has also evolved since the last theoretical exposition in the seminal PhD thesis of Pierre Letouzey. Furthermore, while the exact correctness statements for the execution of extracted code are described clearly in academic literature, the interoperability with unverified code has never been investigated formally, and yet is used in virtually every project relying on extraction. In <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_forster-hal-04329663">14</ref>, we describe the development of a novel extraction pipeline from Coq to OCaml, implemented and verified in Coq itself, with a clear correctness theorem and guarantees for safe interoperability. We build our work on the MetaCoq project, which aims at decreasing the TCB of Coq's kernel by reimplementing it in Coq itself and proving it correct w.r.t. a formal specification of Coq's type theory in Coq. Since OCaml does not have a formal specification, we make use of the Malfunction project specifying the semantics of the intermediate language of the OCaml compiler. Our work fills some gaps in the literature and highlights important differences between the operational semantics of Coq programs and their extracted variants. In particular, we focus on the guarantees that can be provided for interoperability with unverified code, identify guarantees that are infeasible to provide, and raise interesting open question regarding semantic guarantees that could be provided. As central result, we prove that extracted programs of first-order data type are correct and can safely interoperate, whereas for higher-order programs already simple interoperations can lead to incorrect behaviour and even outright segfaults.</p>
                  </subsection>
                  <subsection level="2">
                    <bodyTitle>Composing Biases by Using CP to Decompose Minimal Functional Dependencies for Acquiring Complex Formulae</bodyTitle>
                    <p>Given a table with a minimal set of input columns that functionally determines an output column, we introduce in <ref location="biblio" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" xlink:href="#GALLINETTE-RA-2024_bibitem_gindullin-hal-04460576">22</ref> a method that tries to gradually decompose the corresponding minimal functional dependency (mfd) to acquire a formula expressing the output column in terms of the input columns. A first key element of the method is to create sub-problems that are easier to solve than the original formula acquisition problem, either because it learns formulae with fewer inputs parameters, or as it focuses on formulae of a particular class, such as Boolean formulae; as a result, the acquired formulae can mix different learning biases such as polynomials, conditionals or Boolean expressions. A second key feature of the method is that it can be applied recursively to find formulae that combine polynomial, conditional or Boolean subterms in a nested manner. The method was tested on data for eight families of combinatorial objects; new conjectures were found that were previously unattainable. The method often creates conjectures that combine several formulae into one with a limited number of automatically found Boolean terms.</p>
                  </subsection>
                </subsection>
              </resultats>
  <contrats id="GALLINETTE-RA-2024-cid9">
                <bodyTitle id="GALLINETTE-RA-2024_label_gallinette-contracts-grants">Bilateral contracts and grants with industry</bodyTitle>
                <subsection id="GALLINETTE-RA-2024-uid126" level="1">
                  <bodyTitle id="GALLINETTE-RA-2024_label_gallinette-contracts">Bilateral Contracts with Industry</bodyTitle>
                  <subsection level="2">
                    <bodyTitle>Contract Extension.</bodyTitle>
                    <p>The bilateral contracts listed below ended in 2023, but the associated overhead continued for an additional 12 months.</p>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid127" level="2">
                    <bodyTitle>CoqExtra</bodyTitle>
                    <participants><person><firstname>Pierre-Marie</firstname><lastname>Pédrot</lastname></person><person><firstname>Matthieu</firstname><lastname>Sozeau</lastname></person><person><firstname>Nicolas</firstname><lastname>Tabareau</lastname></person><person><firstname>Yannick</firstname><lastname>Forster</lastname></person><person><firstname>Pierre</firstname><lastname>Giraud</lastname></person><person><firstname>Kazuhiko</firstname><lastname>Sakaguchi</lastname></person></participants>
                    <p/>
                    <descriptionlist>
                      <label>Title:</label><li>A Formally Verified Extraction Mechanism using Precise Type Specifications</li>
                      <label>Duration:</label><li>2020 - 2023 (extended to 2024)</li>
                      <label>Coordinator:</label><li>Nicolas Tabareau</li>
                      <label>Partners:</label><li>
                          <simplelist>
                            <li>Inria</li>
                            <li>Nomadic Labs</li>
                          </simplelist>
                        </li>
                      <label>Inria contact:</label><li>Nicolas Tabareau</li>
                      <label>Summary:</label><li>The extraction mechanism from Coq to OCaml can be seen as a compilation phase, from a functional language with dependent types to a functional language with a weaker type system. It is very useful to be able to run and link critical pieces of code that have been certified with the rest of a software system. For instance, for Tezos, it is important to certify the Michelson language for smart contracts and then to be able to extract it to OCaml so that it interacts with the rest of the code that has been developed. Unfortunately, the current extraction mechanism of Coq suffers from two major flaws that prevent extraction from being used in complex situations—and in particular for the Michelson language. First, the extraction mechanism does not make use of new features of OCaml type system, such as Generalized Abstract Data Types (GADTs). This prevents code using indexed inductive types (Coq’s generalization of GADTs) to be extracted to code using GADTs. Therefore, in the case of Michelson, the extracted code does not correspond at all to the seminal implementation of Michelson in OCaml as it jeopardizes its type specification. The second flaw comes from the fact that extraction sometimes produces ill-typed pieces of code (even if it uses Obj.magic to cheat the type system), for instance when the arity of a function depends on some value. Therefore, the extracted program fails to type-checked in OCaml and cannot be used.</li>
                      <label>Expected Impact:</label><li>This project proposes to remedy to the situation so that the formalized Michelson implementation can be extracted to OCaml in a satisfactory and certified way. But this project is also of great interest outside Nomadic Labs as it will allow Coq users to use a better extraction mechanism and, on a longer term, it will allow OCaml developers to prove their OCaml programs using a formal semantics of (a fragment of) OCaml defined in Coq.</li>
                    </descriptionlist>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid137" level="2">
                    <bodyTitle>CIFRE PhD grant, funded by Mitsubishi Electric R&amp;D Centre Europe (MERCE)</bodyTitle>
                    <participants><person><firstname>Assia</firstname><lastname>Mahboubi</lastname></person><person><firstname>Enzo</firstname><lastname>Crance</lastname></person></participants>
                    <p/>
                    <descriptionlist>
                      <label>Title:</label><li>Automated theorem proving and dependent types: automated reasoning for interactive proof assistants</li>
                      <label>Duration:</label><li>2020 - 2023 (extended to 2024)</li>
                      <label>Coordinator:</label><li>Denis Cousineau (MERCE), Assia Mahboubi (Inria)</li>
                      <label>Partners:</label><li>
                          <simplelist>
                            <li>Inria</li>
                            <li>Mitsubishi Electric R&amp;D Centre Europe (MERCE)</li>
                          </simplelist>
                        </li>
                      <label>Inria contact:</label><li>Assia Mahboubi</li>
                      <label>Summary:</label><li>The aim of this project is to vastly improve the
automated reasoning skills of proof assistants based on dependent
type theory, and in particular of the Coq proof
assistant. Automated provers, like SAT solvers or SMT solvers, can
provide fast decision answers on large formulas, typically
quantifier-free first order statements generated by code analysis
instruments like static analyzers. Modern provers are moreover
able to produce additional data, called certificates, which
contain enough information for an a posteriori verification of
their results, e.g., using a formal proof. In this project, we
would like to use this feature to expand the automation available to
users of proof assistants. The main motivation here is thus to
increase the class of goals that can be proved formally and
automatically by the interactive proof assistant, rather than to
work on the formal verification of specific albeit large decision
problems. In this case, the central research problem is to bridge
the gap between the rich specification language of the proof
assistant, and the restricted fragment handled by the automated
prover. This project will thus investigate the design, and the
implementation, of the corresponding translation phase. This translation
transforms a logical statement possibly featuring user-defined
data structures and higher-order quantifications, into another
statement, logically stronger, that can be sent to the
automated prover. We thus aim at a triple objective: expressivity,
extensibility and efficiency. This grant is funding the PhD of
Enzo Crance.</li>
                      <label>Expected Impact:</label><li>Enhancing the automated reasoning skills of
proof assistants based on dependent type theory will be key to their
wider usage in industry. As of today, they are considered too
expensive to be used in the large outside of specific niches.</li>
                    </descriptionlist>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid147" level="2">
                    <bodyTitle>OCaml-Rust</bodyTitle>
                    <participants><person><firstname>Guillaume</firstname><lastname>Munch-Maccagnoni</lastname></person></participants>
                    <p/>
                    <descriptionlist>
                      <label>Title:</label><li>OCaml/Rust bindings</li>
                      <label>Duration:</label><li>2021-2023 (extended to 2024)</li>
                      <label>Coordinator:</label><li>Gabriel Scherer (INRIA Saclay, EPI Partout)</li>
                      <label>Participants:</label><li>
                          <simplelist>
                            <li>Guillaume Munch-Maccagnoni (INRIA Rennes, EPI Gallinette),</li>
                            <li>Jacques-Henri Jourdan (CNRS, LRI)</li>
                          </simplelist>
                        </li>
                      <label>Partners:</label><li>Inria, Nomadic Labs</li>
                      <label>Inria contact:</label><li>Gabriel Scherer</li>
                      <label>Summary:</label><li>We often want to write programs with components in several different programming languages. Interfacing two languages typically goes through low-level, unsafe interfaces. The OCaml/Rust project studies safer interfaces between OCaml and Rust.</li>
                      <label>Expected Impact:</label><li>We investigated safe low-level representations of OCaml values on the Rust side, representing GC ownership, and developed a calling convention that reconciles the OCaml FFI idioms with Rust idioms. We also developed Boxroot, a new API to register values with the OCaml GC, for use when interfacing with Rust (and other programming languages) and possibly when writing concurrent programs. This resulted in novel techniques which can benefit other pairs of languages in the future. These works are now integrated in the ocaml-rs interface between OCaml and Rust used in the industry.</li>
                    </descriptionlist>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid158" level="2">
                    <bodyTitle>CAVOC</bodyTitle>
                    <participants><person><firstname>Guilhem</firstname><lastname>Jaber</lastname></person><person><firstname>Hamza</firstname><lastname>Jaafar</lastname></person></participants>
                    <p/>
                    <descriptionlist>
                      <label>Title:</label><li>Compositional Automated Verification for OCaml</li>
                      <label>Duration:</label><li>2021-2024</li>
                      <label>Coordinator:</label><li>Guilhem Jaber</li>
                      <label>Partners:</label><li>
                          <simplelist>
                            <li>Inria</li>
                            <li>Nomadic Labs</li>
                          </simplelist>
                        </li>
                      <label>Inria contact:</label><li>Guilhem Jaber</li>
                      <label>Summary:</label><li>This project aims to develop a <hi rend="it">sound and precise static analyzer</hi> for OCaml,
that can catch large classes of bugs represented by uncaught exceptions.
It will deal with both user-defined exceptions, and built-in ones
used to represent <hi rend="it">error behaviors</hi>, like the ones triggered by <hi rend="tt">failwith, assert</hi>, or a match failure. Via “assert-failure” detection, it will thus be able to check that invariants annotated by users hold.
The analyzer will reason <hi rend="it">compositionally</hi> on programs, in order to analyze
them at the granularity of a function or of a module.
It will be <hi rend="it">sound</hi> in a strong way:
if an OCaml module is considered to be correct by the analyzer,
then one will have the guarantee that no OCaml code interacting with this module
can trigger uncaught exceptions coming from the code of this module.
In order to be <hi rend="it">precise</hi>, it will take into account the abstraction properties provided by the type system and the module system of the language: local values, abstracted definition of types,
parametric polymorphism. The goal being that most of the interactions taken into account
correspond to typeable OCaml code (that do not use unsafe features of the <hi rend="sansserif">Obj</hi> Module,
or the Foreign Function Interface to some external code).</li>
                      <label>Expected Impact:</label><li>Being modular the analyzer should be able to automatically check
the absence of bugs of a large base of code written in the considered subset of OCaml.
This subset will include most of the codebase developed by Nomadic Labs, which is an heavy user of GADT, for example to enforce subject reduction in the implementation of Michelson.
We would then be able to get a higher degree of trust in its codebase, and possibly
to find undetected bugs in it.
The impact of this project could be large for the OCaml ecosystem in general, where
automated analysis of programs to check soundness properties of the code
could be really useful
(for example for the Coq proof assistant, whose full analysis would be nonetheless too ambitious
for this project).</li>
                    </descriptionlist>
                  </subsection>
                </subsection>
              </contrats>
  <partenariat id="GALLINETTE-RA-2024-cid10">
                <bodyTitle id="GALLINETTE-RA-2024_label_gallinette-partnerships">Partnerships and cooperations</bodyTitle>
                <subsection id="GALLINETTE-RA-2024-uid168" level="1">
                  <bodyTitle>International initiatives</bodyTitle>
                  <subsection id="GALLINETTE-RA-2024-uid169" level="2">
                    <bodyTitle>Associate Teams in the framework of an Inria International Lab or in the framework of an Inria International Program</bodyTitle>
                    <subsection id="GALLINETTE-RA-2024-uid170" level="3">
                      <bodyTitle>GRAPA</bodyTitle>
                      <participants><person><firstname>Kenji</firstname><lastname>Maillard</lastname></person><person><firstname>Nicolas</firstname><lastname>Tabareau</lastname></person></participants>
                      <p/>
                      <descriptionlist>
                        <label>Title:</label><li>Gradual Proof Assistants</li>
                        <label>Duration:</label><li>2023 - 2025</li>
                        <label>Coordinator:</label><li>
                            <person><firstname>Nicolas</firstname><lastname>Tabareau</lastname></person>
                          </li>
                        <label>Partners:</label><li>Centrum Wiskunde &amp; Informatica, Universidad de Chile (Chile)</li>
                        <label>Inria contact:</label><li>
                            <person><firstname>Nicolas</firstname><lastname>Tabareau</lastname></person>
                          </li>
                        <label>Summary:</label><li>The main objective of this work is therefore to extend the reach of gradual typing to full-fledged type theories in order to support smooth certified programming in a new generation of proof assistants.</li>
                      </descriptionlist>
                    </subsection>
                  </subsection>
                </subsection>
                <subsection id="GALLINETTE-RA-2024-uid177" level="1">
                  <bodyTitle>European initiatives</bodyTitle>
                  <subsection id="GALLINETTE-RA-2024-uid178" level="2">
                    <bodyTitle>H2020 projects</bodyTitle>
                    <subsection id="GALLINETTE-RA-2024-uid179" level="3">
                      <bodyTitle>FRESCO</bodyTitle>
                      <participants><person><firstname>Martin</firstname><lastname>Baillon</lastname></person><person><firstname>Matthieu</firstname><lastname>Piquerez</lastname></person><person><firstname>Vojtech</firstname><lastname>Stepancik</lastname></person><person><firstname>Assia</firstname><lastname>Mahboubi</lastname></person><person><firstname>Tomas</firstname><lastname>Javier Vallejos Parada</lastname></person></participants>
                      <p/>
                      <p>
                        <ref xlink:href="https://dx.doi.org/10.3030/101001995" location="extern" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">FRESCO project on cordis.europa.eu</ref>
                      </p>
                      <descriptionlist>
                        <label>Title:</label><li>Fast and Reliable Symbolic Computation</li>
                        <label>Duration:</label><li>From November 1, 2021 to October 31, 2026</li>
                        <label>Partners:</label><li>
                            <simplelist>
                              <li>INSTITUT NATIONAL DE RECHERCHE EN INFORMATIQUE ET AUTOMATIQUE (INRIA), France</li>
                            </simplelist>
                          </li>
                        <label>Inria contact:</label><li>
                            <person><firstname>Assia</firstname><lastname>Mahboubi</lastname></person>
                          </li>
                        <label>Coordinator:</label><li/>
                        <label>Summary:</label><li>
                            <p noindent="true">The use of computers for formulating conjectures, but also for substantiating proof steps, pervades mathematics, even in its most abstract fields. Most computer proofs are produced by symbolic computations, using computer algebra systems. Sadly, these systems suffer from severe, intrinsic flaws, key to their amazing efficiency, but preventing any flavor of post-hoc verification.</p>
                            <p>But can computer algebra become reliable while remaining fast? Bringing a positive answer to this question represents an outstanding scientific challenge per se, which this project aims at solving.</p>
                            <p>Our starting point is that interactive theorem provers are the best tools for representing mathematics in silico. But we intend to disrupt their architecture, shaped by decades of applications in computer science, so as to dramatically enrich their programming features, while remaining compatible with their logical foundations.</p>
                            <p>We will then design a novel generation of mathematical software, based on the firm grounds of modern programming language theory. This environment will feature a new, high-level, performance-oriented programming language, devised for writing efficient and correct code easily, and for serving the frontline of research in computational mathematics. Users will have access to fast implementations, and to powerful proving technologies for verifying any component à la carte, with high productivity. Logic- and computer-based formal proofs will prevent run-time errors, and incorrect mathematical semantics.</p>
                            <p>We will maintain a close, continuous collaboration with interested high-profile mathematicians, on the verification of cutting-edge research results, today beyond the reach of formal proofs. We ambition to empower mathematical journals to install high-quality artifact evaluation, when peer-reviewing falls short of assessing computer proofs. This project will eventually impact the use of formal methods in engineering, in areas like cryptography or signal-processing.</p>
                          </li>
                      </descriptionlist>
                    </subsection>
                  </subsection>
                </subsection>
                <subsection id="GALLINETTE-RA-2024-uid187" level="1">
                  <bodyTitle>National initiatives</bodyTitle>
                  <subsection id="GALLINETTE-RA-2024-uid188" level="2">
                    <bodyTitle>NUSCAP</bodyTitle>
                    <participants><person><firstname>Enzo</firstname><lastname>Crance</lastname></person><person><firstname>Assia</firstname><lastname>Mahboubi</lastname></person></participants>
                    <p/>
                    <descriptionlist>
                      <label>Title:</label><li>Numerical Safety for Computer-Aided Proofs</li>
                      <label>Program:</label><li>ANR AAPG2020,</li>
                      <label>Type:</label><li>PRC, CES 48</li>
                      <label>Duration:</label><li>Feb 2021 - Jan 2024</li>
                      <label>Coordinator:</label><li>UMR CNRS - ENS Lyon - UCB Lyon 1 - INRIA 5668</li>
                      <label>Local Contact:</label><li>
                          <person><firstname>Assia</firstname><lastname>Mahboubi</lastname></person>
                        </li>
                      <label>Summary:</label><li>The last twenty years have seen the advent of computer-aided proofs in mathematics and this trend is getting more and more important. They request various levels of numerical safety, from fast and stable computations to formal proofs of the computations. Hovewer, the necessary tools and routines are usually ad hoc, sometimes unavailable, or inexistent. On a complementary perspective, numerical safety is also critical for complex guidance and control algorithms, in the context of increased satellite autonomy. We plan to design a whole set of theorems, algorithms and software developments, that will allow one to study a computational problem on all (or any) of the desired levels of numerical rigor. Key developments include fast and certified spectral methods and polynomial arithmetic, with subsequent formal verifications. There will be a strong feedback between the development of our tools and the applications that motivate it.</li>
                    </descriptionlist>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid196" level="2">
                    <bodyTitle>ReCiProg</bodyTitle>
                    <participants><person><firstname>Guilhem</firstname><lastname>Jaber</lastname></person></participants>
                    <p/>
                    <descriptionlist>
                      <label>Title:</label><li>Reasoning on Circular proofs for Programming</li>
                      <label>Program:</label><li>ANR AAPG2021,</li>
                      <label>Type:</label><li>PRC, CES 48</li>
                      <label>Duration:</label><li>Jan 2022 - Jan 2025</li>
                      <label>Coordinator:</label><li>UMR CNRS - IRIF - Université de Paris</li>
                      <label>Local Contact:</label><li>
                          <person><firstname>Guilhem</firstname><lastname>Jaber</lastname></person>
                        </li>
                      <label>Summary:</label><li>ReCiProg is a collaborative project (Lyon-Marseille-Nantes-Paris) aiming at extending the proofs-as-programs correspondence (also known as Curry-Howard correspondence) to recursive programs and circular proofs for logic and type systems using induction and coinduction. The project will contribute both to the necessary theoretical foundations of circular proofs and to the software development allowing to enhance the use of coinductive types and coinductive reasoning in the Coq proof assistant: such coinductive types present, in the current state of the art
serious defects that the project will aim at solving.</li>
                    </descriptionlist>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid204" level="2">
                    <bodyTitle>CANofGAS</bodyTitle>
                    <participants><person><firstname>Guilhem</firstname><lastname>Jaber</lastname></person></participants>
                    <p/>
                    <descriptionlist>
                      <label>Title:</label><li>Cost Analysis of Game Semantics</li>
                      <label>Program:</label><li>Inria Exploratory Action,</li>
                      <label>Duration:</label><li>Sep 2022 - Dec 2025</li>
                      <label>Coordinator:</label><li>Beniamino Accattoli (CR Inria, LIX, PARTOUT Team) and <person><firstname>Guilhem</firstname><lastname>Jaber</lastname></person>
 (MCF, LS2N, Gallinette Team)</li>
                      <label>Local Contact:</label><li>
                          <person><firstname>Guilhem</firstname><lastname>Jaber</lastname></person>
                        </li>
                      <label>Summary:</label><li>CANofGAS aims at capturing the time and space cost of the evaluation of higher-order programs at the semantic level. The directions we plan to explore are using the advances in reasonable cost models to develop a cost-based understanding of game semantics. In particular, we aim at modelling the efficient call-by-need evaluation scheme, at work for instance in the Haskell language and in the Coq proof assistant.</li>
                    </descriptionlist>
                  </subsection>
                </subsection>
              </partenariat>
  <diffusion id="GALLINETTE-RA-2024-cid11">
                <bodyTitle id="GALLINETTE-RA-2024_label_GALLINETTE-dissemination">Dissemination</bodyTitle>
                <participants><person><firstname>Valentin</firstname><lastname>Blot</lastname></person><person><firstname>Julien</firstname><lastname>Cohen</lastname></person><person><firstname>Rémi</firstname><lastname>Douence</lastname></person><person><firstname>Guilhem</firstname><lastname>Jaber</lastname></person><person><firstname>Assia</firstname><lastname>Mahboubi</lastname></person><person><firstname>Kenji</firstname><lastname>Maillard</lastname></person><person><firstname>Guillaume</firstname><lastname>Munch-Maccagnoni</lastname></person><person><firstname>Pierre-Marie</firstname><lastname>Pédrot</lastname></person><person><firstname>Matthieu</firstname><lastname>Sozeau</lastname></person><person><firstname>Nicolas</firstname><lastname>Tabareau</lastname></person></participants>
                <p/>
                <subsection id="GALLINETTE-RA-2024-uid211" level="1">
                  <bodyTitle id="GALLINETTE-RA-2024_label_GALLINETTE-animation">Promoting scientific activities</bodyTitle>
                  <subsection id="GALLINETTE-RA-2024-uid212" level="2">
                    <bodyTitle id="GALLINETTE-RA-2024_label_GALLINETTE-animation-eventorga">Scientific events: organisation</bodyTitle>
                    <subsection id="GALLINETTE-RA-2024-uid213" level="3">
                      <bodyTitle id="GALLINETTE-RA-2024_label_GALLINETTE-animation-eventorga-chair">General chair, scientific chair</bodyTitle>
                      <simplelist>
                        <li>
<person><firstname>Guillaume</firstname><lastname>Munch-Maccagnoni</lastname></person>
 was organising and PC co-chair of the Undone Computer Science conference 2024, held in the LS2N, Nantes from Feb. 5-7. Computer scientists were invited to submit 2-page abstract on the theme of "undone science" in computer science, in order to trigger discussion on ethics and epistemology of the field. The program committee selected 28 talk proposals, from a wide range of CS subdomains. The conference attracted around 70 participants from France, UK, Germany, Switzerland, USA, and Ireland, including around 30% of women. It is followed by a call for full papers in a special issue of <hi rend="it">Philosophia Scientiæ</hi> to be published in diamond open access in 2026 by the Laboratoire d'Histoire des Sciences et de Philosophie – Archives Henri-Poincaré.</li>
                      </simplelist>
                    </subsection>
                    <subsection id="GALLINETTE-RA-2024-uid215" level="3">
                      <bodyTitle id="GALLINETTE-RA-2024_label_GALLINETTE-animation-eventorga-comittee">Member of the organizing committees</bodyTitle>
                      <simplelist>
                        <li>
<person><firstname>Assia</firstname><lastname>Mahboubi</lastname></person>
 has served in the scientific committee of the conference Lean for the Curious Mathematician 2024 (Cirm, Marseille). <person><firstname>Assia</firstname><lastname>Mahboubi</lastname></person>
 has organized a workshop of the Fresco project in Nantes.</li>
                      </simplelist>
                    </subsection>
                    <subsection id="GALLINETTE-RA-2024-uid217" level="3">
                      <bodyTitle>Steering commitee</bodyTitle>
                      <simplelist>
                        <li>
<person><firstname>Nicolas</firstname><lastname>Tabareau</lastname></person>
 is a member of the steering committee of the ACM Certified Programs and Proofs (CPP) conference.</li>
                        <li>
<person><firstname>Assia</firstname><lastname>Mahboubi</lastname></person>
 is a member of the steering committee of the Interactive Theorem Proving (ITP) conference.</li>
                        <li>
<person><firstname>Valentin</firstname><lastname>Blot</lastname></person>
 is a member of the steering committee of the Logic In Computer Science (LICS) conference.</li>
                      </simplelist>
                    </subsection>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid221" level="2">
                    <bodyTitle id="GALLINETTE-RA-2024_label_GALLINETTE-animation-eventselect">Scientific events: selection</bodyTitle>
                    <subsection id="GALLINETTE-RA-2024-uid222" level="3">
                      <bodyTitle id="GALLINETTE-RA-2024_label_GALLINETTE-animation-eventselect-chair">Chair of conference program committees</bodyTitle>
                      <simplelist>
                        <li>
<person><firstname>Guilhem</firstname><lastname>Jaber</lastname></person>
 was PC co-chair of the HOPE'24 workshop of ICFP.</li>
                        <li>
<person><firstname>Guillaume</firstname><lastname>Munch-Maccagnoni</lastname></person>
 was PC co-chair of the Undone Computer Science conference 2024 (LS2N, Nantes).</li>
                        <li>
<person><firstname>Nicolas</firstname><lastname>Tabareau</lastname></person>
 is serving as co-chair of the ACM Certified Programs and Proofs (CPP) conference for 2025 and 2026.</li>
                      </simplelist>
                    </subsection>
                    <subsection id="GALLINETTE-RA-2024-uid226" level="3">
                      <bodyTitle id="GALLINETTE-RA-2024_label_GALLINETTE-animation-eventselect-member">Member of the conference program committees</bodyTitle>
                      <simplelist>
                        <li>
<person><firstname>Assia</firstname><lastname>Mahboubi</lastname></person>
 has served on the program committees of POPL'24, Fossacs 2025, FSCD 2025 international conferences.</li>
                        <li>
<person><firstname>Pierre-Marie</firstname><lastname>Pédrot</lastname></person>
 has served in the program committees of POPL'24.</li>
                        <li>Matthieu Sozeau has served on the program committees of the WITS 2024 workshop and the ICFP'24 conference.</li>
                        <li>
<person><firstname>Kenji</firstname><lastname>Maillard</lastname></person>
 has served in the program committee of the OOPSLA'24 and ICFP'24 conferences.</li>
                        <li>
<person><firstname>Guilhem</firstname><lastname>Jaber</lastname></person>
 has served in the program committees of POPL'24 international conference, and on the FICS'24 and GALOP'24 workshops.</li>
                        <li>
<person><firstname>Guillaume</firstname><lastname>Munch-Maccagnoni</lastname></person>
 has served in the program committees of the Onwards! Papers 2024 conference (Pasadena, California) and ML workshop 2024 (Milan, Italy).</li>
                      </simplelist>
                    </subsection>
                    <subsection id="GALLINETTE-RA-2024-uid233" level="3">
                      <bodyTitle id="GALLINETTE-RA-2024_label_GALLINETTE-animation-eventselect-review">Reviewer</bodyTitle>
                      <simplelist>
                        <li>
<person><firstname>Guilhem</firstname><lastname>Jaber</lastname></person>
 was a reviewer for LICS'24, FoSSaCS'25 and POPL'25</li>
                        <li>
<person><firstname>Kenji</firstname><lastname>Maillard</lastname></person>
 was a reviewer for POPL'24 and ESOP'24.</li>
                      </simplelist>
                    </subsection>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid236" level="2">
                    <bodyTitle id="GALLINETTE-RA-2024_label_GALLINETTE-animation-journal">Journal</bodyTitle>
                    <subsection id="GALLINETTE-RA-2024-uid237" level="3">
                      <bodyTitle id="GALLINETTE-RA-2024_label_GALLINETTE-animation-journal-board">Member of the editorial boards</bodyTitle>
                      <simplelist>
                        <li>
<person><firstname>Assia</firstname><lastname>Mahboubi</lastname></person>
 serves on the editorial boards of the Journal of Automated Reasoning, Logical Methods in Computer Science and Annals of Formalized Mathematics.</li>
                      </simplelist>
                    </subsection>
                    <subsection id="GALLINETTE-RA-2024-uid239" level="3">
                      <bodyTitle id="GALLINETTE-RA-2024_label_GALLINETTE-animation-journal-review">Reviewer - reviewing activities</bodyTitle>
                      <simplelist>
                        <li>
<person><firstname>Guilhem</firstname><lastname>Jaber</lastname></person>
 was a reviewer for LMCS.</li>
                        <li>
<person><firstname>Kenji</firstname><lastname>Maillard</lastname></person>
 was a reviewer for TOPLAS.</li>
                        <li>
<person><firstname>Guillaume</firstname><lastname>Munch-Maccagnoni</lastname></person>
 serves as co-guest editor for the special issue of Philosophia Scientiæ on undone science in computer science.</li>
                        <li>Matthieu Sozeau was a reviewer for the Journal of Automated Reasoning.</li>
                      </simplelist>
                    </subsection>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid244" level="2">
                    <bodyTitle id="GALLINETTE-RA-2024_label_GALLINETTE-animation-talks">Invited talks</bodyTitle>
                    <simplelist>
                      <li>Matthieu Sozeau has given an invited lecture at the JFLA'24 and hosted the traditional Coq Development team Session at CoqPL'24.</li>
                    </simplelist>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid246" level="2">
                    <bodyTitle id="GALLINETTE-RA-2024_label_GALLINETTE-animation-leadership">Leadership within the scientific community</bodyTitle>
                    <p><person><firstname>Assia</firstname><lastname>Mahboubi</lastname></person>
 has served in the scientific committee of the GdR Informatique Mathématique.</p>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid247" level="2">
                    <bodyTitle id="GALLINETTE-RA-2024_label_GALLINETTE-animation-admin">Research administration</bodyTitle>
                    <p><person><firstname>Assia</firstname><lastname>Mahboubi</lastname></person>
 is an elected member of the Commission d'Évaluation Inria and member of the conseil de laboratoire of the Laboratoire des Sciences du Numérique (LS2N).</p>
                  </subsection>
                </subsection>
                <subsection id="GALLINETTE-RA-2024-uid248" level="1">
                  <bodyTitle id="GALLINETTE-RA-2024_label_GALLINETTE-teaching">Teaching - Supervision - Juries</bodyTitle>
                  <subsection id="GALLINETTE-RA-2024-uid249" level="2">
                    <bodyTitle>Teaching</bodyTitle>
                    <sanspuceslist>
                      <li>Licence : <person><firstname>Julien</firstname><lastname>Cohen</lastname></person>
, Discrete Mathematics, 48h, L1 (IUT), IUT
Nantes, France</li>
                      <li>Licence : <person><firstname>Julien</firstname><lastname>Cohen</lastname></person>
, Introduction to proof assistants (Coq),
8h, L2 (PEIP : IUT/Engineering school), Polytech Nantes, France</li>
                      <li>Licence : <person><firstname>Julien</firstname><lastname>Cohen</lastname></person>
, Functional Programming (Scala), 22h, L2
(IUT), IUT Nantes, France</li>
                      <li>Master : <person><firstname>Julien</firstname><lastname>Cohen</lastname></person>
, Object oriented programming (Java), 32h,
M1 (Engineering school), Polytech Nantes, France</li>
                      <li>Master : <person><firstname>Julien</firstname><lastname>Cohen</lastname></person>
, Functional programming (OCaml), 18h, M1
(Engineering school), Polytech Nantes, France</li>
                      <li>Master : <person><firstname>Julien</firstname><lastname>Cohen</lastname></person>
, Tools for software engineering (proof
with Frama-C, test, code management), 20h, M1 (Engineering school),
Polytech Nantes, France</li>
                      <li>Licence : <person><firstname>Rémi</firstname><lastname>Douence</lastname></person>
, Object Oriented Design and
Programming, 45h, L1 (engineers), IMT-Atlantique, Nantes, France</li>
                      <li>Licence : <person><firstname>Rémi</firstname><lastname>Douence</lastname></person>
, Object Oriented Design and
Programming Project, 30h, L1 (apprenticeship), IMT-Atlantique, Nantes,
France</li>
                      <li>Master : <person><firstname>Rémi</firstname><lastname>Douence</lastname></person>
, Functional Programming with
Haskell, 45h, M1 (engineers), IMT-Atlantique, Nantes, France</li>
                      <li>Master : <person><firstname>Rémi</firstname><lastname>Douence</lastname></person>
, Functional Programming with
Haskell, 20h, M1 (apprenticeship), IMT-Atlantique, Nantes, France</li>
                      <li>Master : <person><firstname>Rémi</firstname><lastname>Douence</lastname></person>
, Formal Methods: Model checking with Alloy and from Haskell to Coq,
11h, M1 (apprenticeship), IMT-Atlantique, Nantes, France</li>
                      <li>Master : <person><firstname>Rémi</firstname><lastname>Douence</lastname></person>
, Introduction to scientific
research in computer science (Project: compilation in Java of Haskell Class Types),
45h, M2 (apprenticeship), IMT-Atlantique, Nantes, France</li>
                      <li>Licence : <person><firstname>Guilhem</firstname><lastname>Jaber</lastname></person>
, Logic for Computer Science, 60h,
L3, Nantes Université France</li>
                      <li>Licence : <person><firstname>Guilhem</firstname><lastname>Jaber</lastname></person>
, Foundations of Computer Science, 54h,
L3, Nantes Université France</li>
                      <li>Licence : <person><firstname>Guilhem</firstname><lastname>Jaber</lastname></person>
, Functional Programming, 24h,
L3, Nantes Université France</li>
                      <li>Master : <person><firstname>Guilhem</firstname><lastname>Jaber</lastname></person>
, Verification and Formal Proofs, 12h,
M1, Nantes Université, France</li>
                      <li>Master : <person><firstname>Guilhem</firstname><lastname>Jaber</lastname></person>
, Modelisation and Verification of Concurrent Systems, 12h,
M2, Nantes Université, France</li>
                    </sanspuceslist>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid267" level="2">
                    <bodyTitle id="GALLINETTE-RA-2024_label_GALLINETTE-teaching-supervision">Supervision</bodyTitle>
                    <simplelist>
                      <li>PhD in progess: Sidney Congard, Towards a linear functional translation for borrowing, IMT-A, advisors: <person><firstname>Rémi</firstname><lastname>Douence</lastname></person>
 and <person><firstname>Guillaume</firstname><lastname>Munch-Maccagnoni</lastname></person>
.</li>
                      <li>Enzo Crance has defended his PhD on December 2023, Méta-programmation pour le transfert de preuve en théorie des types dépendants , Nantes Université, advisors: Denis Cousineau and Assia Mahboubi.</li>
                      <li>PhD in progress: Thomas Lamiaux, Certifying the guard condition of Rocq, Nantes Université, advisors: Yannick Forster, Matthieu Sozeau and <person><firstname>Nicolas</firstname><lastname>Tabareau</lastname></person>
.</li>
                      <li>PhD in progress: Josselin Poiret, A Multiverse Type Theory, Nantes Université, advisors: <person><firstname>Kenji</firstname><lastname>Maillard</lastname></person>
 and <person><firstname>Nicolas</firstname><lastname>Tabareau</lastname></person>
.</li>
                      <li>PhD in progress: Yann Leray, Putting SProp at work, Nantes Université, advisors: Matthieu Sozeau and <person><firstname>Nicolas</firstname><lastname>Tabareau</lastname></person>
.</li>
                      <li>PhD in progress: Peio Borthelle, Operational Game Semantics in Type Theory, advisor: Tom Hirschowitz, <person><firstname>Guilhem</firstname><lastname>Jaber</lastname></person>
, Yannick Zakowski</li>
                      <li>PhD in progress: Hamza Jaafar, Sémantique des jeux opérationnelle pour les effets algébriques génératifs, Nantes Université, advisors:
<person><firstname>Guilhem</firstname><lastname>Jaber</lastname></person>
 and <person><firstname>Nicolas</firstname><lastname>Tabareau</lastname></person>
.</li>
                      <li>PhD in progress: Tomas Vallejos Parada, Fast and reliable arithmetic for interactive theorem proving, Nantes Université, advisor: <person><firstname>Assia</firstname><lastname>Mahboubi</lastname></person>
.</li>
                      <li>PhD in progress: Vojtěch Štěpančík, Algebraic structures in dependent types theory, Nantes Univrsité, advisor: Cyril Cohen and <person><firstname>Assia</firstname><lastname>Mahboubi</lastname></person>
.</li>
                      <li>PhD in progress: Éléonore Mangel, Constructive classical logic and dependent types with effects, Université Paris Cité, advisors: Paul-André Melliès and <person><firstname>Guillaume</firstname><lastname>Munch-Maccagnoni</lastname></person>
.</li>
                    </simplelist>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid278" level="2">
                    <bodyTitle id="GALLINETTE-RA-2024_label_GALLINETTE-teaching-juries">Juries</bodyTitle>
                    <simplelist>
                      <li>
<person><firstname>Nicolas</firstname><lastname>Tabareau</lastname></person>
 has served in the PhD jury of Louise Dubois de Prisque, Université Paris-Saclay.</li>
                      <li>
<person><firstname>Assia</firstname><lastname>Mahboubi</lastname></person>
 has served in the PhD jury of Clément Blaudeau (Université Paris Cité) and Max Zeuner (Stockholm University) and has served as reviewer for the PhD thesis of Kiran Gopinathan (National University of Singapore).</li>
                      <li>Matthieu Sozeau has served in the PhD jury of Nathanaëlle Courant (Université Paris Cité) and was a reader of Joomy Korkut's PhD (Princeton University).</li>
                    </simplelist>
                  </subsection>
                </subsection>
                <subsection id="GALLINETTE-RA-2024-uid282" level="1">
                  <bodyTitle id="GALLINETTE-RA-2024_label_GALLINETTE-popularization">Popularization</bodyTitle>
                  <subsection id="GALLINETTE-RA-2024-uid283" level="2">
                    <bodyTitle id="GALLINETTE-RA-2024_label_GALLINETTE-popularization-articles">Productions (articles, videos, podcasts, serious games, ...)</bodyTitle>
                    <p><person><firstname>Assia</firstname><lastname>Mahboubi</lastname></person>
 has contributed a chapter to the book "Le calcul à découvert" (Cnrs éditions).</p>
                  </subsection>
                  <subsection id="GALLINETTE-RA-2024-uid284" level="2">
                    <bodyTitle id="GALLINETTE-RA-2024_label_GALLINETTE-popularization-education">Education</bodyTitle>
                    <p><person><firstname>Assia</firstname><lastname>Mahboubi</lastname></person>
 co-coordinates a joint computer science and mathematics departments program for Art+Science actions in schools at Nantes Université.</p>
                  </subsection>
                </subsection>
              </diffusion>
  <biblio html="bibliography" numero="12" titre="Scientific production" id="GALLINETTE-RA-2024-cid12">
    <biblStruct type="inproceedings" id="GALLINETTE-RA-2024_bibitem_m-affeldt-hal-02463336" rend="refer" subsection="Major publications" n="refer:">
      <analytic>
        <title level="a">Competing inheritance paths in dependent type theory: a case study in functional analysis</title>
        <author>
          <persName>
            <initial>R.</initial>
            <foreName>Reynald</foreName>
            <surname>Affeldt</surname>
          </persName>
          <persName>
            <initial>C.</initial>
            <foreName>Cyril</foreName>
            <surname>Cohen</surname>
          </persName>
          <persName>
            <initial>M.</initial>
            <foreName>Marie</foreName>
            <surname>Kerjean</surname>
          </persName>
          <persName>
            <initial>A.</initial>
            <foreName>Assia</foreName>
            <surname>Mahboubi</surname>
          </persName>
          <persName>
            <initial>D.</initial>
            <foreName>Damien</foreName>
            <surname>Rouhling</surname>
          </persName>
          <persName>
            <initial>K.</initial>
            <foreName>Kazuhiko</foreName>
            <surname>Sakaguchi</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <imprint>
          <date>June 2020</date>
          <biblScope type="pages">1-19</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="article" id="GALLINETTE-RA-2024_bibitem_m-birkedal-hal-03510684" rend="refer" subsection="Major publications" n="refer:">
      <analytic>
        <title level="a">Theorems for free from separation logic specifications</title>
        <author>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=763044">
            <initial>L.</initial>
            <foreName>Lars</foreName>
            <surname>Birkedal</surname>
          </persName>
          <persName>
            <initial>T.</initial>
            <foreName>Thomas</foreName>
            <surname>Dinsdale-Young</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=819367">
            <initial>A.</initial>
            <foreName>Armaël</foreName>
            <surname>Guéneau</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=763312">
            <initial>G.</initial>
            <foreName>Guilhem</foreName>
            <surname>Jaber</surname>
          </persName>
          <persName>
            <initial>K.</initial>
            <foreName>Kasper</foreName>
            <surname>Svendsen</surname>
          </persName>
          <persName>
            <initial>N.</initial>
            <foreName>Nikos</foreName>
            <surname>Tzevelekos</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Proceedings of the ACM on Programming Languages</title>
        <imprint>
          <date>August 2021</date>
          <biblScope type="volume">5</biblScope>
          <biblScope type="number">ICFP</biblScope>
          <biblScope type="pages">1-29</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="article" id="GALLINETTE-RA-2024_bibitem_m-cockx-hal-02901011" rend="refer" subsection="Major publications" n="refer:">
      <analytic>
        <title level="a">The Taming of the Rew: A Type Theory with Computational Assumptions</title>
        <author>
          <persName>
            <initial>J.</initial>
            <foreName>Jesper</foreName>
            <surname>Cockx</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=3252">
            <initial>N.</initial>
            <foreName>Nicolas</foreName>
            <surname>Tabareau</surname>
          </persName>
          <persName>
            <initial>T.</initial>
            <foreName>Théo</foreName>
            <surname>Winterhalter</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Proceedings of the ACM on Programming Languages</title>
        <imprint>
          <date>2021</date>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="inproceedings" id="GALLINETTE-RA-2024_bibitem_m-finster-hal-03133144" rend="refer" subsection="Major publications" n="refer:">
      <analytic>
        <title level="a">Types are internal infinity-groupoids</title>
        <author>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1039814">
            <initial>E.</initial>
            <foreName>Eric</foreName>
            <surname>Finster</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1090335">
            <initial>A.</initial>
            <foreName>Antoine</foreName>
            <surname>Allioux</surname>
          </persName>
          <persName>
            <initial>M.</initial>
            <foreName>Matthieu</foreName>
            <surname>Sozeau</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">LICS 2021</title>
        <loc>Rome, Italy</loc>
        <imprint>
          <date>June 2021</date>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="article" id="GALLINETTE-RA-2024_bibitem_m-forster-hal-04329663" rend="refer" subsection="Major publications" n="refer:">
      <analytic>
        <title level="a">Verified Extraction from Coq to OCaml</title>
        <author>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1199388">
            <initial>Y.</initial>
            <foreName>Yannick</foreName>
            <surname>Forster</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=911472">
            <initial>M.</initial>
            <foreName>Matthieu</foreName>
            <surname>Sozeau</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=3252">
            <initial>N.</initial>
            <foreName>Nicolas</foreName>
            <surname>Tabareau</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Proceedings of the ACM on Programming Languages</title>
        <imprint>
          <date>June 2024</date>
          <biblScope type="volume">8</biblScope>
          <biblScope type="number">PLDI</biblScope>
          <biblScope type="pages">52-75</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="article" id="GALLINETTE-RA-2024_bibitem_m-jaber-hal-02388621" rend="refer" subsection="Major publications" n="refer:">
      <analytic>
        <title level="a">SyTeCi: Automating Contextual Equivalence for Higher-Order Programs with References</title>
        <author>
          <persName>
            <initial>G.</initial>
            <foreName>Guilhem</foreName>
            <surname>Jaber</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Proceedings of the ACM on Programming Languages</title>
        <imprint>
          <date>2020</date>
          <biblScope type="volume">28</biblScope>
          <biblScope type="pages">1-28</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="inproceedings" id="GALLINETTE-RA-2024_bibitem_m-pedrot-hal-02548315" rend="refer" subsection="Major publications" n="refer:">
      <analytic>
        <title level="a">Russian Constructivism in a Prefascist Theory</title>
        <author>
          <persName>
            <initial>P.-M.</initial>
            <foreName>Pierre-Marie</foreName>
            <surname>Pédrot</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <imprint>
          <date>July 2020</date>
          <publisher>IEEE</publisher>
          <biblScope type="pages">1-14</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="article" id="GALLINETTE-RA-2024_bibitem_m-pedrot-hal-02383109" rend="refer" subsection="Major publications" n="refer:">
      <analytic>
        <title level="a">The Fire Triangle</title>
        <author>
          <persName>
            <initial>P.-M.</initial>
            <foreName>Pierre-Marie</foreName>
            <surname>Pédrot</surname>
          </persName>
          <persName>
            <initial>N.</initial>
            <foreName>Nicolas</foreName>
            <surname>Tabareau</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Proceedings of the ACM on Programming Languages</title>
        <imprint>
          <date>January 2020</date>
          <biblScope type="pages">1-28</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="inproceedings" id="GALLINETTE-RA-2024_bibitem_m-pujet-hal-03857705" rend="refer" subsection="Major publications" n="refer:">
      <analytic>
        <title level="a">Impredicative Observational Equality</title>
        <author>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1059909">
            <initial>L.</initial>
            <foreName>Loïc</foreName>
            <surname>Pujet</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=3252">
            <initial>N.</initial>
            <foreName>Nicolas</foreName>
            <surname>Tabareau</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="s">Proceedings of the ACM on programming languages</title>
        <title level="m">POPL 2023 - 50th ACM SIGPLAN Symposium on Principles of Programming Languages</title>
        <loc>Boston, United States</loc>
        <imprint>
          <date>January 2023</date>
          <biblScope type="volume">7</biblScope>
          <biblScope type="pages">74</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="inproceedings" id="GALLINETTE-RA-2024_bibitem_m-pujet-hal-03367052" rend="refer" subsection="Major publications" n="refer:">
      <analytic>
        <title level="a">Observational Equality: Now For Good</title>
        <author>
          <persName>
            <initial>L.</initial>
            <foreName>Loïc</foreName>
            <surname>Pujet</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=3252">
            <initial>N.</initial>
            <foreName>Nicolas</foreName>
            <surname>Tabareau</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">POPL</title>
        <loc>Philadelphie, United States</loc>
        <imprint>
          <date>January 2022</date>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="article" id="GALLINETTE-RA-2024_bibitem_m-sozeau-hal-02380196" rend="refer" subsection="Major publications" n="refer:">
      <analytic>
        <title level="a">Coq Coq Correct! Verification of Type Checking and Erasure for Coq, in Coq</title>
        <author>
          <persName>
            <initial>M.</initial>
            <foreName>Matthieu</foreName>
            <surname>Sozeau</surname>
          </persName>
          <persName>
            <initial>S.</initial>
            <foreName>Simon</foreName>
            <surname>Boulier</surname>
          </persName>
          <persName>
            <initial>Y.</initial>
            <foreName>Yannick</foreName>
            <surname>Forster</surname>
          </persName>
          <persName>
            <initial>N.</initial>
            <foreName>Nicolas</foreName>
            <surname>Tabareau</surname>
          </persName>
          <persName>
            <initial>T.</initial>
            <foreName>Théo</foreName>
            <surname>Winterhalter</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Proceedings of the ACM on Programming Languages</title>
        <imprint>
          <date>January 2020</date>
          <biblScope type="pages">1-28</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="article" id="GALLINETTE-RA-2024_bibitem_m-sozeau-hal-04077552" rend="refer" subsection="Major publications" n="refer:">
      <analytic>
        <title level="a">Correct and Complete Type Checking and Certified Erasure for Coq, in Coq</title>
        <author>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=911472">
            <initial>M.</initial>
            <foreName>Matthieu</foreName>
            <surname>Sozeau</surname>
          </persName>
          <persName>
            <initial>Y.</initial>
            <foreName>Yannick</foreName>
            <surname>Forster</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=736340">
            <initial>M.</initial>
            <foreName>Meven</foreName>
            <surname>Lennon-Bertrand</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1249376">
            <initial>J. B.</initial>
            <foreName>Jakob Botsch</foreName>
            <surname>Nielsen</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=3252">
            <initial>N.</initial>
            <foreName>Nicolas</foreName>
            <surname>Tabareau</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1219665">
            <initial>T.</initial>
            <foreName>Théo</foreName>
            <surname>Winterhalter</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Journal of the ACM (JACM)</title>
        <imprint>
          <date>November 2024</date>
          <biblScope type="pages">1-76</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="article" id="GALLINETTE-RA-2024_bibitem_m-tabareau-hal-03120580" rend="refer" subsection="Major publications" n="refer:">
      <analytic>
        <title level="a">The Marriage of Univalence and Parametricity</title>
        <author>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=3252">
            <initial>N.</initial>
            <foreName>Nicolas</foreName>
            <surname>Tabareau</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=15892">
            <initial>É.</initial>
            <foreName>Éric</foreName>
            <surname>Tanter</surname>
          </persName>
          <persName>
            <initial>M.</initial>
            <foreName>Matthieu</foreName>
            <surname>Sozeau</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Journal of the ACM (JACM)</title>
        <imprint>
          <date>January 2021</date>
          <biblScope type="volume">68</biblScope>
          <biblScope type="number">1</biblScope>
          <biblScope type="pages">1-44</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="article" id="GALLINETTE-RA-2024_bibitem_forster-hal-04329663" rend="refer" subsection="Publications of the year" subsubsection="International journals" n="refer:">
      <analytic>
        <title level="a">Verified Extraction from Coq to OCaml</title>
        <author>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1199388">
            <initial>Y.</initial>
            <foreName>Yannick</foreName>
            <surname>Forster</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=911472">
            <initial>M.</initial>
            <foreName>Matthieu</foreName>
            <surname>Sozeau</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=3252">
            <initial>N.</initial>
            <foreName>Nicolas</foreName>
            <surname>Tabareau</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Proceedings of the ACM on Programming Languages</title>
        <imprint>
          <date>June 2024</date>
          <biblScope type="volume">8</biblScope>
          <biblScope type="number">PLDI</biblScope>
          <biblScope type="pages">52-75</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="article" id="GALLINETTE-RA-2024_bibitem_malewski-hal-04681546" rend="refer" subsection="Publications of the year" subsubsection="International journals" n="refer:">
      <analytic>
        <title level="a">Gradual Indexed Inductive Types</title>
        <author>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1410587">
            <initial>M.</initial>
            <foreName>Mara</foreName>
            <surname>Malewski</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1150457">
            <initial>K.</initial>
            <foreName>Kenji</foreName>
            <surname>Maillard</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=3252">
            <initial>N.</initial>
            <foreName>Nicolas</foreName>
            <surname>Tabareau</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=15892">
            <initial>É.</initial>
            <foreName>Éric</foreName>
            <surname>Tanter</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Proceedings of the ACM on Programming Languages</title>
        <imprint>
          <date>August 2024</date>
          <biblScope type="volume">8</biblScope>
          <biblScope type="number">ICFP</biblScope>
          <biblScope type="pages">544-572</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="article" id="GALLINETTE-RA-2024_bibitem_poiret-hal-04801739" rend="refer" subsection="Publications of the year" subsubsection="International journals" n="refer:">
      <analytic>
        <title level="a">All Your Base Are Belong to Us: Sort Polymorphism for Proof Assistants</title>
        <author>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1447028">
            <initial>J.</initial>
            <foreName>Josselin</foreName>
            <surname>Poiret</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=17361">
            <initial>G.</initial>
            <foreName>Gaëtan</foreName>
            <surname>Gilbert</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1150457">
            <initial>K.</initial>
            <foreName>Kenji</foreName>
            <surname>Maillard</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=6615">
            <initial>P.-M.</initial>
            <foreName>Pierre-Marie</foreName>
            <surname>Pédrot</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=911472">
            <initial>M.</initial>
            <foreName>Matthieu</foreName>
            <surname>Sozeau</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=3252">
            <initial>N.</initial>
            <foreName>Nicolas</foreName>
            <surname>Tabareau</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=15892">
            <initial>É.</initial>
            <foreName>Éric</foreName>
            <surname>Tanter</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Proceedings of the ACM on Programming Languages</title>
        <imprint>
          <date>January 2025</date>
          <biblScope type="volume">9</biblScope>
          <biblScope type="number">POPL</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="article" id="GALLINETTE-RA-2024_bibitem_sozeau-hal-04077552" rend="refer" subsection="Publications of the year" subsubsection="International journals" n="refer:">
      <analytic>
        <title level="a">Correct and Complete Type Checking and Certified Erasure for Coq, in Coq</title>
        <author>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=911472">
            <initial>M.</initial>
            <foreName>Matthieu</foreName>
            <surname>Sozeau</surname>
          </persName>
          <persName>
            <initial>Y.</initial>
            <foreName>Yannick</foreName>
            <surname>Forster</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=736340">
            <initial>M.</initial>
            <foreName>Meven</foreName>
            <surname>Lennon-Bertrand</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1249376">
            <initial>J. B.</initial>
            <foreName>Jakob Botsch</foreName>
            <surname>Nielsen</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=3252">
            <initial>N.</initial>
            <foreName>Nicolas</foreName>
            <surname>Tabareau</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1219665">
            <initial>T.</initial>
            <foreName>Théo</foreName>
            <surname>Winterhalter</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Journal of the ACM (JACM)</title>
        <imprint>
          <date>November 2024</date>
          <biblScope type="pages">1-76</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="inproceedings" id="GALLINETTE-RA-2024_bibitem_sozeau-hal-04407164" rend="refer" subsection="Publications of the year" subsubsection="Invited conferences" n="refer:">
      <analytic>
        <title level="a">MetaCoq : de la métaprogrammation à l'extraction certifiée pour Coq</title>
        <author>
          <persName>
            <initial>M.</initial>
            <foreName>Matthieu</foreName>
            <surname>Sozeau</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">35es Journées Francophones des Langages Applicatifs (JFLA 2024)</title>
        <loc>Saint-Jacut-de-la-Mer, France</loc>
        <imprint>
          <date>2024</date>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="inproceedings" id="GALLINETTE-RA-2024_bibitem_adjedj-hal-04214008" rend="refer" subsection="Publications of the year" subsubsection="International peer-reviewed conferences" n="refer:">
      <analytic>
        <title level="a">Martin-Löf à la Coq</title>
        <author>
          <persName>
            <initial>A.</initial>
            <foreName>Arthur</foreName>
            <surname>Adjedj</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=736340">
            <initial>M.</initial>
            <foreName>Meven</foreName>
            <surname>Lennon-Bertrand</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1150457">
            <initial>K.</initial>
            <foreName>Kenji</foreName>
            <surname>Maillard</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=6615">
            <initial>P.-M.</initial>
            <foreName>Pierre-Marie</foreName>
            <surname>Pédrot</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1059909">
            <initial>L.</initial>
            <foreName>Loïc</foreName>
            <surname>Pujet</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">CPP '24: 13th ACM SIGPLAN International Conference on Certified Programs and Proofs</title>
        <loc>London UK, United Kingdom</loc>
        <imprint>
          <date>January 2024</date>
          <publisher>ACM; ACM</publisher>
          <biblScope type="pages">230-245</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="inproceedings" id="GALLINETTE-RA-2024_bibitem_cohen-hal-04623207" rend="refer" subsection="Publications of the year" subsubsection="International peer-reviewed conferences" n="refer:">
      <analytic>
        <title level="a">Artifact Report: Trocq: Proof Transfer for Free, With or Without Univalence</title>
        <author>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=10036">
            <initial>C.</initial>
            <foreName>Cyril</foreName>
            <surname>Cohen</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1395069">
            <initial>E.</initial>
            <foreName>Enzo</foreName>
            <surname>Crance</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=833195">
            <initial>A.</initial>
            <foreName>Assia</foreName>
            <surname>Mahboubi</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="s">Programming Languages and Systems  33rd European Symposium on Programming, ESOP 2024, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2024, Luxembourg City, Luxembourg, April 6–11, 2024, Proceedings, Part I</title>
        <title level="m">ESOP 2024 - 33rd European Symposium on Programming</title>
        <loc>Luxembourg, Luxembourg</loc>
        <imprint>
          <date>April 2024</date>
          <publisher>Springer Nature Switzerland</publisher>
          <biblScope type="volume">LNCS-14576</biblScope>
          <biblScope type="pages">269-274</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="inproceedings" id="GALLINETTE-RA-2024_bibitem_cohen-hal-04177913" rend="refer" subsection="Publications of the year" subsubsection="International peer-reviewed conferences" n="refer:">
      <analytic>
        <title level="a">Trocq: Proof Transfer for Free, With or Without Univalence</title>
        <author>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=10036">
            <initial>C.</initial>
            <foreName>Cyril</foreName>
            <surname>Cohen</surname>
          </persName>
          <persName>
            <initial>E.</initial>
            <foreName>Enzo</foreName>
            <surname>Crance</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=833195">
            <initial>A.</initial>
            <foreName>Assia</foreName>
            <surname>Mahboubi</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">ESOP 2024 - 33rd European Symposium on Programming</title>
        <loc>Luxembourg, Luxembourg</loc>
        <imprint>
          <date>2024</date>
          <publisher>Springer</publisher>
          <biblScope type="number">14576</biblScope>
          <biblScope type="pages">239–268</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="inproceedings" id="GALLINETTE-RA-2024_bibitem_gindullin-hal-04460576" rend="refer" subsection="Publications of the year" subsubsection="International peer-reviewed conferences" n="refer:">
      <analytic>
        <title level="a">Composing Biases by Using CP to Decompose Minimal Functional Dependencies for Acquiring Complex Formulae</title>
        <author>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1352768">
            <initial>R.</initial>
            <foreName>Ramiz</foreName>
            <surname>Gindullin</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=8322">
            <initial>N.</initial>
            <foreName>Nicolas</foreName>
            <surname>Beldiceanu</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1352769">
            <initial>J.</initial>
            <foreName>Jovial</foreName>
            <surname>Cheukam-Ngouonou</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1373917">
            <initial>R.</initial>
            <foreName>Rémi</foreName>
            <surname>Douence</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=845231">
            <initial>C.-G.</initial>
            <foreName>Claude-Guy</foreName>
            <surname>Quimper</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">AAAI 2024 - 38th Annual AAAI Conference on Artificial Intelligence</title>
        <loc>Vancouver, Canada</loc>
        <imprint>
          <date>2024</date>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="inproceedings" id="GALLINETTE-RA-2024_bibitem_guillemet-hal-04471683" rend="refer" subsection="Publications of the year" subsubsection="International peer-reviewed conferences" n="refer:">
      <analytic>
        <title level="a">Machine-Checked Categorical Diagrammatic Reasoning</title>
        <author>
          <persName>
            <initial>B.</initial>
            <foreName>Benoît</foreName>
            <surname>Guillemet</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=833195">
            <initial>A.</initial>
            <foreName>Assia</foreName>
            <surname>Mahboubi</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1305204">
            <initial>M.</initial>
            <foreName>Matthieu</foreName>
            <surname>Piquerez</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="s">Leibniz International Proceedings in Informatics (LIPIcs)</title>
        <title level="m">9th International Conference on Formal Structures for Computation and Deduction (FSCD 2024)</title>
        <loc>Tallinn, Estonia</loc>
        <imprint>
          <date>July 2024</date>
          <biblScope type="volume">299</biblScope>
          <biblScope type="pages">692</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="inproceedings" id="GALLINETTE-RA-2024_bibitem_kerjean-hal-04583978" rend="refer" subsection="Publications of the year" subsubsection="International peer-reviewed conferences" n="refer:">
      <analytic>
        <title level="a"><formula type="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi/></math></formula> is for Dialectica</title>
        <author>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=752059">
            <initial>M.</initial>
            <foreName>Marie</foreName>
            <surname>Kerjean</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=6615">
            <initial>P.-M.</initial>
            <foreName>Pierre-Marie</foreName>
            <surname>Pédrot</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">LICS 2024 - 39th Annual ACM/IEEE Symposium on Logic in Computer Science</title>
        <loc>Tallinn, Estonia</loc>
        <imprint>
          <date>2024</date>
          <publisher>IEEE</publisher>
          <biblScope type="pages">1-13</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="inproceedings" id="GALLINETTE-RA-2024_bibitem_leray-hal-04511667" rend="refer" subsection="Publications of the year" subsubsection="International peer-reviewed conferences" n="refer:">
      <analytic>
        <title level="a">The Rewster: Type Preserving Rewrite Rules for the Coq Proof Assistant</title>
        <author>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1384454">
            <initial>Y.</initial>
            <foreName>Yann</foreName>
            <surname>Leray</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=17361">
            <initial>G.</initial>
            <foreName>Gaëtan</foreName>
            <surname>Gilbert</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=3252">
            <initial>N.</initial>
            <foreName>Nicolas</foreName>
            <surname>Tabareau</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1219665">
            <initial>T.</initial>
            <foreName>Théo</foreName>
            <surname>Winterhalter</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">International Conference on Interactive Theorem Proving  (ITP 2024)</title>
        <loc>Tbilisi, Georgia</loc>
        <imprint>
          <date>September 2024</date>
          <biblScope type="volume">15th International Conference on Interactive Theorem Proving (ITP 2024)</biblScope>
          <biblScope type="pages">18</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="inproceedings" id="GALLINETTE-RA-2024_bibitem_mahboubi-hal-04266479" rend="refer" subsection="Publications of the year" subsubsection="International peer-reviewed conferences" n="refer:">
      <analytic>
        <title level="a">A First Order Theory of Diagram Chasing</title>
        <author>
          <persName>
            <initial>A.</initial>
            <foreName>Assia</foreName>
            <surname>Mahboubi</surname>
          </persName>
          <persName>
            <initial>M.</initial>
            <foreName>Matthieu</foreName>
            <surname>Piquerez</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">CSL 2024 - 32nd EACSL Annual Conference on Computer Science Logic</title>
        <loc>Naples, Italy</loc>
        <imprint>
          <date>2024</date>
          <biblScope type="pages">1-19</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="inproceedings" id="GALLINETTE-RA-2024_bibitem_pedrot-hal-04571149" rend="refer" subsection="Publications of the year" subsubsection="International peer-reviewed conferences" n="refer:">
      <analytic>
        <title level="a">"Upon This Quote I Will Build My Church Thesis"</title>
        <author>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=6615">
            <initial>P.-M.</initial>
            <foreName>Pierre-Marie</foreName>
            <surname>Pédrot</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">LICS 2024 - 39th Annual ACM/IEEE Symposium on Logic in Computer Science</title>
        <loc>Tallin, Estonia</loc>
        <imprint>
          <date>2024</date>
          <biblScope type="pages">1-12</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="inproceedings" id="GALLINETTE-RA-2024_bibitem_pujet-hal-04535982" rend="refer" subsection="Publications of the year" subsubsection="International peer-reviewed conferences" n="refer:">
      <analytic>
        <title level="a">Observational Equality Meets CIC</title>
        <author>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1365816">
            <initial>L.</initial>
            <foreName>Loïc</foreName>
            <surname>Pujet</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=3252">
            <initial>N.</initial>
            <foreName>Nicolas</foreName>
            <surname>Tabareau</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="s">Lecture Notes in Computer Science</title>
        <title level="m">ESOP 2024 - 33rd European Symposium on Programming</title>
        <loc>Luxembourg, Luxembourg</loc>
        <imprint>
          <date>April 2024</date>
          <publisher>Springer Nature Switzerland</publisher>
          <biblScope type="volume">14576</biblScope>
          <biblScope type="pages">275-301</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="inproceedings" id="GALLINETTE-RA-2024_bibitem_caspar-hal-04406342" rend="refer" subsection="Publications of the year" subsubsection="National peer-reviewed Conferences" n="refer:">
      <analytic>
        <title level="a">Modular efficient deconstruction with typed pointer reversal</title>
        <author>
          <persName>
            <initial>J.</initial>
            <foreName>Jean</foreName>
            <surname>Caspar</surname>
          </persName>
          <persName>
            <initial>G.</initial>
            <foreName>Guillaume</foreName>
            <surname>Munch-Maccagnoni</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">35es Journées Francophones des Langages Applicatifs (JFLA 2024)</title>
        <loc>Saint-Jacut-de-la-Mer, France</loc>
        <imprint>
          <date>2024</date>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="inproceedings" id="GALLINETTE-RA-2024_bibitem_congard-hal-04360462" rend="refer" subsection="Publications of the year" subsubsection="National peer-reviewed Conferences" n="refer:">
      <analytic>
        <title level="a">Towards a linear functional translation for borrowing</title>
        <author>
          <persName>
            <initial>S.</initial>
            <foreName>Sidney</foreName>
            <surname>Congard</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">35es Journées Francophones des Langages Applicatifs (JFLA 2024)</title>
        <loc>Saint-Jacut-de-la-Mer, France</loc>
        <imprint>
          <date>2024</date>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="inproceedings" id="GALLINETTE-RA-2024_bibitem_lombardi-hal-04709177" rend="refer" subsection="Publications of the year" subsubsection="Conferences without proceedings" n="refer:">
      <analytic>
        <title level="a">Geometric theories for real number algebra without sign test or dependent choice axiom</title>
        <author>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1088083">
            <initial>H.</initial>
            <foreName>Henri</foreName>
            <surname>Lombardi</surname>
          </persName>
          <persName>
            <initial>A.</initial>
            <foreName>Assia</foreName>
            <surname>Mahboubi</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">CCC 2024 - Continuity, Computability, Constructivity From Logic to Algorithms</title>
        <loc>Nice, France</loc>
        <imprint>
          <date>2024</date>
          <biblScope type="pages">1-152</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="inproceedings" id="GALLINETTE-RA-2024_bibitem_munchmaccagnoni-hal-04860321" rend="refer" subsection="Publications of the year" subsubsection="Conferences without proceedings" n="refer:">
      <analytic>
        <title level="a">Designing interrupts for ML and OCaml</title>
        <author>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=17312">
            <initial>G.</initial>
            <foreName>Guillaume</foreName>
            <surname>Munch-Maccagnoni</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1483092">
            <initial>L.</initial>
            <foreName>Leo</foreName>
            <surname>White</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1483093">
            <initial>S.</initial>
            <foreName>Stephen</foreName>
            <surname>Dolan</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="m">ML 2024 - ACM SIGPLAN Workshop on ML Family Workshop Higher-order, Typed, Inferred, Strict</title>
        <loc>Milan, Italy</loc>
        <imprint>
          <date>2024</date>
          <publisher>ACM</publisher>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="misc" id="GALLINETTE-RA-2024_bibitem_baillon-hal-04908282" rend="refer" subsection="Publications of the year" subsubsection="Reports &amp; preprints" n="refer:">
      <analytic>
        <title level="a">A Zoo of Continuity Properties in Constructive Type Theory</title>
        <author>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1434445">
            <initial>M.</initial>
            <foreName>Martin</foreName>
            <surname>Baillon</surname>
          </persName>
          <persName hal_url="https://hal.archives-ouvertes.fr/search/index/?qa%5BauthIdHal_i%5D%5B%5D=1199388">
            <initial>Y.</initial>
            <foreName>Yannick</foreName>
            <surname>Forster</surname>
          </persName>
          <persName>
            <initial>A.</initial>
            <foreName>Assia</foreName>
            <surname>Mahboubi</surname>
          </persName>
          <persName>
            <initial>P.-M.</initial>
            <foreName>Pierre-Marie</foreName>
            <surname>Pédrot</surname>
          </persName>
          <persName>
            <initial>M.</initial>
            <foreName>Matthieu</foreName>
            <surname>Piquerez</surname>
          </persName>
        </author>
        <editor/>
      </analytic>
      <monogr>
        <imprint>
          <date>January 2025</date>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="inproceedings" id="GALLINETTE-RA-2024_bibitem_mcbrideEtAl-plpv2007" rend="refer" subsection="Cited publications" n="refer:">
      <analytic>
        <title level="a">Observational equality, now!</title>
        <author>
          <persName>
            <initial>T.</initial>
            <foreName>Thorsten</foreName>
            <surname>Altenkirch</surname>
          </persName>
          <persName>
            <initial>C.</initial>
            <foreName>Conor</foreName>
            <surname>McBride</surname>
          </persName>
          <persName>
            <initial>W.</initial>
            <foreName>Wouter</foreName>
            <surname>Swierstra</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <imprint>
          <date>October 2007</date>
          <biblScope type="pages">57--68</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="article" id="GALLINETTE-RA-2024_bibitem_BezemC22" rend="refer" subsection="Cited publications" n="refer:">
      <analytic>
        <title level="a">Loop-checking and the uniform word problem for join-semilattices with an inflationary endomorphism</title>
        <author>
          <persName>
            <initial>M.</initial>
            <foreName>Marc</foreName>
            <surname>Bezem</surname>
          </persName>
          <persName>
            <initial>T.</initial>
            <foreName>Thierry</foreName>
            <surname>Coquand</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Theor. Comput. Sci.</title>
        <imprint>
          <date>2022</date>
          <biblScope type="volume">913</biblScope>
          <biblScope type="pages">1--7</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="book" id="GALLINETTE-RA-2024_bibitem_Coq-manual" rend="refer" subsection="Cited publications" n="refer:">
      <analytic>
        <title level="a">The Coq proof assistant reference manual</title>
        <author>
          <persName>
            <initial>T.</initial>
            <foreName>The</foreName>
            <surname>Coq Development Team</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <imprint>
          <date>2015</date>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="article" id="GALLINETTE-RA-2024_bibitem_Gir87" rend="refer" subsection="Cited publications" n="refer:">
      <analytic>
        <title level="a">Linear Logic</title>
        <author>
          <persName>
            <initial>J.-Y.</initial>
            <foreName>Jean-Yves</foreName>
            <surname>Girard</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Theoretical Computer Science</title>
        <imprint>
          <date>1987</date>
          <biblScope type="volume">50</biblScope>
          <biblScope type="pages">1-102</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="incollection" id="GALLINETTE-RA-2024_bibitem_FTdone" rend="refer" subsection="Cited publications" n="refer:">
      <analytic>
        <title level="a">A Machine-Checked Proof of the Odd Order Theorem</title>
        <author>
          <persName>
            <initial>G.</initial>
            <foreName>Georges</foreName>
            <surname>Gonthier</surname>
          </persName>
          <persName>
            <initial>A.</initial>
            <foreName>Andrea</foreName>
            <surname>Asperti</surname>
          </persName>
          <persName>
            <initial>J.</initial>
            <foreName>Jeremy</foreName>
            <surname>Avigad</surname>
          </persName>
          <persName>
            <initial>Y.</initial>
            <foreName>Yves</foreName>
            <surname>Bertot</surname>
          </persName>
          <persName>
            <initial>C.</initial>
            <foreName>Cyril</foreName>
            <surname>Cohen</surname>
          </persName>
          <persName>
            <initial>F.</initial>
            <foreName>François</foreName>
            <surname>Garillot</surname>
          </persName>
          <persName>
            <initial>S.</initial>
            <foreName>Stéphane</foreName>
            <surname>Roux</surname>
          </persName>
          <persName>
            <initial>A.</initial>
            <foreName>Assia</foreName>
            <surname>Mahboubi</surname>
          </persName>
          <persName>
            <initial>R.</initial>
            <foreName>Russell</foreName>
            <surname>O’Connor</surname>
          </persName>
          <persName>
            <initial>S.</initial>
            <foreName>Sidi</foreName>
            <surname>Ould Biha</surname>
          </persName>
          <persName>
            <initial>I.</initial>
            <foreName>Ioana</foreName>
            <surname>Pasca</surname>
          </persName>
          <persName>
            <initial>L.</initial>
            <foreName>Laurence</foreName>
            <surname>Rideau</surname>
          </persName>
          <persName>
            <initial>A.</initial>
            <foreName>Alexey</foreName>
            <surname>Solovyev</surname>
          </persName>
          <persName>
            <initial>E.</initial>
            <foreName>Enrico</foreName>
            <surname>Tassi</surname>
          </persName>
          <persName>
            <initial>L.</initial>
            <foreName>Laurent</foreName>
            <surname>Théry</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="s">Lecture Notes in Computer Science</title>
        <imprint>
          <date>2013</date>
          <publisher>Springer Berlin Heidelberg</publisher>
          <biblScope type="volume">7998</biblScope>
          <biblScope type="pages">163-179</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="article" id="GALLINETTE-RA-2024_bibitem_Gonthier-2008-FPF" rend="refer" subsection="Cited publications" n="refer:">
      <analytic>
        <title level="a">Formal proofs---the four-colour theorem</title>
        <author>
          <persName>
            <initial>G.</initial>
            <foreName>Georges</foreName>
            <surname>Gonthier</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Notices of the AMS</title>
        <imprint>
          <date>2008</date>
          <biblScope type="volume">55</biblScope>
          <biblScope type="number">11</biblScope>
          <biblScope type="pages">1382-1393</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="article" id="GALLINETTE-RA-2024_bibitem_hales_et_al_2015" rend="refer" subsection="Cited publications" n="refer:">
      <analytic>
        <title level="a">A formal proof of the Kepler conjecture</title>
        <author>
          <persName>
            <initial>T. C.</initial>
            <foreName>Thomas C.</foreName>
            <surname>Hales</surname>
          </persName>
          <persName>
            <initial>M.</initial>
            <foreName>Mark</foreName>
            <surname>Adams</surname>
          </persName>
          <persName>
            <initial>G.</initial>
            <foreName>Gertrud</foreName>
            <surname>Bauer</surname>
          </persName>
          <persName>
            <initial>D. T.</initial>
            <foreName>Dat Tat</foreName>
            <surname>Dang</surname>
          </persName>
          <persName>
            <initial>J.</initial>
            <foreName>John</foreName>
            <surname>Harrison</surname>
          </persName>
          <persName>
            <initial>T. L.</initial>
            <foreName>Truong Le</foreName>
            <surname>Hoang</surname>
          </persName>
          <persName>
            <initial>C.</initial>
            <foreName>Cezary</foreName>
            <surname>Kaliszyk</surname>
          </persName>
          <persName>
            <initial>V.</initial>
            <foreName>Victor</foreName>
            <surname>Magron</surname>
          </persName>
          <persName>
            <initial>S.</initial>
            <foreName>Sean</foreName>
            <surname>McLaughlin</surname>
          </persName>
          <persName>
            <initial>T. T.</initial>
            <foreName>Thang Tat</foreName>
            <surname>Nguyen</surname>
          </persName>
          <persName>
            <initial>T. Q.</initial>
            <foreName>Truong Quang</foreName>
            <surname>Nguyen</surname>
          </persName>
          <persName>
            <initial>T.</initial>
            <foreName>Tobias</foreName>
            <surname>Nipkow</surname>
          </persName>
          <persName>
            <initial>S.</initial>
            <foreName>Steven</foreName>
            <surname>Obua</surname>
          </persName>
          <persName>
            <initial>J.</initial>
            <foreName>Joseph</foreName>
            <surname>Pleso</surname>
          </persName>
          <persName>
            <initial>J.</initial>
            <foreName>Jason</foreName>
            <surname>Rute</surname>
          </persName>
          <persName>
            <initial>A.</initial>
            <foreName>Alexey</foreName>
            <surname>Solovyev</surname>
          </persName>
          <persName>
            <initial>A. H.</initial>
            <foreName>An Hoai Thi</foreName>
            <surname>Ta</surname>
          </persName>
          <persName>
            <initial>T. N.</initial>
            <foreName>Trung Nam</foreName>
            <surname>Tran</surname>
          </persName>
          <persName>
            <initial>D. T.</initial>
            <foreName>Diep Thi</foreName>
            <surname>Trieu</surname>
          </persName>
          <persName>
            <initial>J.</initial>
            <foreName>Josef</foreName>
            <surname>Urban</surname>
          </persName>
          <persName>
            <initial>K. K.</initial>
            <foreName>Ky Khac</foreName>
            <surname>Vu</surname>
          </persName>
          <persName>
            <initial>R.</initial>
            <foreName>Roland</foreName>
            <surname>Zumkeller</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">CoRR</title>
        <imprint>
          <date>2015</date>
          <biblScope type="volume">abs/1501.02155</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="article" id="GALLINETTE-RA-2024_bibitem_leroy2006formal" rend="refer" subsection="Cited publications" n="refer:">
      <analytic>
        <title level="a">Formal certification of a compiler back-end or: programming a compiler with a proof assistant</title>
        <author>
          <persName>
            <initial>X.</initial>
            <foreName>Xavier</foreName>
            <surname>Leroy</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">ACM SIGPLAN Notices</title>
        <imprint>
          <date>2006</date>
          <biblScope type="volume">41</biblScope>
          <biblScope type="number">1</biblScope>
          <biblScope type="pages">42--54</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="article" id="GALLINETTE-RA-2024_bibitem_MLTTpred" rend="refer" subsection="Cited publications" n="refer:">
      <analytic>
        <title level="a">An intuitionistic theory of types: predicative part</title>
        <author>
          <persName>
            <initial>P.</initial>
            <foreName>Per</foreName>
            <surname>Martin-Löf</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Logic Colloquium '73</title>
        <imprint>
          <date>1975</date>
          <biblScope type="volume">Studies in Logic and the Foundations of Mathematics</biblScope>
          <biblScope type="number">80</biblScope>
          <biblScope type="pages">73--118</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="inproceedings" id="GALLINETTE-RA-2024_bibitem_Moggi89computationallambda-calculus" rend="refer" subsection="Cited publications" n="refer:">
      <analytic>
        <title level="a">Computational lambda-calculus and monads</title>
        <author>
          <persName>
            <initial>E.</initial>
            <foreName>Eugenio</foreName>
            <surname>Moggi</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <loc>Pacific Grove, CA, USA</loc>
        <imprint>
          <date>June 1989</date>
          <publisher>IEEE Computer Society Press</publisher>
          <biblScope type="pages">14--23</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="book" id="GALLINETTE-RA-2024_bibitem_hottbook" rend="refer" subsection="Cited publications" n="refer:">
      <analytic>
        <title level="a">Homotopy Type Theory: Univalent Foundations for Mathematics</title>
        <author>
          <persName>
            <initial>U. F.</initial>
            <foreName>Univalent Foundations</foreName>
            <surname>Project</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <imprint>
          <date>2013</date>
          <publisher>http://homotopytypetheory.org/book</publisher>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="article" id="GALLINETTE-RA-2024_bibitem_pujet-hal-03857705" rend="refer" subsection="Cited publications" n="refer:">
      <analytic>
        <title level="a">Impredicative Observational Equality</title>
        <author>
          <persName>
            <initial>L.</initial>
            <foreName>Lo\"ic</foreName>
            <surname>Pujet</surname>
          </persName>
          <persName>
            <initial>N.</initial>
            <foreName>Nicolas</foreName>
            <surname>Tabareau</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Proceedings of the ACM on Programming Languages</title>
        <imprint>
          <date>January 2023</date>
          <biblScope type="volume">7</biblScope>
          <biblScope type="number">POPL</biblScope>
          <biblScope type="pages">74</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
    <biblStruct type="article" id="GALLINETTE-RA-2024_bibitem_pujet-hal-03367052" rend="refer" subsection="Cited publications" n="refer:">
      <analytic>
        <title level="a">Observational Equality: Now For Good</title>
        <author>
          <persName>
            <initial>L.</initial>
            <foreName>Lo\"ic</foreName>
            <surname>Pujet</surname>
          </persName>
          <persName>
            <initial>N.</initial>
            <foreName>Nicolas</foreName>
            <surname>Tabareau</surname>
          </persName>
        </author>
      </analytic>
      <monogr>
        <title level="j">Proceedings of the ACM on Programming Languages</title>
        <imprint>
          <date>January 2022</date>
          <biblScope type="volume">6</biblScope>
          <biblScope type="number">POPL</biblScope>
          <biblScope type="pages">1-29</biblScope>
        </imprint>
      </monogr>
    </biblStruct>
  </biblio>
</raweb>
