La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Licence Informatique Module Théories et Modèles pour l'Informatique II Option Programmation logique en Prolog Philippe Collard

Présentations similaires


Présentation au sujet: "Licence Informatique Module Théories et Modèles pour l'Informatique II Option Programmation logique en Prolog Philippe Collard"— Transcription de la présentation:

1 Licence Informatique Module Théories et Modèles pour l'Informatique II Option Programmation logique en Prolog Philippe Collard pc

2 Objectifs du cours Initiation à la programmation en logique : application de certaines notions vues en cours de logique Découverte de la programmation en Prolog : utilisation d'exemples liés à l'intelligence artificielle

3 Bibliographie F. Giannesini, H. Kanoui, R. Pasero et M. Van Caneghem, Prolog, InterEditions, 1985 Bratko, Programmation en Prolog pour l'intelligence artificielle, InterEditions, 1988 L. Sterling, E. Shapiro, L'art de Prolog, Ed. Masson, 1990 P. Collard, Programmation déclarative et impérative en Prolog, Ed. Masson, 1992

4 Durée / Contrôle des connaissances 5 cours (2h) 5 TDM (2h) 60% l'examen final 40% la note obtenue en TDM pondérée par la note de présence et de participation

5 Programmation Déclarative Un univers de boites Une boite est posée sur le sol ou dans une autre boite, ou encore sur une autre boite On dispose dune grande boite, dune boite de taille moyenne et de cinq petites boites 1. Identifier les huit entités manipulées 2. Répertorier et définir les deux relations qui existent entre ces entités

6 Configuration 1 a c ed b

7 Déclarer la configuration 1 est_posee_dans(a, gb). est_posee_dans(d, bm). est_posee_dans(e, gb). est_posee_sur(b, d). est_posee_sur(c, a). est_posee_sur(gb, sol). est_posee_sur(bm, sol).

8 Déclarations = Programme Prolog Ce programme est uniquement constitué de faits (affirmations) Les entités sont représentées par des atomes Les relations sont représentées par des prédicats Un prédicat est caractérisé par son nom et son arité ; on note est_posee_sur/2 On regroupe les déclarations relatives à une même relation ; on obtient ainsi une procédure Prolog (paquet de clauses)

9 Répondre aux questions Qui est posée sur la boite a ? Qui est posée sur le boite e ? Sur qui est posée la boite c ? Qui est posée dans la grande boite ?

10 Poser une question en Prolog ?- est_posee_sur(X, a). X = c ; ?- est_posee_sur(X, e). no ?- est_posee_sur(c, X). X = a ; ?- est_posee_dans(X, gb). X = a ; X = e ;

11 Une boite est-elle prise ? On suppose que lon peut poser au plus une boite sur une autre boite La relation est_prise/1 sexprime en Prolog par la règle est_prise(X) :- est_posee_sur(Y,X). Une règle Prolog est composée dune tête et dune queue séparées par le symbole :- Le symbole :- doit se lire comme un si

12 Règles: B :- A. ¬AvB (nonA ou B) B :- A1,A2.¬(A1.A2)vB = ¬A1v¬A1vB Fait: B.B exactement un littéral positif Question (but): ?-A.¬A que des littéraux négatifs Prolog versus Clause de Horn

13 On appelle clause de Horn toute clause ayant au plus un littéral positif B, ¬A, ¬Av¬C, ¬Av¬CvB sont des clauses de Horn mais AvB, ¬Av¬BvCvD n'en sont pas On appelle fait toute clause comprenant exactement un littéral positif par exemple B On appelle but toute clause n'ayant que des littéraux négatifs par exemple ¬A, ¬A1v¬A2 Clause de Horn

14 Variable anonyme est_prise(X) :- est_posee_sur(Y,X). La variable Y qui apparaît dans la queue de la règle nest pas référencée dans la tête il est donc inutile de la nommer On peut alors utiliser une variable anonyme _ est_prise(X) :- est_posee_sur(_,X).

15 Quelles sont les boites prises ? ?- est_prise(X). X = d ; X = a ; X = sol ; Expliquer pourquoi Prolog répond que le sol est pris Proposer une solution pour éviter cela

16 Quelles sont les boites prises ? boite(a). boite(b). boite(c). boite(d). boite(e). boite(gb). boite(bm). est_prise(X) :- boite(X), est_posee_sur(_,X).

17 Règle est_prise/1 La procédure boite/1 définit en extension le concept de boite La règle est_prise/1 exprime quune entité X est prise –si cest une boite –et si il existe une entité qui est posée sur X la virgule doit donc être lue comme et si

18 Configuration 2 a c eb d

19 Modifier en conséquence le code du programme Poser les questions suivantes en Prolog : –a est-elle une boite ? –a est-elle prise ? –qui est posé sur a ? –sur qui a est-il posé ? –dans quoi a est-il ?

20 Interpréter les questions Prolog ?- est_posee_sur(X,Y). ?- est_posee_sur(X,_). ?- est_posee_sur(_,Y). ?- est_posee_dans(X,Y). ?- est_posee_dans(X,_). ?- est_posee_dans(_,Y).

21 On sintéresse au contenu des boites % Regle 1 est_dans(X,Y) :- est_posee_dans(X,Y). % Regle 2 est_dans(X,Y) :- … % Regle 3 est_dans(X,Y) :- …

22 Procédure est_dans/2 est_dans(X,Y) :- est_posee_dans(X,Y). est_dans(X,Y) :- est_posee_sur(X,Z), est_dans(Z,Y). est_dans(X,Y) :- est_posee_dans(Z,Y), est_dans(X,Z).

23 Cette procédure est composée de trois règles Le symbole :- de la règle 1 correspond à un si Le symbole :- de la règle 2 correspond à un ou si Le symbole :- de la règle 3 correspond à un ou si

24 Interpréter et répondre aux questions ?- est_dans(X, bm). ?- est_dans(X, gb). ?- est_dans(b, X).

25 Une affaire de famille … Anna, Jean, jacques, Julien et Paule sont de la même famille Le prénom permet didentifier sans ambiguïté un individu Le sexe peut être déterminé par le prénom Jacques et Jean sont des enfants de Julien. Jean est enfant de Anna. Paule est enfant de Jean. Stéphanie est enfant de Jacques

26 Une affaire de famille … Dessiner larbre généalogique de cette famille –Le prénom permet didentifier sans ambiguïté un individu Identifier les entités –Le sexe peut être déterminé par le prénom

27 Des entités et des relations Entités jacques, jean, julien, anna, paule, stéphanie, homme, femme Définir la relation parent/2 Définir la relation sexe/2

28 Interpréter et répondre aux questions ?- parent(julien, X). ?- parent(X, jean). ?- parent(julien, jean). ?- parent(jean, julien). ?- parent(X, Y). ?- sexe(julien, X). ?- sexe(X, femme).

29 Définir les relations mere/2 pere/2 grand_mere/2 grand_pere/2 grand_parent/2


Télécharger ppt "Licence Informatique Module Théories et Modèles pour l'Informatique II Option Programmation logique en Prolog Philippe Collard"

Présentations similaires


Annonces Google