Calcul d'événement - Event calculus

Le calcul des événements est un langage logique pour représenter et raisonner sur les événements et leurs effets présenté pour la première fois par Robert Kowalski et Marek Sergot en 1986. Il a été étendu par Murray Shanahan et Rob Miller dans les années 1990. Semblable à d'autres langages pour raisonner sur le changement, le calcul d'événement représente les effets des actions sur les fluents . Cependant, les événements peuvent également être externes au système. Dans le calcul des événements, on peut spécifier la valeur des fluents à certains moments donnés, les événements qui ont lieu à des moments donnés et leurs effets.

Courants et événements

Dans le calcul des événements, les fluents sont réifiés . Cela signifie qu'ils ne sont pas formalisés au moyen de prédicats mais au moyen de fonctions . Un prédicat séparé HoldsAt est utilisé pour indiquer quels fluents sont valables à un moment donné. Par exemple, signifie que la boîte est sur la table à l'instant t ; dans cette formule, HoldsAt est un prédicat tandis que on est une fonction.

Les événements sont également représentés sous forme de termes. Les effets des événements sont donnés à l'aide des prédicats Initie et Termine . En particulier, signifie que, si l'événement représenté par le terme e est exécuté à l'instant t , alors le fluent f sera vrai après t . Le prédicat Termine a une signification similaire, la seule différence étant que f sera faux après t .

Axiomes indépendants du domaine

Comme d'autres langages de représentation d'actions, le calcul d'événements formalise l'évolution correcte du fluent via des formules indiquant la valeur de chaque fluent après qu'une action arbitraire a été effectuée. Le calcul d'événement résout le problème du cadre d'une manière similaire aux axiomes d'état successeur du calcul de situation : un fluent est vrai à l'instant t si et seulement s'il a été rendu vrai dans le passé et n'a pas été rendu faux dans le entre temps.

Cette formule signifie que le fluent représenté par le terme f est vrai à l'instant t si :

  1. un événement e a eu lieu : ;
  2. cela a eu lieu dans le passé : ;
  3. cet événement a pour effet le fluent f : ;
  4. le fluent n'a pas été rendu faux entre-temps :

Une formule similaire est utilisée pour formaliser le cas inverse dans lequel un fluent est faux à un instant donné. D'autres formules sont également nécessaires pour formaliser correctement les fluents avant qu'ils n'aient été les effets d'un événement. Ces formules sont similaires à celles ci-dessus, mais sont remplacées par .

Le prédicat Clipped , indiquant qu'un fluent a été rendu faux pendant un intervalle, peut être axiomatisé, ou simplement pris comme un raccourci, comme suit :

Axiomes dépendant du domaine

Les axiomes ci-dessus concernent la valeur des prédicats HoldsAt , Initiates et Terminates , mais ne spécifient pas quels fluents sont connus pour être vrais et quels événements rendent réellement les fluents vrais ou faux. Ceci est fait en utilisant un ensemble d'axiomes dépendant du domaine. Les valeurs connues des fluents sont exprimées sous forme de simples littéraux . Les effets des événements sont énoncés par des formules reliant les effets des événements à leurs conditions préalables. Par exemple, si l'événement open rend le fluent isopen vrai, mais seulement si haskey est actuellement vrai, la formule correspondante dans le calcul de l'événement est :

L'expression de droite de cette équivalence est composée d'une disjonction : pour chaque événement et fluence qui peut être rendu vrai par l'événement, il y a une disjonction disant que e est en fait cet événement, que f est en fait cette fluence, et que le la condition préalable de l'événement est remplie.

La formule ci-dessus spécifie la valeur de vérité de pour chaque événement possible et fluide. En conséquence, tous les effets de tous les événements doivent être combinés dans une seule formule. C'est un problème, car l'ajout d'un nouvel événement nécessite de modifier une formule existante plutôt que d'en ajouter de nouvelles. Ce problème peut être résolu par l'application de la circonscription à un ensemble de formules spécifiant chacune un effet d'un événement :

Ces formules sont plus simples que la formule ci-dessus, car chaque effet de chaque événement peut être spécifié séparément. La formule unique indiquant quels événements e et fluents f rendent vrais a été remplacée par un ensemble de formules plus petites, chacune indiquant l'effet d'un événement sur un fluent.

Cependant, ces formules ne sont pas équivalentes à la formule ci-dessus. En effet, elles ne précisent que des conditions suffisantes pour être vraies, qui doivent être complétées par le fait qu'Initiés est fausse dans tous les autres cas. Ce fait peut être formalisé en circonscrivant simplement le prédicat Initié dans la formule ci-dessus. Il est important de noter que cette circonscription se fait uniquement sur les formules spécifiant les Initiés et non sur les axiomes indépendants du domaine. Le prédicat Terminas peut être spécifié de la même manière que Initiates .

Une approche similaire peut être adoptée pour le prédicat Happens . L'évaluation de ce prédicat peut être imposée par des formules spécifiant non seulement quand il est vrai et quand il est faux :

La circonscription peut simplifier cette spécification, car seules les conditions nécessaires peuvent être spécifiées :

En circonscrivant le prédicat Happens , ce prédicat sera faux à tous les points où il n'est pas explicitement spécifié comme étant vrai. Cette circonscription doit se faire séparément de la circonscription des autres formules. En d'autres termes, si F est l'ensemble des formules du genre , G est l'ensemble des formules et H sont les axiomes indépendants du domaine, la formulation correcte du domaine est :

Le calcul des événements en tant que programme logique

Le calcul d'événement a été initialement formulé comme un ensemble de clauses Horn augmentées d'une négation en tant qu'échec et pouvait être exécuté comme un programme Prolog . En fait, la circonscription est l'une des nombreuses sémantiques qui peuvent être attribuées à la négation comme un échec, et est étroitement liée à la sémantique d'achèvement (dans laquelle "si" est interprété comme "si et seulement si" - voir programmation logique ).

Extensions et applications

L'article original sur le calcul des événements de Kowalski et Sergot se concentrait sur les applications aux mises à jour de bases de données et aux récits. Les extensions du calcul des événements peuvent également formaliser des actions non déterministes, des actions concurrentes, des actions à effets retardés, des changements graduels, des actions avec durée, des changements continus et des fluents non inertiels.

Kave Eshghi a montré comment le calcul des événements peut être utilisé pour la planification, en utilisant l' abduction pour générer des événements hypothétiques dans la programmation logique abductive . Van Lambalgen et Hamm ont montré comment le calcul d'événements peut également être utilisé pour donner une sémantique algorithmique au temps et à l'aspect en langage naturel en utilisant la programmation logique par contraintes .

D'autres extensions notables du calcul des événements incluent les variantes épistémiques probabilistes , basées sur les réseaux logiques de Markov et leurs combinaisons.

Outils de raisonnement

En plus de Prolog et de ses variantes, plusieurs autres outils de raisonnement utilisant le calcul d'événements sont également disponibles :

Voir également

Les références

  1. ^ Kowalski, Robert; Sergot, Marek (1986-03-01). "Un calcul des événements basé sur la logique" . L'informatique de nouvelle génération . 4 (1) : 67-95. doi : 10.1007/BF03037383 . ISSN  1882-7055 . S2CID  7584513 .
  2. ^ Miller, Rob; Shanahan, Murray (2002), Kakas, Antonis C.; Sadri, Fariba (eds.), "Some Alternative Formulations of the Event Calculus" , Computational Logic: Logic Programming and Beyond: Essays in Honor of Robert A. Kowalski Part II , Lecture Notes in Computer Science, Berlin, Heidelberg: Springer, pp 452-490, doi : 10.1007/3-540-45632-5_17 , ISBN 978-3-540-45632-2, récupéré le 2020-10-05
  3. ^ Kowalski, Robert (1992-01-01). "Mises à jour de la base de données dans le calcul des événements" . Le Journal de la programmation logique . 12 (1) : 121-146. doi : 10.1016/0743-1066(92)90041-Z . ISSN  0743-1066 .
  4. ^ Eshghi, Kavé (1988). "Planification abductive avec calcul d'événements" . Iclp/SLP : 562-579.
  5. ^ Lambalgen, Hamm (2005). Le bon traitement des événements . Malden, Massachusetts : Blackwell Pub. ISBN 978-0-470-75925-7. OCLC  212129657 .
  6. ^ Skarlatidis, Anastasios; Paliouras, Georgios ; Artikis, Alexandre ; Vouros, George A. (2015-02-17). "Calcul d'événement probabiliste pour la reconnaissance d'événement" . Transactions ACM sur la logique informatique . 16 (2) : 11 : 1–11 :37. arXiv : 1207.3270 . doi : 10.1145/2699916 . ISSN  1529-3785 . S2CID  6389629 .
  7. ^ Skarlatidis, Anastasios; Artikis, Alexandre ; Filippou, Jason; Paliouras, Georgios (mars 2015). "Un calcul d'événement de programmation logique probabiliste" . Théorie et pratique de la programmation logique . 15 (2) : 213-245. doi : 10.1017/S1471068413000690 . ISSN  1471-0684 . S2CID  5701272 .
  8. ^ Maman, Jiefei; Miller, Rob ; Morgenstern, Léora ; Patkos, Théodore (2014-07-28). "Un calcul d'événement épistémique pour un raisonnement basé sur ASP sur la connaissance du passé, du présent et du futur" . Série EPiC en informatique . EasyChair. 26 : 75-87. doi : 10.29007/zswj .
  9. ^ D'Asaro, Fabio Aurelio; Bikakis, Antonis ; Dickens, Luc ; Miller, Rob (2020-10-01). « Raisonnement probabiliste sur les récits d'action épistémiques » . Intelligence Artificielle . 287 : 103352. doi : 10.1016/j.artint.2020.103352 . ISSN  0004-3702 .

Lectures complémentaires