Principes des lang. de progr.
INE 11
Michel Mauny
Inria-Paris
prénom.nom@inria.fr
Michel Mauny (Inria-Paris) INE 11 prénom.nom@inria.fr 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énom.nom@inria.fr 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)
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énom.nom@inria.fr 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énom.nom@inria.fr 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
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énom.nom@inria.fr 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énom.nom@inria.fr 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.
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énom.nom@inria.fr 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énom.nom@inria.fr 11 / 22
Extension, composition
Composition
On définit la compositionθ1◦θ2de deux substitutionsθ1etθ2comme la substitution qui associe à toute variablex le terme θ1(θ2(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
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énom.nom@inria.fr 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énom.nom@inria.fr 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) —
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énom.nom@inria.fr 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énom.nom@inria.fr 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
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énom.nom@inria.fr 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énom.nom@inria.fr 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)
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énom.nom@inria.fr 22 / 22