• Aucun résultat trouvé

Fondements de la programmation, partiel 2 1 Inférence de type en lambda-calcul simplement typé

N/A
N/A
Protected

Academic year: 2022

Partager "Fondements de la programmation, partiel 2 1 Inférence de type en lambda-calcul simplement typé"

Copied!
2
0
0

Texte intégral

(1)

Master informatique 1 8 janvier 2014

Fondements de la programmation, partiel 2 1 Inférence de type en lambda-calcul simplement typé

Les exercices suivants font références au lambda-calcul simplement typé avec paires.

1.1 Typage sans justification

Sans justification, donner un type à chacun des termes suivants (lorsque c’est possible) et désigner les termes non typables :

1. λx.x

2. λxf.(f (f (f x))) 3. ((λx.x) (λx.x))

4. λf.(λx.f(x x))(λx.f(x x)) 5. λxy.hx, yi

6. λxf.h(f π1x),(f π2x)i 1.2 Typage et β-réduction

Donner un exemple de terme non typable qui se réduit en un terme typable.

1.3 Terme d’un type donné

Donner un terme clos (sans variable libre) de type α→((α →β)→β).

1.4 Inférences de type

1. Montrer par une inférence de type que λx.xest typable de type α→α.

2. Montrer par une inférence de type que (((λx.x)(λy.y))(λz.z))est typable.

3. Montrer par une inférence de type que λxf.h(f π1x),(f π2x)i est typable.

2 Correspondance preuves programmes

Soit la preuve suivante en déduction naturelle.

[α→α]

α→α

[α→α]

α→α

[α→α]

α→α

[α]

α →elim α →elim

elim α

α →intro

α→α

intro

(α→α)→(α→α)

[α]

α →intro

α→α

elim

α→α

1. La traduire en un terme du lambda-calcul simplement typé;

2. effectuer la réduction du terme jusqu’à trouver une forme normale;

3. traduire le lambda terme normal obtenu en déduction naturelle.

1

(2)

3 Concepts et langages de programmation

3.1 Stratégie d’appel

Soit un programme C définissant les fonctions suivantes : int deux() {

printf("deux()\n");

return 2;

}

int carre(int n) { printf("carre()\n");

return n * n;

}

int quatre(int x) { printf("quatre()\n");

return 4;

}

Si la fonction principale (main) contient seulement l’instruction carre(deux()); qu’est ce qui sera affiché ? Et si la fonction principale contient seulement l’instructionquatre(deux());? Citer un langage dans lequel l’affichage serait différent et expliquer pourquoi.

3.2 First-class functions

Qu’est-ce qui s’affichera dans la console (en javascript) ? Expliquer.

function f(y) { function g(x) {

return x + y;

};

return g;

}

h = f(2);

t = f(1);

console.log(h(1));

4 Calculabilité

4.1 Analyse syntaxique

Est-il toujours possible, quel que soit le langage de programmation, de décider si un programme source correspond à un arbre syntaxique du langage ? (Expliquer)

4.2 Complétude

Est-ce que le lambda-calcul simplement typé permet de représenter toutes les fonctions calcula- bles au sens de Turing ?

2

Références

Documents relatifs

L’allèle Mahidol du gène G6PD produit une enzyme moins efficace que l’enzyme sauvage, ce qui entraine des troubles plus ou moins sévères, comme des jaunisses ou des anémies... Doc

The Diabetes Atherosclerosis Intervention Study (DAIS): a study conducted in cooperation with the World Health Organization. Prospective randomised study of intensive insulin

Le diabète de type 2 survient soit lorsque le corps ne produit pas suffisamment d'insuline (une hormone sécrétée par le pancréas qui régule le taux de glucose), soit parce que

Dans Notes sur l’œuvre de Georg Büchner et réflexions autour de la mise en scène signée Brigitte Haentjens, Stéphane Lépine écrit en 2009 à propos de la

Enfin vous choisirez parmi ces documents celui qui correspond le mieux à votre propre lecture de Néron.. Raynaud de

Alexandre Pavloff (Néron) et Dominique Constanza (Agrippine) Doc 6 : Mise en scène de Jean Leuvrais, Théâtre Silvia Monfort, Paris (1987). Daniel Colas (Néron) et Silvia

Illusions comiques, Acte I, tournage public au Théâtre du Rond-Point, réalisation Vitold Krysinsky, production COPAT,

DOCUMENT 3 : Illusions comiques (acte II), texte et mise en scène d’Olivier Py, avec, de gauche à droite à l’arrière-plan : Olivier Balazuc dans le rôle du bourreau, Olivier Py