• Aucun résultat trouvé

4.2.1 Vers un Calcul des Constructions pédagogique

La propriété de préservation du type d’un terme lors du calcul, que nous avons appelée propriété de stabilité par réduction (subject reduction), est une caractéristique fondamentale d’un système fonctionnel. Nous avons vu que son obtention dans les systèmes pédagogiques nécessite d’empêcher la formation de types vides au plus tôt.

Dans le formalisme des PTS utilisé, de nouveaux types (éventuellement vides) peuvent être créés par la règle de formation des types (prod), ou celle d’application (app). Pour ces deux règles, nous proposons d’établir un résumé des contraintes nécessaires afin d’éviter la création de tels types vides, d’abord pour les systèmes λ2 et λω, puis nous étendons l’étude au cas de λC. Par suite, nous sommes alors en mesure de proposer une version pédagogique du Calcul des Constructions.

Contraintes nécessaires pour la règle (prod)

Rappelons la règle de formation des types dans les PTS pour les systèmes du λ-cube : Γ `A :s1 Γ, x : A `B :s2 (s1, s2, s2) ∈ R

(prod)

Γ `∀xA.B :s2

Ci-après un tableau résumant les contraintes nécessaires : 3 signifie que l’instance (s1, s2, s2) de cette règle ne produit pas de type vide ; 7 signifie que l’instance (s1, s2, s2) peut produire un type vide et qu’il faut donc contraindre cette règle ; l’absence de marque signifie que l’instance de la règle n’appartient pas au système ; enfin les nombres en exposant indiquent le numéro de l’une des explications qui suit.

(s1, s2) λ2 λω λC (?, ?) 31 31 74 (, ?) 72 72 72

(?, ) 33

(, ) 33 33

1. x n’apparaît pas dans B : dans ce cas si B est motivable par b, alors ∀xA.B est motivable par λxA.b, et l’éventuelle vacuité de ∀xA.B n’est pas dû à cette règle (i.e. aucun nouveau type n’est produit ici).

2. Si la règle n’est pas contrainte on peut dériver le type vide ∀AProp.A de type Prop. 3. Les éléments de type Type sont de la forme ∀~zC~. Prop et sont habités par λ~zC~.>.

4. Sans contrainte on pourrait dériver ∀xN.x =N0 de type Prop. Notons que toutes les sous-formules sont motivables.

Contraintes nécessaires pour la règle (app)

Pour la règle (app) il convient d’étudier les sortes s1 et s2 des types de la fonction u et de son argument v :

Γ `v : A :s1 Γ `u : ∀xA.B :s2

(app)

Γ `u v : B[x ← v ] Avec les cas suivants :

(s1, s2) λ2 λω λC (?, ?) 31 31 75 (, ?) 31,2 76 76

(?, ) 74

(, ) 73 73

1. Ce sont des preuves qui sont produites. D’autre part les types n’étant pas dépendants, x est remplacé par un terme qui n’apparaît pas dans B (i.e. B[x ← v ] ≡ B) : aucun nouveau type n’est produit ici.

2. Dans λ2e, nécessairement A ≡ Prop et donc v est motivable, d’où B[x ← v ] puisque B est motivable. Autrement dit le fait de typer v de type Prop dans un système pédagogique évite le problème de non stabilité par réduction du calcul du second ordre faiblement pédagogique.

3. Sans contrainte on aurait :

`(λAProp→Prop.∀BProp.A B) (λCProp.C) : Prop β `∀BProp.B : Prop Notons que tous les sous-prédicats sont motivables.

4. Sans contrainte on aurait :

`(λxN.x =N0) 1 : Prop β `1 =N0 : Prop Notons que tous les sous-prédicats sont motivables.

5. Sans contrainte on aurait :

`1 : N : Prop `λxN.λHx=N0.H : ∀xN.x =N0 → x =N0 : Prop `(λxN.λHx=N0.H) 1 : 1 =N0 → 1 =N0 β `λH1=N0.H : 1 =N0 → 1 =N0 Notons que tous les sous-prédicats sont motivables.

6. Sans contrainte on aurait :

`λCProp.C : Prop → Prop : Type

`λAProp→Prop.λH∀BProp.A B.H : ∀AProp→Prop.(∀BProp.A B) → (∀BProp.A B) : Prop

`(λAProp→Prop.λH∀BProp.A B.H) (λCProp.C) : (∀BProp.(λCProp.C) B) → (∀BProp.(λCProp.C) B)

β `λH∀BProp.B.H : (∀BProp.B) → (∀BProp.B)

Expression d’un Calcul des Constructions pédagogique

Dès lors que l’on sait où placer les contraintes dans λC, on est en mesure de proposer une version pédagogique du Calcul des Constructions. Il convient tout d’abord d’étendre la définition de motivabilité d’un prédicat au cas des types dépendants :

Définition : motivation d’un prédicat avec types dépendants

Le fait que la substitution σ motive le prédicat P de type E, noté σ motE(P ), est défini par : σ motProp(P ) := il existe un terme t et un type R tels que `ce

[ ] t : R et σ(P ) β R σ mot∀zC.D(P ). := il existe un terme u tel que `ce

[ ] u : σ(C) et σ::(z 7→ u) motD(P z).

σ mot∀z1C1...∀znCn. Prop(P ) dénote l’existence de termes (ui)1≤i≤n, d’un terme t et d’un type R tels que `ce

[ ] t : R avec σ(P ) ~u β R et `ce

[ ] ui : σ(Ci[z1, . . . , zi−1← u1, . . . , ui−1]).

Cette définition est sensée puisque dans CC tout prédicat possède un type E syntaxiquement de la forme ∀~zC~. Prop. De plus il est facile de vérifier que la motivation d’un prédicat de λωe en est un cas particulier.

Nous proposons enfin comme expression d’un Calcul des Constructions pédagogique avec motivations explicites le système λCe suivant :

(ce-env1) [ ] wfce σ Γ `ce σ A : κ `ce [ ] a : A0 σ(A) β A0 x 6∈ dom(Γ) (ce-env2) Γ, x : A wfce σ::(x 7→ a) Γ wfce σ (ce-ax) Γ `ce σ o : > :Prop : Type Γ, x : A, Γ0wfce σ (ce-var) Γ, x : A, Γ0`ce σ x : A Γ, x : A `ce σ::(x 7→ a) u : B : κ (ce-abs) Γ `ce σ λxA.u : ∀xA.B Γ `ce σ u : ∀xA.B : Prop Γ `ce σ v : A σ motProp(B[x ← v ]) (ce-app?) Γ `ce σ u v : B[x ← v ] Γ `ce σ u : ∀xA.B : Type Γ `ce σ v : A σ motB[x←v ](u v) (ce-app) Γ `ce σ u v : B[x ← v ] Γ, x : A `ce

σ::(x 7→ a) B : Prop σ motProp(∀xA.B)

(ce-prod?) Γ `ce σ ∀xA.B : Prop Γ, x : A `ce σ::(x 7→ a) B : Type (ce-prod) Γ `ce σ ∀xA.B : Type Γ `ce σ u : A A =β A0 Γ `ce σ A0: κ (ce-conv) Γ `ce σ u : A0

Remarquons qu’il doit être possible de contracter l’expression des règles (ce-prod?) et (ce-prod) en une règle (ce-prod) avec une contrainte :

Γ, x : A `ce

σ::(x 7→ a) B : κ σ motκ(∀xA.B)

(ce-prod)

Γ `ce

σ ∀xA.B : κ

en étendant la définition de σ motE(P ) au cas où E ≡ Type, produisant une contrainte triviale-ment réalisée.

En revanche, il semble plus délicat de condenser l’expression des contraintes sur les règles (ce-app?) et (ce-app) : dans un cas on agit sur le terme B[x ← v ] tandis que dans l’autre on agit sur u v. Une formulation pédagogique générale reprenant exactement les (méta-)règles des PTS apparaît alors compromise.

4.2.2 Sur la décidabilité du typage

Comme nous l’avons montré, la vérification du typage pour les systèmes propositionnels pé-dagogiques du second ordre P-Prop2, λ2t, λ2t et λ2eest indécidable : le symbolisme utilisé n’intègre pas dans les termes de preuve l’information nécessaire à la reconstruction d’une dérivation.

En analysant le système avec motivations explicites de λ2e, on peut voir les règles responsables de cette perte d’informations : la règle (e-abs) oublie le a motivant A ; et la règle (e-prod) ne conserve pas la motivation t du type formé.

Γ, x : A `2e σ::(x 7→a) u : B : Prop (e-abs) Γ `2e σ λxA.u : ∀xA.B Γ, x : A `2e σ::(x 7→ a) B : Prop `2e [ ] t: σ(∀xA.B) (e-prod) Γ `2e σ ∀xA.B : Prop

C’est la raison pour laquelle la règle (e-env2) nécessite une pseudo-contrainte pour récupérer la motivation a construite a priori lors de la dérivation de Γ `2e

σ A : κ : Γ `2e σ A : κ `2e [ ] a : σ(A) x 6∈ dom(Γ) (e-env2) Γ, x : A wf2e σ::(x 7→ a)

C’est pourquoi nous proposons, à l’instar du λ-calcul typé qui décore les λ-termes purs par des types pour contrôler leur normalisation, d’annoter les types par des termes pour contrôler leur motivabilité. Par exemple au second ordre, on peut imaginer des règles avec de tels termes :

Γσ, x : Aa`u : Bb : Prop (abs) Γσ`λxAa.u : (∀xAa.Bb)σ(λxAa.u) Γσ, x : Aa`Bb : Prop `t : σ(∀xAa.Bb) (prod) Γσ`(∀xAa.Bb)t: Prop et aussi Γσ`Aa: κ x 6∈ dom(Γ) (env2) Γσ, x : Aawf

où les exemples sont annotés en indice et sont clos, et où Γσ est une abréviation pour x1 : A1a1, . . . , xn: Anan.

Dans un tel formalisme, les termes devraient contenir l’information nécessaire afin de per-mettre la reconstruction d’une dérivation et ainsi autoriser la vérification du typage. Cependant à l’ordre supérieur, l’annotation d’un constructeur reste à établir : nous rappelons qu’un construc-teur est motivable s’il est utile, et qu’il faut donc fournir des termes à appliquer à ce construcconstruc-teur pour vérifier ce fait, termes qu’il convient de conserver dans l’annotation.