Computing with relations, functions, and bindings - Archive ouverte HAL
Thèse Année : 2019

Computing with relations, functions, and bindings

Calculer avec des relaions, des fonctions et des lieurs

Résumé

The present document pursues the decades-long study of the interactions between mathematical logic and functional computation, and more specifically of declarative programming. This thesis is divided into two main contributions. Each one of those make use of modern proof theory results to design new ways to compute with relations and with functions. The first contribution of this work is the description and formalization of a new technique that leverages the focusing mechanism (a way to guide proof-search) to reveal functional computation concealed in deductive proofs. To that extent we formulate a focused sequent calculus proof system for Heyting arithmetic where fixed points and term equality are logical connectives and describe a means to always drive singleton predicates into negative phases of the proof, thus identifying them with functional computation. This method does not extend the underlying logic in any way: no choice principle nor equality theory nor rewriting rules are needed. As a result, our logic remains purely relational even when it is computing functions. The second contribution of this thesis is the design of a new functional programming language: MLTS. Again, we make use of recent work in logic: the semantics of MLTSis a theory inside G-logic, the reasoning logic of the Abella interactive theorem prover. G-logic uses a specific operator: Nabla, a fresh-name quantifier which allows for a natural treatment of proofs over structures with bindings based on the natural handling of bindings of the sequent calculus. The syntax of \mlts is based on the programming language OCaml but provides additional sites so that term-level bindings can move to programming level bindings. Moreover, all operations on syntax respect alpha-beta-conversion. Together these two tenets form the lambda-tree syntax approach to bindings. The resulting language was given a prototype implementation that anyone can conveniently try online (https://trymlts.github.io).
Cette thèse s'inscrit dans la longue tradition de l'étude des relations entre logique mathématique et calcul et plus spécifiquement de la programmation déclarative. Le document est divisé en deux contributions principales. Chacune d'entre-elles utilise des résultats récents de la théorie de la démonstration pour développer de techniques novatrices utilisant déduction logique et fonctions pour effectuer des calculs. La première contribution de ce travail consiste en la description et la formalisation d'une nouvelle technique utilisant le mécanisme de la focalisaton (un moyen de guider la recherche de preuve) pour distinguer les calculs fonctionnels qui se dissimulent dans les preuves déductives. À cet effet nous formulons un calcul des séquents focalisé pour l'arithmétique de Heyting où points-fixes et égalité sont définis comme des connecteurs logiques et nous décrivons une méthode pour toujours placer les prédicats singletons dans des phases négatives de la preuve, les identifiant ainsi avec un calcul fonctionnel. Cette technique n'étend en aucune façon la logique sous-jacente: ni opérateur de choix, ni règles de réécritures ne sont nécéssaires. Notre logique reste donc purement relationnelle même lorsqu'elle calcule des fonctions. La seconde contribution de cette thèse et le design d'un nouveau langage de programmation fonctionnel: MLTS. De nouveau, nous utilisons des travaux théoriques récents en logique: la sémantique de MLTSest ainsi une théorie au sein de la logique G, la logique de raisonnement de l'assistant de preuve Abella. La logique G utilise un opérateur spécifique: Nabla, qui est un quantificateur sur des noms ``frais'' et autorise un traitement naturel des preuves manipulant des objets pouvant contenir des lieurs. Ce traitement s'appuie sur la gestion naturelle des lieurs fournie par le calcul des séquents. La syntaxe de MLTS est basée sur celle du langage de programmation OCaml mais fournit des constructions additionnelles permettant aux lieurs présents dans les termes de se déplacer au niveau du programme. De plus, toutes les opérations sur la syntaxe respectent l'alpha et la béta conversion. Ces deux aspects forment l'approche syntaxique des lieurs appelée lambda-tree syntax. Un prototype d'implémentation du langage est fourni, permettant à chacun d'expérimenter facilement en ligne (https://trymlts.github.io).
Fichier principal
Vignette du fichier
memoire_ugerard_v2_fixed.pdf (1.28 Mo) Télécharger le fichier
Origine Fichiers produits par l'(les) auteur(s)
Loading...

Dates et versions

tel-02414237 , version 1 (16-12-2019)
tel-02414237 , version 2 (03-03-2020)

Identifiants

  • HAL Id : tel-02414237 , version 1

Citer

Ulysse Gérard. Computing with relations, functions, and bindings. Logic in Computer Science [cs.LO]. École Polytechnique; Inria Saclay, 2019. English. ⟨NNT : ⟩. ⟨tel-02414237v1⟩
289 Consultations
264 Téléchargements

Partager

More