1. HISTORIQUE

  • View
    21

  • Download
    0

Embed Size (px)

DESCRIPTION

1. HISTORIQUE. Origine PROLOG : PROgrammation LOGique. 1967 : SIMULA 67 1972 : introduit par Alain COLMERAUER. Ce langage permet une programmation dclarative. Repose sur deux courants: la dfinition des langages de programmation (W-grammaires) et la dmonstration automatique - PowerPoint PPT Presentation

Transcript

  • 1. HISTORIQUE

    OriginePROLOG : PROgrammation LOGique.1967 : SIMULA 671972 : introduit par Alain COLMERAUER. Ce langage permet une programmation dclarative. Repose sur deux courants: la dfinition des langages de programmation (W-grammaires) et la dmonstration automatique1981 : programme Japonais de 5me Gnration.1989 : Programmation Logique avec Contraintes (Prolog III)1995 : Extension et introduction des contraintes sur intervalles (Prolog IV)

  • HISTORIQUE (1)Logiciels Prolog Domaine du libreINRIA : GNU-PrologSicstus, Eclipse Domaine payantPrologIA : Prolog 4COSYTEC (Orsay) : CHIP (Constraint Handling in Prolog)ILOG Solver

  • HISTORIQUE(2)Mthodologie de construction de programmeSpcification logique partir de laquelle on drive un programme laide de rgles de drivation. Aspects neufs:Le langage dans lequel la spcification et le programme sont crits est le mme.Les rgles de drivation conservent la logique : si le programme sarrte le rsultat est conforme la spcification.

  • HISTORIQUE (3)Exemple PLC grand public vc(L, C) : vrai si L est une liste de versements annuels qui rembourse le capital C avec un intrt de 10 %.Spcification (et aussi programme):

    vc([], C)

  • HISTORIQUE (5)Aspect dclaratif

    Autre question dans le mme style (pas pour banquier ordinaire): V, vc([V, 2*V, 3*V], 1000) ?V = 133100/641 ou 207.6443057722309

    Ou encore (pas pour banquier du tout): C, vc([200, 400, 300], C) ? C = 982000/1331 ou 737.7911344853494

  • 2.CLAUSES DE HORN, MACHINE PROLOGclause de Horn: P0
  • CLAUSES DE HORN, MACHINE PROLOG (1)soit un terme complexe : f (t1, , tp), p 0 f : foncteur (une constante)t1, , tp : termesExemple: f (1, g (3, X))

    Les variables des clause sont quantifies universellementExemple :X, biellecoule(X)

  • CLAUSES DE HORN, MACHINE PROLOG (2)Toute clause de Horn peut se mettre sous la forme:P0 P1 Pn avec n 0Dmonstration ?Un seul littral (formule atomique ou formule atomique ngativ) est positif (P0)Une clause gnrale est de la forme:P0 Q1 Qp P1 Pn Qui possde ventuellement plusieurs littraux positifs et qui peut se mettre sous la forme:P0 Q1 Qp
  • Exemple initial type BDDes formules logiquespere (jacques, pierre)
  • Exemple initial type BD (1)pere (jacques, X). fournit un succs:X = pierrepere (X, Y) fournit un succs et deux solutionsX = jacques, Y = pierre ;X = pierre, Y = isidore.

    On trouve ici un exemple de la premire de drivation:Les rgles sont consultes par le dmonstrateur prolog dans leur ordre dapparition.

  • Exemple initial type BD (2)Le thorme dmontrer suivantZ, Y pere (jacques, Z) pere(Z, Y) peut se traduire par la requte:pere (jacques, Z), pere(Z, Y) dmontre par le processus:{jacques = jacques,Z = pierre}pere (Z, Y){jacques = pierre,Z = isidore} Echec{Z = jacques,Y = pierre}Echec{Z = pierre,Y = isidore}Succs1212

  • Exemple initial type BD (3)On trouve ici un exemple de la deuxime rgle de drivation:Les buts (formules atomiques) sont prouvs de gauche droite.

    La clause de Horn X, Y, Z grand_pere (X, Y)

  • Exemple initial type BD (4)Exercice: donner les deux dmonstrations diffrentes suivant ces deux rgles de la requte:grand-pere(jacques,Y).

    Exercice: montrer que la clause de Horn X, Y, Z grand_pere(X, Y)

  • Machine Prolog-tat courant: (W, L-b, R) oW : ensemble des variables de la question initialeL-b : squence des "buts (formules atomiques) prouver.R : systme dquation courant (suppos satisfiable plus ou moins fortement)

    -tat initial : (W, [Q0], F )Q0 = requte initiale.

  • Machine Prolog (1)-tat final = (W, [ ], Rf)Rf satisfaisable.Rsultat: Systme dquation "le plus petit" extrait de Rf portant sur les variables de W.-rgle dinfrence:(W, [B0, B1, , Bm], R), P0 : P1, , Pn-------------------------------------------------------------(W, [ P1, , Pn, B1, , Bm], {B0 = P0} R)R et {B0 = P0} R doivent tre statisfaisables

  • Machine Prolog (2)Exemple:tat initial : ({U}, [grand_pere (jacques, U)], F )Application de la rgle dinfrence:({U}, [grand_pere (jacques, U)], F),grand_pere (X, Y) :- pere (X, Z), pere (Z, Y).-----------------------------------------------------({U}, [pere (X1, Z1), pere (Z1, Y1)], {grand_pere (jacques, U) = grand_pere (X1, Y1)} F )

  • 3. Contraintes sur les arbres quation sur les arbres: satisfaisable si les tiquettes des sommets sont gales et si leurs fils sont gaux deux deux. On dit quil y a unification des deux arbres.Exemple:{ f (1,Y) = f (X,4) }ou f1YfX4=a une solution: {1 = X, Y = 4}

  • Unificationf (1,Y) et f (X,4) sunifient en f(1, 4).Exemple:{ f (Y, 2, 1) = f (1,Y,Y) }na pas de solution.Exemple:{ X = f (1,X) } a pour solution un arbre infini rationnel (voir chap. 7).

  • Listes- liste vide : constante, soit : nil liste non vide : terme complexe soit:cons(E, L)o E est le premier lment de liste et L la liste restante.Exemple: cons(1, cons(2, cons(3, nil)))Exemple dunification:{cons(X, cons(2, cons(3, nil))) = cons(1, L)} a pour solution:{ X = 1, L = cons(2, cons(3, nil)) }

  • Construction de programmes1) Spcification logique2) Drivation depuis la spcification dun programme qui se termine pour la question considre.

  • Terminaison et rversibilitDfinition:concat(X, Y, Z) : vrai si X, Y, Z sont des listes et si Z est la concatnation de X et Y.Spcification: X, Y concat (nil, Y, Z)
  • Terminaison(1)Est-ce que la dmonstration de concat(X, Y, Z)se termine pour les cas suivants ?XY Z o * signifie connu et ? inconnu*****?*?*?***???*???*???

  • Terminaison(cont. 1)Thorme retenirtoute suite entire ui, tq i ui 0 et ui > ui+1, est finieExemple non trivial :proc pgcd = (ent a, b) ent :casa = b alors a,a > b alors pgcd (a-b, b),a < b alors pgcd (a, b-a)fcasAvec pr-condition a>0, et b>0 et entiers

  • Terminaison(cont. 2)Pour montrer que pgcd (a0, b0) termine (a0>0, b0>0):pgcd (a0, b0) -> pgcd (a1, b1) -> pgcd (a2, b2)Il sagit de dcouvrir une fonction f entire respectant le thorme prcdent et tq:u0 = f (a0, b0), u1 = f (a1, b1), u2= f (a2, b2)f(a, b) = a-b ne convient pasf(a, b) = | a-b | ne convient pasf(a, b) = a + b et f(a, b) = a * b conviennent.

  • Terminaison (cont. 3)En programmation logique, il faut prendre soin de montrer que la fonction f est valuableSoit Z connu comme dans la requte:concat (X, cons(2, nil), cons(1, cons(2, nil)))La fonction f = |Z| convient: |cons(E, L1)) |> |cons(L1)|On montre par rccurence quelle est valuable.Idem si X est connu. Les seuls cas de non terminaison sont ceux o ni la taille de X ni celle de Z ne sont connues.Question: quel est le rsultat de la requte suivante ?concat (cons(1, nil), Y, Z)

  • Notation usuelle de listesNotations de base: [], [E | L]Contractions:[E1 | [E2[En | L]]] = [E1, E2, , En|L][E1, E2, |[]] = [E1, E2,]

  • Drivation de programmeDfinition:inverse(X, Y) : vrai si X est inverse de Y .Spcification:inverse([], [])
  • Drivation de programme(1)Mthodologie: drivation dun deuxime programme possdant la mme spcification:

    inverse2([], []). inverse2([E| L], Y) :- inverse2(L, L1), concat (L1, [E], Y).

    Mmes questions concernant la terminaison de dmonstrations du type inverse(X, Y) selon que la taille de X ou celle de Y est connue.

  • CoupureTroisime rgle de drivation. Ncessite par un besoin defficacit i toutes les dmonstrations ne sont pas ncessaires.Exemple:membre_et_reste(X, L ,R): vrai si X a une occurrence dans L et si R est L ampute de cette occurence.membre_et_reste(X, [X | L],L). membre_et_reste(X, [E| L], [E | Rp]):- membre_et_reste(X, L, Rp).

  • Coupure(1)membre_et_reste(1, [2,1,3,1,4,1,5], R).fournit: R = [2,3,1,4,1,5];R = [2,1,3,4,1,5];R = [2,1,3,1, 4, 5].Si on introduit la coupuremembre_et_reste(X, [X | L],L) :- !.le seul rsultat est:R = [2,3,1,4,1,5].

  • Coupure(2)La coupure ! est une formule atomique toujours vraie. De plus, tous les buts en suspens pour prouver le but qui est le sujet de la rgle dans laquelle intervient la coupure sont abandonns.Exemple::- B1, !, B2. B :- B3.B1:-A1. B1 :- A2.A1.Consigne: rgle de drivation employer avec prcaution pour ne pas supprimer la compltude, ie supprimer toutes les dmonstrations. Emploi sur: requte initiale, !.

  • Coupure(3)BB1, !, B2A1, !, B2 !, B2B2abandonabandon

  • Ngation par checneg_par_echec(b) :- b, !, fail.neg_par_echec(b).Fausse ngation nemployer que sur des buts instancis.homme(pierre).homme(jacques).fort(jacques).homme(X), neg_par_echec(fort(X)) donne un succs.neg_par_echec(fort(X)), homme(X) donne un chec.

  • 4. Contraintes sur les listesObjets: les listesOprations: X o Y (concatnation)Contraintes: =, #, size(N, X) (N est la taille de X).Exemple: {[U, 2]o Y = [1]o [V, W]} se rduit en:{U = 1, 2 = V, Y = [W]}Deux questions: dcidabilit de la satisfaisabilit de telles contraintes et (si dcidabilit) complexit (en termes de nb de variables et nb dquations).

  • LinaritIci pour obtenir une bonne efficacit, on autorise seulement des concatnations linaires tq dans Z = X oY , deux des tailles parmi celles de X, Y et Z sont connues.Exemple:X o [3] o Y = [1, 2, 3, 4] nest pas accept.Maissize(6, X), [1, 2, 3]o X = X o [1, 2, 3].size(10000, X), [1]o X = X o [1].le sont.

  • Rversibilit. Pseudo-linaritPour illustrer le fait que + de contraintes => + de rversibilit, une nouvelle mouture:inverse([], []). inverse([E] o X, Y o [E]) :- inverse(X, Y).ncessite la vrification que les quations poses sont linaires.inverse([1, 2], Y).termine mais pose des quations non linaires. Cependant, elles sont conserves et elles deviennent linaires par propagation (pseudo-linarit).

  • Rversibilit. Pseudo-linarit(1)Une solution sans quations pseudo-linaires.inverse(X, Y) :- sixe