Autres langages de l`IA

publicité
Autres langages de l’IA
Cours en cours de réalisation …
Module Programmation Logique
Pierre De Loor – enib -2004 – [email protected]
www.enib.fr/~deloor
Exemples
{
{
{
{
{
{
{
{
{
Programmation
Programmation
CLIPS
SOAR
Programmation
Programmation
Programmation
Programmation
Programmation
logiques par contraintes
fonctionnelle
logique parallèle
des logiques modales
des logiques temporelles
logique inductive
logique abductive
Programmation logique par contraintes
{
{
{
{
CHIP
CLP®
CLP(FD)
Distribution
z
AWC
Programmation fonctionnelle (PF)
{
{
Fonctions
Origine mathématique
z
Lambda-calcul : Church 1932
{
{
{
{
z
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
consigne
Appliquer la
consigne
au véhicule
Partir en véhicule
Partir en traineau
En utilisant
Un traineau
PF : lambda-calcul
• Lambda Langage
consigne
λ.x
Partir en x
Partir en traineau
En utilisant
Un 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
z
z
{
Parler de fonctions sans connaitre leur “valeur”
Fonctions d’ordres supérieurs
Languages :
z
z
z
z
LISP
Miranda
OCaml
Haskell
PF : conclusion (2/2)
{
PF et PL
z
z
z
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.
z
{
{
{
{
{
{
{
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
Type de faits
règles
réfraction
Agenda
activation
Règles « activables »
Faits
cycle
production
Appariement
(Rete)
CLIPS : Mots clés
Base de règles
defrule
deftemplate
Type de faits
règles
refresh
Agenda
réfraction
assert/modify
duplicate/retract/deffacts/reset
activation
Règles « activables »
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
z
Exemple :
Utiliser les règles relatives à la couleur
des champignons
{ Puis celles relatives à la température
{…
{
z
Sauf si l’on rencontre certains faits …
CLIPS : Stratégie de chaînage
{
Correspond à un tri par défaut des
règles
z
z
z
z
z
z
Largeur + salience
Profondeur + salience
Aléatoire
Lexicale
Complexité
…
CLIPS : calcul de la salience
{
Explicitée par l’utilisateur
{
Règles pré-définies :
z
z
z
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 ?
z
z
z
{
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).
z
{
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(X).
en parallèle
couleur(jaune).
couleur(vert).
couleur(orange).
problème de choix
indeterminisme
problème de suspension
PLP : Imposer des flots
{
Parlog
{
mode conc(?,?, ↑).
mode applatir(?,↑).
mode
concApplat(?,?,↑).
concApplat
aplatir
conc
aplatir
Concurrent Prolog
PLP : Revoir l ’unification
{
Si une entrée est une variable
z
z
z
la règle n ’est pas en échec
elle est « suspendue »
ensuite : unification classique
PLP : Exemple
-?
concAplat([a,[b]],[c,d],L):
2
1
aplatir([a,[b]],X)
X=[a|X1]
aplatir([[b]],X1)
aplatir([c,d],Y)
Y=[d|X2]
aplatir([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
z
z
z
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é
z
z
z
z
z
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 ?
z
z
z
z
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 :
z
Expressivité
Spécification plus « naturelle »
{ Modalité : vouloir, savoir, pouvoir, croire,
devoir, possible
{
z
Puissance
{
Extension du système de résolution (ou
système de preuve)
PLM : Rappel sur les systèmes formels
théorie
formaliser
réel
système
formel
Concept
Principe
Idée
prédire
fonctionne seul
PLM : Rappel sur les systèmes formels
complétude
réel
axiomatique
modèle
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
Modèle : tables de vérité
d ’inférence
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
AB
t t
t f
f t
f f
(A↔B)
t
f
f
t
(A→B)
t
f
t
t
(A∧B)
t
f
f
f
(A∨B)
t
t
t
f
Si A = f, A→B est vrai (quelque soit B) !!
PLM : Modalités selon le dictionnaire
{
Linguistique
z
z
z
z
{
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
z
Fluctuation entre le nécessaire, le possible et le
probable
PLM : Modalités, différents courants
{
{
Philosophie/logique
Propositions modales
z
z
Aristote :
{ Possibilité/nécessité
Kant :
{ Problématique
{ Assertorique
{
z
Logique classique :
{ Possibilité/impossibilité
{ Contingence/nécessité
PLM : modalités (exemple de
classification d’après Paul Laurendeau)
Assertion
assertion stricte
Assertion subjective
(selon mon
expérience)
Il fait chaud
Il fait, selon moi,
chaud
Modalisation
Modalité
objective
Modalité
subjective
Modalité
Mixte
Ontique
(stabilité)
Aléthique
(fluctuation
s à être)
Épistémique
(connaissance
du sujet,
fluctuation
sur le
connaître)
Déontique
(devoir être)
-objectif
+subjectif
(morale)
Volitive
(désir,
volonté)
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
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
Tu devrais
rendre visite
à ta mère
Je veux qu’il
vienne
Je crois qu’il
vient
Je prétends
qu’il viendra
J’ai peutêtre visité
cette ville
Appréciative
(bon/mauvaisnormal/étrang
e)
Je me réjouis
qu’il vienne
PLM : modalités (selon Antoine Culioli)
PLM : Logiques Aléthiques
{
Opérateurs modaux :
z
z
z
{
Possibilité : ◊
Nécessité : Modèles : mondes possibles
Spécialisation :
z
z
z
z
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
z
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
Téléchargement