Which types have a unique inhabitant? - Archive ouverte HAL Access content directly
Theses Year : 2016

Which types have a unique inhabitant?

Quels types ont un habitant unique ?

(1)
1

Abstract

Some programming language features (coercions, type-classes, implicits) rely on inferring a part of the code that is determined by its usage context. In order to better understand the theoretical underpinnings of this mechanism, we ask: when is it the case that there is a *unique* program that could have been guessed, or in other words that all possible guesses result in equivalent program fragments? Which types have a unique inhabitant? To approach the question of unicity, we build on work in proof theory on more canonical representation of proofs. Using the proofs-as-programs correspondence, we can adapt the logical technique of focusing to obtain more canonical program representations. In the setting of simply-typed lambda-calculus with sums and the empty type, equipped with the strong beta-eta-equivalence, we show that uniqueness is decidable. We present a saturating focused logic that introduces irreducible cuts on positive types “as soon as possible”. Goal-directed proof search in this logic gives an effective algorithm that returns either zero, one or two distinct inhabitants for any given type.
Certaines constructions des langages de programmation permettent à un ordinateur de “deviner” des parties du programe que le programmeur humain aurait écrit. Pour mieux comprendre les fondements théoriques de cette opération, nous étudions le cas où la solution à cette devinette est unique, c'est-à-dire où tous les réponses possibles donnent des programmes équivalents. Quels types ont un habitant unique ? Pour étudier cette question, nous avons décidé de partir des travaux de théorie des preuves sur des représentations plus canoniques des termes de preuve. En utilisant la correspondance preuve-programme, nous pouvons adapter la technique logiuqe de “concentration“ (focusing) pour obtenir des représentations plus canoniques des programmes. Cela nécessite de porter une attention particulière à la façon dont cette technique préserve l'équivalence de programmes. Dans le cadre du lambda-calcul simplement typé avec des sommes et le type vide, muni de la βη-équivalence forte, nous montrons que la question de l'unicité est décidable. Nous présentons une logique concentrée saturée qui introduit des coupures irréductibles sur les types positifs “dès que possible”. La recherche en arrière dans cette logique donne un algorithme effectif qui fournit zéro, un ou deux habitants distincts pour tout type fourni en entrée.
Fichier principal
Vignette du fichier
scherer-thesis.pdf (1.44 Mo) Télécharger le fichier

Dates and versions

tel-01309712 , version 1 (30-04-2016)
tel-01309712 , version 2 (27-12-2016)

Licence

Attribution - ShareAlike - CC BY 4.0

Identifiers

  • HAL Id : tel-01309712 , version 2

Cite

Gabriel Scherer. Which types have a unique inhabitant?: Focusing on pure program equivalence. Programming Languages [cs.PL]. Université Paris-Diderot, 2016. English. ⟨NNT : ⟩. ⟨tel-01309712v2⟩

Collections

INRIA INRIA2
379 View
188 Download

Share

Gmail Facebook Twitter LinkedIn More