• Aucun résultat trouvé

INE 11

N/A
N/A
Protected

Academic year: 2022

Partager "INE 11"

Copied!
8
0
0

Texte intégral

(1)

Principes des lang. de progr.

INE 11

Michel Mauny

Inria-Paris

pré[email protected]

Michel Mauny (Inria-Paris) INE 11 pré[email protected] 1 / 22

Termes

1 Termes du premier ordre Termes sans variables Définitions inductives Termes avec variables

2 Filtrage

3 Unification

Michel Mauny (Inria-Paris) INE 11 pré[email protected] 2 / 22

Motivations

Termes

représentation d’expressions quelconques 1+2

if p(x) theng(f(x),h(x,y,z)) else succ(1+t) P(x)∨ ¬Q(x))

logique, types, données structurées, morceaux de programme variables pour représenter une infinité de termes

Du 1er ordre : sans liaisons de variables oui :P(x)∨ ¬Q(x)

non :∀x,P(x)∨ ¬Q(x)

(2)

Termes

Symboles :on considèreΣ, un ensemble symboles munis d’une arité Σ1={(Zero,0),(Succ,1),(Plus,2)}

Σ2={(A,0),(F,1),(G,3)}

Définition

Termes

L’ensembleTΣdes termes sur Σ(appelésΣ-termes) est défini par : tout symbole deΣd’arité 0 est unΣ-terme

sit1, . . . ,tnsont desΣ-termes et siF ∈Σest un symbole d’aritén, alorsF(t1, . . . ,tn)est unΣ-terme.

Michel Mauny (Inria-Paris) INE 11 pré[email protected] 4 / 22

Exemples

Exemples

Plus(Succ(Zero),Zero)∈ TΣ1

F(G(A, F(A), A)) ∈ TΣ2

Succ(F(A))∈ TΣ1Σ2

Zero(Succ) n’est pas un terme valide Graphiquement

Zero Succ

Plus

F

Zero

G

A F

A A

Michel Mauny (Inria-Paris) INE 11 pré[email protected] 5 / 22

Définitions inductives

Ensembles de termes quelquefois définisinductivement

Le plus petit ensemble contenant une relation nat=Zero|Succofnat

qu’on peut lire comme

natest le plus petit ensembletel que : Zero∈nat

sin∈natalorsSucc(n)∈nat

(3)

Définitions inductives

On retrouve de telles définitions dans :

définitions de type OCaml (types ditsalgébriques) définitions de grammairesalgébriques

. . .

Entiers naturels Pairs

0 est pair

npair⇒n+2 pair

Impairs

1 est impair

nimpair⇒n+2 impair

Michel Mauny (Inria-Paris) INE 11 pré[email protected] 7 / 22

Preuves par induction

SoitE défini par induction avec cas de baseb1, . . . ,bn

cas d’inductionpi ⇒qi

Pour montrerP surE montrerP(bi)

montrerP(pi)⇒P(qi) Exemple

arbre=F|Nofarbre∗arbre

montrer que le nombre de feuilles d’unarbreest au plus égal à 1+le nombre de nœuds (fa≤na+1)

par induction sur la structure d’arbre: casa=F: trivial

casa=N(t,u) : on suppose la propriété vraie pourt etu, et on conclut puisquefu≤nu+1 etft≤nt+1, on a

fa=fu+ft≤nu+nt+2=na+1

Michel Mauny (Inria-Paris) INE 11 pré[email protected] 8 / 22

Termes avec variables

TΣ ne contient que des termes dits clos

Soit V ensemble infini dénombrable de noms de variables

Termes avec variables

toute variable deV est unΣ∪ V-terme

tout symbole deΣd’arité 0 est unΣ∪ V-terme

sit1, . . . ,tnsont desΣ∪ V-termes et siF ∈Σest un symbole d’arité n, alorsF(t1, . . . ,tn)est unΣ∪ V-terme

Dans la suiteΣetV sont implicites.

(4)

Substitution

Définition

Unesubstitutionest une fonction totale de l’ensemble des variablesV vers un ensemble de termesT.

Domaine

dom(θ)ensemble desx tels queθ(x)6=x

on ne considérera que des substitutions à domaine fini Notations, terminologie

[x17→t1;. . .;xn7→tn]

la substitution identité :∅ ou [ ]

renommage :θbijective dont le codomaine ne contient que des variables

Michel Mauny (Inria-Paris) INE 11 pré[email protected] 10 / 22

Morphisme

De substitution à morphisme

On étend naturellement une substitutionθen unmorphisme de termesθ: θ(F(t1, . . . ,tn)) =F(θ(t1), . . . , θ(tn))

θ(x) =θ(x)

Par la suite,θ sera notéθ :on confondra substitution et morphisme associé.

Michel Mauny (Inria-Paris) INE 11 pré[email protected] 11 / 22

Extension, composition

Composition

On définit la compositionθ1◦θ2de deux substitutionsθ1etθ2comme la substitution qui associe à toute variablex le terme θ12(x)).

Extension de

θ

L’extension de la substitutionθpar[x7→t]est la substitution notée θ⊕[x 7→t]définie par :

dom(θ⊕[x7→t]) =dom(θ)∪ {x}

(θ⊕[x 7→t])(x) =t

(θ⊕[x 7→t])(y) =θ(y)poury 6=x

(5)

Pré-ordre sur les termes

Les substitutions induisent un pré-ordre sur les termes préordre = relation binaire réflexive et transitive Note : un ordre (partiel) est un préordre anti-symétrique

Préordre de généralité

On dira quet1 estmoins généralquet2, et on noterat1≤t2 si il existe une substitutionθtelle quet1=θ(t2).

On dira quet1 est uneinstancedet2.

Michel Mauny (Inria-Paris) INE 11 pré[email protected] 13 / 22

Filtrage

Le problème du filtrage :Trouver une réponse à la question suivante : Étant donnés deux termest etm, a-t-ont≤m?

que l’on peut aussi formuler comme :

Le termet est-il une instance du termem? Utilisation

filtrage (pattern matching) des langages comme OCaml transposer un théorème général dans un contexte particulier raisonnement quotidien !

Calcul de substitutionθtelle queθ(m) =t

Michel Mauny (Inria-Paris) INE 11 pré[email protected] 14 / 22

Exemples

terme instancede ? motif substitution

Succ(Succ(Zero)) Succ(x) θ= [x7→Succ(Zero)]

Succ(Succ(y)) Succ(x) θ= [x7→Succ(y)]

Succ(Succ(x)) Succ(x) θ= [x7→Succ(x)]

G(F(A),F(A),F(A)) G(x,x,x) θ= [x7→F(A)]

Succ(x) 6≤ Succ(Succ(y))

G(F(A),A,F(A)) 6≤ G(x,x,x)

(6)

Algorithme

filtre[(m,t)]∅est défini par

filtre : (terme× terme) list→subst.→subst. (ouéchec) filtre[ ] θ=θ

filtre[(x,t1); (m2,t2);...; (mn,tn)]θ= six6∈dom(θ)alors

filtre[(m2,t2);...; (mn,tn)] (θ⊕[x7→t1])sinon siθ(x) =t1alorsfiltre[(m2,t2);...; (mn,tn)]θ sinon échec

filtre[(S(q1, . . . ,qk),T(u1, . . . ,ul)); (m2,t2);...; (mn,tn)]θ= siS=T alorsfiltre[(q1,u1);...; (qk,uk); (m2,t2);...; (mn,tn)]θ sinon échec

filtren’importe quoi d’autre=échec

Michel Mauny (Inria-Paris) INE 11 pré[email protected] 16 / 22

Unification

L’unification

deux termes ont-ils des instances communes ? la réponse peut être :

«non, évidemment» :AetB,F(...) etG(...)

«oui, évidemment» :Succ(x)etSucc(Zero)

moins évidente :Plus(x,Succ(Zero))etPlus(Succ(y),z)

c’est la résolution d’une équation entre termest1=t2, qui revient à calculer une substitutionθtelle queθ(t1) =θ(t2)

Si deux termes admettent un unificateurθ, on dit qu’ils sont unifiables

Michel Mauny (Inria-Paris) INE 11 pré[email protected] 17 / 22

Exemples

termes à unifier

Succ(Succ(x))etSucc(Succ(x))

Plus(Zero,Zero)etPlus(x,Zero) [x7→Zero]

Plus(Zero,x)etPlus(x,Zero) [x7→Zero]

Plus(Succ(y),x)etPlus(Succ(Succ(x)),Succ(Zero))

[y7→Succ(Succ(Zero));x7→Succ(Zero)]

Succ(Zero)etSucc(Succ(Zero))

Succ(x)etSucc(Succ(x))

Dernier exemple :équation récursive

(7)

Principe de l’algorithme

Cas général

soit à unifier[(t1,u1), . . . ,(tn,un)]: on cherche µtelle que

∀i=1..n, µ(ti) =µ(ui)

sit1 est unifiable avecu1, produisantµ1, on continue l’unification de [(µ1(t2), µ1(u2)), . . . ,(µ1(tn), µ1(un))]

si cela réussit et produitµ0, alorsµ0◦µ1unifie[(t1,u1), . . . ,(tn,un)].

Michel Mauny (Inria-Paris) INE 11 pré[email protected] 19 / 22

Algorithme

unifier[(t,u)]∅est défini par

unifier : (term×term) list→subst.→subst. (ou échec) unifier [ ]µ=µ

unifier[(x,u1); (t2,u2);...; (tn,un)]µ=

six=u1alorsunifier[(t2,u2);...; (tn,un)]µsinon six apparaît dansu1alors échec sinon

soitµ1= [x7→u1]

unifier(µ1(t2), µ1(u2));...; (µ1(tn), µ1(un))] (µ1◦µ) unifier[(t1,x);...; (tn,un)]µ= unifier[(x,t1);...; (tn,un)]µ unifier[(S(a1, ...,ak),T(b1, ...,bl)); (t2,u2);...; (tn,un)]µ=

siS=T alorsunifier[(a1,b1);...; (ak,bk); (t2,u2);...; (tn,un)]µ sinon échec

Michel Mauny (Inria-Paris) INE 11 pré[email protected] 20 / 22

Propriétés

L’unificateurde 2 termes (quand il existe) n’est pas unique : siµunifie,θ◦µles unifie aussi

pourt etu, il existe un «meilleur» unificateurµ, tel que : siθunifietetu, alors∃θ0 t.q.θ=θ0◦µ

µest unique, à un renommage près

il est appeléunificateur le plus général, et on le note quelquefois mgu(t,u)

Alan Robinson, 1965 Voir aussi

Anti-unification ou généralisation (Plotkin 1971, Huet 1976)

(8)

Conclusion

Les termes

représentation de données dans le domaine du calcul symbolique (compilation, logique,etc.

clos, avec variables

filtrage et unification : mécanismes de base de «raisonnements mécaniques»

Michel Mauny (Inria-Paris) INE 11 pré[email protected] 22 / 22

Références

Documents relatifs

découpage du programme en morceaux compilables indépendamment pour rendre les gros programmes compilables. donner de la structure

Comment produire un analyseur à partir d’une spécification traduction d’expressions rationnelles en automates finis non-déterministes.

Générateur d’analyseurs ascendants pour OCaml similaire à Yacc (pour C, mais aussi Java, etc) grammaires LALR(1) : LR(1) + compaction de tables grammaire + actions dans un

référence pour programmeurs : savoir «ce que ça fait» sans le tester preuves de correction de programmes : raisonnement mathématique impossible sans sémantique formelle.

Puis «lire» les axiomes et règles d’inférence comme des cas d’une fonction d’évaluation :. val eval : Pcfast.expr → environment → semopval let rec eval t rho = match

Les traits les plus importants des langages classiques (blocs, variables, fonctions/procédures, instructions, structures de données, objets) Une mise en œuvre possible de ces traits

Le dessin étant fait à l’échelle réduite, la représentation exacte de certains éléments ou détails y serait peu lisible ou même irréalisable.. On peut citer, à

On peut aussi représenter ces données avec un diagramme rectangulaire, où l’aire des rectangles est proportionnelle aux effectifs