Autres langages de l IA Cours en cours de réalisation Module Programmation Logique Pierre De Loor enib -2004 deloor@enib.fr www.enib.fr/~deloor
Exemples Programmation logiques par contraintes Programmation fonctionnelle CLIPS SOAR Programmation logique parallèle Programmation des logiques modales Programmation des logiques temporelles Programmation logique inductive Programmation logique abductive
Programmation logique par contraintes CHIP CLP CLP(FD) Distribution AWC
Programmation fonctionnelle (PF) Fonctions Origine mathématique Lambda-calcul : Church 1932 Formalisation de la notion de fonctions Exclusion de la dualité Intension/extension Fonctions définies par des règles Récursivité intrinsèque : le domaine des lambdafonctions est l ensemble des termes du lambdacalcul Applications Mathématiques Informatique Linguistique
PF : lambda calcul Langage naturel Appliquer la consigne au véhicule Partir en véhicule consigne En utilisant Un traineau Partir en traineau
PF : lambda-calcul Lambda Langage λ.x Partir en x consigne En utilisant Un traineau Partir en traineau
PF : lambda calcul Lambda-calcul λ.x(partir en x) traineau
PF : lambda calcul Mise en cascade λ.y(λ.x(partir en x y) traîneau) bleu) Réduction λ.x(partir en x bleu) traîneau (partir en traîneau bleu)
PF : lambda calcul Récursivité F (G F) Exemple du factoriel G λ.f[λ.n[if(=n 0) 1 (* n(f(-n 1)))]]
PF : Exemple en LISP (defun fact (n)) (if (eq n 0) 1 (* n fact (- n 1)) ) )
PF : conclusion (1/2) Puissance d expression Parler de fonctions sans connaitre leur valeur Fonctions d ordres supérieurs Languages : LISP Miranda OCaml Haskell
PF : conclusion (2/2) PF et PL Pas d unification ni de retour arrière Ordre supérieur Fusionner les deux? Curry
CLIPS NASA (CLIPS 1985 CLIPS 6 1994) «Système de production» Langage de description de S.E. Noyau de plusieurs milliers de SE. Faits et règles typés Assertion et délétion Chaînage avant Hiérarchie des règles «salience» Règles actives à un instant : agenda Réfraction Algorithme RETE : complexité linéaire nbfait nbrègles
CLIPS : Principe Base de règles règles Type de faits réfraction Agenda Règles «activables» activation Faits cycle production Appariement (Rete)
CLIPS : Mots clés Base de règles règles defrule deftemplate Type de faits Agenda Règles «activables» refresh réfraction activation assert/modify duplicate/retract/deffacts/reset Faits run<n> production appariement
CLIPS : Execution Une règle activée est mise dans l agenda Lorsqu elle est exécutée elle est retirée de l agenda : «refraction» Au prochain pas, elle ne sera pas réactivée Sauf si c est par de nouveaux faits Une régle peut être mise en plusieurs exemplaires dans l agenda si elle est activée par plusieurs faits La fonction (refresh <règle>) remet la règle dans l agenda comme si elle n avait pas été activée
CLIPS : Types faits et règles exemple 1 (deftemplate objet (slot nom) (slot position) (slot couleur)) (deftemplate posseder (slot objet)) (deftemplate liste-nombres (multislot values)) (defrule prendre (objet (nom?unnom)) => (assert(posseder (objet?unnom))
CLIPS : Types faits et règles exemple 1 ; faits initiaux en ligne : assert (assert(objet (nom cafetiere) (position 5-7) (couleur bleue))) ; faits initiaux en vrac : deffacts ; ils seront insérés suite à l'instruction (reset) (deffacts scene1 "Exemple de scene" (objet (nom theiere) (position 4-4) (couleur verte)) (objet (nom chaise) (position 1-1) (couleur jaune)) (objet (nom pomme) (position 4-8) (couleur rouge)))
CLIPS : Exemple d exécution exemple 1 {deloor@deloor}~/enseignement/ia/clips/examples/pdl$ clips CLIPS (V6.21 06/15/03) CLIPS> (load "coursexample1.clp") Defining deftemplate: objet Defining deftemplate: posseder Defining deftemplate: liste-nombres Defining defrule: prendre +j Defining deffacts: scene1 TRUE CLIPS> (assert (objet (nom cafetiere) (position 1-2) (couleur bleue))) <Fact-0> CLIPS> (facts) f-0 (objet (nom cafetiere) (position 1-2) (couleur bleue)) For a total of 1 fact. CLIPS> (agenda) 0 prendre: f-0 For a total of 1 activation. CLIPS> (run) CLIPS> (facts) f-0 (objet (nom cafetiere) (position 1-2) (couleur bleue)) f-1 (posseder (objet cafetiere)) For a total of 2 facts. CLIPS> (agenda) CLIPS> (reset) CLIPS> (facts) f-0 (initial-fact) f-1 (objet (nom theiere) (position 4-4) (couleur verte)) f-2 (objet (nom chaise) (position 1-1) (couleur jaune)) f-3 (objet (nom pomme) (position 4-8) (couleur rouge)) For a total of 4 facts. CLIPS> (agenda) 0 prendre: f-3 0 prendre: f-2 0 prendre: f-1 For a total of 3 activations. CLIPS> (run) CLIPS> (facts) f-0 (initial-fact) f-1 (objet (nom theiere) (position 4-4) (couleur verte)) f-2 (objet (nom chaise) (position 1-1) (couleur jaune)) f-3 (objet (nom pomme) (position 4-8) (couleur rouge)) For a total of 4 facts. CLIPS> (agenda) 0 prendre: f-3 0 prendre: f-2 0 prendre: f-1 For a total of 3 activations. CLIPS> (run) CLIPS> (facts) f-0 (initial-fact) f-1 (objet (nom theiere) (position 4-4) (couleur verte)) f-2 (objet (nom chaise) (position 1-1) (couleur jaune)) f-3 (objet (nom pomme) (position 4-8) (couleur rouge)) f-4 (posseder (objet pomme)) f-5 (posseder (objet chaise)) f-6 (posseder (objet theiere)) For a total of 7 facts. CLIPS> (agenda) CLIPS>
CLIPS : Exemple 2 (deftemplate vehicule (slot nom) (slot position) (slot vitesse)) (defrule sortirparking?f1 <- (vehicule (position parking)) => (modify?f1 (position route) (vitesse 40km/heures))) {deloor@deloor}~/enseignement/ia/clips/examples/pdl$ clips CLIPS (V6.21 06/15/03) CLIPS> (load "coursexemple2.clp") Defining deftemplate: vehicule Defining defrule: sortirparking +j TRUE CLIPS> (assert (vehicule (nom trotinette) (position parking) (vitesse 0))) <Fact-0> CLIPS> (assert (vehicule (nom kart) (position route) (vitesse 12km/h))) <Fact-1> CLIPS> (facts) f-0 (vehicule (nom trotinette) (position parking) (vitesse 0)) f-1 (vehicule (nom kart) (position route) (vitesse 12km/h)) For a total of 2 facts. CLIPS> (agenda) 0 sortirparking: f-0 For a total of 1 activation. CLIPS> (run) CLIPS> (facts) f-1 (vehicule (nom kart) (position route) (vitesse 12km/h)) f-2 (vehicule (nom trotinette) (position route) (vitesse 40km/heures)) For a total of 2 facts. CLIPS> (agenda) CLIPS>
CLIPS : Hiérarchiser les règles Utilisation de salience Méta-règles Exemple : Utiliser les règles relatives à la couleur des champignons Puis celles relatives à la température Sauf si l on rencontre certains faits
CLIPS : Stratégie de chaînage Correspond à un tri par défaut des règles Largeur + salience Profondeur + salience Aléatoire Lexicale Complexité
CLIPS : calcul de la salience Explicitée par l utilisateur Règles pré-définies : Lors de l activation des règles Lors de la définitions de règles A Chaque cycles
CLIPS : conclusions C Language Integrated Production System Version JAVA : Jess CLIPS et PL? Chaînage avant Unification Mixage? «Quelle est donc cette fleur» [Aichelle] Beaucoup de Systèmes Experts définis en CLIPS
Programmation Logique Parallèle Quoi : paralléliser la résolution de Prolog a :- b,c,d. a :- c,d. a :- f. % règle r1 % règle r2 % règle r3 prolog est séquentiel : scrutation des conjonctions (b puis c puis d) scrutation des disjonctions (r1 puis r2 puis r3)
PLP : Pourquoi paralléliser prolog Pas de justification de la scrutation séquentielle Branches infinies Optimisation
PLP : Exemple concaplat(t1,t2,t3): aplatir(t1,t1p), aplatir(t2,t2p), conc(t1p,t2p,t3). conc peut commencer dès que l on a le début de T1P et de T2P. mieux : concaplat peut commencer dès que l on a le début de T1 et T2 (possibilité de listes infinies). lazy evaluation. problème : il existe une règle conc([],[],[]).
PLP : Parallélisation des conjonctions a(x,y) :- b(x,z),c(z,q),d(x,q,y). en parallèle problème d unification priorités? direction (flots de données) échec ou «suspension»
PLP : Parallélisation des disjonctions couleur(jaune). couleur(vert). couleur(orange). en parallèle -? couleur(x). problème de choix indeterminisme problème de suspension
PLP : Imposer des flots Parlog Concurrent Prolog mode conc(?,?, ). mode applatir(?, ). mode concapplat(?,?, ). concapplat aplatir aplatir conc
PLP : Revoir l unification Si une entrée est une variable la règle n est pas en échec elle est «suspendue» ensuite : unification classique
PLP : Exemple -? concaplat([a,[b]],[c,d],l): 1 2 aplatir([a,[b]],x) aplatir([c,d],y) aplatir([[b]],x1) X=[a X1] aplatir([d],x2) Y=[d X2] Dès que 1 et 2 sont finies on peut lancer conc([a X1],[b X2],L) Si 1 va + vite que 2 on peut arriver à conc([a,b],[c X2]). Si 2 va + vite que 1 on peut arriver à conc([a X1],[c,d]).
PLP : Indéterminisme par essence plusieurs processus peuvent être la source d une même variable. solution dépendante de la «vitesse» relative des processus. la solution est «logiquement» bonne
PLP : Le retour arrière n existe plus comme si chaque prédicat commençait par un! toutes les unifications des têtes sont évaluées en parallèle l engagement : la première tête unifiable trouvée a gagné les autres sont abandonnées non déterministe choix délibéré : engagement dans une branche si la branche est en échec «fail» et c est tout on ne trouve qu une solution ou aucune (incomplet)
PLP : Limiter les engagements : les gardes «:» régle :- g1,g2 : b1,b2. garde engagement si la garde est vraie sinon suspension : attente d une garde vraie mode on_ord_tree(?,,?). on_ord_tree(key,value,bt(x,(key,value),y)). on_ord_tree(key,value,bt(x,(key2,_),y)):- KEY<KEY2 : on_ord_tree(key,value,x). on_ord_tree(key,value,bt(x,(key2,_),y)):-key>key2 on_ord_tree(key,value,y):.
PLP : Pas facile de trouver les gardes Exemple de recherche sur un arbre non ordonné mode on_tree(?,,?). on_tree(key,value,bt(x,(key,value),y)). on_tree(key,value,bt(x,(_,_),y)):- on_tree(key,value,x):. on_tree(key,value,bt(x,(_,_),y)):- on_tree(key,value,y):.
PLP : Quelques variantes Concerne surtout le mécanisme de garde L évaluation de la garde ne peut «envoyer» de résultats aux buts (sauf lors de l engagement) Que faire si la résolution des buts modifie la valeur de la garde? Concurrent Prolog [Shapiro, 1983] Guarded Horn Clauses [Ueda 1985] Parlog [Gregory 1987] travaux récents : «Continuations for Parallel Logic Programming (2000)» [Eneia Todoran]
Programmation en Logique Modale : PLM Objectifs : Expressivité Spécification plus «naturelle» Modalité : vouloir, savoir, pouvoir, croire, devoir, possible Puissance Extension du système de résolution (ou système de preuve)
PLM : Rappel sur les systèmes formels réel Concept Principe Idée formaliser théorie système formel prédire fonctionne seul
PLM : Rappel sur les systèmes formels complétude réel modèle axiomatique adéquation Notion de vérité {v,f} de validité Notion de preuve : théorèmes
PLM : Calcul propositionnel Langage : propositions, connecteurs, règle d équivalence Axiomatique : 3 axiomes, 1 règle d inférence Modèle : tables de vérité Proposition langage naturel
PLM : Logiques Modales Langage : propositions, connecteurs modaux, règle d équivalence Axiomatique : T S1..S5 Modèle : mondes possibles Modalités de raisonnement
PLM : Paradoxe d implication matérielle A B (A B) (A B) (A B) (A B) t t t t t t t f f f f t f t f t f t f f t t f f Si A = f, A B est vrai (quelque soit B)!!
PLM : Modalités selon le dictionnaire Linguistique Comparer les langues Mots qui représentent des valeurs Désirative, éventuelle, hypothétique, probable, possible, nécessaire Représentant des opinions, attitudes, jugements, propositions Déontique, épistémique, aléthique Logiciens Fluctuation entre le nécessaire, le possible et le probable
PLM : Modalités, différents courants Philosophie/logique Propositions modales Aristote : Possibilité/nécessité Kant : Problématique Assertorique Logique classique : Possibilité/impossibilité Contingence/nécessité
PLM : modalités (exemple de classification d après Paul Laurendeau) Assertion Modalisation Modalité objective Modalité subjective Modalité Mixte Ontique (stabilité) Aléthique (fluctuation s à être) Épistémique (connaissance du sujet, fluctuation sur le connaître) Appréciative (bon/mauvaisnormal/étrang e) Déontique (devoir être) -objectif +subjectif (morale) Volitive (désir, volonté) assertion stricte Assertion subjective (selon mon expérience) Négation d une fluctuation, prise en charge, prise en compte Possible, probable, incertain. S appuie sur un étalon extérieur au sujet Jugement de valeur + être et ne pas être dans le monde Subjectivité (je réclame) + être et n être pas dans le monde Il fait chaud Il fait, selon moi, chaud Je dis qu il vient Je t assure qu il vient Je vais peut-être visiter cette ville. Il va bien venir. Il est probable qu il vienne Je crois qu il vient Je prétends qu il viendra J ai peutêtre visité cette ville Je me réjouis qu il vienne Tu devrais rendre visite àta mère Je veux qu il vienne
PLM : modalités (selon Antoine Culioli)
PLM : Logiques Aléthiques Opérateurs modaux : Possibilité : Nécessité : Modèles : mondes possibles Spécialisation : Logique des connaissances SAVOIR COMPATIBLE AVEC MES CONNAISSANCES Logique des croyances Logiques temporelle modales (toujours/parfois)
PLM : modèle : pas de table de vérité Exemple Fait : le ciel est bleu Ciel_bleu
Bibliographie [Aichelle] Aichelle D., «Quelle est donc cette fleur», Fernand Nathan. [All 92] Alliot J.M. et al, «Implementing Prolog extensions : A Parallel Inference Machine», International Conference on Fifth Generation Computer System, 1992. [Bal 88] Balbiani P., Farinas del Cerro L. Herzig A, «Declarative semantics for modal logic programs», Proc. Int. Conf. On Fifth Generation Computer Systems (FGCS-88). [Dix 98] Dix J. et al «The Logic Programming Paradigm», AI Communication vol 11, pages 123-131, 1998. [Fish 93] Fisher M. et al, «An Introduction to Executable Modal and Temporal Logics» In Proc. of the IJCAI 93 workshop on Executable Modal and Temporal Logics, volume 897 of LNAI, pages 1-20, springerverlag, 1993. [Ger 01] Gergatsoulis «Temporal and Modal Logic Programming Langages», Encyclopedia of Microcomputers, vol 27, supplement 6, pages 393-408, New-York, 2001. [Giarratano 98] Giarratano & Ripley, «Expert Systems, Principles and programming», PWS Publishing Compagny, 1998. [Gre 87] Gregory S. «Parallel Logic Programming in PARLOG», 1987. [Liu 98] Liu C. «A Temporal Reasoning Methodology for Concurrent Systems Using Chronolog (MC)», Proc of the 2st Australian Computer Science Conference, 1998. [Org 93] Orgun M.A «Chronolog(Z): Linear-time Logic programming», in Proc of the Fith International Conference on Computing and Information, pages 545-549, IEE Computer Society Press, 1993. [Ron 98] Rondogiannis P. et al, «Branching-time Logic Programming: The Language Cactus and its Applications», Computer Languages Vol 24, Issue 3, pages 155-178, 1998. [Sha 83] Shapiro, «Concurrent Prolog», 1983. [Tod 00] Eneia Tordoran, «Continuation for Parallel Logic Programming», 2000. [Ued 85] Ueda, «Guarded Horn Clauses», 1985. http://www.linguistes.com/mots/verbe.html http://www.cyberphilo.com/ http://www.irit.fr/activites/eq_alg/herzig/molog.html