Transparents en français pour ma soutenance de stage de Master 1 (M1) en 2013.
Travail sous la direction de J.Villard et P.O'Hearn.
Stage de 3 mois au laboratoire d'informatique, équipe PPLV, à l'University College of London (UK).
09 Août. Où? À Londres, Royaume-Uni : UCL University College London, PPLV groupe “Logique, Vérification, et Principes des langages de Programmation”. Avec qui? Jules Villard, Peter O’Hearn. Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 1 / 23
(I.A.) Aujourd’hui, seulement de la planification : modéliser un monde dynamique, trouver des trajectoires dans ce monde. Vérification (domaine de l’équipe PPLV ) Prouver une spécification d’un programme. Exemple : f pxq def x : x 1 : Effets de f précondition x 0 et postcondition x 1 : tx 0u x : x 1 tx 1u Non-effets de f si y $ x, y 2 est conservé : tx 0 y 2u x : x 1 tx 1 y 2u Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 2 / 23
axiomatisation calcul des situations, programmer une fonction langage GOLOG, prouver cette fonction système de preuve HG. Pourquoi vouloir être modulaire ? efficacité (passage à l’échelle), élégance, et simplicité ! Différentes modularité : décrire une axiomatisation la changer facilement après, programmer une fonction intermédiaire, la spécifier, puis l’utiliser sans connaître son implémentation, prouver cette fonction une seule fois, puis utiliser sa spécification partout ailleurs comme un axiome (sans le reprouver). Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 3 / 23
axiomatisation calcul des situations, programmer une fonction langage GOLOG, prouver cette fonction système de preuve HG. Pourquoi vouloir être modulaire ? efficacité (passage à l’échelle), élégance, et simplicité ! Différentes modularité : décrire une axiomatisation la changer facilement après, programmer une fonction intermédiaire, la spécifier, puis l’utiliser sans connaître son implémentation, prouver cette fonction une seule fois, puis utiliser sa spécification partout ailleurs comme un axiome (sans le reprouver). Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 3 / 23
Exemple: un graph dirigé, def tA, B, C u, tA B, B C u Recherche de chemin Choisir u, v dans . Y a-t-il un chemin u v ? Deux réponses possibles : Oui A C ? Oui, A B C. Non B A ? Non. A B C Figure 1: Le graphe . Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 4 / 23
Exemple: un graph dirigé, def tA, B, C u, tA B, B C u Recherche de chemin Choisir u, v dans . Y a-t-il un chemin u v ? Deux réponses possibles : Oui A C ? Oui, A B C. Non B A ? Non. A B C Figure 1: Le graphe . Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 4 / 23
un graphe Jeu d’échec (Exemple) Un énorme graphe fini. ÝÑ Trop grand pour utiliser la théorie des graphes. sommet ðñ une “photo” du système un état, arrête ðñ transformation sur le système une action. Monde des blocs (Exemple) Blocs posés sur le sol – un robot pour les déplacer. En pratique : trop d’états différents ! Graphe : pas utilisable, même pour des mondes “simples” en I.A. Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 5 / 23
un graphe Jeu d’échec (Exemple) Un énorme graphe fini. ÝÑ Trop grand pour utiliser la théorie des graphes. sommet ðñ une “photo” du système un état, arrête ðñ transformation sur le système une action. Monde des blocs (Exemple) Blocs posés sur le sol – un robot pour les déplacer. En pratique : trop d’états différents ! Graphe : pas utilisable, même pour des mondes “simples” en I.A. Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 5 / 23
x, y, A fluents F, ParTerre ÝÑ formules logiques F px, yq, ParTerre pA q Transformations (Exemples) actions : a, BougeSur, BougeSol ÝÑ triplets de Liu tQu a tRu Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 6 / 23
3 blocs A, B et C sur le sol Différents genres d’éléments objets A, B, C prédicats Libre pxq, ParTerre pxq et . . . État initial Γ0 def Libre(A) ParTerre(A) Libre(B) ParTerre(B) Libre(C) ParTerre(C) Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 7 / 23
Figure 3: Une tour: A sur B sur C Différents genres d’éléments objets A, B, C prédicats Libre pxq, ParTerre pxq et Sur px, yq État but Γbut def Sur(A, B) Sur(B, C) Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 7 / 23
Déplacer x vers y : BougeSur px, yq tLibre pxqpx $ yqLibre pyqu BougeSur px, yq tSur px, yqu Déplacer z depuis un certain w vers le sol : BougeSol pzq tLibre pzqpz $ wqSur pz, wqu BougeSol pzq tParTerre pzq2Sur pz, wqLibre pwqu Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 8 / 23
Déplacer x vers y : BougeSur px, yq tLibre pxqpx $ yqLibre pyqu BougeSur px, yq tSur px, yqu Déplacer z depuis un certain w vers le sol : BougeSol pzq tLibre pzqpz $ wqSur pz, wqu BougeSol pzq tParTerre pzq2Sur pz, wqLibre pwqu Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 8 / 23
pA, B, C q : BougeSur(B, C) ; BougeSur(A, B) looooooooomooooooooon Γ1 Γbut FinProc; Figure 4: Destination Γ2 Γbut Seconde action BougeSur(A, B) Γ2 Γbut def Libre(A) Sur(A, B) Sur(B,C) ParTerre(C) tLibre pA qpA $ B qLibre pB qu BougeSur pA, B q tSur pA, B qu Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 9 / 23
GOLOG : BougeND px, y, zq pour déplacer x sur y ou sur z. Proc BougeND px, y, zq : BougeSur px, yq | BougeSur px, zq FinProc; Spécification = triplet de Liu : tQu BougeND px, y, zq tRu t Q hkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkikkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkj Libre pxqpx $ yqLibre pyqpx $ zqLibre pzqu BougeND px, y, zq tSur px, yqSur px, zq loooooooooooomoooooooooooon R u Idée : Si Qrss est vrai, BougeND px, y, zq est applicable et termine en partant de s, alors exécuter BougeND depuis s arriver en s1, avec Rrs1s. Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 10 / 23
Un programme GOLOG : BougeND px, y, zq pour déplacer x sur y ou sur z. Proc BougeND px, y, zq : BougeSur px, yq | BougeSur px, zq FinProc; Spécification = triplet de Liu : tQu BougeND px, y, zq tRu t Q hkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkikkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkj Libre pxqpx $ yqLibre pyqpx $ zqLibre pzqu BougeND px, y, zq tSur px, yqSur px, zq loooooooooooomoooooooooooon R u Idée : Si Qrss est vrai, BougeND px, y, zq est applicable et termine en partant de s, alors exécuter BougeND depuis s arriver en s1, avec Rrs1s. Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 10 / 23
BougeND px, y, z q : BougeSur px, y q | BougeSur px, z q FinProc Q def Libre px q^x y ^Libre py q^x z ^Libre pz q R def Sur px, y q _ Sur px, z q pa, b q def Libre pa q^a b ^Libre pb q ND Cons axiome tpx, yqu Bge px, yq tSur px, yqu tQu Bge px, yq tRu tpx, zqu Bge px, zq tSur px, zqu axiome tQu Bge px, zq tRu Cons tQu Bge px, yq|Bge px, zq tRu Figure 5: Schéma de preuve pour BougeND pBge def BougeSur q Règle de choix : (ND) Permet de séparer 1|2 , ND tP u 1 tQ u tP u 2 tQ u tP u 1|2 tQ u Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 11 / 23
BougeND px, y, z q : BougeSur px, y q | BougeSur px, z q FinProc Q def Libre px q^x y ^Libre py q^x z ^Libre pz q R def Sur px, y q _ Sur px, z q pa, b q def Libre pa q^a b ^Libre pb q ND Cons axiome tpx, yqu Bge px, yq tSur px, yqu tQu Bge px, yq tRu tpx, zqu Bge px, zq tSur px, zqu axiome tQu Bge px, zq tRu Cons tQu Bge px, yq|Bge px, zq tRu Figure 5: Schéma de preuve pour BougeND pBge def BougeSur q Règle de conséquence : (Cons) Deux choses: renforce la précondition, affaiblit la postcondition : Cons l Q ñ Q1 ¨ tQ1 u tR1 u l R1 ñ R ¨ tQ u tR u Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 11 / 23
BougeND px, y, z q : BougeSur px, y q | BougeSur px, z q FinProc Q def Libre px q^x y ^Libre py q^x z ^Libre pz q R def Sur px, y q _ Sur px, z q pa, b q def Libre pa q^a b ^Libre pb q ND Cons axiome tpx, yqu Bge px, yq tSur px, yqu tQu Bge px, yq tRu tpx, zqu Bge px, zq tSur px, zqu axiome tQu Bge px, zq tRu Cons tQu Bge px, yq|Bge px, zq tRu Figure 5: Schéma de preuve pour BougeND pBge def BougeSur q Règle de conséquence : (Cons) Deux choses: renforce la précondition, affaiblit la postcondition : Cons l Q ñ Q1 ¨ tQ1 u tR1 u l R1 ñ R ¨ tQ u tR u Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 11 / 23
BougeND px, y, z q : BougeSur px, y q | BougeSur px, z q FinProc Q def Libre px q^x y ^Libre py q^x z ^Libre pz q R def Sur px, y q _ Sur px, z q pa, b q def Libre pa q^a b ^Libre pb q ND Cons axiome tpx, yqu Bge px, yq tSur px, yqu tQu Bge px, yq tRu tpx, zqu Bge px, zq tSur px, zqu axiome tQu Bge px, zq tRu Cons tQu Bge px, yq|Bge px, zq tRu Figure 5: Schéma de preuve pour BougeND pBge def BougeSur q Règle de conséquence : (Cons) Deux choses: renforce la précondition, affaiblit la postcondition : Cons l Q ñ Q1 ¨ tQ1 u tR1 u l R1 ñ R ¨ tQ u tR u Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 11 / 23
Programme BgeOu px, y, z, wq Rappel de BougeND Proc BougeND px, y, z q : BougeSur px, y q | BougeSur px, z q FinProc; BgeOu px, y, z, wq pour déplacer un bloc x sur y ou z, ou w: Proc BgeOu px, y, z, wq : BougeND px, y, zq | BougeSur px, wq FinProc; Spécification pour BgeOu Q1 def Libre px q^px y q^Libre py q^px z q^Libre pz q^px, y, z w q^Libre pw q tQ1u BgeOu px, y, z, wq tSur px, yqSur px, zqSur px, wqu Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 12 / 23
Programme BgeApres px, y, z, wq Rappel de BougeND Proc BougeND px, y, z q : BougeSur px, y q | BougeSur px, z q FinProc; BgeApres px, y, z, wq utiliser BougeND px, y, zq, et puis après déplacer x sur w: Proc BgeApres px, y, z, wq : BougeND px, y, zq ; BougeSur px, wq FinProc; Spécifications pour BgeApres Q1 def Libre px q^px y q^Libre py q^px z q^Libre pz q^px, y, z w q^Libre pw q tQ1u BgeApres px, y, z, wq tSur px, wqu Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 14 / 23
BgeApres Preuve de BgeApres : soucis ! (1/2) On veut prouver tQ1 u BgeApres tSur px, w u Q1 def px, y q^ px, z q^x, y, z w ^ px, w q Invariant: Inv def Libre px q^ x, y, z w ¨ ^Libre pw q pa, b q def Libre pa q^a b ^Libre pb q Seq ons ? ? tQND u BougeND px, y, z q tRND u ?!? tQND ^Inv u BougeND px, y, z q tRND ^Inv u tQ1 u BougeND px, y, z q tRND ^Inv u t px, w qu Bge px, w q tSur px, w qu Axm. tRND ^Inv u Bge px, w q tSur px, w qu Con tQ1 u BougeND px, y, z q;Bge px, w q tSur px, w qu Figure 7: Tentative d’un schéma de preuve pour BgeApres. Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 15 / 23
BgeApres Preuve de BgeApres : soucis ! (2/2) BgeApres px, y, z, wq pour déplacer un bloc x sur y ou z, et puis après déplacer x sur w: Proc BgeApres px, y, z, wq : BougeND px, y, zq ; BougeSur px, wq FinProc; BougeND px, y, zq doit conserver Libre pxqx $ w Libre pwq ? ? tQND u BougeND px, y, z q tRND u ?!? tQND ^Inv u BougeND px, y, z q tRND ^Inv u Comment ? En utilisant le corps de MoveND ? ùñ non-modulaire ! Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 16 / 23
les actions primitives Axiomes de Frame et d’Effets (EF) Réf. [Rei01] F : fluent avec axiome d’état successeur F pÝ Ñ x , FairepA, sqq ΦF pÝ Ñ x , Aqrss : tΦF pÝ Ñ x1 , ApÝ Ñ x2 qqu ApÝ Ñ x2 q tF pÝ Ñ x1 qu t2ΦF pÝ Ñ x1 , ApÝ Ñ x2 qqu ApÝ Ñ x2 q t2F pÝ Ñ x1 qu Trop d’axiomes EF Il y a en a 2 par fluents F et par actions A ! Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 17 / 23
Diagnostic “Axiomes de Frame et d’Effet” tant qu’on n’ajoute pas de nouvelles actions ou procédures, mais programmer en GOLOG = écrire des procédures intermédiaires et les utiliser ailleurs, possible d’actualiser les axiomes (EF), mais on doit prouver 2 ¢Nb.Fluents lemmes par nouvelles procédures ! ÝÑ le système de preuve HG manque de modularité ! Générer les axiomes EF ? En fait, on écrit des “axiomes d’états successeur” : un par fluent, mais de taille linéaire dans le nombre d’actions. Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 18 / 23
décrire un monde dynamique, GOLOG écrire des procédures pour ce monde, HG prouver ces procédures. Nous avons dévoilé des limitations pour HG pas de bonne abstraction procédurale ÝÑ pas modulaire ! Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 19 / 23
norme et outils Aussi : STRIPS, PDDL et pyperplan STRIPS autre formalisme, PDDL norme pour STRIPS, développée pour l’IPC, pyperplan solveur pour des problèmes de planification écrits en PDDL, validate outil pour prouver la validité de trajectoires écrites en PDDL. Contributions expériences et tests concrets: ãÑ faiblesses du formalisme, ãÑ faiblesses de ces outils, développer des techniques pour les résoudre. Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 20 / 23
Réf.[Mal11] Limitations concrètes (Exemple) ã Ñ n’utilise pas le fait que certaines parties du monde sont disjointes : perte de performance ! Number of ob- ject Number of world Computation time (in s) Lenght of the plan Optimal plan 4,0,0,0 4 0.137 6 6 4,4,0,0 4 0.277 24 12 4,4,4,0 4 1.213 42 18 4,4,4,4 4 3.486 60 24 Figure 8: Union disjointe de mondes similaires, et un but croissant. Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 21 / 23
la compositionalité pour HG trouver un moyen d’avoir un axiome de “frame” générique: Frame tQP u P pxq tRP u “QP Inv” tQP Invu P pxq tRP Invu Implémentation ? Mise en pratique de ces idées ? GOLOG ajouter procédures GOLOG à un planning solver (pyperplan), HG ajouter HG à un planning verifier (validate). Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 22 / 23
questions ? Pour en savoir plus ? ã Ñ lire mon rapport, disponible en ligne ici : http://www.dptinfo.ens-cachan.fr/~lbesson/rapportM1Info13.pdf ã Ñ utiliser la bibliographie. Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 23 / 23
A new approach to the application of theorem proving to problem solving. Artificial intelligence, 2(3):189–208, 1972. Raymond Reiter. [Rei01] Knowledge in Action: Logical Foundations for Specifying and Implementing Dynamical Systems. The MIT Press, 2001. Yangmei Liu. [Liu02] A Hoare-style proof system for robot programs. AAAI, 2002. Herbert Malte. [Mal11] pyperplan, a lightweight STRIPS planner, written in python 3. https://bitbucket.org/malte/pyperplan, 2011. Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 23 / 23
;;; This goal is reachable, and the solver proves his reachability, by giving a solution (define (problem REACHABLE) (:domain BLOCKS) (:objects A B C - block) (:init (Clear A) (OnFloor A) (Clear B) (OnFloor B) (Clear C) (OnFloor C) ) (:goal (and (On A B) (On B C) ) ) ) ;;; The generated solution is: (Move B C) (Move A B) Figure 10: Axiomatisation un but atteignable Γgoal en PDDL (move b c) (move a b) Figure 11: Une trajectoire trouvée par pyperplan Lilian Besson (ENS Cachan) Soutenance de Stage de M1 – Informatique Jeudi 5 Septembre 2013 23 / 23