• Aucun résultat trouvé

Notons en premier lieu que par principe toutes réductions considérées pré- servent les types, et que par conséquent, la « subject reduction » est une propriété évidente des systèmes de réduction que nous avons été amenés à étudier.

La traduction des boîtes exponentielles dans chaque système localisé que nous avons présenté est directe et se fait sans considérations d’altitude. En fait, les opé- rateurs de boîtes, seuls nœuds qu’il est nécessaire de paramétrer par une altitude, n’apparaîtront que lors de leur réduction localisée.

Formulons ensuite un récapitulatif succinct des caractéristiques de nos systèmes (il contient une entrée actif+ dont la présence est expliquée après) :

système cardinalité com. exp. relecture nœuds optimalité ?

actif infini oui non normaux séquentielle

actif+ infini oui oui normaux séquentielle

passif fini non oui normaux -

contrôlé infini oui oui multiples parallèle

Nous avons vu que les codages passif ‹ 7→p›, et contrôlé ‹ 7→c› évoqués lors de la

construction des réseaux correspondants possèdent des propriétés intéressantes de simulation des systèmes de réduction usuels.

Système actif avec relecture

En ce qui concerne le système actif, on a déjà indiqué qu’il est identique au sys- tème contrôlé dans lequel on a inactivé les interactions entre messages et entrées de boîtes. Le canal de contrôle ne joue alors plus aucun rôle dans la réduction, mais sa présence peut être mise à contribution. En effet, lorsqu’on a terminé la réduction on tombe typiquement dans un état où certaines opérations sur les boîtes n’ont pas été achevées. Mais comment savoir à quelle preuve de la logique linéaire cet état corres- pond ? C’est d’ailleurs ce problème qui nous empêche de formuler un théorème de simulation pour le cas actif, et qui est désigné sous l’appellation problème de « relec- ture ». Si on a astucieusement gardé les canaux de contrôle (même rendus inactifs) on a la possibilité future de les réactiver pour procéder à la « relecture » et terminer la réduction.

C’est ce système, qui s’appuie sur la syntaxe des réseaux contrôlés, où on épuise les réductions du système actif avant de les compléter par quelques réductions du système passif, qu’on a appelé actif+.

Chapitre 4

Réseaux additifs

Les réseaux additifs vont permettre de modéliser les choix (ou les absences de possibilités). Ils permettent d’interpréter des programmes dans lesquels une don- née peut être construite à l’aide de constructeurs différents, comme dans l’exemple suivant :

type shape =

| Point

| Disk of int

| Rectangle of int * int let area s = match s with | Point -> 0 | Disk (radius) -> pi * radius * radius

| Rectangle (width, height) -> width * height

let result =

area (Disk 2)

L’utilisation la plus courante de ces types de données est cachée dans les instruc- tion conditionnelles fournies par la plupart des langages de programmation. Un type booléen possède deux constructeurs sans paramètrestrueetfalse, et une instruc-

tion de filtrage nomméeif.

En logique linéaire, deux connecteurs duaux permettent d’exprimer le choix. Pour prouver la formule A⊕B, il suffit de fournir une preuve de A ou une preuve de Bà un utilisateur qui devra s’adapter au choix qui lui est proposé. De façon duale, si on prouve une formule A & B on est capable de fournir une preuve de A ou de B selon l’utilisation qui en est faite. Le but de ce chapitre est de présenter les construc- tions additives associées à ces connecteurs, nous les utiliserons par la suite. Nous montrerons également que la localisation telle qu’elle a été faite pour les construc- tions exponentielles s’adapte relativement bien au cas des constructions additives. La localisation passive (qui semble plus raisonnable que les autres dans le cas des constructions additives) fonctionne sans problème. Néanmoins si on souhaite effec-

86 4.1. RÉSEAUX DE PREUVE AVEC BOÎTES ADDITIVES

tuer des commutations additives on se heurte à quelques difficultés, et on se placera pour les contourner dans une logique linéaire légèrement restreinte.

4.1

Réseaux de preuve avec boîtes additives

4.1.1 Constructions additives

Plus,Plus→ On introduit deux nœuds unaires, nommés plus gauche et plus droit,

que l’on notera ‹←⊕› et ‹→⊕ ›. Leur typage et leur représentation graphique sont les suivants : ← ⊕ A⊕ X A → ⊕ X⊕ B B

Ces nœuds sont introduits selon les conventions usuelles associées aux nœuds unaires positifs. La première construction correspond à l’utilisation de la règle lo- gique⊢ A ⊕ B, Γ⊢ A, Γ : N ← ⊕ A⊕ B A V1 ... Vn La seconde, à la règle ⊢ B, Γ ⊢ A ⊕ B, Γ : N → ⊕ A⊕ B B V1 ... Vn

Avec Étant donnés deux réseaux N1 et N2 d’interfaces respectives ⊢ A, Γ et ⊢

B, Γ, la construction avec se fait à l’aide d’une boîte (double) selon la règle logique

⊢ A, Γ ⊢ B, Γ

⊢ A & B, Γ . On nomme tranches les deux composantes N1et N2 d’une telle boîte,

& N2 B N1 A A & B V1 ... Vk

Cette construction peut être comparée aux constructions de filtrage par profil de certains langages de programmation.

Top La construction top se fait à l’aide d’une boîte (vide) selon la règle⊢ ⊤, Γ.

⊤ V1 ... Vk

Nul Aucune construction n’existe en logique linéaire pour le dual 0 de la for-

mule ⊤.

4.1.2 Réduction des boîtes additives

Deux réductions logiques existent pour une boîte avec. Aucune pour une boîte top. Nous verrons ensuite les réductions de commutation qui reflètent une certaine identité logique entre certains réseaux construits avec ces boîtes.

Réductions logiques

AvecPlus← L’opérateur plus gauche va permettre de demander à la boîte addi-

tive correspondante de se comporter tel le réseau contenu dans sa partie gauche.

← ⊕ & N2 B N1 A A & B V1 ... Vk A −→ N1 A V1 ... Vk

88 4.1. RÉSEAUX DE PREUVE AVEC BOÎTES ADDITIVES

AvecPlus→ La règle pour l’opérateur plus droit est similaire, on garde le réseau

droit N2à la place du réseau N1:

→ ⊕ & N2 B N1 A A & B V1 ... Vk B −→ N2 B V1 ... Vk • Commutations positives

Comme dans le cas des boîtes exponentielles, on peut mettre en place des ré- ductions de commutation lorsque des opérateurs se présentent face aux entrées des boîtes additives. Cela n’est pas réellement nécessaire, particulièrement dans le cas des boîtes additives où cela conduit à une explosion exponentielle de la quantité de mémoire qu’il faut pour représenter certains réseaux. Elles augmentent cependant le degré de parallélisme que l’on peut atteindre si on est prêt à payer le coût en mé- moire et en nombre de processeurs utilisés.

−−

Avec− ⋆+ Lorsqu’un opérateur logique positif se présente face à l’entrée d’une

boîte additive celui-ci rentre dans cette boîte. Dans le cas d’une boîte avec celui-ci est ajouté aux deux tranches de la boîte.

⋆+ & N2 B N1 A A & B ... X ... X1 ... Xk ↓

& ⋆+ N2 B X ⋆+ N1 A X A & B ... X1 ... Xk ...

On notera que cette règle s’applique également lorsque l’opérateur ⋆+est une boîte

exponentielle (ou éventuellement additive) connectée par sa sortie, ou éventuelle- ment l’une de ses entrées.

−−

Top− ⋆+ Dans le cas d’une boîte top tout opérateur positif qui se présente face

à une entrée est oublié ainsi :

⋆+ ⊤ ⊤ ... X ... X1 ... Xk −→ ⊤ ⊤ ... X1 ... Xk ...

Comme précédemment, cette règle s’applique lorsque l’opérateur ⋆+ est une

boîte exponentielle. Elle peut également s’appliquer lorsqu’il s’agit d’une boite ad- ditive.

Dans le cas où deux boîtes additives sont connectées par leurs entrées, deux des règles précédentes peuvent être appliquées, la réduction n’est alors pas déterministe.

Commutations négatives

La gestion des commutations dans le cas des opérateurs négatifs nécessite une mécanique plus complexe. Il faudrait comme dans l’article original sur les réseaux de preuve de Jean-Yves Girard utiliser des boîtes pour toutes les constructions né- gatives, de manière à pouvoir les faire rentrer (dédoublées) dans les boîtes avec en une étape. Cela contredirait l’objectif des réseaux dans lequel on souhaite oublier le maximum de bureaucratie lié à la séquentialisation pour privilégier l’exécution parallèle, et nous n’allons donc pas aller dans ce sens.

Néanmoins, tout se passe bien lorsqu’on restreint le contexte des boîtes addi- tives à des types entrants extérieurement positifs. Ces types sont définis de la façon suivante : D ::= X D⊗ D D⊕ D !A

90 4.2. LE SYSTÈME ADDITIF LOCALISÉ ACTIF

où A désigne une formule quelconque de la logique linéaire. Cette restriction est stable par réduction. En particulier, la traduction du langage PCF que nous don- nerons plus tard et qui utilise ces boîtes s’accommode très bien de cette restriction. C’est principalement du au fait que le type récursif o⊥ = !o⊗ oqui permet de coder

le λ-calcul peut être considéré comme un type extérieurement positif.

En outre, on évite du même coup le non déterminisme des commutations entre deux boîtes additives. Pour parler de systèmes localisés actifs ou contrôlés on se placera dans ce cadre restreint.