• Aucun résultat trouvé

Représentation symbolique des environnements

4.2 Sémantiques basées sur la réécriture

4.2.1 Représentation symbolique des environnements

Pour permettre une exploitation des spécifications exprimées dans notre cadre par des outils de vérification automatique, nous proposons de représenter chacun des objets de notre étude au moyen de termes algébriques et de systèmes de réécriture. La première notion dont nous allons discuter de la représentation symbolique est celle d’enrivonnement. Nous avons dans la précédente section proposé une définition des environnements sous la forme de modèles logiques du premier ordre interprétant les prédicats finitairement et validant des contraintes imposant l’interprétation de certains prédicats par des ordres (totaux ou partiels). Les contraintes imposées per-mettent de construire une correspondance entre l’ensemble des environnements d’une théorie de sécurité donnée et l’ensemble des termes clos d’une signature particulière. On pourrait penser de premier abord que les contraintes imposées sont artificielles et que l’on peut naturellement représenter n’importe quel modèle fini par un terme sur une signature appropriée. Pourtant, s’il est possible d’associer à toute interpré-tation finie un terme algébrique, il se peut qu’un terme ne représente pas un modèle d’une théorie donnée. En effet, considérons une signature Σ munie d’une théorie T h et admettons que l’on construise une application qui à toute interprétation I finie de Σ associe un terme tI ∈ T (Σsym) (pour une certaine signature Σsym) et une autre application qui à une propriété α sur Mod(T h) associe une propriété pα sur les termes T (Σsym). Si l’on souhaite effectuer une preuve de la forme « pour tout I ∈ Mod(T h), α(I) » en vérifiant que « pour tout tI ∈ T (Σsym), pα(tI)» et qu’il existe des termes de T (Σsym) représentant des interprétations de Σ qui ne sont pas modèles de T h, alors la preuve de « pour tout tI ∈ T (Σsym), pα(tI)» peut échouer alors que la propriété α est vérifiée pour tous les modèles de Mod(T h).

Déterminer une représentation symbolique de l’ensemble des environnements d’une théorie donnée, c’est déterminer une signature dont chaque terme représente un environnement. C’est l’objet de la proposition suivante.

Proposition 4.21. Pour toute théorie de sécurité teo, il existe :

une signature Σsym teo ,

une surjectionJ·Kteo de T (Σsym

teo ) sur Env(teo)/≈teo et

une injection γteode Env(teo)/≈teo dans T (Σsym teo )

telles que pour tout environnement η ∈ Env(teo), Jγteo(η)K ≈teoη. La construction de la signature Σsym

teo est assez intuitive. On se base sur l’idée très classique selon laquelle à toute classe d’équivalence de Env(teo)/≈teo peut être associé un représentant sous la forme d’une interprétation de Herbrand (sous l’hypothèse que le domaine d’interprétation des sortes abstraites est donné par un ensemble dénombrable de constantes quelconques). De plus, le caractère fini des interprétations des prédicats nous permet de représenter naturellement l’ensemble des atomes clos valides dans l’environnement considéré sous la forme d’une liste, les atomes clos construits sur la base de Herbrand de ˜ΣEnv

teo étant vus comme des termes. On dispose alors d’une représentation naturelle des interprétations finies de ˜ΣEnv

teo . Dès lors, la question qui se pose est de savoir comment matérialiser des contraintes sémantiques. Les contraintes spécifient que l’interprétation de chaque prédicat est soit arbitraire 86

4.2. SÉMANTIQUES BASÉES SUR LA RÉÉCRITURE

(ensemble vide de contraintes), soit correspond à un ordre total, soit correspond à un ordre partiel. Dans le premier cas, la représentation sous la forme d’une liste de faits convient. Dans les deux autres cas, il est nécessaire de modéliser autrement l’interprétation des prédicats concernés.

Considérons dans un premier temps un prédicat dont l’interprétation doit être un ordre total. Notons inf : s × s le symbole correspondant. Pour matérialiser le fait que infη est un ordre total sur | η |s, nous nous fondons sur le théorème suivant :

Théorème 4.22. Tout ensemble fini totalement ordonné est isomorphe pour l’ordre à un segment initial de N.

En conséquence, il suffit de représenter symboliquement les termes de sorte s par des termes construits sur :



zero : → Nat

succ : Nat → Nat

pour pouvoir déterminer de façon unique l’interprétation de infη. De la même façon, la propriété suivante nous permet de représenter symboliquement les ordres partiels :

Théorème 4.23. Tout ensemble fini partiellement ordonné est isomorphe pour l’ordre à un sous-ensemble de Bn, pour un certain n ∈ N, muni de l’ordre produit (noté <×).

Exemple 4.24. Considérons un ensemble E = {⊥, l1, . . . , l6,>} partiellement ordonné dont l’ordre ≤E est décrit par la figure suivante :

l1 l2 l3 l5 l6 l4

On peut construire un isomorphisme de (E, ≤E) sur un sous-ensemble de (B5,≤×). L’image de (E, ≤E) est illustré par la figure suivante :

(0, 0, 0, 0, 0) (1, 0, 0, 0, 0) (0, 1, 0, 0, 0) (1, 1, 0, 0, 0) (1, 1, 1, 0, 0) (1, 1, 0, 1, 0) (1, 1, 1, 1, 1) (0, 0, 0, 0, 1)

Il suffit donc dans ce cas de représenter symboliquement les éléments de sorte s par un terme décrivant une liste de booléens :

   0 : BoolList → BoolList 1 : BoolList → BoolList nil : → BoolList

À partir de ces remarques, nous pouvons montrer la proposition 4.21.

}Démonstration. Soit teo une théorie de sécurité. La signature ΣSym

teo = (S, F) est définie comme suit :

S contient toutes les sortes s de Σteoainsi que les sortes Nat, BoolList, Environment et Factp< Fact et Factsp< Facts pour tout prédicat p de ˜ΣEnv

teo .

F contient tous les symboles suivants :

pour tout f : s1× . . . × sn→ s de ˜ΣEnv

teo , le symbole f : τ(s1)× . . . × τ(sn)→ s de ˜ΣEnv

teo , où τ(si) correspond à : – si si si n’est pas abstraite ;

– BoolList si siest abstraite et s’il existe un prédicat p : s×s tel que Cteo(p) = partial−order ;

– Nat si si est abstraite et s’il existe un prédicat p : s × s tel que Cteo(p) = total−order ;

pour tout prédicat p : s1× . . . × sn tel que Cteo(p) = empty, les symboles : – p : s1× . . . × sn→ Factp,

– nilp:→ Factsp

– consp : Factp× Factsp→ Factsp

le symbole h _, . . . , _ i : Factsp1×. . .×Factspn → Environment où {p1, . . . , pn} est l’ensemble des prédicats de ˜ΣEnv

teo tels que Cteo(p) = empty.

Soit un environnement η ∈ Env(teo). Notons ˜η l’environnement équivalent à η correspondant à une interprétation de Herbrand de ˜ΣEnv

teo . Pour tout p tel que Cteo(p) = empty, on construit le terme γteo(p)η comme étant la liste (construite avec les constructeurs consp et nilp des termes p(τ(t1), . . . , τ (tn)), pour tout fait p(t1, . . . , tn) valide dans ˜η, où τ(ti) est construit à partir de ti en remplaçant les sous-termes de sorte abstraite par un élément de Nat ou de BoolList (selon que le terme modélise un ensemble totalement ou partiellement ordonné) de telle sorte que les ordres (et les égalités) sur les τ(ti)respectent les ordres (et les égalités) de η. Le terme γteo(η) est alors égal à h γteo(p1)η, . . . , γteo(pn)ηi (on ordonne arbitrairement les prédicats). Enfin, l’applicationJ·Kteos’obtient simplement en effectuant le

raison-nement inverse. ~

Exemple 4.25. Soit η l’environnement défini dans l’exemple 4.5. γteo(η) est égal au terme h tsudo, taccesses, tredlist, tblacklisti où tsudo est donné par (pour plus de lisibilité, les termes spécifiant les entiers seront représentés par les entiers correspondants)

conssudo(sudo(user(1 , level(0(1(nil))))), nilsudo) 88

4.2. SÉMANTIQUES BASÉES SUR LA RÉÉCRITURE

taccesses par (les symboles consaccesses et nilaccessessont omis pour des ques-tions de lisibilités) :       

accesses(user(1 , level(0(1(nil)))), object(1 , level(0(1(nil)))), read), accesses(user(1 , level(0(1(nil)))), object(1 , level(1(0(nil)))), write), accesses(user(1 , level(1(0(nil)))), object(1 , level(0(1(nil)))), read), accesses(user(2 , level(1(0(nil)))), object(2 , level(0(0(nil)))), write) tredlist= nilredlist et tblacklist= nilblacklist.