Actes JNPC’04 Raisonnement distribué dans un environnement de type Peer-To-Peer P. Adjiman P. Chatalic F. Goasdoué L. Simon M.-C. Rousset Résumé Dans un système d’inférence peer-to-peer, chaque peer peut raisonner localement mais peut également solliciter son voisinage constitué des peers avec lesquels il partage une partie de son vocabulaire. Dans cet article, on s’intéresse aux systèmes d’inférence peer-to-peer dans lesquels la théorie de chaque peer est un ensemble de clauses propositionnelles construites à partir d’un vocabulaire local. Une caractéristique importante des systèmes peer-to-peer est que la théorie globale (l’union des théories de tout les peers) n’est pas connue (par opposition aux systèmes de raisonnement fondés sur le partitionnement). La contribution de cet article est double. Nous exposons le premier algorithme de calcul d’impliqués dans un environnement peer-to-peer: il est anytime et calcul les impliqués progressivement depuis le peer interrogé jusqu’aux peers de plus en plus distant. Nous énonçons une condition suffisante sur le graphe de voisinage du système d’inférence peer-to-peer garantissant la complétude de notre algorithme. Nous présentons également quelques résultats expérimentaux prometteurs. 1 Introduction R´ecemment, les syst`emes peer-to-peer ont fait l’objet d’une attention consid´erable li´e `a leur architecture sous jacente, particuli`erement adapt´ee au passage `a l’´echelle des applications distribu´ee que l’on trouve sur Internet. Dans un syst`eme peer-to-peer, il n’y a aucun contrôle centralis´e ni aucune organisation hi´erarchique: chaque peer est ´equivalent en fonctionnalit´e et coop`ere avec d’autres peers dans l’objectif de r´ealiser une tache collective. Les syst`emes peer-to-peer ont ´evolu´e du simple syst`eme de partage de fichiers distribu´es (avec interrogation par mots cl´es) comme Napster [13] et Gnutella [5] jusqu’aux syst`emes de gestion de donn´ees distribu´e ´evolu´e comme Edutella [14] ou Piazza [8], qui offre un niveau s´emantique de descriptions des donn´ees permettant l’expression de requêtes complexes pour extraire les donn´ees du syst`eme. Dans ces syst`emes, la complexit´e du probl`eme de r´eponse `a une requête est directement li´e `a l’expressivit´e du formalisme utilis´e pour mettre en relation les sch´emas des diff´erents peers via des correspondances s´emantique (mappings) [7]. Dans cet article, on s’int´eresse aux syst`emes d’inf´erence peer-to-peer dans lesquels chaque peer peut r´epondre `a une requête en raisonnant sur sa th´eorie (propositionnelle) locale, mais LRI, CNRS & Universit´e Paris-Sud – INRIA Futurs, Bˆatiment 490, 91405, Orsay Cedex, France 11 12 ´egalement en posant des requêtes aux autres peers avec lesquels il est s´emantiquement reli´e via un partage d’une partie de son vocabulaire. Cet environnement englobe de nombreuses applications telles que les syst`emes d’int´egration d’information peer-to-peer ou les agents intelligents dans lesquels chaque peer poss`ede sa propre connaissance (sur ses donn´ees ou son domaine d’expertise) et une connaissance partielle des autres peers. Dans ces conditions, lorsqu’un peer est sollicit´e pour ex´ecuter une tache de raisonnement, si il ne peut pas la r´esoudre localement dans sa totalit´e, il doit être capable de la d´ecouper en sous taches `a distribuer aux peers appropri´e de son voisinage. Ainsi, ´etapes par ´etapes, la tache initiale est d´ecoup´ee puis distribu´ee aux peers comp´etant pour en r´esoudre une partie. Les sorties de chaque sous taches doivent être ensuite recompos´es pour construire la sortie de la tache initiale. On s’int´eresse aux syst`emes d’inf´erence peer-to-peer dans lesquels la th´eorie de chaque peer est un ensemble de clauses propositionnelles construites `a partir d’un ensembles de variables propositionnelles repr´esentant son vocabulaire local. Chaque peer peut partager une partie de son vocabulaire avec d’autres peers. Nous consid´erons la tache de raisonnement qui consiste `a trouver les consc´equences d’une certaine formes (par exemple des clauses ne contenant seulement que certaines variables) pour une formule donn´ee en entr´ee exprim´ee en termes du vocabulaire local d’un peer. Notons que d’autres taches de raisonnement comme la recherche d’impliquants d’une certaine formes pour une formule donn´ee peut etre r´eduite par ´equivalence `a une tache de recherche de consc´equences. La contribution de cet article est double. Nous exposons le premier algorithme de calcul d’impliqu´es dans un environnement peer-to-peer: il est anytime et calcul les impliqu´es progressivement depuis le peer interrog´e jusqu’aux peers de plus en plus distant. Nous ´enoncons une condition suffisante sur le graphe de voisinage du syst`eme d’inf´erence peer-to-peer garantissant la compl´etude de notre algorithme Il est important de mettre en valeur la difference entre le probl´eme de raisonnement distribu´e qu’on ´etudie dans cet article et le probl`eme de raisonnement sur des th´eories partitionn´ee obtenus par d´ecomposition ([3, 1]). Dans ce dernier probl`eme, une th´eorie centralis´ee (relativement grande) est donn´ee, et on exploite sa structure afin de calculer la meilleure facon de la d´ecouper dans l’objectif d’optimiser un algorithme de raisonnement travaillant sur des th´eorie partitionn´ee. Dans notre probl`eme, la th´eorie compl`ete (i.e., l’union de toutes les th´eories locales) n’est pas connue et la partition est impos´ee par l’architecture peer-to-peer elle meme. Comme nous allons l’illustrer sur un exemple, (Section 2), les algorithmes fond´es sur la transmission de clauses entre partitions (dans l’esprit de [1, 3, 4]) ne sont pas appropri´es pour notre probl`eme de recherche de consc´equences. Notre algorithme d´ecoupe les clauses si elle contiennent des variables appartenant `a des vocabulaires de differnents peers. Chaque morceau d’une clause d´ecoup´ee et ensuite transmis `a la th´eorie concern´ee pour calculer ses consc´equences. Les consc´equences de chaque morceau doivent etre recompos´es pour constituer les consc´equences de la clause qui a ´et´e d´ecoup´ee. L’article est organis´e de la mani`ere suivante. La section 2 d´efinie formellement le probl`eme d’inf´erence peer-to-peer auquel on va s’interesser. Dans la section 3, nous d´ecrivons un algorithme distribu´e de calcul de consc´equences et nous ´enoncons ses propri´et´ees. La section 4 d´ecrit quelques r´esultats exp´erimentaux. Un ´etat de l’art est r´esum´e dans la section 5. On conclue sur une br`eve discussion dans la section 6. 13 2 Inf´ erence peer-to-peer: d´ efinition du problème Un syt`eme d’inf´erence peer-to-peer (P2PIS) est un r´eseau de th´eories appartenant `a des peers. Chaque peer est un ensemble fini de formules propositionnelles du langage . On consid`ere que est le langage des clauses sans r´ep´etitions de litt´eral que l’on peut construire `a partir d’un ensemble fini de variables propositionnelles , appel´e le vocabulaire de . Les peers peuvent etre s´emantiquement conn´ect´es en ayant des variables en commun dans leur vocabulaire respectifs, appel´es variables partaǵees. Dans un P2PIS, aucun peer n’a la connaissance de la th´eorie globale du P2PIS. Chaque peer connait seulement sa th´eorie locale et sait qu’il partage certaines variables de son vocabulaire avec d’autres peer du P2PIS (son voisinnage ). Il ne connait pas necessairement tout les peers avec lesquelles il partage des variables. Quand un nouveau peer se connecte au P2PIS, il se d´eclare simplement aupr´es des peers avec lesquelles il vaut partager des variables. Un P2PIS peut etre formalis´e par un graphe de voisinage. D´ efinition 1 (Graphe de voisinage) Soit une famille de théorie sous formes . Un graphe de clausale construites sur leurs vocabulaires respectifs , soit ')*') est voisinnage est un graphe ! "$# VOIS ou est l’ensemble.-des et VOIS %&( /)0 noeuds 2 4 et + 0 76 98 . VOIS , 135 un ensemble d’aretes etiquetées tel que pour chaque "+,# # - - exprime que les peers et tous les deux qu’ils Une arete ´etiquet´ee :+;# # > savent partagent la variable + . Pour un peer et un litt´eral < , VOIS :<=# d´enote l’ensemble de peers partagant la variable < avec . Pour chaque th´eorie , on consid´ere un sous ensemble de variables cibles @ ? %A , supposé representer les variables d’intéret pour l’application, (e.g., les faits observables dans une application de diagnostic basé sur les modèles, ou les classes representant les données dans une application d’intégration d’informations). Pour une clause donnée (appelée la requete) en entrée à un peer du P2PIS, l’objectif est de calculer toutes ses conscéquences (appelées r´eponses) dont les variables appartiennent au langage cible. Il est important de remarquer que meme si la requete est exprimé en termes du vocabulaire local au peer intérrogé, les réponses attendues peuvent elles contenir des variables cibles de différents peers. Les langages cibles manipulés par notre algorithme sont définis en termes de variables cibles et nécessitent qu’une variable partagée ai le meme statut de cible dans tous les peers qui la partage. Définition 2 (Langage Cible) Soit ! "$# VOIS un P2PIS, et pour chaque peer , soit @? - B0 VOIS alors + 0 @?C ssi + 0 D?E 8 . l’ensemble de ses variables cibles tel que si :+;# # > comme Pour un sous ensemble F de peers de , on définit son langage cible ?G1HI<KJL KF le M langage des clauses (incluant la clause vide) construites avec uniquement des variables de NOP D? . Parmi les réponses possibles, on distingue les r´eponses locales, faisant intervenir uniquement les variables locales du peer intérrogé, les r´eponses navigationnelles, faisant intervenir les variables d’un seul peer, et les r´eponses d’int´egration faisant intervenir des variables cibles de plusieurs peers. Définition 3 (Impliqués premiers propres par rapport à une théorie) Soit une théorie sous forme clausale et Q une clause. Une clause R est dite: S impliqu´e premier de Q par rapportà ssi UTVQPWYX R et pour tout autre clause R[Z , si !T/QPW\X ]R Z et R Z X ]R alors R Z;^ R . S impliqu´e premier propre de Q par rapportà ssi c’est un impliqué premier de Q par rapport à mais que X 2_R . 14 Définition 4 (Problème de calcul de conscéquences) Soit de théories I et soitune famille sous forme clausale ayant pour langage cible respectif (D?C VOIS un " $ # F . Le probl`eme de calcul de consc´equence est, pour un peer et une clause Q 0 M donnés, de calculer l’ensemble des impliqués propres de Q par rapport à construits à partir de ?E1H <:JL . L’exemple qui suit illustre les principales caractéristiques de l’algorithme distribué présenté dans la section 3. @ Exemple 1 Considerons 4 peers. d´ecrit un tour op´erateur. Sa th´eorie exprime que ses actuelles destinations lointaines ( ) sont soit le Kenya ( ) soit la Chilie ( ). Ces destinations lointaines sont des destinations internationnales ( ) et on´ereuses ( ) Le peer concerne les formalit´es administratives et exprime qu’un passeport ( ) est requis pour les s’interesse aux conditions sanitaires des voyageurs. Il exprime destinations internationales. qu’au Kenya, la vaccination contre la fievre jaune ( ) est fortement recommand´e et que de ) lorsque les logements se font en fortes pr´ecaution doivent etre prises contre le paludisme ( bungalow ( ). d´ecrit les conditions de logement pour les voyages: bungalow pour le Kenya et hotels est requise, ( ) pour la Chilie. Il exprime ´egalement que lorsque la protection ). anti-paludisme les logements sont ´equip´es de protections anti-moustiques ( It also expresses that when anti-paludism Les variables partag´es ´etiquettent les aretes du graphe de voisinage (Figure 1) et W and les variables cibles sont d´efinis par: @? \ T W , D?G T W , D?E TY# 7# D?E"! T$##[# # W . $&%(' LL )) OK ) ' I % ' I) P C ' L) I K %(' KB )) FJK ) ' ' K,C ! % '' KC ) ) BH ' PAL ) AM PAL B,PAL F IG . 1 – Graphe de voisinage pour l’exemple du tour opérateur Supposons que la requete est L est pos´ee au peer . Les consc´equences locales qui peuvent etre d´eriv´es par un raisonnement local sur sont O,I et K * C. O est immediatement retourn´e comme une r´eponse locale puisqu’il est dans ?G1HI<KJL . Puisque I est partag´e avec , il est trans mis comme requete `a , qui produit la clause P. Puisque P est dans ?E1HI<:JL , c’est une r´eponse navigationnelle de la requete initiale. La clause K * C est faite de variables partag´ees. Notre algorithme d´ecoupe de telles clauses et transmet chaque composant (ici K et C) s´eparement au partagant respectivement K et C avec @ . C est ainsi transmis `a , qui retourne voisinage de la clause H pour seule r´eponse. De la meme mani`ere, la clause K est transmise (independem and (les deux partangant la variable K avec @ ). produit localement ment) aux peers il est retourn´e comme une r´eponse pour K. Mais B 0 la clause clause B. Comme B ?E1HI<:JL est ´egalement partag´ee. Elle est donc transmise `a , qui produit en retour la clause + K * PAL. Cette nouvelle clause est d´ecoup´ee en deux: + K and PAL. est int´errog´e pour PAL et retourne AM comme seule r´eponse pour PL. est interrog´e pour calculer les impliqu´es de + K, pendant que la requete complementaire K est toujours en cours de traitement. 15 Nous verrons dans la Section 3 que ceci est pris en compte dans notre algorithme grace `a un historique qui garde trace de la branche de raisonnement en cours: lorsqu’une meme branche de raisonnement contient deux litt´eraux oppos´es, elle est coup´ee et retourne comme r´eponse. Dans notre exemple, la r´eponse produite par pour + K est donc , qui est renvoy´e en retour `a . peut alors combiner les r´eponses obtenues par les deux branches de raisonnement r´esultant du d´ecoupage de + K * PAL, `a savoir AM retourn´e par pour PAL, et retourn´e par pour + K. Ainsi produit AM comme r´eponse pour + K * PL. envoie cette r´eponse en retour `a en tant que r´eponse `a B. transmet `a chacune des r´eponses B, PAL et AM qu’il `a calcul´e pour , comme r´eponses `a K. On ne d´etaillera pas la branche de raisonnement correspondant `a la propagation de K dans , qui ajoute une nouvelle r´eponse, FJ, `a l’ensemble des r´eponses obtenues par pour K. Une fois produites, ces r´eponses sont combin´es avec la seule r´eponse pour C (i.e., H). Ainsi, l’ensemble des r´eponses produites pour la requete initiale est le suivant: T H * B # H * PAL # H * AM # H * FJ W . Parmi ces r´eponse, il est important de remarquer que certaines d’entres elles (e.g., H * Y) font intervenir des variables cibles de differents peers. De tels impliqu´es ne peuvent etre obtenus par des algorithme fond´es sur le partiotionnement comme dans [1]. Ceci est rendu possible grace `a la strat´egie de d´ecoupage/recombinaison de notre algorithme. 3 Algorithme distribu´ ee de calcul de consc´ equences La version orientée message de notre algorithme est décrite dans la section 3.2. Nous montrons qu’il termine et qu’il calcul les même résultats que l’algorithme récursif décrit dans la section 3.1. Pour les deux algorithmes, nous utiliserons les notations suivantes: :QL# > – pour un littéral Q , J <:+ entre Q et une clause de , désigne l’ensemble de clauses obtenues par résolution – pour un littéral Q , Q désigne la négation de Q , désignent la disjonction disjonction de – pour une clause d’un peer , F (resp. littéraux d dont les variables sont partagées (resp. non partagée) avec un quelquonque voisin de . Ainsi, la condition F exprime le fait que ne partage aucune de ses varibles avec son voisinage, – un historique 71 est une liste de triplets K<# # (avec < un littéral, un peer, et une # 7 # #E K< # # # K< # # représente une branche clause). Un historique K< # de raisonnement engendrée par la propagation du littéral < via le peer , et le découpage 0 est de la clause : pour chaque 1 , est un conscéquence de < et , et < un littéral de que l’on propage dans , – ' !"# %$ #& ( '*)))+',( #& T * '10 3N 24(50 est l’opérateur de distribution sur des ensembles de clauses: = * X Y0 # # 50 W . Si TV< # # < LW , on utilisera la notation pour désigner . ))) - ( ( (60 7'8)))'9(50;: /. 3.1 Algorithme r´ ecursif de calcul de consc´ equences à Soit $# VOIS un P2PIS. :QL# # calcule les impliqués du littéral Q par rapport , commençant par le calcul des conscéquences de Q par rapport à , puis se laissant guider 16 par la topologie du graphe de voisinage du P2PIS. Pour garantir la terminaison, il est necessaire de garder la trace des littéraux déja calculés par les peers. Ceci est fait par l’algorithme récursif 5 KQL# F # @# 71 , avec 1 l’historique de la branche de raisonnement terminant par la propagation de Q dans F (un ensemble de voisin du dernier peer ajouté à l’historique). Algorithme 1: Algorithme r´ecursif de calcul de consc´equences (QL# # ) (1)return :QL# T W# @# (QL# )F 0 # @# 71 ) 1 return (1)si ( QP# # 3W 0[ 0 F T t.q. (2)sinon si il existe ou pour chaque M Q (3)sinon LOCAL TVQPW@U NOP BJ <"+ :QL# >= 0 (4)si LOCAL return T 3W 0 LOCAL X 3 )0 ?E1HI<KJP F > W (5)sinon LOCAL T 0 , return LOCAL (6)si pour chaque LOCAL , F (7)sinon RESULTAT0 LOCAL 2 (8) pour tout LOCAL t.q. F 0 J <"+ :QL# > (9) soit le peer de F t.q. (10) \Z PT+Q * VW , CZ "\Z:# ACQ 0 F (11) pour tout litt´eral < :<# ACQ K < # > # ZK# :QL# (12) REPONSE :< (13) COMBDISJ NO REPONSE :< ]T3 W (14) RESULTAT RESULTAT COMBDISJ (15) return RESULTAT + + ' % ' 0 Théorème 1 (LQ # # 0 F :QL# # )0 71 , return # X 1 est correct et termine. Preuve: # 7 # #/ :< # P# . Correction: Si l’historique 71 n’est pas vide, il est de la forme :< # que Nous prouvons par recurrence sur le nombre d’appel recursif de (QL#F # D# 1 chaque résultat retourné par ( QL# F # @# 71 est un impliqué de TVQL# < # # < W relatif au langage cible. S = : l’une des conditions de la ligne (1), (2), (4) ou (6) est satisfaite. ! – Si il existe un pair gorithme retourne _[TVQL# < # # <9W 0 F Si il existe [0 0 1 ou tel que QL# # LOCAL: dans les deux cas, l’al(respectivement dans les lignes (1) et (4)) qui est un impliqué de relatif au language cible. # 0 7 1 : dans cas un /T QL# < # # <9W . 0 – Dans le dernier cas (ligne (6)), LOCAL , et c’est trivialement un impliqué de M T/QL# < # # <9W (en tant que resolvant de Q et d’une clause de NOP ), et il est relatif au language cible. S Supposons l’hypothése de récurrence vrai pour , et soit ! $# VOIS un P2PIS tel que (QL# F # @# 71 necessite appel récursif pour términer. Soit un résultat retourné par ( QL# F # @# 71 . 0 LOCAL, il est trivialement un impliqué de T/QL# < # # < W relatif au language – Si – 0 0 tel que Q ou pour chaque F , KQL# résultat vide est retourné (ligne (2)) puisque Q est déja dans _ cible. 17 0 2 LOCAL, il est obtenu à la ligne (13): il existe une clause = F * telle que F _ <K< * ))) * <K< et>> * )))#* &* " , ou chaque est un résultat retourné par Par hypothése de récurrence (le 5 :<K< # VOIS :<K< # # CZ # :QL# # X 1 (ligne >(12)). Z nombre d’appel récursif de 5 :<K< # VOIS K<:< # # # KQL# # X 71 pour chaque <:< est inferieur à ), chaque est un impliqué de PT+Q * W@[T/<K< # QL# < # # <9W realtif au language cible. Ainsi, *%))) * est un impliqué de PT +Q *VW TVF # QL# < # # < W , relatif au language cible. Puisque est relatif au language cible et que F * 3 , (i.e, * ))) * *3 ) est relatif au language cible , et c’est un impliqué de PT +Q * VWG T # QL# < # # < W . Puisque 0 LOCAL, est un impliqué de TVQPW , et donc est un impliqué de _!T/QL# < # # < W relatif au language cible. Terminaison: à chaque appel récursif, un nouveau triplet /<# # est ajouté a l’historique. Si – Si l’algorithme ne terminait pas, l’historique serait infini, ce qui est impossible puisque le nombre de peers, de littéraux et de clauses dans un P2PIS est fini. Le théoréme suivant énonce une condition suffisante pour que l’algorithme soit complet. Théorème 2 Soit & "$# VOIS un P2PIS dont toutes les théories locale ont été saturées par 0 . 6 . il existe un chemin entre et Z in dont résolution. Si pour chaque , Z et + 0 ) , (QL# # calcule toutes les aretes sont etiquetée par + , alors pour chaque littéral Q tout les impliqués propre de Q par rapport à relatif à ? J " . Preuve: S = : l’une des conditions des lignes (1), (2), (4) ou (6) est satisfaite. ! – If either there exists a peer such that is the only prime implicate of Q w.r.t (respectively Line (1) and Line (4)). 0 0 71 or 0 LOCAL: in both cases, Q # # Y TV< # # <9W and is returned by the algorithm 0 0] 0 – Si il existe ou pour chaque F tel que Q F , :QL# # 1 : dans ce cas, tout les impliqués premiers de Q par rapport à 5T/< # sont des impliqués # < 9 W premiers de UTV< # # < W . Ainsi, l’ensemble des impliqués premiers propres de Q par rapport à _ TV< # # < 9W est vide: il est bien retourné par l’algorithme (ligne (2)). 0 – Si pour chaque F alors chaque resolvant de Q par rapport à n’a pas de variables partagé avec aucun des voisins de : si verifie la propriétée énoncée dans le théoréme, cela signifie que chaque impliqués premier de Q par rapport à ne partage pas de variables avec aucune autre théorie de . D’aprés le lemme 1, l’ensemble des impliqués propres de Q par rapport à 5(TV< # # < 9W est inclus dans LOCAL, et donc chaque impliqué premier propre de Q par rapport à T/< # # < W , qui est dans le language cible, est retourné par l’algorithme (ligne(6)). S Supposons l’hypothése de recurrence vrai pour , et soit "$# ACQ un P2PIS respectant la propriétée énoncée dans le théoreme et tel que ( QL# F # @# 71 necessite appels récursifs pour términer. Soit R un impliqués premier propre de Q par rapport à _!T/< # # < W , qui est dans le language cible. Montrons que R 0 (QL#F # D# 1 . 0 donné, alors R – Si R est un résolvant of Q par rapport à un de F retourné par l’algorithme si il est dans le language cible. LOCAL et il est 18 – Si R n’est pas un résolvant de Q par rapport à un de F donné, alors d’aprés le lemme # # < 9W M 1, soit Q partage ses variables avec des clauses dans , soit / T < N O M il existe une clause +Q M * dans NOP telle que +Q* a des variables partagées avec _!T/< # # < W NOP et R est un impliqué premier propre de par rapport à PT+Q * W) T/QL# < # # < W . Ainsi, si les variables non partagées de sont des varibles cibles, participe à une itération de la boucle de la ligne (8). Si verifie la propriétée énoncée dans le théorème, CZ la verifie aussi. Par hypothése de récurrence, (le nombre d’appels récursif necessaire pour obtenir REPONSE :< 0 F K< , REPONSE K< contient l’ensemble des à la ligne (12) est inférieur à ),pour chaque < impliqués premier propres de < par rapport à PT+Q * VW!T/QL# < # # < 9W , qui sont dans le language cible. Nous appliquons maintenant le lemme 2 pour affirmer que VR H(1 4 , qui est calculé à la ligne (13), contient l’ensemble des impliqués premiers propres de par # < W , qui sont dans le language cible, et en particulier rapport à LT +Q * VW T/QL# < # R . % Lemme 1 Soit un ensemble de clauses et R un impliqué premier propre de Q par rapport à . Soit Z@% saturée par résolution telle qu’elle contienne les clauses partagant la variable de Q . Si R est un impliqué premier propre de Q par rapport à , alors: – soit R est un impliqué premier propre de Q par rapport à – soit la variable de Q est partagée dans des clauses de % Z, Z, – soit il existe une clause +Q * de Z tel que a des variables partagées avec des clauses de Z et R est un impliqué premier propre de par rapport à PT+Q * VW T/QPW . % Preuve: Soit R un impliqué premier de Q par rapport à . Si R est différent de Q , il existe une clause +Q * dans telle que R est un impliqué premier de par rapport à PT+Q * VW!T/QPW . % % – Si une telle clause n’existe pas dans partagée dans des clauses de Z . Z , elle existe dans Z et donc la variable de Q est – Si il existe une clause +Q * in Z telle que R est un impliqué premier de par rapport à PT+Q * VW TVQPW , et R n’est pas un impliqué premier de Q par rapport à Z , alors pour chaque preuve de R il existe forcement une clause /Z dans Z avec qui, soit Q soit +Q * devra faire l’objet d’une résolution. Donc soit Q soit a des variables partagées avec des clauses de Z . % ) )) Lemme 2 Soit un ensemble de clauses, et soit ! < * * < une clause. Pour chaque impliqué premier propre R de par rapport à , il existe R # tel que R ^ R * = # R *R , 0 et pour chaque 1 , R est un impliqué premier propre de < par rapport à . # ))) Preuve: Soit R un impliquée premier de par rapport à . Pour chaque littéral < , soit , :< un en semble de modèles de qui affecte < à vrai. Si ; K< , cela signifie que est le seul 19 impliqué premier propre de < par rapport à . Pour chaque 1 tel que , :< 2 , chaque modèle de , :< est un modèle de [T VW , et donc un modèle de R ; par conscéquent, R est un impliqué premier propre de (TV< W , et, par définition d’un impliqué premier propre, il existe X ]R . Par conscéquent, il existe un impliqué premier propre R de < par rapport à tel que R 0 , R est un impliqué premier R # #=R tel que R * *(R X _R , et pour chaque 1 propre de < par rapport à (R pouvant etre ). Puisque $T/< * #* < W X ]R * *>R *U< par rapport à , on a necessairement , et R est un impliqué premier propre de < * R ^ R * *YR . # ))) ))) ))) ))) ))) 3.2 Algorithme “orient´ e message” de calcul de consc´ equences Dans cette section, nous présentons le résultat de la transformation du précédent algorithme en une version distribuée orientée message de l’algorithme de calcul de conscéquence. L’algorithme est implanté localement dans chaque pair. Il est composé de trois procédures. Chacune d’elle peut etre déclanchée par l’arrivée d’un message. La procédure R ECEPTION M ESSAGE R EQUETE est déclanchée par la récéption d’un mes sage J/QGJ J RU E+ LJ # J J/+PJ # JVQ,J JP# 1 I# < envoyé par le pair E+ LJ au pair J J/+LJ qui execute la procedure: a la demande de E+ J , avec qui il partage la variable de < , il traite le littéral < . La procedure R ECEPTION M ESSAGE R EPONSE est déclanchée par la récéption d’un message J /J RU E+ LJ # J J/+PJ # J /JP# 1 I# envoyée par le pair E+ J au pair J J/+PJ qui execute la procedure: il traite la réponse (qui est une clause dont les variables sont des variables cibles) envoyé par E+ LJ pour le littéral < (qui est le dernier à avoir été ajouter dans l’historique) ; cette réponse doit etre combinée avec les réponses des autres litteraux apparaissant dans la meme clause que < . La procédure R ECEPTION M ESSAGE F INAL est déclanchée par la récéption d’un message ,1 P<9RU E+ J # le pair E+ LJ avertit le pair J J/+PJ que le calcul des réponses pour le littéral < (le dernier a avoir été ajouté dans l’historique) est términé. Ces procedures exploitent deux structures stocke les réponses issues de de données stockées localement sur chaque pair: REPONSE K<# 71 la propagation de < à travers la branche de raisonnement correspondant à 1 ; FINAL :QL# 1 vaut vrai quand la propagation de Q à travers la branche de raisonnement correspondant à 1 est términé. Le raisonnement est amorcé par l’utilisateur (que l’on considére comme un pair par ticulier appelé 1<"1 J ) envoyant à un pair donné le message R* 1<:1 J # # QGJ G# # qui déclanche la procédure R ECEPTION M ESSAGE R EQUETE "R* J # # QGJ G# # Q qui est localement exécuté par . Dans la description des procédures, puisqu’elles sont executées loca lement sur le peer recevant un message, nous noterons V1 le pair receveur du message. Le théoréme suivant assure deux résultats importants: premierement, l’algorithme distibué orienté message calcul les meme resultats que l’algorithme de la section 3.1, et donc, est complet sous les meme conditions que dans le theoreme 2 ; deuxiemement, l’utilisateur est avertit de la terminaison quand elle a lieu, ce qui est crucial dans le cadre d’un algorithme anytime. ( ( ( ( ( ( ( 1 ( J J/+PJ #,1 L<# 1I#=+ P1 1 Q , Théorème 3 Soit le résultat retourné par KQL# # . Si recoit de l’utilisateur le message R* 1 <:1 J # # JVQGJ JP# # Q , alors le message RU # 1<: 1 J # J /J# KQL# # # sera produit. Si est le dernier resultat retourné par :QL# # , alors l’utilisateur sera avertit de la terminaison par un message R* # 1<"1 J #,1 L<# KQL# # + P1 #=+ P1 . 1 1 5 KQL# F # @# 71 Preuve: S = : L’une des conditions des lignes (1), (2), (4) ou (6) de l’algorithme ! 20 Algorithme 2: Proc´edure orient´e message pour le traitement de requete R ECEIVE R EQUETE M ESSAGE(RU E+ LJ # V1# JVQGJ JP# 71 I# Q ) 0 (1) si Q # # 1 (2) envoie RU V1 # E+ LJ # J /JP# : QL# V1 # X 1 # (3) envoie RU V1 # E+ LJ #,1 L<# KQL# V1#=+ 1 X 1 #=+ P1 0 V1 or KQL# V1# 0 1 (4)sinon si Q (5) envoie RU V1 # E+ LJ #,1 L<# KQL# V1#=+ 1 X 1 #=+ P1 (6)sinon J <:+PJ KQL# V1 (7) LOCAL V1 T/QPW 0 V1 (8) si LOCAL /JP# : QL# V1# X 1 # (9) envoie RU V1# E+ J # J #=+ P1 (10) envoie RU V1 # E+ LJ #,1 L<# KQL# V1#=+ 1 X 1 (11) sinon 0 LOCAL V1 X D0 ?E1HI<:JL V1 W (12) LOCAL V1 T 0 V1 # F (13) si pour chaque LOCAL 0 (14) pour tout LOCAL V1 (15) envoie R* V1# E+ J # VJ JP# KQL# V1# X 1 # (16) envoie RU V1# E+ J #,1 L<# KQL# V1#=+ P1 X 1 # + P1 (17) sinon 0 LOCAL V1 (18) pour tout (19) si F JP# KQL# V1# X 1 # (20) envoie R* V1# E+ J # VJ (21) sinon 0 F (22) pour tout litt´ eral < 0 ?E1HI<:JL V1 (23) si < V1 # X 1 " T/<W (24) REPONSE :<=# :QL# (25) sinon V1 # X 1 " (26) REPONSE :<=# :QL# (27) FINAL :<=# :QL# V1# X 71 " 0 (28) pour tout VOIS :<=# V1 (29) envoie R* V1# [# JVQ,J JP# :QL# V1# X 1 #< ( % ( ( ( ( ( 4 ( ( ( Algorithme 3: Message passing procedure for processing reponses /JP# 1 I# ) R ECEIVE R EPONSE M ESSAGE(RU E+ J # V1# J Z # E+ J # Z # K QL# V1# X 1 Z (1) 1 est de la forme :< REPONSE (2)REPONSE :<KZ"# 71 K<:ZK# 1 T PW (3)RESULTAT NO REPONSE :<=# 1 ]T * PW (4)si 1 Z , 1<"1 J sinon le premier pair Z de 71 0 RESULTAT (5)pour tout (6) envoie RU V1 # # VJ JP# KQL# V1# X 1 Z # ( ( ' 0 ' 0 1 Z est satisfaite. Nous avons montré dans la preuve du théorème 2 que si les conditions des lignes (1) et (4) sont satisfaites, est le seul résultat retourné par l’algorithme. La condition de la ligne correspond à la condition de la ligne (1) de l’algo(1) de l’algorithme :QL# F # @# 71 rithme RECEPTIONMESSAGEREQUETE(R* KF # # JVQ,J J , 71 I# Q ) pour chaque de F , qui a déclencher l’envoie d’un message R* #F# J /JP# : QL# # X 71 # (ligne (2)) et d’un mes sage message RU # F#,1 L<=# :QL# # + P1 X 71 #=+ P1 (ligne(3)). Si la condition de la ligne (4) 21 Algorithme 4: Message passing procedure for notifying termination R ECEIVE F INAL M ESSAGE(R* E+ J # V1 #,1 P<=# 1 I# + P1 ) (1) 1 est de la forme :<KZ # E+ J # + P1 #/ :QL# V1# X 71 Z + P1 (2)FINAL :<KZ:# 1 0 + P1 (3)si pour chaque < F , FINAL K<# 1 (4) si 71 Z 1<"1 J sinon le premier peer Z de (5) envoie RU V1 # #,1 L<=# :QL# V1# + P1 X 71 Z #=+ 1 0 F (6) pour tout < V1# X 1 =Z " (7) REPONSE :<=# :<=# E+ J # # :QL# ( ( 1 ( 1=Z M > de l’algorithme 5 KQL# F # @# 71 est satisfaite, puisque LOCAL est NOP LOCAL , il 0 F tel que 0 . Cette condition existe correspond à la condition de la ligne (8) de l’algo rithme pour RECEPTIONMESSAGEREQUETE(RU F# # J/QGJ JP# 1 I# Q ), qui a déclanché l’en voie d’un message R* # F # J /JP# :QL# # X 1 # (ligne (9) et d’un message RU # F#,1 L<=# :QL# (ligne (10)). La condition (2) de l’algorithme 5 :QL#F # D# 1 , dans laquelle aucun résultat n’est renvoyé (voir preuve de Théorème 2), correspond à la condition de la ligne (4) de l’algo 0 F , qui rithme RECEPTIONMESSAGEREQUETE(R* KF# # JVQ,J JP# 1 I# Q ), pour chaque a seulement déclanché l’envoie d’un message final (ligne (5)). Finalement, si la condition de la ligne (6) de l’algorithme 5 KQL# F # @# 1 verifiée, est necessairement un ele0 F tel que est 0 LOCAL > . La condition de la ligne ment de LOCAL, i.e., il existe (6) de l’algorithme 5 :QL#F # D# 1 correspond à la condition de la ligne (13) dans RECEPTIONMESSAGEREQUETE(R* KF # # JVQGJ JP# 71 I# Q ), qui a déclanché l’envoie de tous les > (ligne (15)), et /JP# :QL# # X 1 # , avec une clause messages R* #F# J de LOCAL JP# KQL# # X 1 # . Il a également déclanché l’envoie en particulier le message RU # F# VJ d’un message final (ligne (16)) por . Si est le dernier resultat retourné par 5 KQL# F # @# 71 , 0 F . de tels messages finaux ont été envoyé par chaque S Supposons l’hypothése de récurrence vrai pour , et soit ! "$# ACQ un P2PIS tel que (QL# F # @# 71 necessite appels recursif pour terminer. # + P 1 X 71 #=+ P1 0 – Si 0 ( n’étant pas le dernier résultat retourné par l’algorithme) il existe F tel que LOCAL > , et est l’une des clauses participant à l’itération de la boucle de la ligne (18) de l’algorithme RECEPTIONMESSAGEREQUETE(RU F# # VJVQGJ J# 71 I# Q ), et verifiant la condition de la ligne (19), qui a déclanché l’envoie du message R* #F# J /JP# (ligne (20)). 0 LOCAL 0 0 ))) > :QL# # X 1 # F et une clause < * * <*3 de LOCAL tel que – Si 2 LOCAL, il existe participe à l’itération de la boucle de la ligne (8) de l’algorithme 5 :QL# # D# 1 , et est un élément * * * de NO REPONSE :< T3 W calculé>à la ligne (??), ou chaque REPONSE :< est obtenu comme un résultat de 5 :<=# VOIS :<# # Z # :QL# (ligne (13)), qui necessite moins de appels recursive. Par récurrence, pour chaque littéral un message < 0 F , il existe 0 VOIS K< # > tel que envoie R* # # J /JP# # JVQ,J JP# :QL# # X 1 # < . La boucle de la ligne (11) si il a recu le message RU # de l’algorithme 5 KQL# F # , 71 correspond à la boucle de la ligne (22)de l’algo rithme RECEPTIONMESSAGEREQUETE(R* KF # # JVQGJ J , 1 , Q ), qui déclanche l’envoie 0 F des messages R* # , JVQGJ JP# KQL# # X 71 , < pour chaque littéral < 0 F , envoie (ligne (29)). Ainsi, par hypothése de récurrence pour chaque < # # VJ - JP# K< # # # :QL# # X 1 # . Quand le dernier de ces un message R* messages (disons RU , # J /J , K< - # - # , :QL# # X 1 , - ) est traité, est ))) ' 0 ' # X 1 :< # # #/ :QL# # X 1 # 22 - - produit à la ligne- (3) de RECEPTIONMESSAGEREPONSE(R* # , J /JP# :< # :QL# # X 1 , ), et il existe un pair tel que doit lui envoyer le message R* # (ligne (6)). - # , # J /JP# :QL# # X 1 # – Si est le dernier résultat retourné par l’algorithme ( QL# F , , 71 , pour chaque 0 F , pour chaque 0 LOCAL > , pour chaque < 0 F , 5 K<# ACQ K<# > , Z , " > de VOIS :<# a envoyé :QL# # X 1 a terminé, et, par récurrence, chaque pair le message R* # # ,1 L< , K<# [#=+ 1 , KQL# # X 71 , + 1 . Donc, la condition de la ligne (3) de l’algorithme RECEPTIONMESSAGEFINAL(R* [# #,1 L<# :<=# [# # :QL# # X 1 # + P1 ) est satisfaite, ce qui declanche l’envoie d’un message R* # #,1 L<# (ligne (5)). KQL# #=+ P 1 X 1 # + P 1 Par souci de simplification, les algorithmes que nous avons presentés s’applique à des littéraux. Cela ne les empechent pas d’etre appliqués à des clauses quelconques: il suffit pour cela de découper ces clauses en littéraux et d’utiliser l’operateur pour recombiner les resultats obtenus pour chaque littéral. ' 4 Experimentations Une architecture P2PIS a été dévellopé en Java et déployée sur un cluster de 28 machines Linux Athlon 1800+ avec 1GB de memoire. Le calcul des impliqués locaux est assurée par une version locale de l’algorithme distribué que nous avons présenté; nous avons optimisé le comportement global du programme en éliminant autant que possible les clauses subsumées (les éliminer toutes étant impossible compte tenu du caractere anytime et distribuée de notre algorithme). Generation de benchmark: Evaluer les performances d’un systeme distribué n’est pas trivial. Nous avons choisis de nous focaliser sur des théories aléatoires car elles ont largement été étudiées dans la litterature (dans un contexte centralisé), citons [17]; elles representent également un véritable challenge pour la compilation: il est connu que de petites théories peuvent engendrer d’enormes théories compilées. Notre générateur de benchmark prend en entrée les caracteristiques de notre graphe de voisinage ( noeuds et J arétes). Chaque noeud contient une théorie en 3CNF générée aléatoirement contenant un nombre fixe de R clauses et de variables. Chaque aréte du graphe connexe généré est étiqueté par Q variables qui sont nécessairement communes aux deux peers concernés. Afin d’encoder simplement une variable partagé tout en s’assurant que le théoreme 2 est applicable, nous ajoutons deux clauses dans les deux peers concernés pour assurer l’équivalence entre la variable locale et distante. Ainsi, on peut affirmer que la theorie globale sous jacente contient R clauses aléatoires de taille 3, variables, et Q J clauses de taille 2 qui encodent l’équivalence entre variables partagées. On utilise un autre parametre qui est le nombre de variables cibles de chaque peer. J (pour ne pas obtenir de graphes trop Dans notre experience, nous fixons Q 0 T # 7# W . Nous avonsetlimité contraints), avec nos test à de petits peers (contenant moins de 30 clauses). De telles théories peuvent déja contenir un nombre important d’impliqués [17]. Les algorithmes les plus performants [19] atteignent leurs limites sur des théories aléatoires pouvant aller jusqu’a 150 clauses et 50 variables, ce qui correspond à seulement 5 peers de 30 clauses. ! 23 5 5 10 10 28 28 22 22 22 30 22 30 11 11 11 15 11 15 2 5 5 5 5 5 #Q (#T´ermin´e) #Imp 55 (19, 5s) 14 (7) 55 (3, 1s) 7799 (1431) 40 (4, 1s) 23132 (1651) 40 (4, 2s) 7099 (648) 112 (20, 2s) 8120 (513) 112 (7, 4s) 1132 (54) Temps 2,8,–,– 1,3,5,8 1,2,5,9 3,7,13,17 2,3,6,10 8,13,20,24 TAB . 1 – Resultats sur de nombreuses requetes posées à differents P2PIS Analyse experimentale: Notre premiere constation est que, de manière générale, les clauses les plus courtes apparaissent en premier et que les clauses produites contiennent des variables provenant de plusieurs peers distants. Nous avons également observé des differences significatives dans le comportement de l’algorithme pour differentes requetes posées aux meme P2PIS. Nous imposons une limite de temps de 30s pour chaque requete, qui represente un temps d’attente limite raisonnable pour un utilisateur interrogant un P2PIS. Les valeurs moyennes obtenues sont presentés dans le tableau 1. Chaque benchmark consiste en une synthese effectuée sur un nombre de requetes differentes sur le meme P2PIS. La colonne donne le nombre de requetes differentes posées au meme P2PIS, le nombre de resquetes qui ont terminées avant la limite de temps et leurs temps de calcul La colonne #Imp donne le nombre d’impliqués trouvés et sa médianne. La derniere colonne donne le temps qu’il a fallu pour produire respectivement 2, 10, 100 et 1000 réponses (quant elle existes).Ces valeurs donnent une idée de la vitesse de production de l’algorithme. Les deux premières lignes ( ) montrent que reduire la taille du langage cible n’augmente pas necessairement les performances. Pour un langage cible réduit, les peers interrogeront moin leur voisinage et pourront trouver rapidement toutes les réponse (19 requetes ont terminées en 5s). D’autre part, plus le langage cible est large, plus les premières réponses apparaitront rapidement. Pour les experiences avec 10 peers, on observe de grosses differences pour la colonne #Imp. Ceci peut etre expliqué par une distribution peu homogene favorisant de nombreuses differences de comportement d’un meme P2PIS sur differentes requetes. On peut voir que meme si seulement 10% des requetes terminent, la vitesse de production de l’algorithme est bonne (1000 clauses ). Quand la complexité des théories locales augmente produites en moins de 10s pour R (R ), l’impact ressenti est la diminution de la vitesse de production. Enfin, nous avons testé le passage à l’echelle de notre approche en déployant l’architecture sur les 28 noeuds du cluster, avec des tailles de théories differentes. Meme si peu de requetes terminent avant la limite de temps, notre algorithme passe bien à l’echelle, et produit rapidement un assez grand nombre de clauses. On remarque que lorsque les theories locales deviennent difficiles, les premiers résultats arrivent raisonnablement vite. Notons que sur de telles théories (representant 988 clauses et 420 variables si on fait l’union de toutes les théories locales) zres [19] n’a toujours pas terminé son calcul au bout de plus d’une heure. 3! 5 Related work L’algorithme décrit dans la section 3 peut etre vu comme la version distibuée d’une déduction linéaire ordonnée [2] produisant de nouvelles clauses cibles, ce qui a été étendu dans [18] dans l’objectif de produire tout les impliqués d’une clause donnée relative à un language cible, puis 24 étendu au premier ordre par Inoue dans [9]. Le calcul de nouvelles clauses dérivées (les “impliqués propres” dans la secition 2) à été largement étudié (voir [11] pour un résumé). En particulier, ce problème, également connu sous le nom de calcul de -impliqués a été étudié dans [18, 9] et dans [10]. Nous avons déja mis en avant les differences entre nos traveaux et ceux de [1]. Dans un environnement pair-a-pair, utiliser la décomposition en arbre du graphe de voisinnage est impossible, mais nous pouvons appliquer notre algorithme à des théories partitionnés à la place de celui de [1]. Il pourrait prendre partie de la décomposition en arbre pour améliorer les performances. Comme nous l’avons montré dans l’exemple introductif, l’algorithme de [1] exige pour etre complet que le language cible global soit l’union des langages cibles locaux. [6] exploite cette particularité dans le but d’encoder un P2PIS ayant une architecture pair/super-pairs en une théorie propositionnelle partionnée et ainsi utiliser l’algorithme de calcul de conscéquences de [1]. La connaissance globale des variables cibles de tout le PDMS doit etre connu puis distibuée à travers les supers pairs. L’environnement de diagnostic pour des systémes embarqués distribués ([16]) est fondé sur [1]. Nous pensons qu’il peut bénéficer de notre approche pour etre appliqué à un veritable environnement pair-à-pair dans lequel aucune connaissance globale ne doit etre partagée. Dans les ATMS distribués [12], des agents echange des ensemble de nogood dans le but de converger vers un ensemble global consistant de justifications. A la difference de la vision pairà-pair, une telle vision des ATMS est lié à une connaissance globale partagée par tout les agents et à pour objectif de converger vers une unique solution globale. 6 Conclusion Les contributions de cet articles sont à la fois théoriques et pratiques. Nous proposons le premier algorithme distribué de calcul de conscéquence dans un environnement pair-à-pair, et nous énoncons une condition suffisante pour garantir sa complétude. Nous avons dévelloppé une architecture P2PIS qui implemente l’algorithme et pour laquelle nous obtenons de premiers résultats prometteurs. Cette architecture est utilisée dans un projet en collaboration avec France Télécom, qui a pour objectif d’enrichir les applications web de type pair- à-pair avec des services de raisonnement (e.g., Someone [15]). Jusqu’ici, nous avons restreint notre algorithme à l’utilisation d’un langage cible fondé sur le vocabulaire. Cependant, il peut etre adapté à des langages cibles plus sophistiqués (e.g., impliqués d’une taille maximale donnée, langages fondés sur les litteraux et non pas que sur les variables). Ceci peut etre fait en ajouté une simple balise sur tout les messages pour encoder le langage cible désiré. Une autre extension possible de notre algorithme serait d’autoriser une representation plus compacte des impliqués, comme cela est fait dans [19]. Ces travaux sont liés à un opérateur efficace de distibution sur les clauses. Cette stratégie peut etre adaptée en étendant les messages de notre algorithme dans l’objectif d’envoyer des ensembles compressés de clauses à la place d’une seule clause comme c’est le cas actuellement, et ceci sans changer profondement l’architecture de notre algorithme. R´ ef´ erences [1] E. Amir and S. McIlraith, ‘Partition-based logical reasoning’, in KR’00. 25 [2] C. L. Chang and R. C. Lee, Symbolic Logic and Mechanical Theorem Proving, Computer Science Classics, Academic Press, 1973. [3] R. Dechter and I. Rish, ‘Directed resolution: the davis-putnam procedure revisited’, in KR’94. [4] A. del Val, ‘A new method for consequence finding and compilation in restricted languages’, in AAAI’99. [5] Gnutella. http://gnutella.wego.com. [6] F. Goasdoue and M.-C. Rousset, ‘Querying distributed data through distributed ontologies: a simple but scalable approach’, IEEE Intelligent Systems, (18), (2003). [7] A. Halevy, Z. Ives, D. Suciu, and I. Tatarinov, ‘Schema mediation in peer data management systems’, in ICDE’03. [8] A. Halevy, Z. Ives, I. Tatarinov, and Peter Mork, ‘Piazza: data management infrastructure for semantic web applications’, in WWW’03. [9] K. Inoue, ‘Linear resolution for consequence finding’, Artificial Intelligence, (56), (1992). [10] A. Kean and G. Tsiknis, ‘An incremental method for generating prime implicants/implicates’, Journal of Symbolic Computation, 9, (1990). [11] P. Marquis, Handbook of Defeasible Reasoning and Uncertainty Management Systems, volume 5, chapter Consequence Finding Algorithms, Kluwer Academic Publishers, 1999. [12] C.L. Mason and R.R. Johnson, Distributed Artificial Intelligence II, chapter DATMS: a framework for distributed assumption based reasoning, Pitman, 1989. [13] Napster. http://www.napster.com. [14] W. Nedjl, B. Wolf, C. Qu, S. Decker, M. Sintek, A. Naeve, M. Nilsson, M. Palmer, and T. Risch, ‘Edutella: a p2p networking infrastructure based on rdf’, in WWW’02. [15] M. Plu, P. Bellec, L. Agosto, and W. van de Velde, ‘The web of people: A dual view on the WWW’, in Int. World Wide Web Conf., (2003). [16] G. Provan, ‘A model-based diagnosis framework for distributed embedded systems’, in KR’02. [17] R. Schrag and J. Crawford, ‘Implicates and prime implicates in random 3-sat’, Artificial Intelligence, 81, (1996). [18] P. Siegel, Repr´esentation et utilisation de la connaissance en calcul propositionnel, Ph.D. dissertation, Université d’Aix-Marseille II, 1987. [19] L. Simon and A. del Val, ‘Efficient consequence finding’, in IJCAI’01.