FR 3085501 A1 20200306 FR 1903969 A 20190414 Description Titre de l'invention : Procédé fonctionnel de calcul universel par produit étendu de matrice formelle [0001] La présente invention concerne un procédé fonctionnel de calcul universel par produit étendu de matrice formelle pour effectuer des calculs applicatifs (6) à (10) au moyen d'une unité centrale de traitement (1) et du dispositif logiciel correspondant (17), sans instructions ni planificateur de tâches. [0002] Le procédé selon l'invention permet la réalisation d'un niveau de parallélisme to- talement indépendant des algorithmes dits universels pourtant effectués. [0003] Dans le cadre du présent procédé [fig.1], il n'est pas nécessaire, contrairement aux unités centrales de traitement à instructions, de modifier ladite unité centrale pour que cette dernière effectue des opérations complexes de façon identique à celles mises en oeuvre par lesdites instructions : voir à ce propos les calculs « simples », [Fig.5] à [Fig.10], puis « complexes », [Fig.33] à [Fig.3]. [0004] Lc cadre de la présente invention est celui des systèmes applicatifs (ou purement ap- plicatifs) en ce qu'il se définit par la seule opération d'application ; cette dernière se caractérise dans la présente invention comme une relation binaire (ligne, colonne) interne au produit matriciel. [0005] Lc présent procédé se distingue ainsi des systèmes dits quasi-applicatifs dont le lambda-calcul est un cas particulier. [0006] Les dispositifs logiciels associés sont des matrices ordonnées en mots (17) où la relation « ligne-colonne » représente la notion d'opérateur (éventuellement « abstraits »), qui sc distingue de celle de fonction abstraite [0007] Lc présent procédé réalise directement, et par un procédé « fonctionnel », la Logique Combinatoire de H.B. Curry (et le lambda-calcul de A. Church, en définissant, par les algorithmes connus, l'opération d'abstraction du lambda-calcul à partir de celle d'application) et s'intègre totalement dans la chaîne de développement informatique des langages de haut niveau (3). [0008] La compilation des dispositifs logiciels universels de « haut niveau » (3) vers l'unité centrale de traitement (1) objet de la présente invention s'effectue par les algorithmes actuels de compilation vers la Logique Combinatoire de H.B. Curry, et peuvent être réalisés par la présente unité centrale de traitement en ce qui concerne lesdits calculs applicatifs (6) à (10). [0009] Les différentes descriptions données dans la présente invention utiliseront donc les mêmes représentations ou symboles, appelés combinateurs, que ceux donnés par H.B. Curry (1958). 2 [0010] Dans la présente invention, les transformations combinatoires de la Logique Com- binatoire sont des transformations binaires opératoires ou « applicativcs » (6) à (10), internes (4) au produit matriciel, qui engendrent d'autres transformations matricielles binaires « applicatives » (6) à (10) par l'intermédiaire d'index qui renvoient à des positions ou places dans ledit dispositif logiciel (17). [0011] Dans certaines approches de mise en oeuvre de la Logique Combinatoire, distinctes du présent procédé, les calculs reposent directement sur les symboles (6) qui sont alors interprétés directement comme des instructions d'une machine à instruction ou de façon équivalente dite de von Neumann (approches dites « SKI »). [0012] D'autres approches encore, dites de « réduction de graphes », utilisent des dispositifs logiciels basés sur des instructions et des pointeurs d'une machine von Neumann, absents du présent procédé. [0013] Dans le contexte de la présente invention, la Logique Combinatoire se distingue aussi, naturellement, des systèmes de déduction «à la Hilbert » car leur système axiomatique n'est pas composable au sens de la présente invention. [0014] On considère dès lors dans le cadre de la présente invention les combinateurs de Curry comme synonymes de matrices étendues avec des index et jouant un rôle opératoire dans une suite de produits matriciels et donc synonymes de « produit de matrices ». [0015] La présente invention permet ainsi la construction automatique de nouveaux dis- positifs logiciels, plus réduits, par la composition de matrices diagonales binaires, soit sans passer nécessairement par la suite des résultats intermédiaires ni les calculs correspondants (voir à ce propos la synthèse des applications complexes 'CW' [fig.35], 13CW' [Fig.36], 13WW' [Fig.37] et `13CC' [Fig.38]). [0016] Comme évoqué précédemment, il n'est pas nécessaire de modifier ladite unité centrale de traitement pour faire effectuer par cette dernière des nouveaux calculs exactement de la même façon que s'ils étaient des primitives de fonctionnement : '( BWW)' agissant « exactement comme » 'B' ou 'W'. [0017] Les expressions de combinateurs de la Logique Combinatoire sont ainsi « réunitarisées » ou réduites en des produits matriciels binaires étendus avec leur signification applicative propre ou avec leur « opératoire propre ». [0018] On remarquera le calcul 'SB' [fig.27] où le calcul résultant ne peut être réduit en un « simple » produit de deux matrices du fait de l'existence de deux applications internes à une autre application : 'fx' puis `(fx)y' dans `x(...)'. [0019] Il est alors nécessaire « d'étendre » l'opération de produit matriciel en modifiant la structure des matrices diagonales à même valeur de lecture du résultat de telle sorte que la seule application d'index lors du produit matriciel soit donnée par l'expression de tête selon l'ordre de parcours dudit produit . 3 [0020] Ainsi, en supprimant les résultats intermédiaires, quand (8) = (9) [fig.2] lorsque les combinateurs sont composablcs, les dispositifs logiciels se réduisent ou se synthétisent en des dispositifs plus petits, tout en gardant le résultat final (10) équivalent à la succession des applications. [0021] Ce nouveau calcul « composé » (Curry - 1948), a alors, par définition, exactement le même résultat final (10) que la séquence correspondante des « composés » (9) ; en revanche, il possède les propriétés d'avoir été construit sans passer par la suite de résultats intermédiaires, et sans, non plus nécessairement, établir explicitement la construction du résultat de cc nouveau calcul. [0022] Dans la présente invention, la lecture au-dessus du produit matriciel emprunte donc le chemin « le plus court » de la [fig.2] par le produit matriciel illustré par (24) dans la [Fig.3], en lieu et place de la simple succession ou séquence d'applications, cette dernière étant génératrice de longues séquences d'instructions dans les machines dites von Neumann. [0023] Dans le cadre de la présente invention, une distinction importante est donc faite entre la succession de calculs dans laquelle les résultats intermédiaires des uns (9) servent d'entrée aux suivants, et la composition de calculs (combinateurs) qui construit véritablement un nouveau calcul (combinateurs) à partir de plusieurs autres. [0024] La démarche de la présente invention vise ainsi à résoudre le problème de la dé- finition d'un procédé de construction automatique d'un nouveau calcul : à partir de plusieurs autres ; éventuellement non distincts ; d'une façon totalement « aveugle », soit sans connaître effectivement : les résultats intermédiaires (9) des calculs opérandes ; ni celui du calcul obtenu (10), dans un premier temps ; mais tel que ces résultats puissent effectivement être obtenus si nécessaire dans un deuxième temps ; et que le résultat final du calcul obtenu (10) soit le même que par la succession correspondante des premiers calculs avec leurs résultats intermédiaires (9). [0025] Dans le cadre de la présente invention, la réponse au problème s'effectue en trois temps : [0026] Dans un premier temps, les calculs (matriciels), identifiés sur la base de calculs élé- mentaires (combinateurs) à partir desquels toutes les autres (expressions applicatives) peuvent être construites, sont définies « à l'extérieur -» du produit matriciel : [fig.5] [Fig.10], puis [Fig.11] et [Fig.12]. [0027] Dans un deuxième temps, les calculs applicatifs sont intégrés dans le calcul matriciel lui-même, de façon à ne pas induire d'opérations complexes à l'extérieur de ce dernier ; à ce niveau, les résultats intermédiaires (9) sont donnés par des produits particuliers : [fig.14] à [Fig.34]. [0028] Dans un troisième temps, les résultats (applications) intermédiaires, devenus inutiles, sont supprimés quand les conditions sont réunies : figures [fig.35] à [Fig.38]. [0029] Dans ce contexte, le présent procédé propose un premier niveau de parallélisme dit technique (24), autonome et indépendant des algorithmes fonctionnels (3), réalisant pourtant ces derniers de façon parallèle indépendamment de leur description initiale (3). [0030] Cc parallélisme « technique » lié au calcul matriciel est totalement indépendant de tous les algorithmes dits applicatifs représentés alors par les relations internes binaires audit produit matriciel. [0031] Le second parallélisme, dit applicatif [fig.14], constitué par des matrices diagonales creuses binaires (4) augmentées d'index (13) situées à l'intérieur du parallélisme technique (2) et effectué par ce dernier, « effectue » simultanément plusieurs tâches (4), toujours sans instruction, ni planificateur de tâches. [0032] Toute expression, dès lors appelée applicativc, est ainsi construite ou lue à partir desdites matrices diagonales binaires creuses : l'ordre des valeurs courantes des expressions applicatives (6) est donné par l'ordre formé par le produit (24) desdites matrices binaires creuses (4) et que chaque valeur (6) est effectivement donnée par les valeurs, desdits index (13) associés à chaque dimension, correspondantes aux valeurs « vrai » ou « 1 » desdites matrices binaires creuses (4) de la partie (2) courante, lu selon ledit ordre de parcours (24). [0033] Ladite construction des expressions applicatives, ou de façon équivalente de lecture de ces dernières, dont l'interprétation peut contenir éventuellement des parenthèses, est appelée dans le cadre du présent procédé « lecture au-dessus du produit matriciel ». [0034] Ladite construction, basée sur la représentation à partir de valeurs binaires dans un produit matriciel et mettant en relation des index, permet de lever l'ambiguïté de lecture entre l'application d'une expression à une autre et le résultat de cette application parfois marquée par des parenthèses. [0035] Exemple I : La matrice gauche ou mot `^.^' représente n'importe quelle expression binaire » comme par exemple `(Wfix', '(fy)x' ou `(fx)(gx)' ou encore '(fx)x' [0036] Les différences entre ces expressions sont données par la composition avec la matrice droite '2x; associée. [0037] Si l'on considère le combinateur W binaire dans l'expression '(Wf)x.', le calcul est bloqué » en l'absence de «curryage» car les parenthèses marquent le résultat de l'application de W sur 'f' ; si les parenthèses gauches n'ont pas d'influence sur le résultat final, elles ne peuvent pas être enlevées arbitrairement dans '(Wf)x'. [0038] Exemple H : La matrice gauche ou mot 7.^.^' représente n'importe quelle ex- pression « ternaire » comme par exemple 'Wfx', 'fyx' ou `fx(gx)', ou encore `txx'. [0039] Les différences entre ces expressions sont données par la composition avec la matrice droite '3x; associée ; il n'y a pas de résultat intermédiaire à l'exception de l'expression '(gx)' dans Tx(gx)' [0040] Exemple HI : On appelle « régulier » un combinateur ou matrice dont la valeur de la première colonne de la première ligne de la matrice droite du produit matriciel correspondant est [0041] Le produit - * ^ = entre les matrices des premières colonnes de chaque ligne n'introduit aucun changement sur la première colonne de la première ligne du résultat. [0042] Exemple IV : Voir la transformation associée au combinateur B dans l'illustration [fig.3] ; la matrice gauche du produit (11), se compose en parallèle (parallélisme technique) avec la matrice droite (12), tel que le produit « au-dessus » établisse des connexions entre des index ou places associés à des lignes ou des colonnes (13). [0043] Dans ladite illustration, une telle application résultante '2(34)' n'est pas représentable par le présent procédé puisque seul un nombre peut être associé à une ligne ou une colonne et non une application de nombre ou d'index. [0044] Le présent procédé « étend » donc l'opération de produit matriciel en trois phases (A), (E) et (R), décrites ultérieurement dans la présente invention, de telle sorte que le principe d'avoir un seul nombre ou index associé à une ligne ou colonne soit respecté ( [fig.14] à [Fig.34]). [0045] L'exemple est donné à titre de compréhension dans le premier temps de réponse au présent problème ; le second temps va systématiser l'internalisation dans le produit matriciel lui-même de toutes les applications. [0046] Toujours dans la [fig.3], les deux calculs « extérieurs » au produit matriciel courant, et qui sont également des produits matriciels, sont représentés par (14) et (15). [0047] Soit donc la donnée d'un mot (ligne) ou de plusieurs mots binaires (composés), constituant une matrice ou produit, de la forme : '^...^' où chaque synonyme de vrai » ou '1' représente : [0048] Une relation applicative (ou relation entre une entrée ou colonne et une sortie ou ligne) entre : la colonne relative à sa position dans le mot courant et la ligne courante ; une autre colonne et une autre ligne par l'ajout d'un nombre entier (13) relatif à la colonne ou à la ligne courante, représentant un index dans le mot de matrice du dispositif logiciel courant (17). [0049] Une sous-expression applicative qui s'obtient par composition du dit mot avec une autre matrice où les mêmes principes s'appliquent, et par la lecture au-dessus du produit, et ainsi de suite. [0050] Lorsque que la valeur est ou « 1 » il y a application, lorsque la valeur est E (« faux » ou '0'), il y a absence d'application. Le présent procédé applique les règles de « produit » binaire suivantes : ^ * ^ = ^ ; M*E=E:*-=E;fl C=C. Le présent procédé applique les règles de « somme » suivantes:-+-=-;-+E= - ; + - = - ;fl + = 6 [0051] Toutes les représentations matricielles sont entièrement binaires, seules les lignes et les colonnes peuvent se voir ajouter au maximum un nombre entier par ligne et par colonne. [0052] Le procédé selon la présente invention repose donc principalement sur des produits de matrices qui sont des représentations dans R2 ou l'espace à deux dimensions ou plus. [0053] Ces représentations ne sont pas usuelles des machines « numériques » ; d'autres re- présentations isomorphes sont donc nécessaires pour permettre une réalisation effective du procédé au moyen d'une unité centrale de traitement « numérique ». [0054] On précise que le produit matriciel est un cas particulier du produit tensoriel qui le généralise à des dimensions supérieures à deux, tout en reposant sur un produit « ligne - colonne ». [0055] On obtient alors un système comparable, uniquement par le nombre de dimensions manipulées (2 et supérieures), aux systèmes dits de « réseaux de neurones » ; en effet, le présent procédé constitue alors un réseau de « neurones formels » reposant sur la notion d'application par l'intermédiaire de matrices binaires de dimensions supérieures à deux. [0056] La mise en oeuvre d'un tel système nécessite d'intégrer dans les mots qui suivent plusieurs dimensions, soient des mots ou tableaux de dimensions supérieure à 2, par l'ajout de mots d'entiers encodant ces dimensions et la somme des produits de ces dimensions pour en permettre l'accès à travers des mots d'index de longueur égale à la dimension des matrices manipulées. [0057] L'algorithme de produit tensoriel peut alors se déduire de celui du produit matriciel, en décomposant le produit en sous-produits de dimensions inférieures jusqu'à ce que l'on se ramène à un produit « ligne colonne ». [0058] L'ensemble forme alors des chaînes de produits structurées en chaînons formels si- gnificatifs, comparables à des expressions formelles internes du dispositif logiciel ; ces éléments formels, et respectivement ces chaînons formels, peuvent alors se composer en des chaînes formelles, double, ou bien triple, ou encore des structures plus complexes, puis être calculées identiquement. [0059] La réalisation d'une unité de traitement basée sur le produit tensoriel ou le produit matriciel généralisé repose sur les principes donnés par le présent procédé, étendu à des dimensions supérieures à deux. [0060] De la même façon que le produit matriciel permet la mise en oeuvre d'un niveau de parallélisme technique, le produit tensoriel permet l'extension du niveau de parallélisme technique à la prise en compte de matrices de dimensions supérieures à deux. [0061] Les matrices ou produits de matrices sont donc représentés sous la forme d'une 7 structure arborescente (25) où chaque noeud interne de ladite structure représente soit un produit de matrices (P) soit une matrice diagonale (M). [0062] Cette structure arborescente (25) doublement ordonnée est à son tour représentée sous la forme de mots binaires étendus avec des mots d'index. [0063] Pour la réalisation effective d'une machine numérique, on choisira donc la repré- sentation sous la forme de mots binaires, tout en gardant les propriétés de la représentation sous la forme de matrice (et celle sous forme d'arborescence « produit »). [0064] La transformation ou encodage de l'arborescence en mot s'effectue par la procédure d'enchaînement suivante [fig.13] : [0065] Dans un parcours de la gauche vers la droite, on part de la racine, cette dernière peut éventuellement être fictive si l'on souhaite mettre en oeuvre du parallélisme « applicatif ou de façon équivalente, mettre en oeuvre plusieurs arborescences simultanées ou intriquées (partageant une même racine « fictive »). [0066] Par des lectures successives [fig.13] depuis la racine vers les feuilles, on marque '1' quand le noeud n'a pas déjà été parcouru et '0' quand le noeud a déjà été parcouru. [0067] L'encodage commence donc toujours par un mot de '1' qui définit le chemin de la racine à la première feuille se trouvant le plus à gauche ; on obtient un mot (ou vecteur binaire) que l'on représente sous la forme d'un vecteur particulier (14) dont le nombre de colonnes est paire ou multiple de 2 fois le nombre d'applications en parallèle. [0068] Le présent procédé parcourt, gère, manipule, ainsi simultanément toutes les colonnes deux à deux » dudit vecteur. [0069] La structure de produit matriciel, attaché à cette arborescence, repose alors sur un autre mot binaire (15) où les '1' caractérisent un noeud interne de l'arborescence comme étant un produit, et un '0' comme étant une matrice diagonale contenant d'autres matrices, soit également diagonales, soit des matrices feuilles binaires terminales ; ce mot binaire est constitué par le même parcours de lecture que la structure arborescente correspondante, mais chaque '1' ou '0' marque uniquement un noeud interne de la structure arborescente. [0070] Une feuille s'identifie donc comme un '1' suivi d'un '0' ou de la fin du mot dé- finissant l'arborescence « produit ». [0071] De même que pour la structure arborescente, on représente ce mot (15) par un vecteur dont le nombre de colonne est pair et fonction du parallélisme applicatif. [0072] A chaque feuille de l'arborescence correspond une matrice binaire {0,1} ; soient les informations relatives au nombre de lignes et au nombre de colonnes, ainsi que les valeurs binaires de ladite matrice. [0073] Les informations de lignes et de colonnes peuvent être également représentées par des mots de nombres entiers de lignes et respectivement de colonnes organisés selon la même structure que l'arborescence et la structure de produit matriciel de telle sorte que 8 le parcours de l'arborescence permette d'accéder aux données correspondantes des matrices ; ces mots de lignes et de colonnes sont représentés en (16). [0074] Chaque ligne et colonne de chaque matrice (feuille) peut être étendu (en fonction des différents combinateurs) avec au maximum un nombre entier positif (par ligne et par colonne) représentant des index ou positions dans un mot de produit de matrices (17) ; à défaut de la présence d'une telle information, l'index est donné par la colonne courante dans la lecture au-dessus du produit. [0075] Les index (strictement positifs) désignant des places dans un mot de produit de matrices (17) formant le dispositif logiciel associé à l'unité centrale de traitement forment un mot d'annotation des feuilles, de la même façon que la notion de produit (P) et de matrice diagonale (M) annote les noeuds internes de la structure arborescente. [0076] L'ajout de ces annotations sur les feuilles s'effectue par un vecteur supplémentaire représentant les annotations (13) associées aux matrices dont le nombre de colonnes est multiple de deux, suivi des mots (13) de données des index correspondants. [0077] On définit alors un mot d'entiers pour les lignes et un autre pour les colonnes de la matrice terminale ; on considère que '0' n'est pas une valeur d'index. [0078] Toujours dans la [fig.13], l'ensemble des mots est facilement représentable par une structure de mot (17) représentant un élément d'un dispositif logiciel et contenant des éléments de différentes tailles, soit indexé par la somme des produits des tailles respectives à chaque sous-élément. [0079] L'intégration d'opérations externes comme des opérations arithmétiques ou logiques opérées par des unités calculatoires spécialisées s'effectue en rajoutant les informations correspondantes aux dites opérations externes par des mots ou annotations supplémentaires à l'arborescence. [0080] Si la présence d'un index renvoie à des opérations internes au produit matriciel, la présence d'une autre « annotation » dans un autre mot, de l'arborescence entraîne le déclenchement de l'opération correspondante tel que le résultat soit associé à une entrée de la composition suivante ; on s'attachera à ce qu'il n'y ait qu'une seule valeur d'annotation ou un ordre dans leur prise en compte par l'unité centrale de traitement. [0081] L'ensemble des différentes structures de mots (17), constitué de l'arborescence « produit » avec ses feuilles « matricielles » étendues comme décrit précédemment, forme le dispositif logiciel ou «programme» de combinateurs (voir [fig.22], l'initialisation du calcul depuis le dispositif logiciel) ; pour des besoins de compréhension, la structure arborescente sera omise dans les cas élémentaires ou simples. [0082] Le produit matriciel effectué par l'unité centrale de traitement se réalisant « au- dessus » de la structure arborescente (ou de mots), cette dernière est une structure « en miroir », de telle façon que les matrices feuilles des sous-arborescences gauches se composent avec leurs analogues des sous-arborescences droites par rapport à la racine 9 (voir [fig.4], [Fig.15], [Fig.16] et [Fig.17]). [0083] Les seules contraintes sont donc celles liées au produit lignes par colonnes des matrices feuilles entre elles. [0084] Chaque produit binaire « local » est dirigé par le nombre de lignes de la matrice feuille gauche et le nombre de colonne de la matrice feuille droite, les valeurs « non définies » sont égales à '^' ou « zéro » comme décrit précédemment. [0085] Lorsqu'il n'y a pas de correspondance au niveau des matrices terminales (voir par exemple le combinateur S [fig.18]), un regroupement des valeurs binaires au niveau supérieur est effectué. [0086] L'algorithme de parcours de l'arborescence (et de calcul sur cette dernière) s'effectue ainsi par niveau ou « classe d'équivalence » [fig.16] et [Fig.17] : [0087] On parcourt simultanément les deux branches ou colonnes du vecteur (14), à chaque traversée d'un noeud « produit » (p) (autre que la racine) le parcours des branches suivantes peut s'effectuer en parallèle ([fig.17] et [Fig.18]) ; il n'y a pas de « remontée » sur les noeuds produits. [0088] Le mot (15) permet d'identifier la profondeur du calcul, la lecture de ce mot n'avance que lorsqu'un '1' est rencontré sur le mot (14) ; à chaque cycle la profondeur se réduit de 1. [0089] Chaque branche de ladite arborescence peut être parcourue en parallèle (voir [fig.17] pour la réduction ; [Fig.23] et [Fig.24] pour la construction ou expansion). [0090] Si le parcours rencontre un autre noeud produit, alors chaque sous branche est parcourue en parallèle également: le «fils gauche » reprend ensuite l'arborescence au niveau actuel et le «fils droit » reprend le mot d'arborescence au prochain '0'. [0091] Une matrice terminale doit se composer avec une autre ou une matrice « feuille » ; le nombre et l'organisation des matrices feuilles résultantes sont déterminés par le produit des matrices feuilles. [0092] La taille de la dernière matrice terminale « gauche » définit le nombre d'opérandes (index) qui rentrent simultanément dans le produit matriciel (e). [0093] Lors de la phase de réduction du produit matriciel, au fur et à mesure de la descente de l'arborescence produit, l'unité centrale de traitement affecte (en parallèle) respectivement les places d'écriture pour les résultats. [0094] La taille et donc les emplacements de ces mots dans le mot résultant se déduisent simplement des mots de lignes et de colonnes correspondants, par les lignes de la matrice gauche et les colonnes de la matrice droite. [0095] Les différents mots du produit de matrice résultant se déduisent de l'arborescence parcourue et se construisent selon les mêmes principes au fur et à mesure du parcours, indépendamment des valeurs desdites dimensions. [0096] De façon analogue, lors de la phase de construction ou d'expansion, les mots (ou matrices) peuvent être construits selon les mêmes principes de matrices diagonales « en miroir ». [0097] Le mot représentant les index est donc recopié dans la ou les matrices résultantes cor- respondantes selon les propriétés du produit matriciel. [0098] L'algorithme de produit matriciel s'effectue sur les noeuds matrice ou les feuilles ; une fois effectué, les ressources de traitement de l'unité centrale sont libérées pour servir à nouveau à d'autres calculs dans la partie (2) opposée à la partie courante et ainsi de suite. [0099] Le présent procédé de calcul se caractérise donc par deux actions antagonistes : [0100] La première action, à travers le produit matriciel, vise à construire ou concentrer les dispositifs logiciels en des matrices de plus en plus réduites, jusqu'à obtenir des connexions ou applications entre des places (index) ou à défaut un produit (on rappelle qu'il n'y a pas d'opérations qui permettent de « grouper » les index ou de les appliquer les uns sur les autres dans un même mot - certaines figures dérogent à cc principe, [fig.27], pour permettre la compréhension et la distinction avec les autres approches qui les développent à partir de pointeurs sur des adresses mémoire). [0101] La seconde est « inverse » à la première et vise à construire des produits ou matrices diagonales telles que les connexions entre les index soient réalisées par la lecture au-dessus du produit. [0102] Si une application entre des index apparait à l'intérieur du produit matriciel, la structure des matrices diagonales est modifiée pour introduire un « retard » dans l'application des index, à même valeur de lecture de l'expression applicative correspondante par la lecture au-dessus du produit matriciel. [0103] L'algorithme correspondant est relativement simple : il est nécessaire de construire des inverses de produits de matrice diagonale « identité » dont les valeurs se déduisent immédiatement du produit courant par « égalité de lecture ». [0104] Les matrices étant liées deux à deux dans un produit, si une matrice subit ce traitement, alors son homologue également, de sorte que la lecture au-dessus soit préservée pour le produit. [0105] Ces deux actions antagonistes sont réalisées par les trois phases appelées Application (A), Extension (E) et Réduction (R). [0106] La présente invention vise ainsi à construire des expressions matricielles qui « se suffisent à elles-mêmes », c'est-à-dire qu'elles intègrent toutes les transformations (comme par exemple les effacements successifs d'applications) relatives à l'application de combinateurs les uns sur les autres, encodées par le produit matriciel binaire lui-même. [0107] Ladite unité centrale de traitement (1) comprends deux parties identiques (2) et opposées dans leur fonctionnement, comprenant chacune une matrice triangulaire (2) 11 de matrices diagonales binaires creuses (4) étendues avec un mot d'index (13) pour chaque dimension, chaque partie (2) étant également augmentée d'un mot d'index supplémentaire (c) ; chaque partie (2) servant tour à tour respectivement de support pour le calcul (5) par le prolongement en une matrice carrée de ladite matrice triangulaire de ladite partie (2) courante, et pour le résultat effectif correspondant, à travers une opération étendue de produit matriciel (5) de la dite matrice carrée par elle-même; ou encore de façon équivalente pour chaque partie (2) respectivement, comprenant un ensemble de mots mémoires binaires (14), (15) étendus de mots d'index (13), (16), (e) supplémentaires, chaque index renvoyant à des places dans ladite suite de mots binaires (17) d'éléments de même nature (4) définissant ledit dispositif logiciel. [0108] La matrice supérieure droite est arbitrairement retenue comme matrice de départ dans la présente description. Chaque partie ou matrice triangulaire sert successivement à écrire le résultat de la composition de la partie opposée étendue à une matrice carrée. [0109] La synchronisation du parallélisme technique est donc effectuée automatiquement à chaque cycle, indépendamment du dispositif logiciel en cours. [0110] Dans les phases qui suivent, les différentes modifications des matrices peuvent être effectuées en s'appuyant totalement sur la structure arborescente, soit en rajoutant des branches à cette dernière, ainsi que des matrices feuilles, par des écritures successives dans chacune des parties respectives de l'unité centrale de traitement. [0111] Pour chaque transformation, l'unité centrale de traitement réserve dans un premier temps un espace mémoire dont il peut facilement connaître la taille à partir des feuilles de l'arborescence produit de la matrice diagonale « source » ou de celles du dispositif logiciel : somme des lignes des matrices feuilles « gauche » et somme de colonnes des matrices feuilles « droite ». [0112] Un certain nombre de tests peut être effectué à tout instant pour vérifier la cohérence du dispositif logiciel (voir illustration globale [fig.4] et cas particulier [Fig.22]) : [0113] La première matrice (gauche) doit commencer à la colonne égale à son propre nombre de ligne + 1. [0114] Le « coin » inférieur gauche de la matrice (gauche) « touche » ou descend jusqu'à la diagonale. [0115] La seconde matrice (droite) doit posséder le même nombre de ligne que le nombre de colonne de la matrice gauche. [0116] La matrice droite débute au « coin » inférieur droite de la matrice gauche et doit également descendre jusqu'à la diagonale. [0117] Chaque matrice peut être subdivisée en un nombre différent de sous-matrices, mais de telle façon que les « sommes » de matrices respectent les propriétés du produit matriciel. [0118] La structure de produit matriciel est globale et « au-dessus » des différentes matrices, 12 qui prises isolément peuvent ne pas être composables avec leur homologues. [0119] PHASE D'APPLICATION : L'opération étendue de produit matriciel (5) comprend une première phase (A) de duplication d'une valeur du mot d' index (e) dans une nouvelle colonne dudit mot d' index (e), déplaçant également la valeur « vrai » ou « 1 » correspondante dans une nouvelle colonne de la matrice binaire creuse correspondante (4), à mêmes valeurs courantes (6) selon la lecture au-dessus du produit matriciel. [0120] Ladite phase (A) est effectuée successivement dans chacune desdites parties opposées triangulaires (2), par des écritures successives de matrices diagonales binaires creuses (4) tant qu'il existe plusieurs valeurs « vrai » ou « 1 » sur la même colonne d'une matrice binaire donnée (4), soit sur la même valeur d'index (13), lors des lectures successives des valeurs courantes (6) par ladite unité centrale de traitement (1). [0121] PHASE D'EXPANSION : L'opération étendue de produit matriciel (5) comprend une deuxième phase (E) ajoutant une colonne à valeur « vrai » ou « 1 » à droite, à une matrice binaire creuse gauche (11) selon un produit de matrices (4) donné par ladite opération de produit matriciel (5), et ajoutant une ligne (en bas) et une colonne (à droite) telle que la valeur « en bas à droite », ou sur la diagonale, soit « vrai » ou « 1 », de la matrice droite (12) correspondante dudit produit. [0122] Ladite phase (E) est effectuée successivement dans (5) chacune desdites parties opposées triangulaires (2), par des écritures successives (5) de matrices diagonales binaires creuses (4), tant que le nombre de lignes ajouté de une unité, de la matrice gauche du dispositif logiciel (17), donné par le premier index (13) de la valeur courante donnée selon la lecture au-dessus du produit, est différent du nombre de colonnes de la matrice gauche (4) de ladite opération de produit matriciel de la partie (2) courante. [0123] PHASE DE REDUCTION : L'opération étendue de produit matriciel (5) comprend une troisième phase (R) en l'absence immédiate d'applications entre des index lors du produit à suivre de ladite matrice gauche avec la matrice de droite correspondante [fig.32] ; soit en l'absence de position occupée commune lors de la comparaison des mots d'index « colonne », des matrices gauche et droite ; dans un premier temps, la transformation de la suite de matrices binaires diagonales creuses de la partie (2) courante, dans ladite partie (2) opposée, en une autre suite de matrices binaires diagonales creuses (25) ajoutée de deux matrices, (19) et (18), par le milieu (14) du produit (24) courant ; et dans un deuxième temps, l'opération de produit matriciel effective dans la partie (2) opposée. [0124] Dans le premier temps, la matrice gauche du dispositif logiciel (17) référencé par l'index (13) de tête du résultat courant donné selon la revendication 2, est copiée avec ses index (13) augmentés de un, à l'intérieur au milieu à gauche (19) et décalée d'un 13 effacement (20) vers la droite et vers le bas, ou « en bas à droite », dans ladite matrice diagonale binaire creuse opposée; et la matrice de droite (18) du produit correspondant est constituée par un mot « vrai » ou « 1 » ligne, également décalé de une ligne et une colonne vers la droite et vers le bas. [0125] En présence d'application « directe » ou « interne » d'index, ladite copie s'effectue en différant l'application par des recopies des matrices gauche et droite correspondantes dans de nouvelles matrices diagonales étendues à l'identité, tel que le résultat du produit de ces matrices diagonales soit à même valeur de lecture que le produit courant ; principe de « paresse » ou de « retard » valable pour toutes les applications distinctes de celles de tête. [0126] La construction desdites nouvelles matrices diagonales est relativement simple. La taille de ladite matrice « identité » est donnée par la matrice feuille « gauche » du produit courant, puis la lecture courante au-dessus du produit donne les valeurs respectives des lignes et colonnes ainsi que des index correspondants, de telle façon qu'il y ait identité de lecture au-dessus du produit. [0127] Lors du deuxième temps de la phase de réduction (R), soit lors du produit matriciel effectif vers la partie (2) opposée, le mot d'index (e) se décale vers l'intérieur du produit matriciel en fonction du nombre de colonnes de la dernière matrice gauche du produit global courant. 14 [Revendication 1] [Revendication 2] [Revendication 3] [Revendication 4] REVENDICATIONSProcédé fonctionnel de calcul universel par produit étendu de matrice formelle pour effectuer des calculs applicatifs au moyen d'une unité centrale de traitement (1) et du dispositif logiciel correspondant (17) caractérisé en cc que ladite unité centrale de traitement (1) comprends deux parties identiques (2) et opposées dans leur fonctionnement, comprenant chacune une matrice triangulaire (2) de matrices diagonales binaires creuses (4) étendues avec un mot d'index (13) pour chaque dimension, chaque partie (2) étant également augmentée d'un mot d'index supplémentaire (e) ; chaque partie (2) servant tour à tour respectivement de support pour le calcul (5) par le prolongement en une matrice carrée de ladite matrice triangulaire de ladite partie (2) courante, et pour le résultat effectif correspondant, à travers une opération étendue de produit matriciel (5) de la dite matrice carrée par elle-même; ou encore de façon équivalente pour chaque partie (2) respectivement, comprenant un ensemble de mots mémoires binaires (14), (15) étendus de mots d'index (13), (16), (e) supplémentaires, chaque index renvoyant à des places dans ladite suite de mots binaires (17) d'éléments de même nature (4) définissant ledit dispositif logiciel. Procédé selon la revendication 1 caractérisé en ce que l'ordre des valeurs courantes des expressions applicatives (6) est donné par l'ordre formé par le produit (24) desdites matrices binaires creuses (4) et que chaque valeur (6) est effectivement donnée par les valeurs, desdits index (13) associés à chaque dimension, correspondantes aux valeurs « vrai » ou « 1 » desdites matrices binaires creuses (4) de la partie (2) courante, lu selon ledit ordre de parcours (24). Procédé selon la revendication 1 et la revendication 2 caractérisé en ce que l'opération étendue de produit matriciel (5) comprend une première phase (A) de duplication d'une valeur du mot d'index (e) dans une nouvelle colonne dudit mot d'index (e), déplaçant également la valeur « vrai » ou « 1 » correspondante dans une nouvelle colonne de la matrice binaire creuse correspondante (4), à mêmes valeurs courantes (6) selon la revendication 2. Procédé selon la revendication 2 et la revendication 3, caractérisé en ce que ladite phase (A) est effectuée successivement dans chacune desdites parties opposées triangulaires (2), par des écritures successives de matrices diagonales binaires creuses (4) tant qu'il existe plusieurs 15 [Revendication 5] [Revendication 6] [Revendication 7] [Revendication 8] valeurs « vrai » ou « 1 » sur la même colonne d'une matrice binaire donnée (4), soit sur la même valeur d'index (13), lors des lectures successives des valeurs courantes (6) par ladite unité centrale de traitement (1) selon la revendication 2. Procédé selon la revendication 1, caractérisé en ce que l'opération étendue de produit matriciel (5) comprend une deuxième phase (E) ajoutant une colonne à valeur « vrai » ou « 1 » à droite, à une matrice binaire creuse gauche (11) selon un produit de matrices (4) donné par ladite opération de produit matriciel (5), et ajoutant une ligne (en bas) et une colonne (à droite) telle que la valeur « en bas à droite », ou sur la diagonale, soit « vrai » ou « 1 », de la matrice droite (12) correspondante dudit produit. Procédé selon la revendication 5 et la revendication 2, caractérisé en ce que ladite phase (E) est effectuée successivement dans (5) chacune desdites parties opposées triangulaires (2), par des écritures successives (5) de matrices diagonales binaires creuses (4), tant que le nombre de lignes ajouté de une unité, de la matrice gauche du dispositif logiciel (17), donné par le premier index (13) de la valeur courante donnée selon la revendication 2, est différent du nombre de colonnes de la matrice gauche (4) de ladite opération de produit matriciel de la partie (2) courante. Procédé selon la revendication 1 et la revendication 2 caractérisé en ce que l'opération étendue de produit matriciel (5) comprend une troisième phase (R) en l'absence immédiate d'applications entre des index lors du produit à suivre de ladite matrice gauche avec la matrice de droite correspondante (figure 32) ; soit en l'absence de position occupée commune lors de la comparaison des mots d'index « colonne », des matrices gauche et droite ; dans un premier temps, la transformation de la suite de matrices binaires diagonales creuses de la partie (2) courante, dans ladite partie (2) opposée, en une autre suite de matrices binaires diagonales creuses (25) ajoutée de deux matrices, (19) et (18), par le milieu (14) du produit (24) courant ; et dans un deuxième temps, l'opération de produit matriciel effective dans la partie (2) opposée. Procédé selon la revendication 7 et la revendication 2 caractérisé en ce que dans le premier temps, la matrice gauche du dispositif logiciel (17) référencé par l'index (13) de tête du résultat courant donné selon la revendication 2, est copiée avec ses index (13) augmentés de un, à l'intérieur au milieu à gauche (19) et décalée d'un effacement (20) vers 16 [Revendication 9] la droite et vers le bas, ou « en bas à droite », dans ladite matrice [Revendication 10] diagonale binaire creuse opposée; et la matrice de droite (18) du produit correspondant est constituée par un mot « vrai » ou « 1 » également décalé de une ligne et une colonne vers la droite et vers le bas. Procédé selon la revendication 7 et la revendication 2 caractérisé en ce qu'en présence d'application « directe » ou « interne » d'index, ladite copie s'effectue en différant l'application par des recopies des matrices gauche et droite correspondantes dans de nouvelles matrices diagonales étendues à l'identité, tel que le résultat du produit de ces matrices diagonales soit à même valeur de lecture que le produit courant selon la revendication 2. Procédé selon la revendication 7 caractérisé en ce que lors du deuxième temps de la phase de réduction (R), soit lors du produit matriciel effectif vers la partie (2) opposée, le mot d'index (c) se décale vers l'intérieur du produit matriciel en fonction du nombre de colonnes de la dernière matrice gauche du produit global courant.