13.07.2015 Views

Cours PROLOG.pdf

Cours PROLOG.pdf

Cours PROLOG.pdf

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Dossier sur <strong>PROLOG</strong>La recherche de solutionPropriété :Soit X une variableSoient σ et ρ deux substitutions telles que :⎧Y1→τ1⎧ Z1→⎪⎪σ : ⎨ M et ρ : ⎨ M⎪⎩Y k→τ⎪k⎩Z k→Alors ϑ = ρ oσest aussi une substitution telle que :Y ρ σ▪ si X=Y i alors ϑ ( ) = ( ( ))i▪ si X=Z j tel que Z j ≠Y i alors ϑ ( Z ) = ρ( )Y i▪ si ∀i,j X≠Y i et X≠Z j alors ϑ ( X )III.1.3. UnificationIII.1.3.1. Définitionj= XZ jλλDéfinition :Soient deux termes t 1 et t 2Unifier t 1 et t 2 c’est trouver la substitution la plus générale qui permet de faire de t 1 et t 2 un seul et même terme.Théorème :Si deux termes sont unifiables, il existe une façon la plus générale pour les unifier.Rem : En <strong>PROLOG</strong> l’unification se note « = ».1kEx : Unification directe de deux termes?- f(a,Y)=f(Z,T).Y = _G158Z = aT = _G158Yes⎧Z↔ aPour unifier ces deux termes, <strong>PROLOG</strong> tente d’unifier simultanément ⎨⎩T↔ YUne solution possible est Y = Z = T = a mais ce n’est pas la solution la plus générale. En effet, elle peut se déduire de⎧Z= ala solution ⎨ qui est bien la plus générale comme le montre le résultat de <strong>PROLOG</strong>.⎩T= YEx : Unification directe entre deux termes impossible?- f(a,Y)=g(Z,T).NoL’unification n’est possible que si le nom des termes (c’est à dire leur racine dans la représentation en arbre) est le mêmepour les deux termes.?- f(a1,a2)=f(X1,X2,X3).NoL’unification est également impossible si les deux termes ont un nombre différent d’arguments.Ex : Unification indirecte entre deux termes?- X=f(a,Y),X=f(Z,T).X = f(a, _G158)Y = _G158Z = aT = _G158YesIci <strong>PROLOG</strong> ne peut pas ‘voir’ que cette requête est la même que celle du premier exemple. Il résout alors deuxunifications en parallèle.On retrouve bien la même solution qu’un peu plus haut.Ex : Deux unifications directes simultanées?- f(a,Y)=f(Z,T),h(b,Z)=h(Y,U).Y = bZ = aT = b26

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!