Brevet FR2690541A1 — publié le 19931029

PROCEDE D'ELABORATION AUTOMATIQUE D'UNE REPRESENTATION IMPLICITE DES IMPLIQUANTS PREMIERS D'UNE FONCTION. L'invention est relative à un procédé pour élaborer, de façon automatique, une représentation implicite des impliquants premiers d'une fonction booléenne, à l'aide d'un appareil de traitement de données. La manipulation de fonctions booléennes est appliquée dans de nombreux domaines A titre d'exemple, la synthèse, l'optimisation de circuits électroniques complexes, l'analyse de défaillances de systèmes peuvent être fondées sur une telle manipulation. Par exemple, dans l'analyse de défaillances de systèmes, on peut représenter, à l'aide d'une fonction booléenne la survenance d'une défaillance en fonction des événements extérieurs susceptibles de provoquer cette défaillance. Une telle fonction peut être représentée sous la forme d'une table de vérité, d'équations booléennes, d'une table de Karnaugh Ces divers modes de représentation connus permettent de visualiser chacune des combinaisons de variables (ou d'événements) qui peuvent exister Cependant, ces représentations présentent l'inconvénient d'avoir une taille qui évolue exponentiellement en fonction du nombre de variables apparaissant dans la détermination de la fonction Ainsi, pour une fonction dépendant de n variables, il existe une possibilité de 2 N combinaisons de ces variables. En conséquence, si par exemple, la fonction est représentée sous la forme d'un tableau de vérité, chaque combinaison possible de variables et chaque valeur correspondante de la35 fonction peuvent être représentées sur une même ligne de sorte que, pour une fonction de N variables, un tel tableau comprend N + 1 colonnes et 2 N lignes Il peut être stocké dans la mémoire d'une machine de traitement, mais occupe une place importante De plus, pour déterminer la valeur de la fonction, pour une combinaison donnée des variables, il peut être nécessaire de parcourir un certain nombre de lignes du tableau, ce qui peut être préjudiciable aux temps de traitement En supposant par exemple que la combinaison que l'on recherche soit la dernière apparaissant dans le tableau, il faudrait parcourir l'ensemble des lignes du tableau pour trouver la valeur correspondante de la fonction. Afin de remédier aux inconvénients de ces représentations, il a été envisagé de représenter les fonctions booléennes sous la forme de graphes, ou diagrammes, de décision binaire, encore appelés B D D, initiales de leur appellation anglaise Il Binary Decision Diagram". Avant de rappeler ce qu'est un diagramme de décision binaire, il convient de rappeler quelques notions et définitions relatives aux fonctions, et la terminologie employée. Supposons une fonction f définie par la formule suivante: f=x 1 x 2 * + x 1 * x 2 x 3 On dit que la formule est une formule prépositionnelle, et que x 1, x 2, x 3 sont des variables prépositionnelles, correspondant aux événements atomiques susceptibles de provoquer l'apparition d'un événement de référence. Ainsi, dans l'analyse de défaillances de systèmes, les événements atomiques sont des causes de défaillance, et l'événement de référence est une défaillance particulière liée à ces causes combinées entre elles de certaines manières.35 Les termes 'x ",x 2 "x, "x 3 " et 'x 1 ", "x 2 ", "x 3, qui apparaissent dans la formule sont des littéraux correspondant aux variables prépositionnelles x 1, x 2, x 3. Un littéral représente comment la variable prépositionnelle intervient dans la fonction, c'est-à-dire si la survenance ou la non survenance de l'événement associé est décisive ou indifférente x 1 x 2 et xl x 2 x 3 sont des produits de littéraux Un produit est donc une conjonction de variables et de négations de variables. Le premier produit x 1 x 2 signifie que la présence ou l'absence de la troisième variable x 3 est indifférente. La formule signifie que l'événement de référence survient (f=l) quand simultanément le premier événement atomique x 1 survient (x 1 =l) et le second x 2 ne survient pas (x 2 = 0), ou bien quand simultanément le premier événement x 1 ne survient pas et les second et troisième x 2 et X 3 surviennent. Un graphe de décision binaire est constitué d'un certain nombre de labels, encore appelés étiquettes, reliés entre eux par des branches Chaque label représente une variable déterminée de la fonction, d'o partent deux branches. L'ensemble constitué par un label, donc une variable, et les deux branches qui en partent constitue un noeud, parfois appelé vertex Chaque branche peut être soit une branche terminale, qui aboutit sur une feuille terminale de valeur " O " ou " 1 ", ou une branche intermédiaire qui aboutit sur le label d'un autre noeud L'une des branches qui part d'un label est appelée la branche basse ou négative et représente ce qui se passe lorsque la valeur de la variable associée est "P O ", (en utilisant les conventions rappelées ci-avant), alors que l'autre branche, appelée la branche haute ou positive montre ce qui se passe lorsque la valeur de la variable est " 1 " En fait, l'arbre débute par une variable (un label) racine unique, appelée la racine, d'ou partent deux branches auxquelles sont reliées en cascade d'autres noeuds ou des feuilles. En parcourant l'arbre depuis la racine jusqu'à une feuille terminale de valeur 1, on détermine une combinaison de littéraux, pour laquelle la fonction vaut 1, c'est-à-dire qu'on reconstitue une combinaison (un produit) de variables provoquant l'apparition de l'événement de référence représenté En conséquence, en effectuant chacun des parcours depuis la racine jusqu'à chacune des feuilles terminales de valeur 1, on détermine chacune des combinaisons de variables provoquant l'apparition de l'événement de référence. Un tel diagramme ou graphe permet donc de visualiser l'ensemble des combinaisons de variables d'une fonction, de façon extrêmement complète et concise La place mémoire occupée est moindre par rapport aux tableaux, et les temps de traitement des fonctions représentées sous forme de graphes de décision binaire sont beaucoup plus rapides. De plus, un graphe de décision binaire se prête tout particulièrement à un traitement automatique à l'aide d'un appareil de traitement puisque chaque noeud peut être représenté à l'aide d'informations contenues dans un mot mémoire de l'appareil. * 25 Différentes approches des diagrammes de décision binaire ont été envisagées Ainsi Randal E Bryant, dans une publication parue dans 'r IEEE Transactions on Computers", Volume C-35, numéro 8, Août 1986, a montré comment on pouvait ordonner les variables et donc les noeuds, pour aboutir à des graphes extrêmement compacts mais parfaitement représentatifs des différentes combinaisons de variables apparaissant dans une fonction. Cependant, de tels graphes ne permettent pas de faire efficacement ou rapidement toutes les manipulations possibles sur les fonctions ainsi représentées En effet, certains types d'analyses nécessitent un calcul des impliquants premiers de la fonction: c'est par exemple le cas lorsqu'il s'agit de faire des études de probabilité et de survenance de l'événement racine, ou tout autre type d'analyse événementielle. On rappelle qu'un impliquant d'une fonction est un produit qui implique cette fonction On rappelle encore qu'un premier produit P "contient" un second produit Pl', si la relation P "implique" P' (ceci s'écrit P=>P') est vraie, et enfin un impliquant premier est un impliquant tel qu'il n'existe pas d'autre impliquant qui le contienne. Le parcours d'un diagramme de décision binaire, à partir de sa racine jusqu'aux feuilles terminales ne permet pas de déterminer directement quels sont les impliquants premiers de cette fonction. De récentes approches ont été envisagées pour calculer de façon implicite les impliquants premiers d'une fonction, à partir du diagramme de décision binaire qui la représente. Ainsi, dans une publication faite en Novembre 1991, par la demanderesse, et dont les auteurs sont les inventeurs mentionnés dans la présente demande, plusieurs méthodes ont été présentées qui permettent de déterminer, de façon implicite, les impliquants premiers d'une fonction. Ces méthodes consistent à transformer le diagramme de décision binaire, en utilisant des règles déterminées par les auteurs, et en représentant chaque littéral associé à une variable prépositionnelle telle que Xn apparaissant dans un produit par un jeu de deux autres variables, une première variable dite variable d'occurrence On et une seconde variable, dite de signe Sn. La représentation est simple: si la variable d'occurrence associée est nulle, ceci signifie que la variable prépositionnelle est indifférente dans l'obtention du produit; dans ce cas la valeur de la variable de signe associée est indifférente; si la variable d'occurrence est positive ou de valeur binaire " 1 ", ceci signifie que la présence ou l'absence de la variable prépositionnelle associée est significative pour le résultat, et c'est la variable de signe associée qui indique si la variable propositionnelle correspondante est présente (par convention, la variable de signe = 1 dans ce cas) ou absente (par convention, la variable de signe = 0). Les règles développées dans cette publication tiennent compte du fait qu'un même produit de variables peut posséder plusieurs représentations, et ont introduit la notion de "méta-produit". En effet, pour n= 4 par exemple, le produit {x 2 x 3 x 4} peut être représenté par l'ensemble suivant de deux jeux de variables d'occurence et de signe l( 0111),( 1101)1 et l( 0111),( 0101)l qui donnent une représentation canonique du produit. En conséquence, un ensemble de produits différents peut être représenté par un premier ensemble de couples de référence En faisant l'union logique de tous les couples de cet ensemble, on obtient un second ensemble de couples constituant le "méta-produitr qui est donc la représentation canonique de l'ensemble de produits. Ainsi, en constituant, avec des règles déterminées, un diagramme ayant l'apparence d'un diagramme de décision binaire, utilisant des variables d'occurrence et de signe,35 on aboutit à une représentation implicite de l'ensemble des impliquants premiers: chaque parcours partant d'un label racine, et aboutissant sur une feuille terminale de valeur logique " 1 " passe tantôt par des branches positives associées à des variables d'occurrence, tantôt par leurs branches négatives, tantôt par des branches positives associées à des variables de signes, tantôt par leurs branches négatives Le passage par la branche négative d'une variable d'occurrence ( O f) donnée lors d'un parcours, signifie que la variable prépositionnelle correspondante ne participe pas au produit constituant l'impliquant premier considéré. Cependant, les règles mises en évidence dans cette publication ne sont pas pour autant les mieux adaptées pour une exploitation automatique. En effet, le calcul des impliquants premiers d'une fonction représentée sous la forme d'un diagramme de décision binaire comprenant une variable racine d'o partent une branche basse et une branche haute, elles-mêmes constituées de sous-branches basses et sous-branches hautes, nécessite un calcul des impliquants premiers de la branche basse, un calcul des impliquants premiers de la branche haute, et un calcul des impliquants premiers de la fonction représentant l'intersection de la branche basse et de la branche haute. Ensuite, le calcul final nécessite une opération ensemblisté combinant les impliquants premiers ainsi calculés Ceci suppose donc des calculs récursifs en parallèle car, pour aboutir aux impliquants premiers d'une branche principale, il faut avoir calculé puis combiné entre eux l'ensemble des impliquants premiers de chacune des ses sous-branches. Les combinaisons ensemblistes (union, intersection, complémentation, etc) nécessaires pour ces déterminations successives s'effectuent sans problème si les différentes branches et sous-branches possèdent une structure symétrique les unes par rapport aux autres Si l'ordonnancement n'est pas correctement réalisé, on ne parvient pas à réaliser ces combinaisons nécessaires. Or, la nécessité d'ordonnancer symétriquement les variables rend cette méthode extrêmement consommatrice de mémoire et difficile à réaliser automatiquement On obtient parfois des représentations implicites intermédiaires de taille considérable, pour garder la symétrie, de sorte que la mémoire de la machine peut être saturée avant que l'ensemble des calculs soit terminé; de plus, même si la mémoire est suffisante, la représentation finale possède une taille très importante avec soit des informations redondantes, soit des informations non nécessaires pour la détermination des impliquants premiers. Dans la mesure o la mémoire de l'appareil a été suffisante pour établir la représentation implicite des impliquants premiers, on peut toujours envisager de simplifier cette dernière, pour supprimer les redondances Ceci est difficilement réalisable, voire impossible dans certains cas. Les buts de l'invention sont donc de proposer un procédé de détermination implicite des impliquants premiers d'une fonction à partir de son diagramme de décision binaire, constitué dans la mémoire d'une machine de traitement, qui ne présente pas les inconvénients de l'art antérieur. Selon l'invention, un procédé d'élaboration automatique, à l'aide d'un appareil de traitement de données, dans une zone mémoire de cet appareil, d'une représentation implicite (PRIME(f)) des impliquants premiers d'une fonction booléenne (f) initialement représentée, dans une autre zone mémoire de cet appareil, sous la forme d'informations constituant un diagramme de décision binaire de cette fonction, le procédé consistant à élaborer la représentation implicite à partir de ces informations, en effectuant des parcours récursifs au travers de ce diagramme pour déterminer des éléments intermédiaires ensuite combinés entre eux suite à chaque récursion, chaque élément intermédiaire utilisant des variables d'occurence ( 01 n) et des variables de signe (S 11 Sn)) correspondant respectivement à chacune des variables prépositionnelles (X 1, *Xn) du diagramme de décision, est caractérisé en ce qu'il met en oeuvre des moyens pour obtenir des éléments intermédiaires normalisés lors de leur élaboration, réduisant ainsi la consommation de mémoire, et des moyens pour combiner entre eux les éléments intermédiaires après leur normalisation. La normalisation consiste en fait à tester, et/ou à comparer, les valeurs des paramètres ou éléments intervenant dans la constitution des formes intermédiaires, et, selon les résultats des tests ou comparaisons, à constituer des formes intermédiaires simplifiées avant qu'elles soient construites Cette façon d'agir évite d'encombrer la mémoire Néammoins, elle entraine, dans certains cas, une perte de symétrie entre les formes intermédiaires, de sorte que les constructions ultérieures nécessitent la mise en oeuvre de fonctions spécifiques pour combiner ces formes intermédiaires. L'invention est donc particulièrement avantageuse, puisqu'elle permet de construire une structure, ayant la forme d'un diagramme de décision binaire qui, en fait, donne une représentation implicite des impliquants premiers ne contenant que les éléments nécessaires à déterminer ces impliquants, réduisant la consommation de mémoire La détermination s'effectue en parcourant les différentes trajets, partant de la variable racine de la structure ainsi constituée, et aboutissant à une feuille terminale dont la valeur est " 1 ". D'autres caractéristiques et avantages apparaîtront à la description qui va suivre, faite en regard des figures annexées sur lesquelles: La figure 1 représente, de manière schématique, un diagramme de décision binaire d'une fonction booléenne (f); La figure 2 illustre la façon dont la mémoire d'un appareil de traitement peut être organisée, pour contenir des informations contenant le diagramme de la figure 1; La figure 3 illustre la fonction de normalisation d'un élément intermédiaire; Les figures 4 à 9 illustrent schématiquement diverses étapes de constitution de la représentation implicite des impliquants premiers de la fonction (f) de la figure 1; La figure 10 illustre la façon dont la mémoire d'un appareil de traitement peut être organisée, pour contenir des informations contenant le diagramme de la figure 9. Ainsi qu'il a été évoqué, une variable prépositionnelle peut être représentée à l'aide d'un jeu de variables d'occurrence et de signe associées. On considèrera donc par la suite qu'à une variable prépositionnelle xn on peut associer une variable d'occurrence On et une variable de signe sn' Sur la figure 1, on a représenté un diagramme de décision binaire d'une fonction dans laquelle apparaissent trois variables prépositionnelles xl, x 2, X 3. Dans l'exemple illustré sur cette figure 1, une première variable, identifiée par un label xl, est la racine du graphe De cette variable partent deux branches, une il première branche en bas à gauche et une seconde branche en bas à droite La branche de gauche est appelée la branche basse, alors que la branche droite est appelée la branche haute L'ensemble racine, branches basse et haute constitue donc un premier noeud du diagramme. La branche basse et la branche haute aboutissent chacune sur une seconde variable identifiée par un label x 2 A cette seconde variable est également associée une branche basse et une branche haute, ce qui constitue un autre noeud. L'ensemble de labels (ou de variables), de branches, de feuilles associé à une branche basse d'une autre variable constitue ce que l'on appellera par la suite la partie basse notée L de cette variable L'ensemble associé à la branche haute d'une variable constitue la partie haute, notée H de cette variable. Ainsi, la partie haute de la variable xl débute par un noeud dont la racine est la variable x 2, la partie basse est la feuille O et la partie haute une feuille de valeur 1. En parcourant les branches de l'arbre à partir de la racine en direction des feuilles de valeur 1 '1 ", on détermine que la fonction représentée vaut 1 lorsque: X 2 vaut O et simultanément xl vaut 0, ou bien; -x vaut 0, et simultanément x 2 vaut 1 alors que x 3 vaut 1. Ce qui précède se déduit du parcours des branches basses associées à la racine xi. Par ailleurs, de la partie haute associée à la racine xl, on déduit que la fonction vaut également 1 lorsque simultanément xl et x 2 valent 1. En conséquence de ce qui précède, la fonction représentée pourrait s'écrire f=xl* x 2 * + xl* x 2 x 3 + x 1 x 2. La construction d'un diagramme de décision binaire, tel qu'il est présenté à la figure 1, répond à des règles déterminées et connues qui ne sont pas l'objet de la présente invention Elles ont été décrites dans la publication mentionnée de Randal E Bryant. On constate qu'il existe une certaine symétrie entre les parties haute et basse associées à une variable, symétrie qui permet de faire des opérations logiques entre ces parties haute et basse sans difficulté On constatera par la suite que la détermination implicite des impliquants premiers d'une fonction représentée par un tel diagramme de décision binaire nécessite ce type d'opération. La figure 2 illustre comment la mémoire d'un calculateur peut être organisée, pour contenir des informations constituant le diagramme de décision binaire de la fonction représentée sur la figure 1 Ceci n'est absolument pas limitatif. De façon connue, la mémoire est organisée en mots, et chaque mot est déterminé par son adresse absolue ou relative A Dn. Afin de représenter un diagramme de décision binaire, chaque mot peut être divisé en au moins 4 champs, un premier champ VAR, un second champ INDL, un troisième champ INDH, et enfin un quatrième champ GEST. Le premier champ VAR d'un mot contient une information indiquant la nature et le rang d'une variable prépositionnelle de la fonction, par exemple xn. Le second champ INDL indique si la branche basse de la variable correspondante aboutit sur un noeud ou sur une feuille. Le troisième champ INDH indique si la partie haute de la variable correspondante aboutit sur une feuille ou sur un noeud. Le quatrième champ GEST contient par exemple des paramètres de gestion nécessaires pour l'exploitation de la mémoire, lorsque des parcours sont effectués entre les différentes adresses. Plus précisément, le second et le troisième champs peuvent être complétés de la façon suivante: si la branche basse associée à la variable prépositionnelle contenue dans le mot aboutit sur une feuille, alors ce second champ contient une indication "Val O " ou "Val 1 " de la valeur de cette feuille comme représenté dans certaines cases de cette figure 2. Par contre, si la branche basse associée à une variable prépositionnelle aboutit sur un noeud, alors ce second champ INDL contient la valeur de l'adresse mémoire du mot o est inscrit ce noeud. Le troisième champ INDH indique, de la même manière que le second champ, si la branche haute associée à une variable aboutit sur un noeud ou sur une feuille et contient le cas échéant une adresse, ou une valeur. Le quatrième champ GEST contient des paramètres de gestion indiquant les parcours qui ont déjà été effectués, ou tout autre type d'information nécessaire à la gestion et l'exploitation de cette mémoire. Ainsi, en partant du mot situé à l'adresse AD 1, et en parcourant l'ensemble de la mémoire, le système de traitement peut reconstituer les produits pour lesquels la fonction vaut " 1 " Il est donc en mesure de reconstituer l'arbre et ses différents noeuds. Cependant, on remarque que, soit le parcours du diagramme de décision binaire, soit le parcours de la mémoire ne permet pas de déterminer les impliquants premiers de la fonction Conformément à la présente invention, à partir du diagramme de décision binaire d'une fonction booléenne, on élabore un diagramme qui représente de façon implicite les impliquants premiers de la fonction. Pour la clarté de l'exposé, on considèrera que le diagramme de décision binaire utilise des variables (xi,, xn) et le diagramme de ses impliquants premiers utilise les variables d'occurrence ( 1, on) et de signes (Si, Sn) correspondantes. On supposera aussi que les variables sont ordonnées de la façon suivante: x I premiers conduit à construire des noeuds. Par convention, dans la suite de la description, une formule du genre y=Nd(x,L,H) signifie que le système de traitement construit dans sa mémoire le noeud identifié par la variable y, noeud dont le label est la variable x, la branche gauche, c'est-à-dire la branche basse, est L, et dont la branche droite, c'est-à-dire la branche haute, est H. Par convention également, une formule du genre Nd(x,L,H)=y décompose le noeud y en sa racine, c'est-à-dire la variable x, en sa branche gauche L et en sa branche droite H. Le système de traitement réalise les opérations suivantes lors de la création d'un noeud. Tout d'abord il teste, lors de l'élaboration du noeud y, si la branche basse L est égale à la branche haute H Dans l'affirmative, au lieu de construire le noeud dont la racine serait x et les branches basse et haute respectivement L et H, il retourne simplement l'une de ces branches constituée par L (ou par H) Il peut bien entendu s'agir d'une feuille terminale (quand L=H= O ou 1), ou autrement d'un noeud ou d'un ensemble de noeuds. Dans le cas o L est différent de H, le système vérifie dans la mémoire, si le noeud en construction y existe déjà. Dans l'affirmative, il retourne directement ce noeud, en pointant sur son adresse en mémoire. Si le noeud n'existe pas dans la mémoire, alors il y est construit, à une adresse laissée libre, de la façon indiquée auparavant. Cette façon d'agir, qui consiste à ne pas reconstruire dans la mémoire un noeud qui y existe déjà, permet une économie de mémoire, et un gain de temps lors de l'exploitation ultérieure. La fonction qui permet de construire la représentation implicite des impliquants premiers à partir du diagramme de décision binaire, c'est-à-dire une structure possédant des variables xl,, xn, d'une fonction booléenne (f) est appelée PRIME(f) Cette fonction PRIME(f) permet d'obtenir une représentation constituée exclusivement de variables d'occurrence 01 on et de signe Sl,,Sn. Un test est d'abord réalisé pour déterminer la nature de la fonction. Si f= O alors PRIME(f)= 0, si f=l alors PRIME(f)= 1; Sinon, (f est différent de O ou de 1) ce qui signifie que f se présente sous la forme d'un noeud ayant une racine Xk, un branche basse L et une branche haute H Donc, en utilisant les conventions précédemment définies, on peut écrire que Nd(xk,L,H)=f. Dans ce cas, la fonction PRIME, dont on remarquera plus loin qu'elle est récursive, fait appel à une fonction NORME qui normalise un noeud Nd(Ok, P,P'), dont la racine serait la variable d'occurrence Ok associée à la variable racine xk du diagramme de décision binaire correspondant, la branche basse une représentation implicite P construite lors d'une récursion précédente, et la branche haute une autre représentation implicite P' construite à l'aide d'éléments obtenus lors d'une récursion précédente, comme il sera expliqué ci-après Ainsi, on peut écrire: PRIME ( f) =NORME ( Ok, 'P,P'). Dans un mode de mise en oeuvre préféré, la fonction NORME(Ok,P, P') dans lequel Ok est une variable, P et P' sont des représentations implicites, débute par des tests successifs sur les valeurs de P et P', dont on rappelle qu'elles sont obtenues lors de récursions précédentes. Si P=P' ou P'= 0, alors le résultat final est NORME(Ok,P, P')=P Si P= 0, la fonction NORME permet de rendre le résultat NORME(Ok P,P')=P'. Si aucune des conditions précédentes sur P et P' n'est vérifiée, le résultat est un noeud défini de la façon suivante: NORME(Ok P,P')=Nd(Ok,P,P'). Le noeud normalisé n'est donc construit en mémoire qu'après que la détermination des valeurs relatives de P et P' a été effectuée, ce qui est particulièrement économique sur le plan de la consommation de mémoire, et rapide sur le plan du traitement. La figure 3 illustre comment la fonction NORME agit La partie gauche de la figure représente un noeud qui pourrait être obtenu si cette fonction n'était pas mise en ouvre. Par exemple, la racine serait une variable d'occurrence Ok, reliée par sa branche basse à une feuille terminale de valeur 0, et par sa branche haute à un noeud dont la racine est Sk, la branche basse L et la branche haute H La fonction NORME, appelée par la fonction PRIME appliquée à ce diagramme permet d'obtenir en définitive un noeud, représenté sur la partie droite de cette figure 3, dont la racine est la variable de signe Sk et qui comporte une branche basse L et une branche haute H, sans que la représentation de la partie gauche soit construite en mémoire. Il en aurait été de même si à la place de la branche basse de la partie gauche,reliée à une feuille de valeur " 0 ", on avait eu un noeud v=Nd(Sk,L, H) identique à celui de la branche haute. Dans une première variante, un seul test sur les valeurs de P et P' est réalisé Si le résultat de ce test est négatif, alors la fonction norme rend le résultat suivant: NORME(Ok,PP')=Nd(Ok,PP')- Ainsi, dans une première mise en oeuvre de cette variante, le test est réalisé pour savoir si P=P': dans l'affirmative, le résultat rendu est NORME(Okt P,P')=P, sinon NORME(Ok, PP')=Nd(Ok,PP'). Dans une seconde mise en oeuvre de cette variante, le test est réalisé pour savoir si P'= 0: dans l'affirmative, le résultat rendu est NORME(Ok,P,P')=P, sinon NORME(Ok,P,P')=Nd(Ok P,P'). Dans une troisième mise en oeuvre de cette variante, le test est réalisé pour savoir si P= 0: dans l'affirmative, le résultat rendu est NORME(Ok,P,P')=P', sinon NORME(Ok,P,P')=Nd(Ok,P,P'). D'autres variantes sont envisageables, dans lesquelles une première condition sur P et P' serait testée, en rendant le résultat approprié si cette première condition était vérifiée, puis une seconde au cas ou la première ne serait pas vérifiée, avant de rendre le résultat NORME(Ok,P,P')=Nd(Ok,P,P'), si la seconde condition elle- même n'était également pas vérifiée. Une séquence de tests mettant en oeuvre cette seconde variante pourrait être la suivante: le premier test serait par exemple réalisé pour savoir si P=P': dans l'affirmative, le résultat rendu serait NORME(Ok,P,P')=P; sinon un second test serait par exemple réalisé pour savoir si P= 0:: dans l'affirmative, le résultat rendu serait NORME(Ok, P,P')=P'; sinon, le résultat rendu serait: NORME(Ok,P,P')=Nd(Ok,PP') Il est bien entendu que ces deux variantes sont moins performantes, dans la mesure o elles peuvent conduire à l'élaboration de structures qui auraient été normalisées si le mode de mise en oeuvre préféré avait été utilisé. Néammoins ces variantes, qui permettent un gain de temps, sont applicables pour des graphes de taille réduite. La branche basse P du noeud normalisé est définie de la façon suivante: P=PRIME(L/\H), c'est-à-dire que P est lui- même obtenu, par récursion, en applicant les règles actuellement décrites à l'intersection logique des branches basse L et haute H de la fonction f représentée par son diagramme de décision binaire La branche basse P est donc constituée par la représentation implicite des impliquants premiers de cette intersection des deux parties haute et basse de la fonction. La branche haute P' du noeud normalisé est constituée par un noeud défini de la façon suivante: P'=NdlSk,MINUS{PRIME(L),P},MINUS{PRIME(H), P)}l. En définitive, PRIME(f)=NORME(Ok,P,NdlSk,MINUS{PRIME(L),P}, MINUS{PRIME(H),P)}l) MINUS est une fonction intermédiaire permettant de simplifier la forme obtenue, et de tenir compte des résultats obtenus suite à l'application de la fonction NORME, lors des récursions précédentes Cette fonction sera définie plus loin. On constate donc bien que P et P', auxquels s'applique la fonction NORME, nécessitent pour leur élaboration, la construction préalable d'un diagramme représentant de façon implicite les impliquants premiers PRIME(L) de la branche basse L de la fonction f, celle d'un diagramme représentant implicitement les impliquants premiers PRIME(H) de la branche haute H de la fonction, et enfin celle d'un diagramme représentant de façon implicite les impliquants premiers PRIME(L/\H) de l'intersection logique entre les branches haute et basse de la fonction. La construction de ces diagrammes PRIME(L), PRIME(H), PRIME(L/\H), nécessite donc de parcourir le diagramme de décision binaire de la fonction f de façon récursive. Néanmoins, contrairement à ce qui se faisait dans l'art antérieur, cette méthode ne nécessite pas la construction de diagrammes intermédiaires, puisque les éléments construits lors des récursions sont immédiatement intégrés dans la structure grace à l'emploi des fonctions particulières NORME, et MINUS Cette dernière va maintenant être décrite. La fonction NORME s'applique à une représentation implicite structurée à partir de variables d'occurrence et de signe. La fonction MINUS s'applique également à une représentation implicite obtenue initialement par application de la fonction PRIME à des branches haute, basse, ou à la combinaison des deux. En conséquence, les éléments sur lesquels agit la fonction MINUS sont soit des noeuds, soit des variables de valeur O ou 1 Lorsqu'il s'agit de noeuds, leur racine est soit une variable d'occurrence, soit une variable de signe. Le résultat de la fonction MINUS est une représentation implicite. Cette fonction MINUS, appliquée à deux représentations implicites qui peuvent être nommées P et P' peut s'écrire MINUS(P,P') commence par un test pour déterminer les valeurs relatives de p et de P'. Si P=P', ou si P= 0, le résultat de la fonction MINUS appliquée à P et P' est MINUS(P,P')= 0. Si P= 1 ou P'= O ou P'=l, le résultat de la fonction MINUS est MINUS(P,P')=P. Si aucune des conditions vérifiées ci-dessus n'est réalisée, alors les noeuds P et P' sont décomposés en leur racine vvl, leur branche gauche ou basse L, L' et leur branche droite ou haute H, Hl', ce qui peut s'écrire, en utilisant les conventions définies auparavant: Nd(v,L,H)=P et Nd(v',L',H')=Pr. Un test est ensuite réalisé pour déterminer la nature et le rang des variables racine v et v' des deux noeuds P et P'. En effet, la fonction MINUS applique des règles différentes selon le résultat trouvé. Si les deux variables racines v et v' sont des variables d'occurrence, c'est-à-dire si v=Ok et v'=Ok, un autre test est réalisé pour déterminer les rangs k et k' Si k est inférieur à k', alors le résultat de la fonction MINUS appliquée à P et P' est le suivant: MINUS(P, P')=NORME(Ok,MINUS(L),P',H), c'est-à-dire qu'on normalise un noeud dont la racine serait la variable kt c'est-à-dire la racine du premier noeud P pris en compte par la fonction MINUS; la branche gauche ou basse de ce noeud est le résultat de la fonction MINUS appliquée d'une part à la branche gauche L du premier noeud P pris en compte, et d'autre part au second noeud P'; la branche droite ou haute est la branche -droite H du premier noeud P impliqué par la fonction MINUS On constate donc que la fonction MINUS nécessite elle-même des calculs récursifs, puisque l'un des éléments résultant est lui-même obtenu par l'application de cette même fonction à des éléments intermédiaires. Si k=k', alors le résultat de la fonction MINUS est le résultat de la fonction NORME appliquée à un noeud construit comme suit: la racine de ce noeud est la variable Ok; sa branche gauche ou basse est le résultat de la fonction MINUS appliquée respectivement aux branches basses L, L' des noeuds P, P' impliqués par la fonction MINUS, et sa branche droite ou haute est le résultat d'une fonction MINU 52 appliquée aux branches hautes H H' des deux noeuds PP' impliqués par la fonction MINUS. Cette fonction MINU 52 sera décrite ultérieurement En conséquence, le résultat de la fonction MINUS peut s'écrire: MINUS(PP')=NORMElOk MINUS(LL'),MINU 52 (HHI)l. Si aucune des deux conditions testées ci-dessus pour k et k' n'est vérifiée, alors le résultat de la fonction MINUS appliquée à P et P' est obtenu en appliquant la fonction MINUS au premier noeud P impliqué par la fonction MINUS et à la branche basse L' du second noeud P' impliqué par la fonction MINUS, ce qui peut s'écrire: MINUS(PP')=MINUS(PL'). Si les tests sur la nature des variables v et v' révèlent que v est une variable d'occurrence (v= O k) et que v' est une variable de signe (v'=Sk'), alors on teste le rang de k et k'. Si k est inférieur à k' alors on normalise un noeud dont la racine est O k' c'est-à-dire la variable racine du premier noeud P impliqué par la fonction MINUS, dont la branche gauche ou basse est le résultat de la fonction MINUS appliquée respectivement à la branche gauche ou basse L du premier noeud P, et au second noeud P', et dont la branche haute ou droite est la branche haute H du premier noeud P. Ceci peut s'écrire MINUS(PP')=NORME(Ok MINUS(LP'),H)- Si les tests révèlent que k est égal k', alors on normalise un noeud dont la racine et la variable Ok du premier noeud P impliqué par la fonction MINUS, dont la branche basse ou gauche est la branche basse L du premier noeud P et dont la branche haute est le résultat de la fonction MINU 52 appliquée à la branche haute H du premier noeud P, et au second noeud P'. Ceci peut s'écrire MINUS(P,P')=NORME(Ok,L,MINU 52 (H,P')). Si les tests sur les rangs k et k' sont négatifs, alors le résultat de la fonction MINUS est le premier noeud P lui- même. Ceci peut s'écrire MINUS(P,P')=P. Les tests sur la nature des variables v et v' peuvent révéler que v est une variable de signe (v=Sk) et que v' est une variable d'occurrence (v'= Ok') Dans ce cas, si le test révèle que k est inférieur à k', alors le résultat de la fonction MINUS est le premier noeud P impliqué par la fonction MINUS. Ceci peut s'écrire MINUS(P,P')=P. Si k=k', alors le résultat de la fonction MINUS est la fonction MINU 52 appliquée respectivement au premier noeud P, et à la branche haute ou droite H' du second noeud P'. Ceci peut s'écrire MINUS(P,P')=MINU 52 (P,H'). Si aucune des conditions sur k et k' n'est vérifiée, alors le résultat est obtenu en applicant la fonction MINUS au premier noeud P, et à la branche gauche ou basse L' du second noeud P'. Ceci peut s'écrire MINUS(P,P')=MINUS(P,L'). Enfin les tests peuvent révéler que les variables racine v et v' des deux noeuds P et P' impliqués par la fonction MINUS sont des variables de signes (v=Sk, v'= Sk') Dans ce cas, si les tests sur la valeur de k et k' révèlent que k est égal à k', alors le résultat de la fonction MINUS est un noeud dont la variable racine est Sk, c'est-à-dire la racine de l'un ou l'autre des noeuds impliqués par la fonction MINUS, dont la branche gauche ou basse est est le résultat de la fonction MINUS appliquée respectivement aux branches basses L, L' des deux noeuds P,P' impliqués et dont la branche haute ou droite est obtenue en appliquant la fonction MINUS aux branches hautes ou droites H,H' des deux noeuds P,P' impliqués respectivement. Ceci peut s'écrire: MINUS(P,P')=NdlSk,MINUS(L,L'),MINUS(H,H')l. Si la condition vérifiée précédemment sur l'identité entre k et k' n'est pas vérifiée, alors le résultat de la fonction MINUS est le premier noeud P impliqué. Ceci peut s'écrire: MINUS(P,P')=P. On a vu précédemment que la fonction MINUS nécessitait parfois l'emploi d'une fonction appelée MINU 52, qui s'applique à des éléments qui sont eux-mêmes des représentations implicites. Si on appelle ces éléments respectivement P et P', la fonction MINU 52 appliquée à ces éléments peut s'écrire: MINU 52 (P,P'). Cette fonction débute par un test pour comparer P et P'. S'il s'avère que P est identique à P', alors le résultat de la fonction MINU 52 est la variable " 0 " Si l'égalité entre les deux noeuds P et P' impliqués dans la fonction MINU 52 n'est pas vérifiée, on décompose respectivement ces deux noeuds P et P' pour retrouver leur racine Sk, Sk', leur branche gauche ou basse L, L' et leur branche haute ou droite H,H' Ceci s'écrit: Nd(Sk,L,H)=P et Nd(S'k,L,H)=P'. Le résultat de la fonction MINU 52 est alors un noeud dont la racine est la variable racine Sk du premier noeud P, dont la branche basse ou gauche est le résultat de la fonction MINUS appliquée aux branches basse ou gauche L, L' de chacun des deux noeuds P P' impliqués par cette fonction MINU 52, et dont la branche haute ou droite est le résultat de la fonction MINUS appliquée aux branches hautes H,H' de chacun des deux noeuds P,P' impliqués par la fonction MINU 52. Ceci peut s'écrire: MINU 52 (P,P')=NdlSk,MINUS(L,L'),MINUS(H,H')l. Les fonction MINUS et MINU 52 permettent néammoins d'aboutir à des résultats extrêmement simplifiés, car la fonction MINUS tient compte de la nature et du rang des variables v et v' des représentations auxquelles elle s'applique Les procédés de l'art antérieur n'avaient pas permis d'obtenir de telles simplifications. Les figures 4 à 9 illustrent progressivement la façon dont la représentation implicite des impliquants premiers du diagramme de décision binaire de la figure 1 est élaborée. La figure 10 montre comment une mémoire d'un appareil de traitement pourrait être constituée à la fin des opérations de calcul, en supposant qu'on utilise une méthode comparable à celle décrite en regard de la figure 2. L'observation de la fonction PRIME évoquée précédemment montre que pour élaborer la représentation implicite des impliquants premiers d'une fonction, elle-même représentée sous la forme d'un diagramme de décision binaire, il est nécessaire d'effectuer de façon récursive le calcul implicite des impliquants premiers de chacune des branches haute et basse de cette fonction. Les règles de simplification résultant des fonctions NORME et MINUS permettent d'obtenir des représentations intermédiaires de taille raisonnable. La figure 4 comporte trois dessins mis en correspondance les uns avec les autres à l'aide de flèches La partie gauche de cette figure représente la branche haute H qui est entourée sur la figure 1 Cette branche haute est constituée par un noeud dont la variable racine est X 2, dont la branche basse L est la variable 0 et la branche haute H est la variable 1 L'intersection logique L/\H des deux branches donne le résultat O dont la connaissance est nécessaire pour le calcul de la représentation implicite des impliquants premiers de cette branche Après application de la fonction NORME, on obtient en définitive un noeud Nd( 52,0,1) qui est la représentation implicite des impliquants premiers de la partie haute du diagramme de décision binaire de la figure 1 Ce noeud est représenté à droite sur la figure 4. Sur la figure 5, on a représenté la partie basse L du diagramme de décision binaire de la figure 1 Cette partie basse comprend elle-même une partie basse L dont la valeur est la constante 1, et une partie haute H constituée par un noeud Nd(X 3,0,1) Puisque la partie basse L est constituée par la constante de valeur 1, l'intersection L/\H entre la partie haute et la partie basse de cette figure redonne le noeud constituant la partie haute, c'est à dire que L/\H = Nd(X 3,Ol). On remarque que la structure de ce noeud est identique, au rang de son label racine près, à celui qui représente la branche haute de la figure 1 En conséquence, la représentation implicite de ses impliquants premiers est le noeud suivant: PRIME En définitive, l'application de la fonction PRIME, qui fait intervenir les fonctions NORME, et MINUS, conduit à aboutir à la représentation implicite des impliquants premiers de la partie basse du diagramme de la figure 1, constituée ainsi: PRIME(L(fig 1))=Ndl 02,Nd( 53,0,1),Nd( 52,1 10)l, et illustrée dans la partie inférieure de cette figure 5. Sur la figure 6, on a représenté le diagramme représentatif de l'intersection des branches basse L et haute H de la figure 1 Il représente un noeud dont la racine est X 2, dont la branche basse est la constante 0, et dont la branche haute est un noeud Nd(x 310,1) On constate que ce dernier est identique à la branche haute de la figure 5, ou à l'intersection des branches basse et haute de cette même figure 5 En conséquence, le système de traitement, en parcourant la mémoire, déterminera que le calcul de la représentation implicite de ses impliquants premiers a déjà été effectué et ne le réexécutera donc pas. L'intersection logique des branches haute et basse des éléments de cette figure 6 aboutit à la constante 0. En résultante, si la fonction NORME n'était pas appliquée, la représentation implicite des impliquants premiers des éléments de la figure 6 serait celle qui apparait sur la partie gauche de la figure 7 En raison de l'existence de cette fonction NORME, la représentation implicite des impliquants premiers de l'intersection logique des branches haute et basse est le noeud qui apparait sur la partie droite de cette même figure 7, c'est à dire le noeud *Nd( 52,0,Nd( 53,0,l))- La figure 8 illustre une représentation intermédiaire implicite des impliquants premiers du diagramme de la figure 1, qui serait obtenue si aucun test n'était réalisé pour éviter la redondance entre des noeuds identiques pointés à partir de différents labels. Le schéma de cette figure 8 résulte de l'application de la fonction PRIME aux représentations intermédiaires apparaissant sur les figures 4 à 7. Ainsi, sur cette figure 8, la détermination du noeud constituant la branche basse associée à la variable 51 aurait été obtenue après application des fonctions MINUS et MINU 52 à certains éléments des représentations intermédiaires. Surtout, on remarque que cette représentation de la figure 8 utiliserait deux fois le noeud Nd( 53,0, l) qui a été entouré sur cette figure. On constate en effet que ce noeud est associé d'une part à une branche basse reliée à un label 02 et à une branche haute reliée à un label 52 C'est pourquoi, au lieu de batir deux fois ce noeud, il n'est bati qu'une fois, de sorte qu'on aboutit à un schéma conforme à celui de la figure 9, o le label 53 est pointé par deux variables différentes 02 ' 52 On constate que la représentation de la figure 9 est comparable à celle de la figure 1, en ce sens qu'on obtient un diagramme ayant l'apparence d'un diagramme de décision binaire, c'est à dire bati à partir d'une racine 01, dans le cas présent, et ayant des parcours aboutissant sur des feuilles terminales de valeur O ou 1. En effectuant les différents parcours, en partant du noeud racine et en se dirigeant vers les feuilles de valeur 1, on détermine les impliquants premiers de la fonction associée. Le gestionnaire de mémoire est agencé pour pointer les différents parcours effectués lors de la détermination des impliquants. Ainsi, dans le cas particulier, on détermine quatre parcours différents constituant ainsi quatre produits représentant les impliquants premiers de la fonction. Un premier parcours peut se lire comme suit: 1 * 52,53, ce qui signifie que l'impliquant premier associé est le produit X 2,X 3, puisque la variable d'occurence 1, négative, signifie que X 1 ne participe pas au produit Un second parcours est O 1 151 ',O 2,53, ce qui signifie en définitive que l'impliquant premier associé est le produit Xi *X Un troisième parcours est 01,Sl *,O 2,52 * ce qui signifie que l'impliquant premier associé est le produit X 1 i X 2 Enfin, un quatrième parcours est 01,S 152 ce qui signifie que l'impliquant premier associé est X 1,X 2. La figure 10 illustre comment une partie de mémoire destinée à recevoir des informations relatives à la représentation implicite des impliquants premiers de la fonction f donnée en exemple sur les figures 1 ou 2 pourrait être remplie. On suppose que les règles de remplissage de la mémoire sont similaires à celles qui ont été évoquées en regard de la figure 2 Ainsi, chaque mot situé à une adresse A Dn de cette zone de mémoire peut être décomposé en quatre champs, un premier champ VAR recevant des indications sur la nature et l'ordre de la variable qu'il contient, un second champ INDL indiquant soit l'adresse ou la valeur de la branche basse associée, un troisième champ INDH indiquant l'adresse ou la valeur de la branche haute associée, et enfin un quatrième champ GEST avec des paramètres de gestion de la mémoire, par exemple. Ainsi, le mot situé à la première AD 1 de cette zone mémoire contiendrait par exemple le noeud Nd( 52,0,1) correspondant à la représentation implicite des impliquants premiers de la partie haute H de la fonction de la figure 1 Ce noeud a été mis en évidence lors de la description de la figure 4. Le second mot, d'adresse AD 2 contiendrait un noeud Nd( 53,0,1) qui est celui qui a été mis en évidence à la figure 5. Le troisième mot, à l'adresse AD 3 contient des indications permettant de reconstruire le noeud donnant la représentation implicite des impliquants premiers de la partie basse de la fonction visualisée sur la figure 1 Ce noeud, dont la racine est 02, a été mis en évidence avec la description de la figure 5 Sa branche basse est le noeud Nd( 53,0,1) dont la représentation se trouve déjà au deuxième mot, d'adresse AD 2 En conséquence, le deuxième champ INDL de ce troisième mot contient une indication selon laquelle la branche basse est constituée par le mot d'adresse AD 2, ce qui évite de reconstruire ce noeud existant déjà. La partie haute, qui n'a pas encore été construite, puiqu'elle est constituée par un noeud Nd( 52,1,0) serait donc inscrite dans le mot d'adresse AD 4 et une indication en ce sens serait portée dans le champ INDH du troisième mot, afin que le système pointe sur l'adresse AD 4. Le cinquième mot, d'adresse AD 5 contiendrait des informations relatives à la représentation implicite des35 impliquants premiers prime(L/\H) de la fonction représentant l'intersection logique entre les parties haute et basse de la figure 1. Cette dernière représentation implicite apparait sur la figure 7: il s'agit d'un noeud dont la racine est la variable de signe 52, la partie basse la constante O et la partie haute un noeud Nd( 5310,1) Or, on constate que cette partie haute a déjà été construite: il s'agit du mot situé à l'adresse AD 2 En conséquence, dans le mot d'adresse AD 5, le système d'exploitation indiquerait que la variable racine est 52, que la partie basse est constituée par la constante 0, en remplissant de façon appropriée le champ INDL, et indiquerait dans le champ INDH qu'il faut pointer à l'adresse AD 2 pour retrouver le noeud constituant cette partie haute. Les sixième et septième mots situés respectivement aux adresses AD 6 et AD 7 contiennent des informations permettant de terminer la constitution de la représentation implicite qui apparaissait à la figure 9. Le sixième mot contient dans son champ variable, la racine 1 de la représentation implicite des impliquants premiers de la fonction de la figure 1 On constate que la partie basse associée à cette représentation implicite est constituée d'éléments qui ont déjà été inscrits dans la mémoire Ces informations sont déjà contenues dans le cinquième mot qui a déjà été complété, de sorte qu'il n'est pas nécessaire de les répéter Le champ INDL contient donc un renvoi à l'adresse AD 5. Le noeud dont le label est la racine de la partie haute de la représentation implicite n'a pas encore été totalement représenté, de sorte qu'il faut inscrire dans la mémoire, à l'adresse AD 7 des informations relatives à cette partie haute En conséquence, le champ IDNH du mot d'adresse AD 6 envoie à l'adresse AD 7 En conséquence, dans le mot situé à cette adresse AD 7, on inscrit le label du noeud constituant cette partie haute, à savoir la variable Si Cependant, on constate que les parties basse et haute de ce noeud ont déjà été construites antérieurement: la partie basse est constituée par le noeud inscrit dans le troisième mot, d'adresse AD 3 En conséquence, le champ INDL de ce septième mot contiendrait un envoi à cette adresse AD 3. On constate également que la partie haute du noeud en construction est constituée par le noeud d'adresse AD 1 déjà construit. Les paramètres du champ de gestion GEST indiquent par exemple si le noeud correspondant est la racine de la représentation implicite, ou bien un noeud intermédiaire. Il est bien entendu que le contenu de ce champ peut évoluer au fur et à mesure de l'élaboration du graphe, puisqu'à un moment donné, un noeud peut constituer la racine d'une représentation intermédiaire, et devenir par la suite un élément intermédiaire de la construction. C'est donc le système de traitement qui gère ces paramètres, à l'aide de pointeurs, lors du remplissage de la mémoire. Il est bien entendu que la représentation de la figure 10 n'est qu'un exemple, non limitatif, de la façon dont la mémoire peut être structurée pour donner une représentation implicite des impliquants premiers d'une fonction. Ainsi, par exemple, dans une variante, non représentée, les paramètres de gestion puisqu'ils sont susceptibles d'évoluer, sont inscrits et gérés par le système de traitement dans une zone spécifique de mémoire au lieu d'être inscrits dans un champ associé à chaque mot. D'autres variantes, concernant la gestion de la mémoire, sont à la portée de l'homme du métier. xcx/ Des essais, réalisés dans le cadre de la mise au point de la présente invention, ont permis d'obtenir des représentations implicites d'impliquants premiers occupant une place mémoire réduite d'un facteur vingt par rapport aux représentations obtenues avec les procédés de l'art antérieur Il est significatif plus le nombre de variables impliquées dans la définition du diagramme de décision binaire est élevé, meilleurs sont les gains relatifs par rapport à l'emploi des procédés de l'art antérieur Ceci met donc en évidence tout l'intérêt de l'invention, puisque c'est lorsque les diagrammes de décision binaire sont de taille importante qu'il existe le plus grand risque de saturation de la mémoire, et qu'il convient d'employer des méthodes peu consommatrices de mémoire.15 Les tableaux, dans les pages ci-après, en forme d'annexe, résument les fonctions PRIME, NORME, MINUS, MINU 52. ANNEXE I fonction PRIME(f) Dans PRIME(f), f est un diagramme de décision binaire et le résultat de cette fonction PRIME est une représentation implicite de ses impliquants premiers. 1) Si f= 0, PRIME(f)= O; 2) Si f= 1, PRIME(f)= 1; 3) Sinon, Nd(xk,L, H)=f et P=PRIME(L/\H) dans la relation suivante qui détermine la règle de construction de la représentation implicite des impliquants premiers de la fonction représentée par son diagramme (f) de décision binaire: PRIME(f)=NORMElOk,P,Nd(Sk,MINUS{PRIME(L),P}, MINUS{PRIME(H),P})l. II fonction NORME(x,P,P') (mise en oeuvre préférée) Dans NORME(x,P,P'), x est une variable, P et P' sont des représentations implicites. 1) Si P=P' ou P'= 0, alors NORME(x,P,P')=P; 2) Si P= 0, alors NORME(x,P, P')=P'; 3) Sinon NORME(x,P,P')=Nd(x,P,P'). ANNEXE (suite) III fonction MINUS(PP') MINUS(P,P'), dans laquelle P et P' sont des représentations implicites, rend une représentation implicite. 1) Si P=P' ou P= 0, MINUS(P,P')= O; 2) Si P= 1 ou P'= O ou P'= 1, MINUS(P,P')=P; 3) Sinon, Nd(v,L,H)=P et Nd(v',L',H')=P', puis: A) Si v=Ok et v'=Ok 1 Si k MINUS(P,P')=MINUS(P,L'). B) Si v=Ok et v'=Sk 1 Si k (MINUS(P,P')=P; 2 Si k=k', alors: MINUS(P,P')=MINU 52 (P,H'); 3 Sinon: MINUS(P,P')=MINUS(P,L'). D) Si v=Sk et v'=Sk 1 Si k=k', alors: MINUS(P,P')=NdlSk, MINUS(L,L'), MINUS(H,H')l; 2 Sinon MINUS(P,P')=P ANNEXE (suite) IV Fonction MINU 52 MINU 52 (P,P') dans laquelle P et P' sont des représentations implicites, rend une représentation implicite. 1) Si P=P', MINU 52 (P,P')= O 2) Sinon Nd(Sk,L,H)=P et Nd(S'k,L',H')=P', puis: MINU 52 (P,P')=NdlSk, MINUS(L,L'), MINUS(H,H')l. _______________________________________________ L'algorithme de la fonction MINUS qui a été présenté auparavant peut être présenté sous une version simplifiée. 1) Si P=P' ou P=O, MINUS(P,P')= O; 2) Si P= 1 ou P'= O ou P'= 1, MINUS(P, P')=P; 3) Nd(Vk,L,H)=P et Nd (Vk',L',H')=P' A) Si k k' i) Si vk'=Ok' (vk' est une variable d'occurrence), MINUS(P,P')=MINUS(P,L') ii) Sinon, MINUS(P,P')=P C) Si vk=Ok (vk est une variable d'occurrence) i) Si vk'=Ok', alors: MINUS(P,P')=NORMElOk, MINUS(L,L'), MINU 52 (H,H')l; ii) Sinon MINUS(P,P')=NORMElOk, L, MINU 52 (H,P')l; D) Sinon i) Si Vk'=Ok MINUS(P,P')=MINU 52 (P,H'); ii) Sinon: MINUS(P,P')=NdlSk,MINUS(L,L'),MINUS(H,H')l. REVENDICATIONS 1 Procédé d'élaboration automatique, à l'aide d'un appareil de traitement de données, dans une zone mémoire de cet appareil, d'une représentation implicite (PRIME(f)) des impliquants premiers d'une fonction booléenne initialement représentée, dans une autre zone mémoire de cet appareil, sous la forme d'un diagramme de décision binaire (f) de cette fonction, consistant à élaborer la représentation implicite à partir des informations constituant le diagramme de décision, en effectuant des parcours récursifs au travers de ce diagramme pour déterminer des éléments intermédiaires ensuite combinés entre eux suite à chaque récursion, chaque élément intermédiaire utilisant des variables droccurence ( 1 tn) et des variables de signe (Su *Sn), correspondant respectivement à chacune des variables prépositionnelles (x 1,, xn) du diagramme de décision, caractérisé en ce qu'il met en oeuvre des moyens pour obtenir des éléments intermédiaires normalisés lors de leur élaboration, réduisant ainsi la consommation de mémoire, et des moyens pour combiner entre eux les éléments intermédiaires après leur normalisation. 2 Procédé selon la revendication 1, caractérisé en ce que le diagramme de décision binaire de la fonction booléenne constituant, de façon connue, un noeud Nd(xk,L,H), dans lequel xk est un label ou une variable racine, L est la branche basse associée à ce label, H est la branche haute associée à ce label, il consiste, pour obtenir la représentation implicite des impliquants premiers de la fonction: à décomposer le noeud en sa branche basse L, en sa branche haute H, à obtenir une représentation implicite normalisée des impliquants premiers de chacune de ces branches; à déterminer le diagramme de décision binaire (L/\H) associé à l'intersection logique des deux branches; à obtenir une représentation implicite normalisée des impliquants premiers de cette intersection à combiner entre elles, selon une règle déterminée, les représentations implicites normalisées pour obtenir un résultat; à normaliser ce résultat lors de son élaboration. 3 Procédé selon la revendication 2, caractérisé en ce que chaque branche (L, H) d'un noeud et leur intersection (L/\H) pouvant être constituées par une association de noeud, avec des labels (xi) aboutissant finalement sur des feuilles terminales de valeur logique O ou 1, il consiste, pour obtenir les représentations implicites des impliquants premiers de ces branches ou de leurs intersections, à effectuer des parcours récursifs au travers de chacun des noeuds ainsi associés. 4 Procédé selon l'une des revendications 2 ou 3, caractérisé en ce que la représentation implicite (PRIME(f)) des impliquants premiers d'un premier noeud (f) dont la racine est xk, la branche basse L, la branche haute H, est construite conformément à: PRIME(f)=NORMElOk,P,Nd(Sk,MINUS{PRIME(L),P}, MINUS{PRIME(H),P})l, qui obéit aux règles suivantes: PRIME( 0)= O; PRIME( 1)= 1, et dans laquelle P=PRIME(L/\H) est un second noeud constituant la représentation implicite des implicants premiers de l'intersection logique des branches basse L et haute H du noeud considéré; dans laquelle Nd("variable",A,B) élabore un noeud dont le label est l'élément "variable", la branche basse l'élément A, la branche haute l'élément B; dans laquelle, NORME est une fonction permettant d'obtenir une forme normalisée drun noeud; et dans laquelle MINUS est une fonction qui, appliquée à deux formes normalisées, permet d'achever la représentation implicite. Procédé selon la revendication 4, caractérisé en ce que la fonction NORME(x,P, P'), dans laquelle x est une variable, et P et P' sont deux représentations implicites, met en oeuvre des tests pour comparer ces deux représentations implicites et déterminer leur valeur, puis rend l'un ou l'autre des résultats normalisés suivants, selon le résultat des tests: Si P=P' ou P'= 0, alors NORME(x,P,P')=P; Si P= 0, alors NORME(x,P,P')=P'; Sinon NORME(x,P,P')=Nd(x,P,P'). 6 Procédé selon la revendication 4, caractérisé en ce que la fonction NORME(x,P,P'), dans laquelle x est une variable, et P et P' sont deux représentations implicites, met en oeuvre un premier test pour comparer ces deux représentations implicites et déterminer leur valeur, puis rend l'un ou l'autre des résultats normalisés suivants, selon le résultat du test: Si P=P', alors NORME(x,P,P')=P; Sinon NORME(x,P,P')=Nd(x,P,P'). 7 Procédé selon la revendication 4, caractérisé en ce que la fonction NORME(x,P,P'), dans laquelle x est une variable, et P et P' sont deux représentations implicites, met en oeuvre un premier test pour comparer ces deux représentations implicites et déterminer leur valeur, puis rend l'un ou l'autre des résultats normalisés suivants, selon le résultat du test: Si P= 0, alors NORME(x,P,P')=P'; Sinon NORME(x,P,P')=Nd(x,P,P'). 8 Procédé selon la revendication 4, caractérisé en ce que la fonction NORME(x,P,P'), dans laquelle x est une variable, et P et P' sont deux représentations implicites, met en oeuvre un premier test pour comparer ces deux représentations implicites et déterminer leur valeur, puis rend l'un ou l'autre des résultats normalisés suivants, selon le résultat du test: Si P=O, alors NORME(x,P,P')=P'; Sinon NORME(x,P,P')=Nd(x,P,P'). 9 Procédé selon la revendication 4, caractérisé en ce que la fonction MINUS(P,P'), dans laquelle P et P' sont des représentations implicites, et qui rend une représentation implicite met en oeuvre un second test pour comparer ces deux représentations implicites et déterminer leur valeur, puis rend l'un ou l'autre des résultats suivants, selon le résultat du test: Si P=P' ou (P= 0), alors MINUS(P,P')= O; Si P= 1 ou P'= O ou P'= 1, MINUS(P,P')=P; Procédé selon la revendication 9, caractérisé en ce que lorsque le résultat du second test met en évidence le fait que P est différent de P' et que simultanément P et P' ne constituent pas des branches terminales, c'est-à-dire constituent deux noeuds distincts, la fonction MINUS consiste: à décomposer le noeud P en sa racine (v), sa branche basse L, sa branche haute H; à décomposer le noeud P' en sa racine (v'), sa branche basse L', sa branche haute H'; à tester si les racines (v, v') sont des variables d'occurence ou de signe; à tester leur rang; puis, en fonction des résultats de ces deux derniers tests, à rendre les résultats suivants: A) Si v=Ok et v'=Ok' 1 Si k MINUS(P,P')=MINUS(P,L'). B) Si v=Ok et v'=Sk' 1 Si k (MINUS(P,P')=P; 2 Si k=k', alors: MINUS(P,P')=MINU 52 (P,H'); 3 Sinon: MINUS(P,P')=MINUS(P,L'). D) Si v=Sk et v'=Sk 1 Si k=k', alors: MINUS(P,P')=NdlSk, MINUS(L,L'), MINUS(H,H')l; 2 Sinon MINUS(P,P')=P 11 Procédé selon la revendication 9, caractérisé en ce que lorsque le résultat du second test met en évidence le fait que P est différent de P' et que simultanément P et P' ne constituent pas des branches terminales, c'est-à-dire constituent deux noeuds distincts, la fonction MINUS consiste: à décomposer le noeud P en sa racine (v), sa branche basse L, sa branche haute H; à décomposer le noeud P' en sa racine (v'), sa branche basse L', sa branche haute H'; à tester si les racines (v, v') sont des variables d'occurence ou de signe; à tester leur rang; puis, en fonction des résultats de ces deux derniers tests, à rendre les résultats suivants: A) Si k k' i) Si v'=Ok' (v' est une variable d'occurrence), MINUS(P,P')=MINUS(P,L') ii) Sinon, MINUS(P,P')=P C) Si v=Ok (v est une variable d'occurrence) i) Si V'=Ok' (v' est une variable d'occurrence), alors: MINUS(P, P')=NORMElOk, MINUS(L,L'), MINU 52 (H,H')l; ii) Sinon MINUS(P, P')=NORMElOk, L, MINU 52 (H,P')l; D) Sinon i) Si Vk'=Ok' MINUS(P,P')=MINU 52 (P,H'); ii) Sinon: MINUS(P,P')=NdlSk,MINUS(L,L'),MINUS(H,H')l. 12 Procédé selon l'une des revendications 10 ou 11, caractérisé en ce que la fonction MINU 52 (P,P'), dans laquelle P et P' sont des représentations implicites, et qui rend une représentation implicite met en oeuvre un dernier test pour comparer ces deux représentations implicites puis, selon le résultat du test: si P=P', alors MINU 52 (P,P')= O sinon le noeud P est décomposé en sa racine (Sk), sa branche basse L, sa branche haute H; le noeud P' est décomposé en sa racine (S'k), sa branche basse L', sa branche haute H'; Nd(Sk,L,H)=P et Nd(S'k,L',H')=P', puis: MINU 52 (P,P')=NdlSk, MINUS(L,L'), MINUS(H,H')l. 13 Procédé selon l'une des revendications précédentes, caractérisé en ce que le système de traitement est agencé pour tester, suite à la détermination des paramètres d'un nouveau noeud, si ce noeud existe déjà en mémoire et, dans l'affirmative inscrire dans la mémoire des données permettant de réutiliser ce noeud déjà construit. 14 Système de traitement de données, caractérisé en ce qu'il comporte des moyens pour la mise en oeuvre du procédé selon l'une des revendications 1 à 13.