Damien ?· Programmation logique avec SWI-Prolog 3. Mécanismes de Prolog Damien Nouvel ... Un menu…

  • Published on
    04-Apr-2019

  • View
    212

  • Download
    0

Embed Size (px)

Transcript

Programmation logique

Damien Nouvel

Damien Nouvel (Inalco) Programmation 1 / 14

Principes de programmation logique

Plan

1. Principes de programmation logique

2. Programmation logique avec SWI-Prolog

3. Mcanismes de Prolog

Damien Nouvel (Inalco) Programmation 2 / 14

Principes de programmation logique

Historique de la programmation logique

Historiquement : calculateurs, programmation imprative Fonctionnement pas--pas Compilation mais pas dinfrences

Manipulation de connaissances Dclarations de variables et fonctions Interrogation par requtes (non-dterministe) Rgles dinfrences

Moins implmenter, mais plus contraignant Prolog : PROgrammation LOGique (Colmerauer, 1972)

Chanage arrire partir de buts Unification par substitutions

Damien Nouvel (Inalco) Programmation 3 / 14

Principes de programmation logique

Fonctionnement gnral

Programme- faits

- rglesBase de

connaissances

MoteurdinfrencesRequte

Damien Nouvel (Inalco) Programmation 4 / 14

Principes de programmation logique

Syntaxe Prolog

Briques lmentaires Constantes avec une minuscule : pierre, paul Nombres entier ou flottant : 42, 2.3 Chanes entre guillemets : "abcdef" Variables avec une majuscule : X, Y Prdicats avec une minuscule : humain(X)

Assertions ou instructions (terminent par un point) Faits / base de connaissances, par exemple

Prdicat unaire : humain(pierre). Prdicat binaire : parent(pierre, paul).

Rgles : fils(X, Y) :- parent(Y,X), homme(X). Requtes : ?-enfant(paul, X).

Sans variables, rponse dans tV,Fu (true, fail) Avec n variables, rponse dans tFu Y Dn

Diffrent de : X \= YDamien Nouvel (Inalco) Programmation 5 / 14

Programmation logique avec SWI-Prolog

Plan

1. Principes de programmation logique

2. Programmation logique avec SWI-Prolog

3. Mcanismes de Prolog

Damien Nouvel (Inalco) Programmation 6 / 14

Programmation logique avec SWI-Prolog

Gnralits

SWI-Prolog Jan Wielemaker (1987) Environnement en ligne de commande Demo en ligne : http://swish.swi-prolog.org/

Damien Nouvel (Inalco) Programmation 7 / 14

http://swish.swi-prolog.org/

Programmation logique avec SWI-Prolog

Exercice

Famille Modlisez les faits suivant

Jean et Marie sont parents de Pierre, Paul et Sophie Pierre a deux enfants : Eliott et Rosie Sophie a trois enfants : Adrien, Irne et Marc

Dfinissez des rgles pour modliser les relations Grand-parent Petit-enfant

Ajoutez les faits sur le sexe de chaque personne et ajoutez Frre, sur Oncle, tante

Faites les requtes qui retournent Les oncles de Marc Les frres dIrne Le grand-pre de Rosie

Damien Nouvel (Inalco) Programmation 8 / 14

Mcanismes de Prolog

Plan

1. Principes de programmation logique

2. Programmation logique avec SWI-Prolog

3. Mcanismes de Prolog

Damien Nouvel (Inalco) Programmation 9 / 14

Mcanismes de Prolog

Unification

Comment trouver une rponse une requte ? Unifier des clauses avec la requte

Substitutions de variables adquates dans les faits Exemple

pere(jean, pierre). ?- pere(jean, X). pere(Jean,X)[X/pierre]

Faire des infrences Substitutions de variables adquates dans les rgles Exemple

pere(pierre, eliott). gdpere(X,Y) :- pere(X, Z), pere(Z, Y). ?- gdpere(jean, X). pere(X,Z) ^ pere(Z,Y)[X/jean,Y/eliott,Z/pierre] $ gdpere(Jean,Eliott) gdpere(Jean,X)[X/Eliott]

Damien Nouvel (Inalco) Programmation 10 / 14

Mcanismes de Prolog

Oprateur de ngation, dunification, de listes

Loprateur not pour la ngation impair(X) :- entier(X), not(pair(X))

Loprateur is force lunification entre expressions X is 3*2

Les listes pour les ensembles ordonnes Liste vide : [] Liste de trois lments : [a, b, c] Tte et queue de la liste : [Tete|Queue] enfants(X, [Aine|AutresEnfants])

Damien Nouvel (Inalco) Programmation 11 / 14

Mcanismes de Prolog

Rcursivit

Forte utilisation de la rcursivit Sous forme logique, deux clauses Famille : fonction anctre (parent du parent du parent )

ancetre(X,Y) :- parent(X,Y). ancetre(X,Y) :- parent(X,Z), ancetre(Z,Y).

Clause initiale et rcursivit sur un prdicat Attention lordre des clauses

Damien Nouvel (Inalco) Programmation 12 / 14

Mcanismes de Prolog

Exercice

Animaux Dfinissez un ensemble dtre vivants comme

Animaux Vgtaux

Dfinissez Des prdicats mange(X,Y) avec des constantes La rgle carnivore(X) La rgle herbivore(X) La rgle omnivore(X) La rgle predateur(X,Y)

Damien Nouvel (Inalco) Programmation 13 / 14

Mcanismes de Prolog

Exercice Cuisine

Le restaurant des plats (avec leurs ingrdients comme listes) Salade (laitue, oignons, pain, huile) Tomates (tomates, huile) Pt (canard, pain) Lasagne (pte, boeuf, oignons, tomates) Lgumes (patates, carottes, oignons, pain) Escalope (patates, poulet) Salade de fruits (pomme, banane, raisin) Tarte (pte, pomme) Fondant (chocolat)

Dfinissez comme listes Les entres, les plats et les desserts Un menu rapide : entre / plat ou plat / dessert Un menu complet : entr, plat, dessert Les plats qui contiennent de la viande Les menus qui contiennent de la viande

Damien Nouvel (Inalco) Programmation 14 / 14

Principes de programmation logiqueProgrammation logique avec SWI-PrologMcanismes de Prolog

Recommended

View more >