Object-Oriented Mechanisms for Interoperability between Proof Systems
Mécanismes Orientés-Objets pour l'Interopérabilité entre Systèmes de Preuve
Résumé
Dedukti is a Logical Framework resulting from the combination of
dependent typing and rewriting. It can be used to encode many logical
systems using shallow embeddings preserving their notion of reduction.
These translations of logical systems in a common format are a
necessary first step for exchanging proofs between systems. This
objective of interoperability of proof systems is the main motivation
of this thesis.
To achieve it, we take inspiration from the world of programming
languages and more specifically from object-oriented languages because
they feature advanced mechanisms for encapsulation, modularity, and
default definitions. For this reason we start by a shallow
translation of an object calculus to Dedukti. The most interesting
point in this translation is the treatment of subtyping.
Unfortunately, it seems very hard to incorporate logic in this object
calculus. To proceed, object-oriented mechanisms should be restricted
to static ones which seem enough for interoperability. Such a
combination of static object-oriented mechanisms and logic is already
present in the FoCaLiZe environment so we propose a shallow embedding
of FoCaLiZe in Dedukti. The main difficulties arise from the
integration of FoCaLiZe automatic theorem prover Zenon and from the
translation of FoCaLiZe functional implementation language featuring
two constructs which have no simple counterparts in Dedukti: local
pattern matching and recursion.
We then demonstrate how this embedding of FoCaLiZe to Dedukti can be
used in practice for achieving interoperability of proof systems
through FoCaLiZe, Zenon, and Dedukti. In order to avoid strengthening
to much the theory in which the final proof is expressed, we use
Dedukti as a meta-language for eliminating unnecessary axioms.
Dedukti est un cadre logique résultant de la combinaison du typage
dépendant et de la réécriture. Il permet d'encoder de nombreux
systèmes logiques au moyen de plongements superficiels qui préservent
la notion de réduction.
Ces traductions de systèmes logiques dans un format commun sont une
première étape nécessaire à l'échange de preuves entre ces
systèmes. Cet objectif d'interopérabilité des systèmes de preuve est
la motivation principale de cette thèse.
Pour y parvenir, nous nous inspirons du monde des langages de
programmation et plus particulièrement des langages orientés-objet
parce qu'ils mettent en œuvre des mécanismes avancés d'encapsulation,
de modularité et de définitions par défaut. Pour cette raison, nous
commençons par une traduction superficielle d'un calcul orienté-objet
en Dedukti. L'aspect le plus intéressant de cette traduction est le
traitement du sous-typage.
Malheureusement, ce calcul orienté-objet ne semble pas adapté à
l'incorporation de traits logiques. Afin de continuer, nous devons
restreindre les mécanismes orientés-objet à des mécanismes statiques,
plus faciles à combiner avec la logique et apparemment suffisant pour
notre objectif d'interopérabilité. Une telle combinaison de mécanismes
orientés-objet et de logique est présente dans l'environnement
FoCaLiZe donc nous proposons un encodage superficiel de FoCaLiZe dans
Dedukti. Les difficultés principales proviennent de l'intégration de
Zenon, le prouveur automatique de théorèmes sur lequel FoCaLiZe
repose, et de la traduction du langage d'implantation fonctionnel de
FoCaLiZe qui présente deux constructions qui n'ont pas de
correspondance simple en Dedukti : le filtrage de motif local et la
récursivité.
Nous démontrons finalement comment notre encodage de FoCaLiZe dans
Dedukti peut servir en pratique à l'interopérabilité entre des
systèmes de preuve à l'aide de FoCaLiZe, Zenon et Dedukti. Pour éviter
de trop renforcer la théorie dans laquelle la preuve finale est
obtenue, nous proposons d'utiliser Dedukti en tant que méta-langage
pour éliminer des axiomes superflus.